Построение межсетевого экрана на коммутируемом канале связи при помощи FreeBSD
Пред. |  | След.

# 5. Набор правил для межсетевого экрана

Теперь мы выполнили практически все. Единственное, что осталось сделать, так это задать правила для межсетевого экрана, после чего мы можем выполнить перезагрузку, и межсетевой экран должен заработать. Я понимаю, что в каждом конкретном случае потребуется набор правил, весьма отличающийся от предлагаемого. Я всего лишь попытался написать набор правил, которые должны подойти большинству пользователей коммутируемого доступа. Вы можете тривиально изменить их под ваши требования, взяв нижеследующие правила в качестве основы. Но сначала рассмотрим основы закрытого межсетевого экрана. Вы хотите запретить по умолчанию все, а затем открывать только то, что вам нужно. Правила должны следовать в порядке, когда сначала идут разрешающие правила, а затем запрещающие. Полагаем, что вы добавите свои разрешающие правила, а затем все остальное будет запрещено. :)

Теперь создадим каталог /etc/firewall. Перейдите в этот каталог и отредактируйте файл fwrules, который мы указали в rc.conf. Пожалуйста, отметьте, что вы можете изменить это имя на любое другое. В этом руководстве имя файла дается в качестве примера.

Давайте взглянем на пример файла для межсетевого экрана, и подробно опишем его содержимое.

    # Firewall rules
    # Written by Marc Silver (marcs@draenor.org)
    # http://draenor.org/ipfw
    # Freely distributable

    # Define the firewall command (as in /etc/rc.firewall) for easy
    # reference.  Helps to make it easier to read.
    fwcmd="/sbin/ipfw"

    # Force a flushing of the current rules before we reload.
    $fwcmd -f flush

    # Divert all packets through the tunnel interface.
    $fwcmd add divert natd all from any to any via tun0

    # Allow all data from my network card and localhost.  Make sure you
    # change your network card (mine was fxp0) before you reboot.  :)
    $fwcmd add allow ip from any to any via lo0
    $fwcmd add allow ip from any to any via fxp0

    # Allow all connections that I initiate.
    $fwcmd add allow tcp from any to any out xmit tun0 setup

    # Once connections are made, allow them to stay open.
    $fwcmd add allow tcp from any to any via tun0 established

    # Everyone on the internet is allowed to connect to the following
    # services on the machine.  This example shows that people may connect
    # to ssh and apache.
    $fwcmd add allow tcp from any to any 80 setup
    $fwcmd add allow tcp from any to any 22 setup

    # This sends a RESET to all ident packets.
    $fwcmd add reset log tcp from any to any 113 in recv tun0

    # Allow outgoing DNS queries ONLY to the specified servers.
    $fwcmd add allow udp from any to x.x.x.x 53 out xmit tun0

    # Allow them back in with the answers...  :)
    $fwcmd add allow udp from x.x.x.x 53 to any in recv tun0

    # Allow ICMP (for ping and traceroute to work).  You may wish to
    # disallow this, but I feel it suits my needs to keep them in.
    $fwcmd add 65435 allow icmp from any to any

    # Deny all the rest.
    $fwcmd add 65435 deny log ip from any to any

Теперь у вас есть полнофункциональный межсетевой экран, который разрешает соединения к портам 80 и 22, и отображает в журнале все остальные попытки соединения. Теперь у вас должна успешно пройти перезагрузка и ваш межсетевой экран должен нормально заработать. Если вы обнаружите, что это не так, у вас возникнут проблемы или у вас возникнут пожелания, пожалуйста, напишите мне письмо по электронной почте.

Пред. | Начало | След.
Выключение механизма преобразования сетевых адресов в PPP |  | Вопросы

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам, связанным с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам, связанным с русским переводом документации, пишите в рассылку <frdp@FreeBSD.org.ua>.
Информация по подписке на эту рассылку находится на сайте проекта перевода.