ipfw проблема

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
lexa
ефрейтор
Сообщения: 54
Зарегистрирован: 2007-02-27 16:41:04
Откуда: Москва
Контактная информация:

ipfw проблема

Непрочитанное сообщение lexa » 2007-02-27 16:45:21

Имеем FreeBsd 6.2 2 сетевухи, одна к провайдеру другая в локалку.

Задача сделать шлюз с нат, и выпускать через него пользователей локальной сети в инет + поставить фаервол, дабы из внешней сети не повадно было делать все что хочешь. В правилах адреса реальные как есть.

Дописал в конфиге ядра

Код: Выделить всё

options         DUMMYNET

options         TCP_DROP_SYNFIN

options         SC_DISABLE_REBOOT

options         IPFIREWALL

options         IPFIREWALL_VERBOSE

options         IPFIREWALL_VERBOSE_LIMIT=100

options         IPFIREWALL_FORWARD

options         IPDIVERT

options         BRIDGE
и скомпилил с новыми параметрами. Здесь все ок.

в rc.conf дописал:

Код: Выделить всё

firewall_enable="YES"

firewall_script="/etc/rc.firewall"

firewall_type="open"

firewall_quiet="YES"

firewall_logging="YES"

natd_enable="YES"

natd_interface="xl1"

natd_flags=""

tcp_drop_synfin="YES"

clear_tmp_enable="YES"

inetd_enable="NO"
если выбираю правило open, то инет работает у всех и все ок. У клиентов ip адреса раздаются по dhcp, также dhcp прописывает днс локального доменного сервака и шлюз к фряхе. днс провайдера не указываются на клиентах.

если выбираю правило simple в скрипте rc.firewall, то инет перестает работать.

Код: Выделить всё

[Ss][Ii][Mm][Pp][Ll][Ee])
      ############
      # This is a prototype setup for a simple firewall.  Configure this
      # machine as a DNS and NTP server, and point all the machines
      # on the inside at this machine for those services.
      ############

      # set these to your outside interface network and netmask and ip
      oif="xl1"
      onet="10.28.2.0"
      omask="255.255.255.0"
      oip="10.28.2.126"

      # set these to your inside interface network and netmask and ip
      iif="xl0"
      inet="192.168.10.0"
      imask="255.255.255.0"
      iip="192.168.10.250"

      setup_loopback
  
      # Stop spoofing
      ${fwcmd} add deny all from ${inet}:${imask} to any in via ${oif}
      ${fwcmd} add deny all from ${onet}:${omask} to any in via ${iif}

      # Stop RFC1918 nets on the outside interface
      #${fwcmd} add deny all from any to 10.0.0.0/8 via ${oif}
      ${fwcmd} add deny all from any to 172.16.0.0/12 via ${oif}
      ${fwcmd} add deny all from any to 192.168.0.0/16 via ${oif}

      # Stop draft-manning-dsua-03.txt (1 May 2000) nets (includes RESERVED-1,
      # DHCP auto-configuration, NET-TEST, MULTICAST (class D), and class E)
      # on the outside interface
      ${fwcmd} add deny all from any to 0.0.0.0/8 via ${oif}
      ${fwcmd} add deny all from any to 169.254.0.0/16 via ${oif}
      ${fwcmd} add deny all from any to 192.0.2.0/24 via ${oif}
      ${fwcmd} add deny all from any to 224.0.0.0/4 via ${oif}
      ${fwcmd} add deny all from any to 240.0.0.0/4 via ${oif}

      # Network Address Translation.  This rule is placed here deliberately
      # so that it does not interfere with the surrounding address-checking
      # rules.  If for example one of your internal LAN machines had its IP
      # address set to 192.0.2.1 then an incoming packet for it after being
      # translated by natd(8) would match the `deny' rule above.  Similarly
      # an outgoing packet originated from it before being translated would
      # match the `deny' rule below.
      case ${natd_enable} in
      [Yy][Ee][Ss])
           if [ -n "${natd_interface}" ]; then
                 ${fwcmd} add divert natd all from any to any via ${natd_interface}
           fi
           ;;
      esac

      # Stop RFC1918 nets on the outside interface
      #${fwcmd} add deny all from 10.0.0.0/8 to any via ${oif}
      ${fwcmd} add deny all from 172.16.0.0/12 to any via ${oif}
      ${fwcmd} add deny all from 192.168.0.0/16 to any via ${oif}

      # Stop draft-manning-dsua-03.txt (1 May 2000) nets (includes RESERVED-1,
      # DHCP auto-configuration, NET-TEST, MULTICAST (class D), and class E)
      # on the outside interface
      ${fwcmd} add deny all from 0.0.0.0/8 to any via ${oif}
      ${fwcmd} add deny all from 169.254.0.0/16 to any via ${oif}
      ${fwcmd} add deny all from 192.0.2.0/24 to any via ${oif}
      ${fwcmd} add deny all from 224.0.0.0/4 to any via ${oif}
      ${fwcmd} add deny all from 240.0.0.0/4 to any via ${oif}

      # Allow TCP through if setup succeeded
      ${fwcmd} add pass tcp from any to any established

      # Allow IP fragments to pass through
      ${fwcmd} add pass all from any to any frag

      # Allow setup of incoming email
      ${fwcmd} add pass tcp from any to ${oip} 25 setup

      # Allow setup of SSH
      ${fwcmd} add pass tcp from any to ${oip} 22 setup
      ${fwcmd} add pass tcp from any to ${iip} 22 setup
      

      # Allow access to our DNS
      ${fwcmd} add pass tcp from any to ${oip} 53 setup
      ${fwcmd} add pass udp from any to ${oip} 53
      ${fwcmd} add pass udp from ${oip} 53 to any

      # Allow access to our WWW
      ${fwcmd} add pass tcp from any to ${oip} 80 setup
      ${fwcmd} add pass tcp from any to ${iip} 80 setup
      
      # Reject&Log all setup of incoming connections from the outside
      ${fwcmd} add deny log tcp from any to any in via ${oif} setup

      # Allow setup of any other TCP connection
      ${fwcmd} add pass tcp from any to any setup

      # Allow DNS queries out in the world
      ${fwcmd} add pass udp from ${oip} to any 53 keep-state

      # Allow NTP queries out in the world
      ${fwcmd} add pass udp from ${oip} to any 123 keep-state

      ${fwcmd} add pass icmp from any to any icmptypes 0,8,11
      
      # Everything else is denied by default, unless the
      # IPFIREWALL_DEFAULT_TO_ACCEPT option is set in your kernel
      # config file.
      ;;
 
Пробовал также и другое правило “Router-net”

Код: Выделить всё

[Rr][Oo][Uu][Tt][Ee][Rr]-[Nn][Ee][Tt])

        ############

        # ROUTER network custom firewall setup.  The assumption here is that

        # the internal hosts are trusted, and can do anything they want.

        # The only thing we have to be careful about is what comes in over

        # the outside interface.  So, you'll see a lot of "in via ${oif}"

        # clauses here.

        ############

 

        # Set these to your outside interface network and netmask and ip.

           oif="xl1"
            onet="10.28.2.0"
            omask="255.255.255.0"
            oip="10.28.2.126"

            # set these to your inside interface network and netmask and ip
            iif="xl0"
            inet="192.168.10.0"
            imask="255.255.255.0"
            iip="192.168.10.250"
        # Allow communications through loopback interface and deny 127.0.0.1/8

        # from any other interfaces

        setup_loopback

 

        # Stop spoofing

        ${fwcmd} add deny log all from ${inet}:${imask} to any in via ${oif}

        ${fwcmd} add deny log all from ${onet}:${omask} to any in via ${iif}

 

        # Stop RFC1918 nets on the outside interface

       # ${fwcmd} add deny log all from any to 10.0.0.0/8 via ${oif}

        ${fwcmd} add deny log all from any to 172.16.0.0/12 via ${oif}

        ${fwcmd} add deny log all from any to 192.168.0.0/16 via ${oif}

 

        # Stop draft-manning-dsua-03.txt (1 May 2000) nets (includes RESERVED-1

,

        # DHCP auto-configuration, NET-TEST, MULTICAST (class D), and class E),

        # RFC 3330 nets on the outside interface

        ${fwcmd} add deny log all from any to 0.0.0.0/8 via ${oif}

        ${fwcmd} add deny log all from any to 169.254.0.0/16 via ${oif}

        ${fwcmd} add deny log all from any to 192.0.2.0/24 via ${oif}

        ${fwcmd} add deny log all from any to 198.18.0.0/15 via ${oif}

        ${fwcmd} add deny log all from any to 224.0.0.0/4 via ${oif}

        ${fwcmd} add deny log all from any to 240.0.0.0/4 via ${oif}

 

        # Network Address Translation.  This rule is placed here deliberately

        # so that it does not interfere with the surrounding address-checking

        # rules.  If for example one of your internal LAN machines had its IP

        # address set to 192.168.0.2 then an incoming packet for it after being

        # translated by natd(8) would match the `deny' rule above.  Similarly

        # an outgoing packet originated from it before being translated would

        # match the `deny' rule below.

        case ${natd_enable} in

        [Yy][Ee][Ss])

                if [ -n "${natd_interface}" ]; then

                        ${fwcmd} add divert natd all from any to any via ${natd_interface}

                fi

                ;;

        esac

 

        # Stop RFC1918 nets on the outside interface

     #   ${fwcmd} add deny log all from 10.0.0.0/8 to any via ${oif}

        ${fwcmd} add deny log all from 172.16.0.0/12 to any via ${oif}

        ${fwcmd} add deny log all from 192.168.0.0/16 to any via ${oif}

 

        # Stop draft-manning-dsua-03.txt (1 May 2000) nets (includes RESERVED-1,

        # DHCP auto-configuration, NET-TEST, MULTICAST (class D), and class E),

        # RFC 3330 nets on the outside interface

        ${fwcmd} add deny log all from 0.0.0.0/8 to any via ${oif}

        ${fwcmd} add deny log all from 169.254.0.0/16 to any via ${oif}

        ${fwcmd} add deny log all from 192.0.2.0/24 to any via ${oif}

        ${fwcmd} add deny log all from 198.18.0.0/15 to any via ${oif}

        ${fwcmd} add deny log all from 224.0.0.0/4 to any via ${oif}

        ${fwcmd} add deny log all from 240.0.0.0/4 to any via ${oif}

 

        # Allow anything on the internal net

        ${fwcmd} add allow all from any to any via ${iif}

 

        # Allow anything outbound from this net.

        ${fwcmd} add allow all from ${onet}:${omask} to any out via ${oif}

 

        # Deny anything outbound from other nets.

        ${fwcmd} add deny log all from any to any out via ${oif}

 

        # Allow TCP through if setup succeeded.

        ${fwcmd} add allow tcp from any to any established

 

        # Allow IP fragments to pass through.

        ${fwcmd} add allow all from any to any frag

 

        # Allow inbound ftp, ssh, email, tcp-dns, http, https, pop3, pop3s.

        ${fwcmd} add allow tcp from any to ${oip} 21 setup in via ${oif}

        ${fwcmd} add allow tcp from any to ${oip} 22 setup in via ${oif}

        ${fwcmd} add allow tcp from any to ${oip} 25 setup in via ${oif}

        ${fwcmd} add allow tcp from any to ${oip} 53 setup in via ${oif}

        ${fwcmd} add allow tcp from any to ${oip} 80 setup in via ${oif}

        ${fwcmd} add allow tcp from any to ${oip} 443 setup in via ${oif}

        ${fwcmd} add allow tcp from any to ${oip} 110 setup in via ${oif}

        ${fwcmd} add allow tcp from any to ${oip} 995 setup in via ${oif}

 

        # Deny inbound auth, netbios, ldap, and Microsoft's DB protocol

        # without logging.

        ${fwcmd} add deny tcp from any to ${oip} 113 setup in via ${oif}

        ${fwcmd} add deny tcp from any to ${oip} 139 setup in via ${oif}

        ${fwcmd} add deny tcp from any to ${oip} 389 setup in via ${oif}

        ${fwcmd} add deny tcp from any to ${oip} 445 setup in via ${oif}

 

        # Deny some chatty UDP broadcast protocols without logging.

        ${fwcmd} add deny udp from any 137 to any in via ${oif}

        ${fwcmd} add deny udp from any to any 137 in via ${oif}

        ${fwcmd} add deny udp from any 138 to any in via ${oif}

        ${fwcmd} add deny udp from any 513 to any in via ${oif}

        ${fwcmd} add deny udp from any 525 to any in via ${oif}

 

        # Allow inbound DNS and NTP replies.  This is somewhat of a hole,

        # since we're looking at the incoming port number, which can be

        # faked, but that's just the way DNS and NTP work.

        ${fwcmd} add allow udp from any 53 to ${oip} in via ${oif}

        ${fwcmd} add allow udp from any 123 to ${oip} in via ${oif}

 

        # Allow inbound DNS queries.

        ${fwcmd} add allow udp from any to ${oip} 53 in via ${oif}

 

        # Deny inbound NTP queries without logging.

        ${fwcmd} add deny udp from any to ${oip} 123 in via ${oif}

 

        # Allow traceroute to function, but not to get in.

        ${fwcmd} add unreach port udp from any to ${oip} 33435-33524 in via ${oif}

 

        # Allow some inbound icmps - echo reply, dest unreach, source quench,

        # echo, ttl exceeded.

        ${fwcmd} add allow icmp from any to any in via ${oif} icmptypes 0,3,4,8,11

 

        # Broadcasts are denied and not logged.

        ${fwcmd} add deny all from any to 255.255.255.255

 

        # Everything else is denied and logged.

        ${fwcmd} add deny log all from any to any

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35454
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Непрочитанное сообщение Alex Keda » 2007-02-27 17:14:57

1. есть кнопочка code
2. вопрос-то в чём?
Убей их всех! Бог потом рассортирует...

Аватара пользователя
lexa
ефрейтор
Сообщения: 54
Зарегистрирован: 2007-02-27 16:41:04
Откуда: Москва
Контактная информация:

Непрочитанное сообщение lexa » 2007-02-27 17:32:26

сорри за code

если выбираю правило open, то инет работает у всех и все ок. У клиентов ip адреса раздаются по dhcp, также dhcp прописывает днс локального доменного сервака и шлюз к фряхе. днс провайдера не указываются на клиентах.

если выбираю правило simple в скрипте rc.firewall, то инет перестает работать.

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35454
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Непрочитанное сообщение Alex Keda » 2007-02-27 19:32:15

ну напиши свой - ккакой тебе нужен...
пиши - выкладывай - подскажем.
но писать за тебя - никто не будет...
Убей их всех! Бог потом рассортирует...

Аватара пользователя
lexa
ефрейтор
Сообщения: 54
Зарегистрирован: 2007-02-27 16:41:04
Откуда: Москва
Контактная информация:

Непрочитанное сообщение lexa » 2007-02-27 21:01:21

я помощи у вас просил, а вы... не по-товарищиски это как-то. Вы же гражданин СССР. не по-товарищиски.
:cry:

Аватара пользователя
zorg
лейтенант
Сообщения: 665
Зарегистрирован: 2006-03-01 22:25:36
Откуда: Санкт-Петербург

Непрочитанное сообщение zorg » 2007-02-27 21:07:02

а помощь то в чём наша заключается?!??! Указать на ошибки?? или написать за тебя???
У тебя вопроса даже нет, тока задача поставлена и то в ограниченном виде!!!!!
Формулируй точнее, но правила за тебя никто писать н будет, тем более статься по написанию фаера на сайте имеется!!!! и закоментирована дальше некуда!!!
"Пилите шура пилите!!! Они внтури золотые! ;) "
Всё дело в перце!! :)

Dmitriy.A
ст. сержант
Сообщения: 383
Зарегистрирован: 2006-12-15 17:09:14
Откуда: Москва

Непрочитанное сообщение Dmitriy.A » 2007-02-27 21:47:09

так и быть пару напишу

Код: Выделить всё

add 00100 allow ip from any to any via lo0
add 00200 deny ip from any to 127.0.0.0/8
add 00300 deny ip from 127.0.0.0/8 to any
add deny log tcp from any to any in tcpflags fin,syn
add 00300 allow tcp from any to  (твой внешний ип) 22
add 00400 allow tcp from  (твой внешний ип) 22 to any
add deny tcp from 192.168.0.0/24 to any 135-139,445 in recv (внутренний)
add deny udp from 192.168.0.0/24 to any 135-139,445 in recv (внутренний)
add 1000 deny ip from 192.168.0.0/24 to any in recv (внешний)
add 1001 deny ip from any to 10.0.0.0/8 via (внешний)
add 1002 deny ip from any to 172.16.0.0/12 via (внешний)
add 1003 deny ip from any to 192.168.0.0/16 via (внешний)
add 1004 deny ip from any to 0.0.0.0/8 via (внешний)
add 1005 deny ip from any to 169.254.0.0/16 via (внешний)
add 1006 deny ip from any to 224.0.0.0/4 via (внешний)
add 1007 deny ip from any to 240.0.0.0/4 via (внешний)

add 3000 divert 8668 ip from 192.168.0.0/24 to any out xmit (внешний)
add 3100 divert 8668 ip from any to (внешний ип) in recv (внешний)

add allow udp from (внешний ип) to any 53 keep-state
add allow udp from (внешний ип) to any 33434-33524
add allow udp from any to (внешний ип) 33434-33524
add allow icmp from any to any icmptype 0,3,8,11
add allow tcp from any to any established
add allow ip from any to any frag
add 65000 allow ip from any to any
и не парится :)
ну и по желанию остальные порты разруливаешь как надо
а то что то у тебя больно мудрено написано

Гость
проходил мимо

Непрочитанное сообщение Гость » 2007-02-27 21:57:22

Dmitriy.A писал(а):так и быть пару напишу

Код: Выделить всё

firewall_type="open"
- а ты ничего не выбирай :)

Код: Выделить всё

add 00100 allow ip from any to any via lo0
add 00200 deny ip from any to 127.0.0.0/8
add 00300 deny ip from 127.0.0.0/8 to any
add deny log tcp from any to any in tcpflags fin,syn
add 00300 allow tcp from any to  (твой внешний ип) 22
add 00400 allow tcp from  (твой внешний ип) 22 to any
add deny tcp from 192.168.0.0/24 to any 135-139,445 in recv (внутренний)
add deny udp from 192.168.0.0/24 to any 135-139,445 in recv (внутренний)
add 1000 deny ip from 192.168.0.0/24 to any in recv (внешний)
add 1001 deny ip from any to 10.0.0.0/8 via (внешний)
add 1002 deny ip from any to 172.16.0.0/12 via (внешний)
add 1003 deny ip from any to 192.168.0.0/16 via (внешний)
add 1004 deny ip from any to 0.0.0.0/8 via (внешний)
add 1005 deny ip from any to 169.254.0.0/16 via (внешний)
add 1006 deny ip from any to 224.0.0.0/4 via (внешний)
add 1007 deny ip from any to 240.0.0.0/4 via (внешний)

add 3000 divert 8668 ip from 192.168.0.0/24 to any out xmit (внешний)
add 3100 divert 8668 ip from any to (внешний ип) in recv (внешний)

add allow udp from (внешний ип) to any 53 keep-state
add allow udp from (внешний ип) to any 33434-33524
add allow udp from any to (внешний ип) 33434-33524
add allow icmp from any to any icmptype 0,3,8,11
add allow tcp from any to any established
add allow ip from any to any frag
add 65000 allow ip from any to any
и не парится :)
ну и по желанию остальные порты разруливаешь как надо
а то что то у тебя больно мудрено написано

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35454
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Непрочитанное сообщение Alex Keda » 2007-02-27 22:05:10

мы напигем -а ты думать не научишься, освоишь тока Ctrl+C и Ctrl+V
Убей их всех! Бог потом рассортирует...

ygor
ефрейтор
Сообщения: 50
Зарегистрирован: 2007-02-24 11:00:09
Откуда: Пенза

Непрочитанное сообщение ygor » 2007-02-27 22:09:37

lexa писал(а):я помощи у вас просил, а вы... не по-товарищиски это как-то. Вы же гражданин СССР. не по-товарищиски.
:cry:
ужас, помоему это самый лёгкий фаер и грех с ним не разобраться...

Аватара пользователя
zorg
лейтенант
Сообщения: 665
Зарегистрирован: 2006-03-01 22:25:36
Откуда: Санкт-Петербург

Непрочитанное сообщение zorg » 2007-02-27 22:09:54

вот именно!! идеявсех этих систем в этом что нужно подумать прежде чем сделать!!!
у меня тоже не всё так гладко, дело продвигается медленне чем хочется. Копи паст не проходит, так как не даёт нужного понимания, времени не хватает, а куго их нас его навалом??? ни у кого нет!!! Но чтобы чему нить научиться на этом поприще, приходится это время находить!! вот у меня на очереди почтовые системы именно их понимание, так как копи паст по ним работает и работает хорошо! ;)
так что писать нужно самому, когда поймёшь поверь будет значительно легче!!!!
Всё дело в перце!! :)

Гость
проходил мимо

Непрочитанное сообщение Гость » 2007-02-28 10:56:58

Переделал скрипт, написанный Dmitriy.A. Большое спасибо ему и всем за понимание и помощь.
Если не трудно посмотрите, хотя там почти ничего нового из того, что написал Dmitriy.A. только добавились некоторые порты. Смущает только одно самое последнее правило
${fwcmd} add 65000 allow ip from any to any. Я открыл только те порты, которые мне нужны (В первую очередь нужен www,ssh). По умолчанию в ядре используется всем все закрыть. Может это правило не нужно?

Код: Выделить всё

# Setup system for firewall service.

# Suck in the configuration variables.
if [ -z "${source_rc_confs_defined}" ]; then
        if [ -r /etc/defaults/rc.conf ]; then
                . /etc/defaults/rc.conf
                source_rc_confs
        elif [ -r /etc/rc.conf ]; then
                . /etc/rc.conf
        fi
fi

setup_loopback () {
        ############
        # Only in rare cases do you want to change these rules
        #
        ${fwcmd} add 100 pass all from any to any via lo0
        ${fwcmd} add 200 deny all from any to 127.0.0.0/8
        ${fwcmd} add 300 deny ip from 127.0.0.0/8 to any
}

if [ -n "${1}" ]; then
        firewall_type="${1}"
fi

############
# Set quiet mode if requested
#
case ${firewall_quiet} in
[Yy][Ee][Ss])
        fwcmd="/sbin/ipfw -q"
        ;;
*)
        fwcmd="/sbin/ipfw"
        ;;
esac

############
# Flush out the list before we begin.
#
${fwcmd} -f flush

 # Set these to your outside interface network and netmask and ip.
oif="xl1"
onet="10.28.2.0"
omask="255.255.255.0"
oip="10.28.2.126"

# set these to your inside interface network and netmask and ip
iif="xl0"
inet="192.168.10.0"
imask="255.255.255.0"
iip="192.168.10.250"

setup_loopback

${fwcmd} add deny log tcp from any to any in tcpflags fin,syn

#ssh
${fwcmd} add 00300 allow tcp from any to  ${oip} 22
${fwcmd} add 00301 allow tcp from  ${oip} 22 to any
#http
${fwcmd} add 00302 allow tcp from any to  ${oip} 80
${fwcmd} add 00303 allow tcp from  ${oip} 80 to any
#ftp
${fwcmd} add 00304 allow tcp from any to  ${oip} 21
${fwcmd} add 00305 allow tcp from  ${oip} 21 to any
#smtp
${fwcmd} add 00306 allow tcp from any to  ${oip} 25
${fwcmd} add 00307 allow tcp from  ${oip} 25 to any
#pop3,pop3s
${fwcmd} add 00308 allow tcp from any to  ${oip} 110,995
${fwcmd} add 00309 allow tcp from  ${oip} 110,995 to any
#https
${fwcmd} add 00310 allow tcp from any to  ${oip} 443
${fwcmd} add 00311 allow tcp from  ${oip} 443 to any
#dns
${fwcmd} add 00312 allow tcp from any to  ${oip} 53
${fwcmd} add 00313 allow tcp from  ${oip} 53 to any
#icq
${fwcmd} add 00314 allow tcp from any to  ${oip} 5190
${fwcmd} add 00315 allow tcp from  ${oip} 5190 to any

${fwcmd} add deny tcp from ${inet}:${imask} to any 135-139,445 in recv ${iif}
${fwcmd} add deny udp from ${inet}:${imask} any 135-139,445 in recv ${iif}
${fwcmd} add 1000 deny ip from {inet}:${imask} to any in recv ${oif}

#я так понимаю мне это правило не нужно, т.к. у меня внешний ip 10.28.2.126
#${fwcmd} add 1001 deny ip from any to 10.0.0.0/8 via ${oif}

${fwcmd} add 1002 deny ip from any to 172.16.0.0/12 via ${oif}
${fwcmd} add 1003 deny ip from any to 192.168.0.0/16 via ${oif}
${fwcmd} add 1004 deny ip from any to 0.0.0.0/8 via ${oif}
${fwcmd} add 1005 deny ip from any to 169.254.0.0/16 via ${oif}
${fwcmd} add 1006 deny ip from any to 224.0.0.0/4 via ${oif}
${fwcmd} add 1007 deny ip from any to 240.0.0.0/4 via ${oif}

#nat
${fwcmd} add 3000 divert 8668 ip from ${inet}:${imask} to any out xmit ${oif}
${fwcmd} add 3100 divert 8668 ip from any to ${oip} in recv ${oif}

${fwcmd} add allow udp from ${oip} to any 53 keep-state
${fwcmd} add allow udp from ${oip} to any 33434-33524
${fwcmd} add allow udp from any to ${oip} 33434-33524
${fwcmd} add allow icmp from any to any icmptype 0,3,8,11
${fwcmd} add allow tcp from any to any established
${fwcmd} add allow ip from any to any frag

${fwcmd} add 65000 allow ip from any to any
в rc.conf оставляю следующее

Код: Выделить всё

firewall_enable="YES"
firewall_script="/etc/rc.firewall"
firewall_quiet="YES"
firewall_logging="YES"
natd_enable="YES"
natd_interface="xl1"
tcp_drop_synfin="YES"
Пишу все это еще не проверив работоспособность, т.к. буду делать проверку только сегодня вечером. Хочу перестраховаться и попросить, чтобы вы еще раз посмотрели, то что я буду использовать в ipfw. Заранее спасибо :).

Аватара пользователя
lexa
ефрейтор
Сообщения: 54
Зарегистрирован: 2007-02-27 16:41:04
Откуда: Москва
Контактная информация:

Непрочитанное сообщение lexa » 2007-02-28 10:59:26

Простите забыл зарегиться на форуме, поэтому предыдущее сообщение под гостем.

Dmitriy.A
ст. сержант
Сообщения: 383
Зарегистрирован: 2006-12-15 17:09:14
Откуда: Москва

Непрочитанное сообщение Dmitriy.A » 2007-02-28 11:07:47

порты которые ты открываешь

Код: Выделить всё

#http 
${fwcmd} add 00302 allow tcp from any to  ${oip} 80 
${fwcmd} add 00303 allow tcp from  ${oip} 80 to any 
#ftp 
${fwcmd} add 00304 allow tcp from any to  ${oip} 21 
${fwcmd} add 00305 allow tcp from  ${oip} 21 to any 
#smtp 
${fwcmd} add 00306 allow tcp from any to  ${oip} 25 
${fwcmd} add 00307 allow tcp from  ${oip} 25 to any 
#pop3,pop3s 
${fwcmd} add 00308 allow tcp from any to  ${oip} 110,995 
${fwcmd} add 00309 allow tcp from  ${oip} 110,995 to any 
#https 
${fwcmd} add 00310 allow tcp from any to  ${oip} 443 
${fwcmd} add 00311 allow tcp from  ${oip} 443 to any 
#dns 
${fwcmd} add 00312 allow tcp from any to  ${oip} 53 
${fwcmd} add 00313 allow tcp from  ${oip} 53 to any 
#icq 
${fwcmd} add 00314 allow tcp from any to  ${oip} 5190 
${fwcmd} add 00315 allow tcp from  ${oip} 5190 to any 
если в ядре всем все закрыть то последнее правило не нужно и много других не нужно
а те которые я выделил нужны.

по умолчанию открыты, ssh тоже открыт просто стремно :) -это не параноидальный конфиг. можно просто разрешить коннектится к 21 порту только с определенного адреса

Аватара пользователя
lexa
ефрейтор
Сообщения: 54
Зарегистрирован: 2007-02-27 16:41:04
Откуда: Москва
Контактная информация:

Непрочитанное сообщение lexa » 2007-02-28 11:20:48

А по умолчанию их отрывает правило
add 65000 allow ip from any to any. так?

Если мне нужны только те порты, которые я написал, то от последнего правила add 65000 allow ip from any to any я могу отказаться. так? если да какие еще правила вы написали не нужны?

Аватара пользователя
alex3
лейтенант
Сообщения: 872
Зарегистрирован: 2006-11-20 16:47:56
Откуда: Переславль
Контактная информация:

Непрочитанное сообщение alex3 » 2007-02-28 16:35:14

не отказаться а заменить allow на deny

Аватара пользователя
lexa
ефрейтор
Сообщения: 54
Зарегистрирован: 2007-02-27 16:41:04
Откуда: Москва
Контактная информация:

Непрочитанное сообщение lexa » 2007-02-28 17:40:32

alex3 писал(а):не отказаться а заменить allow на deny
я думаю, что можно именно отказаться, т.к. я в ядро опцию разрешить все всем не ставил, а по умолчанию там запретить все всем. Если я не прав поправьте меня.

Аватара пользователя
zorg
лейтенант
Сообщения: 665
Зарегистрирован: 2006-03-01 22:25:36
Откуда: Санкт-Петербург

Непрочитанное сообщение zorg » 2007-02-28 20:00:32

Прав, но иногда хочется подстраховаться! ;)
Всё дело в перце!! :)

Аватара пользователя
lexa
ефрейтор
Сообщения: 54
Зарегистрирован: 2007-02-27 16:41:04
Откуда: Москва
Контактная информация:

Непрочитанное сообщение lexa » 2007-03-01 10:28:56

Ребята у меня вчера ничего не получилось, как я хотел.

Пишу что делал:

текст правила

Код: Выделить всё

# Setup system for firewall service.

# Suck in the configuration variables.

if [ -z "${source_rc_confs_defined}" ]; then

        if [ -r /etc/defaults/rc.conf ]; then

                . /etc/defaults/rc.conf

                source_rc_confs

        elif [ -r /etc/rc.conf ]; then

                . /etc/rc.conf

        fi

fi

 setup_loopback () {

        ############

        # Only in rare cases do you want to change these rules

        #

        ${fwcmd} add 100 pass all from any to any via lo0

        ${fwcmd} add 200 deny all from any to 127.0.0.0/8

        ${fwcmd} add 300 deny ip from 127.0.0.0/8 to any

}

 
if [ -n "${1}" ]; then

        firewall_type="${1}"

fi
 

############

# Set quiet mode if requested

#

case ${firewall_quiet} in

[Yy][Ee][Ss])

        fwcmd="/sbin/ipfw -q"

        ;;

*)

        fwcmd="/sbin/ipfw"

        ;;

esac

 
############

# Flush out the list before we begin.

#

${fwcmd} -f flush

 

 # Set these to your outside interface network and netmask and ip.

oif="xl1"

onet="10.28.2.0"

omask="255.255.255.0"

oip="10.28.2.126"
 

# set these to your inside interface network and netmask and ip

iif="xl0"

inet="192.168.10.0"

imask="255.255.255.0"

iip="192.168.10.250"

 
setup_loopback

 
${fwcmd} add deny log tcp from any to any in tcpflags fin,syn

 
#ssh

${fwcmd} add 00300 allow tcp from any to  ${oip} 22

${fwcmd} add 00301 allow tcp from  ${oip} 22 to any

#http

${fwcmd} add 00302 allow tcp from any to  ${oip} 80

${fwcmd} add 00303 allow tcp from  ${oip} 80 to any

#ftp

${fwcmd} add 00304 allow tcp from any to  ${oip} 21

${fwcmd} add 00305 allow tcp from  ${oip} 21 to any

#smtp

${fwcmd} add 00306 allow tcp from any to  ${oip} 25

${fwcmd} add 00307 allow tcp from  ${oip} 25 to any

#pop3,pop3s

${fwcmd} add 00308 allow tcp from any to  ${oip} 110,995

${fwcmd} add 00309 allow tcp from  ${oip} 110,995 to any

#https

${fwcmd} add 00310 allow tcp from any to  ${oip} 443

${fwcmd} add 00311 allow tcp from  ${oip} 443 to any

#dns

${fwcmd} add 00312 allow tcp from any to  ${oip} 53

${fwcmd} add 00313 allow tcp from  ${oip} 53 to any

#icq

${fwcmd} add 00314 allow tcp from any to  ${oip} 5190

${fwcmd} add 00315 allow tcp from  ${oip} 5190 to any

 

${fwcmd} add deny tcp from ${inet}:${imask} to any 135-139,445 in recv ${iif}

${fwcmd} add deny udp from ${inet}:${imask} any 135-139,445 in recv ${iif}

${fwcmd} add 1000 deny ip from {inet}:${imask} to any in recv ${oif}

 

#я так понимаю мне это правило не нужно, т.к. у меня внешний ip 10.28.2.126

#${fwcmd} add 1001 deny ip from any to 10.0.0.0/8 via ${oif}

 

${fwcmd} add 1002 deny ip from any to 172.16.0.0/12 via ${oif}

${fwcmd} add 1003 deny ip from any to 192.168.0.0/16 via ${oif}

${fwcmd} add 1004 deny ip from any to 0.0.0.0/8 via ${oif}

${fwcmd} add 1005 deny ip from any to 169.254.0.0/16 via ${oif}

${fwcmd} add 1006 deny ip from any to 224.0.0.0/4 via ${oif}

${fwcmd} add 1007 deny ip from any to 240.0.0.0/4 via ${oif}

 

#nat

${fwcmd} add 3000 divert 8668 ip from ${inet}:${imask} to any out xmit ${oif}

${fwcmd} add 3100 divert 8668 ip from any to ${oip} in recv ${oif}

 

${fwcmd} add allow udp from ${oip} to any 53 keep-state

${fwcmd} add allow udp from ${oip} to any 33434-33524

${fwcmd} add allow udp from any to ${oip} 33434-33524

${fwcmd} add allow icmp from any to any icmptype 0,3,8,11

${fwcmd} add allow tcp from any to any established

${fwcmd} add allow ip from any to any frag

 

${fwcmd} add 65000 allow ip from any to any


текст рс.конф

Код: Выделить всё

# -- sysinstall generated deltas -- # Sat Feb 24 18:43:56 2007

# Created: Sat Feb 24 18:43:56 2007

# Enable network daemons for user convenience.

# Please make all changes to this file, not to /etc/defaults/rc.conf.

# This file now contains just the overrides from /etc/defaults/rc.conf.

defaultrouter="10.28.2.1"

gateway_enable="YES"

hostname="saturn.stroi-monolit.ru"

ifconfig_xl0="inet 192.168.10.250  netmask 255.255.255.0"

ifconfig_xl1="inet 10.28.2.126  netmask 255.255.255.0"

keymap="ru.koi8-r"

linux_enable="YES"

sshd_enable="YES"

webmin_enable="YES"

clamav_clamd_enable="YES"

clamav_freshclam_enable="YES"

#########################

firewall_enable="YES"

firewall_script="/etc/rc.firewall"

firewall_quiet="YES"

firewall_logging="YES"

natd_enable="YES"

natd_interface="xl1"

natd_flags=""

tcp_drop_synfin="YES"

clear_tmp_enable="YES"

inetd_enable="NO"


ядро компилил с параметрами

Код: Выделить всё

options         DUMMYNET

options         TCP_DROP_SYNFIN

options         SC_DISABLE_REBOOT

options         IPFIREWALL

options         IPFIREWALL_VERBOSE

options         IPFIREWALL_VERBOSE_LIMIT=100

options         IPFIREWALL_FORWARD

options         IPDIVERT

options         BRIDGE


При данных настройках брандмауэра инет работает, но только потому что в последнем правиле стоит все всем разрешить

${fwcmd} add 65000 allow ip from any to any

Если это правило закоментить, то инет не работает и по ssh я войти тож не могу. Пинг рамблера проходит и по имени и по айпи. Трасерт тож проходит до конца, сначала мой шлюз, потом провайдера и т.д.

Команда ipfw show показывает, что по правилам

Код: Выделить всё


#ssh

${fwcmd} add 00300 allow tcp from any to  ${oip} 22

${fwcmd} add 00301 allow tcp from  ${oip} 22 to any

#http

${fwcmd} add 00302 allow tcp from any to  ${oip} 80

${fwcmd} add 00303 allow tcp from  ${oip} 80 to any

никаких пакетов не проходило.

Пакеты шли по правилам:

Код: Выделить всё

${fwcmd} add 3000 divert 8668 ip from ${inet}:${imask} to any out xmit ${oif}

${fwcmd} add 3100 divert 8668 ip from any to ${oip} in recv ${oif}

 

${fwcmd} add allow udp from ${oip} to any 53 keep-state

${fwcmd} add allow icmp from any to any icmptype 0,3,8,11

${fwcmd} add allow tcp from any to any established

И по правилу по-умолчанию запретить все всем.



Что посоветуете сделать, чтобы заработали правила по указанным портам (был доступ по http, ssh и т.д.) при закоментированном правиле
${fwcmd} add 65000 allow ip from any to any?

Заранее спасибо и извините, что слишком много написал
:?

Аватара пользователя
alex3
лейтенант
Сообщения: 872
Зарегистрирован: 2006-11-20 16:47:56
Откуда: Переславль
Контактная информация:

Непрочитанное сообщение alex3 » 2007-03-01 10:39:08

Код: Выделить всё

${fwcmd} add pass tcp from any to any setup
может из-за отсутствия этого правила?
Если ipfw можно считать речью обычного человека, то pf - речь политика. За каждой ошибкой -ядерный песец.

Dmitriy.A
ст. сержант
Сообщения: 383
Зарегистрирован: 2006-12-15 17:09:14
Откуда: Москва

Непрочитанное сообщение Dmitriy.A » 2007-03-01 10:51:20

man ipfw вдумчиво несколько раз - а то ты походу не понимаешь что делаешь. толку от того что тебе напишут не будет.

Аватара пользователя
alex3
лейтенант
Сообщения: 872
Зарегистрирован: 2006-11-20 16:47:56
Откуда: Переславль
Контактная информация:

Непрочитанное сообщение alex3 » 2007-03-01 11:01:04

тем более что на ftp.lissyara.su есть русский ман по ipfw :)
Если ipfw можно считать речью обычного человека, то pf - речь политика. За каждой ошибкой -ядерный песец.

Аватара пользователя
lexa
ефрейтор
Сообщения: 54
Зарегистрирован: 2007-02-27 16:41:04
Откуда: Москва
Контактная информация:

Непрочитанное сообщение lexa » 2007-03-01 11:19:26

Dmitriy.A писал(а):man ipfw вдумчиво несколько раз - а то ты походу не понимаешь что делаешь. толку от того что тебе напишут не будет.
я использовал то правило, которое ты мне дал.
с правилом ${fwcmd} add 65000 allow ip from any to any, инет работает и по ssh я захожу из локалки. но если набрать ipfw show то там по правилам по портам для ssh и http пакетов не проходило, так же как если правило ${fwcmd} add 65000 allow ip from any to any закоментировать. Если по этим правилам пакеты не проходят, то зачем они нужны в принципе? Извините, если откровенно туплю
:(

Dmitriy.A
ст. сержант
Сообщения: 383
Зарегистрирован: 2006-12-15 17:09:14
Откуда: Москва

Непрочитанное сообщение Dmitriy.A » 2007-03-01 11:34:13

блин если ты из локалки коннектишься каким боком правило для подключения по ссх из вне должно сработать? очень много читать про ипфв. Может я чего не понимаю. :)

Аватара пользователя
lexa
ефрейтор
Сообщения: 54
Зарегистрирован: 2007-02-27 16:41:04
Откуда: Москва
Контактная информация:

Непрочитанное сообщение lexa » 2007-03-01 11:40:10

Dmitriy.A писал(а):блин если ты из локалки коннектишься каким боком правило для подключения по ссх из вне должно сработать? очень много читать про ипфв. Может я чего не понимаю. :)
Вопрос был совершенно другой. Я не ставил вопрос о том, почему я не могу из вне подключиться по ssh.