Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #33, АВГУСТ 2003 г.

САМЫЙ СЕРЬЕЗНЫЙ ГЕЙТ
Настраиваем ipfw + NAT во FreeBSD

DemiurG (arkhangel@mail.ru)

Спецвыпуск Xakep, номер #033, стр. 033-054-5


Пример 2: ipfw del 8000 - убираем это правило.

Пример 3: ipfw add allow tcp from any to 192.168.0.55 2000-2100 - разрешаем tcp трафик от любого хоста в Интернете к хосту 192.168.0.55 с 2000 по 2100 порт.

Пример 4: ipfw add 9200 count tcp from pop.mail.ru 110 to 192.168.6.200 via xl1 - подсчитаем, сколько почты скачивает хост c ip 192.168.6.200 c сервера mail.ru. В данном случае мы подсчитываем все по протоколам pop3, а если учитывать еще и imap4, то пример 4 будет выглядеть так:

ipfw add 92 count tcp from pop.mail.ru 110,143 to 192.168.6.200 via xl1

(так как imap4 использует порт 143).

Ты понял, почему в правиле 4 мы указываем интерфейс? Если в правиле 4 мы его не укажем, то трафик будет считаться два раза (сначала он пройдет через интерфейс xl1 - потом xl0). А если ты хочешь узнать, сколько ты отсылаешь почты, тогда пример 5: ipfw add 94 count tcp from 192.168.6.200 to smtp.mail.ru 25 via xl0.

Допустим, многие (или все) правила ты захотел отменить - вводи команду ipfw -f flush, и все правила, кроме последнего (65535 deny ip from any to any), удалятся. После того как очистил все правила, не удивляйся, что шлюз больше не функционирует - правило 20 (divert natd all from any to any via xl1) тоже исчезло.

ПОГРУЖЕНИЕ

Наверное, ты заметил, что все правила хранятся в оперативной памяти компа, то есть при случайной перезагрузке (или не случайной) весь твой труд будет уничтожен. Непорядок. Изменим это. Все настройки для ipfw задаются в файле /etc/rc.firewall. Используя файл rc.conf + опцию firewall_type="/usr/local/etc/firewall.conf", ты можешь сделать свой конфиг firewall'а (firewall.conf), из которого уже будут браться рулесы, но я обычно просто вставляю их в конец дефолтного rc.firewall. У нас должно получиться в несколько правил (не забудь, что нам надо еще защитить внутреннюю сеть от посягательств):

/sbin/ipfw -f flush

/sbin/ipfw add 20 divert natd all from any to any via xl1

/sbin/ipfw add 40 deny tcp from any to any 135-139 via xl1

/sbin/ipfw add 45 deny tcp from any 135-139 to any

/sbin/ipfw add 300 allow ip from 192.168.6.200 to any

/sbin/ipfw add 310 allow ip from any to 192.168.6.200 via xl1

/sbin/ipfw add 320 allow ip from any to 192.168.6.200 via xl0

/sbin/ipfw add 400 allow ip from 192.168.0.55 to any

/sbin/ipfw add 410 allow ip from any to 192.168.0.55 via xl1

/sbin/ipfw add 420 allow ip from any to 192.168.0.55 via xl0

/sbin/ipfw add 65000 allow ip from 222.222.222.222 to any

Прогрузим правила: sh /etc/rc.firewall. Смотрим ipfw -a list.

Оффтопик: если ты хочешь посмотреть какое-то определенное правило - тебе не обязательно поднимать все командой ipfw -a list, ты можешь просто задать ipfw show и номер нужного тебе правила. Пример (чтобы посмотреть правило 45): ipfw show 45.

Если ты не понял, давай разберем, что мы тут написали:

правила №40 и 45 запрещают вход и выход по нетбиосу (что есть хорошо - зачем локальной сети выход в Инет по нетбиосу). Для каждого внутреннего ip-адреса мы создаем 3 правила. Для ip-адреса 192.168.6.200 правило номер 300 разрешает выход в Интернет, а правила 310 и 320 позволяют обращаться к этому хосту из Интернета по интерфейсам xl1 и xl0 (без этих правил хост мог бы просто послать запрос к какому-либо серверу, но получить ответ от него не имел бы прав). Rule 65000 дает право роутеру отсылать пакеты от себя. Заметь, что тут обязательно надо указывать ip внешнего интерфейса, а не сам интерфейс. Благодарю тому, что у нас на каждый хост 3 специфических правила - посторонний (не прописанный) хост не может подключиться к твоей сети, то есть подключиться он сможет, но выйти в Инет нет (разумеется, до тех пор, пока ты для него не вобьешь эти три правила, тем самым разрешив ему доступ на роутере).

ПОДВОДИМ ИТОГИ

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

Назад на стр. 033-054-4  Содержание