|
| |||||||||||||||||||||||
| |||||||||||||||||||||||
FIREWALLПрограммы и дополнительная литератураВы должны прочитать HOWTO: Firewall. Там сказано, что вам понадобится утилита ipfwadm, если у вас ее еще нет. Существуют, правда, и другие, но как я начал использовать ipfwadm, так на нем и остановился. Он достаточно удобен и прост! Вы всегда знаете, что конкретно он делает. Предварительные проверкиВы уже собрали IP-переадресацию и маскарадинг в ядро, поэтому проверьте, находится ли firewall в его стандартном (разрешающем) состоянии командой
Эти команды выдадут список правил соответственно для входного, выходного и переадресуемых потоков firewall. Опция "-l" означает "list" (список). Возможно, вы собрали и систему учета IP-пакетов:
Вы увидите, что ни одно правило не определено, и что, по умолчанию, firewall пропускает все пакеты. Вы всегда можете вернуться к этому состоянию командами
Опция "-f" означает "flush" (сбросить, очистить). Эта опция вам может понадобиться. Основное правилоЯ хочу отрезать внешний мир от моей сети и не более того, поэтому мое последнее (воспринимаемое по умолчанию) правило будет следующим - firewall должен игнорировать любые пакеты, идущие из внутренней сети во внешний мир. Я поместил все правила в файл /etc/rc.d/rc.firewall и запускаю его из /etc/rc.d/rc.local в процессе загрузки.
Опция "-S" задает адрес источника и маску. "-D" - адрес и маску получателя. Это - достаточно подробный формат. Ipfwadm понимает сетевые имена и некоторые сокращения (все это описано в man). Наверно, более удобно поместить некоторые или все эти правила в выходной поток firewall, используя "-O" вместо "-I", но я оставлю эти правила на входящем потоке. Исключения для адресовВсе исключения этому общему отрицанию я должен поместить до установки основного правила. Машина, работающая в качестве firewall во внутренней сети, будет иметь некоторые привилегии. Без особого разрешения будет запрещено входить в машину, использующую firewall, но с этим разрешением им можно общаться с внешним миром.
Я также разрешу клиентам внутренней сети общаться с firewall-машиной. Возможно, они попытаются таким образом постараться выбраться во внешний мир!
На этом моменте вы можете попытаться добраться до клиентов снаружи firewall, при помощи telnet, но у вас ничего не получится. Это означает, что вы смогли увидеть их машины, но они не могут послать вам ничего. Вы сможете установить контакт с внутренними машинами, если firewall у вас играет роль простого аудитора. Испытайте rlogin и ping , а также tcpdump на первой или второй карте. Вы должны понять, что вы увидите. Исключения для протоколовЯ буду облегчать правила протокол за протоколом. Первое, что я хочу сделать - разрешить ping снаружи внутрь и получать ответ, поэтому я добавлю правило:
Опция "-P icmp" как раз отвечает за протокол. Пока я не настроил должным образом ftp-proxy, я также разрешу вызовы ftp, используя конкретные порты - 20, 21 и 115 на внешние машины.
Я так и не смог заставить работать sendmail между внутренними машинами без DNS. Вместо настройки собственного DNS-сервера, я просто разрешил запросы с моей сети к внешнему серверу, поместив заодно его адрес в файлы /etc/resolv.conf на машинах моей сети ("nameserver 123.456.789.31" в отдельной строке).
Номер порта и протокол определенного сервиса вы можете узнать при помощи tcpdump. Задействуйте этот сервис при помощи ftp или telnet или чего-нибудь подобного с внутренней машины или на нее, и затем проверяйте порты firewall при помощи tcpdump, например:
В файле /etc/services также есть много интересного. Чтобы разрешить telnet и ftp ВНУТРЬ сети ИЗВНЕ через firewall, вам придется разрешить локальным клиентам производить вызовы НАРУЖУ на определенных портах. С ftp все понятно - это сервер, организующий собственное соединение с получателем - но я не очень понимаю, зачем это необходимо для telnet.
Иногда возникает проблема с некоторыми демонами, которые пытаются выяснить имя машины-firewall, чтобы узнать собственный сетевой адрес. У меня лично возникла проблема с Rpc.yppasswdd. Он настаивал на передаче информации наружу от firewall (через вторую карту). Это привело к тому, что клиенты изнутри его не видели. Вместо запуска IP-алиасинга или правки кода демона, я просто переписал имя машины на адрес внутренней карты в клиентских файлах /etc/hosts. ПроверкаВам, наверное, надо будет проверить работу telnet, rlogin и ping снаружи. Изнутри вы должны смочь произвести ping наружу. Вы также должны иметь возможность команды telnet на firewall-машину изнутри сети, а на самой этой машине должно быть возможно все. Вот и все. Далее вам, наверно, стоит узнать подробнее про rpc/Yellow Pages и работу с файлом паролей. Сеть с firewall должна работать так, чтобы обычные пользователи не могли войти в firewall (если они смогут зайти в него, они смогут выбраться наружу). Хороших вам HOWTO!
| |||||||||||||||||||||||
|
CITForum © 1997–2025