firewall stuck
Kevin Oberman
kob6558 at gmail.com
Sat Mar 24 17:06:38 UTC 2012
On Sat, Mar 24, 2012 at 6:30 AM, nyoman.bogi at gmail.com
<nyoman.bogi at gmail.com> wrote:
> On Thu, Mar 15, 2012 at 11:47 AM, Kevin Oberman <kob6558 at gmail.com> wrote:
>>
>> Please don't top post. It makes following the thread very difficult.
>> (Yes, I know too many MUAs make this difficult.)
>>
>> > On Wed, Mar 14, 2012 at 1:12 PM, Kevin Oberman <kob6558 at gmail.com>
>> wrote:
>> >>
>> >> On Tue, Mar 13, 2012 at 7:27 PM, nyoman.bogi at gmail.com
>> >> <nyoman.bogi at gmail.com> wrote:
>> >> > dear guru,
>> >> >
>> >> > every time I open my firewall to allow SSH connection from Internet
>> >> > after few days my firewall always stuck. Stuck in here meaning
>> >> > that it deny all request (deny any from any).
>> >> > And after I "ipfw disable firewall" and then "ipfw enable firewall"
>> >> > everything works fine
>> >> >
>> >> > when I checked /var/log/messages I found lots of attempts
>> >> > people try to connect to my machine.
>> >> > why my machine get stuck when lots of people try to SSH to my
>> >> > machine?
>> >>
>> >> We need a bit more information, especially your ipfw configuration. Is
>> >> it a statefull firewall? It sounds a lot like your state table might
>> >> be filling for some reason. Of course, if it is not a statefull
>> >> firewall, that idea is probably wrong, though it could be a
>> >> misconfiguration of some statefull rule that is inadvertently catching
>> >> the SSH attempts.
>> >>
>> >> Have you done an 'ipfw show' to see what rules are being matched? it
>> >> may or may not provide a clue.
>> >> --
>> >> R. Kevin Oberman, Network Engineer
>> >> E-mail: kob6558 at gmail.com
>> On Wed, Mar 14, 2012 at 6:04 PM, nyoman.bogi at gmail.com
>> <nyoman.bogi at gmail.com> wrote:
>> > thanks Kevin,
>> > this is my "ipfw show" :
>> >
>> > 00100 4352617 2413620288 allow ip from any to any via lo0
>> > 00200 0 0 deny ip from any to 127.0.0.0/8
>> > 00300 0 0 deny ip from 127.0.0.0/8 to any
>> > 00400 0 0 deny ip from any to ::1
>> > 00500 0 0 deny ip from ::1 to any
>> > 00600 54387 5454184 allow icmp from any to any
>> > 00700 3142231 1681082246 allow ip from 10.1.1.28 to 10.1.1.0/26
>> > 00800 4659459 4478397111 allow ip from 10.1.1.0/26 to 10.1.1.28
>> > 00900 0 0 check-state
>> > 01000 137997 89083135 allow tcp from 10.1.1.28 to any setup
>> > keep-state
>> > 01100 0 0 allow tcp from 10.16.10.84 to any setup
>> > keep-state
>> > 01150 401205 276677828 allow tcp from any to 10.1.1.28 dst-port 22
>> > setup
>> > keep-state
>> > 01200 245718 44249729 allow udp from 10.1.1.28 to any keep-state
>> > 01300 5876930 239194755 allow tcp from any to any established
>> > 01400 0 0 allow tcp from any to 10.1.1.28 dst-port 389
>> > setup keep-state
>> > 01500 26341187 22030370786 allow tcp from any to 10.1.1.28 dst-port 80
>> > setup
>> > keep-state
>> > 01600 80945 61013964 allow tcp from any to 10.1.1.28 dst-port 443
>> > setup keep-state
>> > 01700 0 0 allow tcp from 10.1.1.2 to 10.1.1.28 dst-port
>> > 22
>> > setup keep-state
>> > 01800 149642 97939477 allow tcp from any to 10.1.1.28 dst-port 25
>> > setup
>> > keep-state
>> > 01900 140 7501 allow tcp from 10.1.0.0/16 to 10.1.1.28
>> > dst-port
>> > 110 setup keep-state
>> > 02000 1677982 89212845 allow tcp from any to 10.1.1.28 dst-port 110
>> > setup keep-state
>> > 02100 8996 432096 deny tcp from any to any setup
>> > 02200 244111 24117256 allow udp from any to 10.1.1.28 dst-port 53
>> > keep-state
>> > 02300 0 0 allow udp from any to 10.1.1.12 dst-port 53
>> > keep-state
>> > 65535 4610 1422974 deny ip from any to any
>> >
>> > I use FreeBSD 8.2 :
>> > FreeBSD 8.2-RELEASE (GENERIC) #0: Fri Feb 18 02:24:46 UTC 2011
>> >
>> > the problem start after I add rule 01150
>>
>> so you do have a stateful rule for ssh. Putting stateful rules on
>> services is risky because you always open yourself to DOS, ether
>> intentionally or by accident. Every stateful access requires resources
>> from a limited pool. You can look at this pool information with:
>> sysctl net.inet.ip.fw | grep dyn
>> man ipfw describes them in the "SYSCTL VARIABLES" section.
>>
>> I am wondering why you want a stateful rule for this. It's very risky
>> and it looks like you are getting bitten, either by accident or a
>> deliberate effort to DOS you. I suspect the former.
>> --
>> R. Kevin Oberman, Network Engineer
>> E-mail: kob6558 at gmail.com
>
>
>
> thanks a lot Kevin, your hint is really helpful.
> I have change the SSH connection into non stateful.
>
> do you think I should change the HTTP connection into non stateful also?
Almost certainly. One of the most common DOS attacks is just to flood
a popular port with connection requests and port 80 is the most
commonly used. There are ways to mitigate this a bit by quickly
dropping the state entry when the 3-way handshake is not completed,
but it's still pretty easy to exploit. and, of course, if your website
ever gets significant publicity, the number of legitimate connections
can cause you trouble. (This is commonly called being "slashdoted".)
What you need to do is ask if a stateful firewall is really of any
benefit for port 80. What does it help, if anything? For UDP apps,
where the protocol does not maintain any state, stateful may make
sense, but for TCP, it's less obvious. Can you gethte same benefits
from a stateless entry? Perhaps with the addition of tables so block
entries can be quickly added and deleted?
--
R. Kevin Oberman, Network Engineer
E-mail: kob6558 at gmail.com
More information about the freebsd-net
mailing list