All of lore.kernel.org
 help / color / mirror / Atom feed
* string match -> new option
@ 2003-03-01  1:53 macadanet
  2003-03-01  6:39 ` Patrick Schaaf
  0 siblings, 1 reply; 5+ messages in thread
From: macadanet @ 2003-03-01  1:53 UTC (permalink / raw)
  To: lista de correo netfilter

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset=us-ascii, Size: 1333 bytes --]


Hi.

I'm sorry for my english

I modificated ipt_string.c and I created a new patch. This patch
acepts regular expresions.

For example:

iptables -A INPUT -m string --string '"GET"[0-9]"HTTP"' -j LOG

If some package includes the string: GET ???????8????????? HTTP
the system will write in log file.

It's a good idea, for firewalls between WAN network (Internet) and LAN
network where exists some IIS server (Internet Information Servers).
This server are great bugs when received bad requests like:

"http://www.servidor.com/msadc/..%c0%af../..%c0%af../..%c0%af../winnt/system32/cmd.exe?/c+dir+c:\"
attack with Unicodes


GET http://<ipaddress>/default.ida?NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN%u9090%u6858%ucbd3%u7
801%u9090%u6858%ucbd3%u7801%u9090%u6858%ucbd3%u7801%u9090%u9090%u8190%
u00c3%u0003%u8b00%u531b%u53ff%u0078%u0000%u00=a HTTP/1.0
Red Code Virus.

this solution can be apply to diferents kind servers.


What do people think? Is a good idea?


Thanks for read this (my) email.


___________________________________________________
Yahoo! Móviles
Personaliza tu móvil con tu logo y melodía favorito 
en http://moviles.yahoo.es

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: string match -> new option
  2003-03-01  1:53 string match -> new option macadanet
@ 2003-03-01  6:39 ` Patrick Schaaf
  2003-03-01 15:47   ` Michael Rash
  2003-03-02  9:59   ` Harald Welte
  0 siblings, 2 replies; 5+ messages in thread
From: Patrick Schaaf @ 2003-03-01  6:39 UTC (permalink / raw)
  To: macadanet; +Cc: lista de correo netfilter

> I modificated ipt_string.c

Sigh. Why is it that people must work on the pieces that others
already abandoned as fundamentally broken? See my point 1), below.

> This patch acepts regular expresions.

It was only a question of time...

> For example:
> 
> iptables -A INPUT -m string --string '"GET"[0-9]"HTTP"' -j LOG

> If some package includes the string: GET ???????8????????? HTTP
> the system will write in log file.

> What do people think? Is a good idea?

1) it is mostly a bad idea to use the string match at all, as it does
   not reassemble a TCP stream, and thus strings that happen to be
   broken up in two TCP segments, are not matchable. This is a
   fundamental limitation, making any security you get out of
   such a rule dubious, best-effort, only-in-good-weather pseudo
   security.
2) The string in your example, above, is not in a common form I would
   recognize as a regular expression - or your example is wrong, and the
   expression won't match that string. I assume that you invented an
   ad-hoc a-bit-similar-to-regexp matching and syntax, right?
   That's a bad idea. Yet another language to learn (or better ignore).
3) It is a bad idea to use the same --string option as before but
   totally change the interpretation of the string. See the other
   string extension proposal discussed right now. Use a new, extra
   option, or better yet, write a totally new match.
4) It is probably a bad idea, once you analyze the runtime overhead
   imposed by full packet regexp matching. But this would have to
   be quantified, it's just a feeling. It will DEFINITELY become
   really interesting to analyze when you solve points 1 (reassembly
   of TCP stream) and 2 (real regexpen), due to all the deep
   backtracking that regexpen could do. Also watch the severely
   limited kernel stack, if your implementation happens to be
   a naive recursive one! You won't want a slightly more complex
   packet to crash the kernel due to stack exhaustion!

best regards
  Patrick

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: string match -> new option
  2003-03-01  6:39 ` Patrick Schaaf
@ 2003-03-01 15:47   ` Michael Rash
  2003-03-02  9:59   ` Harald Welte
  1 sibling, 0 replies; 5+ messages in thread
From: Michael Rash @ 2003-03-01 15:47 UTC (permalink / raw)
  To: Patrick Schaaf; +Cc: macadanet, netfilter devel

On Mar 01, 2003, Patrick Schaaf wrote:

> > If some package includes the string: GET ???????8????????? HTTP
> > the system will write in log file.
> 
> > What do people think? Is a good idea?
> 
> 1) it is mostly a bad idea to use the string match at all, as it does
>    not reassemble a TCP stream, and thus strings that happen to be
>    broken up in two TCP segments, are not matchable. This is a
>    fundamental limitation, making any security you get out of
>    such a rule dubious, best-effort, only-in-good-weather pseudo
>    security.

Agreed, if the expectation is that doing string matching is going to
act as a full-blown NIDS (which, as you point out, it certainly
can't).

Having string matching is nice though since allows me to detect
_some_ signatures without having to run a full-blown NIDS, and I can
do it directly within iptables itself.  Being able to reject (or at
least log) the latest Code xxx packets traversing my iptables
interfaces with a single rule is useful.

--Mike

Michael Rash
http://www.cipherdyne.com
Key fingerprint = 53EA 13EA 472E 3771 894F  AC69 95D8 5D6B A742 839F

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: string match -> new option
  2003-03-01  6:39 ` Patrick Schaaf
  2003-03-01 15:47   ` Michael Rash
@ 2003-03-02  9:59   ` Harald Welte
  2003-03-02 11:36     ` Patrick Schaaf
  1 sibling, 1 reply; 5+ messages in thread
From: Harald Welte @ 2003-03-02  9:59 UTC (permalink / raw)
  To: Patrick Schaaf; +Cc: macadanet, lista de correo netfilter

[-- Attachment #1: Type: text/plain, Size: 968 bytes --]

On Sat, Mar 01, 2003 at 07:39:48AM +0100, Patrick Schaaf wrote:
> > I modificated ipt_string.c
> 
> Sigh. Why is it that people must work on the pieces that others
> already abandoned as fundamentally broken? See my point 1), below.
> 
> > This patch acepts regular expresions.
> 
> It was only a question of time...

please, again:

Look at 'libqsearch' from Philipe Biondi.  (I don't have the URL here
right now, but 'libqsearch' + 'kernel' on google gives you the result).

This is the way to do pattern matching on TCP streams in the kernel...

> best regards
>   Patrick

-- 
- Harald Welte <laforge@netfilter.org>             http://www.netfilter.org/
============================================================================
  "Fragmentation is like classful addressing -- an interesting early
   architectural error that shows how much experimentation was going
   on while IP was being designed."                    -- Paul Vixie

[-- Attachment #2: Type: application/pgp-signature, Size: 232 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: string match -> new option
  2003-03-02  9:59   ` Harald Welte
@ 2003-03-02 11:36     ` Patrick Schaaf
  0 siblings, 0 replies; 5+ messages in thread
From: Patrick Schaaf @ 2003-03-02 11:36 UTC (permalink / raw)
  To: Harald Welte, Patrick Schaaf, macadanet,
	lista de correo netfilter

> Look at 'libqsearch' from Philipe Biondi.  (I don't have the URL here
> right now, but 'libqsearch' + 'kernel' on google gives you the result).

Thanks for the pointer! The homepage is at

	http://www.cartel-securite.fr/pbiondi/libqsearch.html

> This is the way to do pattern matching on TCP streams in the kernel...

Looks good at first glance, as a fast parallel pattern matcher. Really nice.

However, for full generality in application to TCP streams, one would
at least need an additional, upfront reorder step, to bring the
stream's packets into the correct order. If a packet it missing,
in the sequence, the search must be paused, with the question
of what to do with the already arrived head-of-sequence packet
(the packet after the perceived gap).

I still feel that such logic has already been implemented in the form
of the local network stack TCP layer; it would be wrong to reimplement
all of that in a separate stream matcher. That's why REDIRECT is my
preferred approach: it gets the packets through the TCP layer.

Thus, the critical question, to me, is less in the matching, than in
how to architect such a matching machinery above the TCP stack, without
paying the cost of a user level interface / application level gateway.
As occasionally mentioned, I think khttpd and the Tux web server are
the correct "role models" for a total solution to this really frequently
asked question. How to fit such a kernel daemon approach into configuration
by iptables?

Note that I don't feel like implementing anything like that, myself. No need,
no motivation.

best regards
  Patrick

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2003-03-02 11:36 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2003-03-01  1:53 string match -> new option macadanet
2003-03-01  6:39 ` Patrick Schaaf
2003-03-01 15:47   ` Michael Rash
2003-03-02  9:59   ` Harald Welte
2003-03-02 11:36     ` Patrick Schaaf

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.