Теперь мы выполнили практически все. Единственное, что осталось сделать, так это задать правила для межсетевого экрана, после чего мы можем выполнить перезагрузку, и межсетевой экран должен заработать. Я понимаю, что в каждом конкретном случае потребуется набор правил, весьма отличающийся от предлагаемого. Я всего лишь попытался написать набор правил, которые должны подойти большинству пользователей коммутируемого доступа. Вы можете тривиально изменить их под ваши требования, взяв нижеследующие правила в качестве основы. Но сначала рассмотрим основы закрытого межсетевого экрана. Вы хотите запретить по умолчанию все, а затем открывать только то, что вам нужно. Правила должны следовать в порядке, когда сначала идут разрешающие правила, а затем запрещающие. Полагаем, что вы добавите свои разрешающие правила, а затем все остальное будет запрещено. :)
Теперь создадим каталог /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, и отображает в журнале все остальные попытки соединения. Теперь у вас должна успешно пройти перезагрузка и ваш межсетевой экран должен нормально заработать. Если вы обнаружите, что это не так, у вас возникнут проблемы или у вас возникнут пожелания, пожалуйста, напишите мне письмо по электронной почте.
Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
По вопросам, связанным с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам, связанным с русским переводом документации, пишите в рассылку <frdp@FreeBSD.org.ua>.
Информация по подписке на эту рассылку находится на сайте проекта перевода.