BASH Programming - Введение


IP файрволл (для версий ядра 2.0).


Использование файрволлов подробно рассмотрено в . IP-файрволл позволяет вам предотвращать несанкционированный доступ к Вашей машине путем отбрасывания IP-пакетов по заданным правилам. Есть три типа правил -- входные фильтры, выходные фильтры и фильтры передачи. Входные фильтры применяются к пакетам, приходящим из сети. Выходные фильтры применяются к пакетам, предназначенным к отправке в сеть. Фильтры передачи применяются к полученным пакетам, которые не предназначены для данной машины и должны быть маршрутизированы.

Опции компиляции ядра:

Networking options --->

[*] Network firewalls .... [*] IP: forwarding/gatewaying .... [*] IP: firewalling [ ] IP: firewall packet logging

Задание фильтров производится с помощью программы ipfwadm. Данный документ не ставит своей задачей углубляться в тонкости сетевой безопасности, поэтому, если Вы хотите надежно защитить свою сеть, вам потребуется самостоятельно ознакомится с этим вопросом.

По-видимому наиболее распространенный случай использования IP-файрволла -- это когда Ваша машина является маршрутизатором, через который локальная сеть подключена в интернету, и Вы хотите предотвратить несанкционированный доступ к машинам Вашей локальной сети с машин из внешних сетей.

Данный пример был любезно предоставлен Арнтом Гюлбрандсеном (Arnt Gulbrandsen, <agulbra@troll.no>).

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

- - \ | 172.16.37.0 \ | /255.255.255.0 \ --------- | | 172.16.174.30 | Linux | | NET =================| f/w |------| ..37.19 | PPP | router| | -------- / --------- |--| Mail | / | | /DNS | / | -------- - -

Приведенные ниже команды настройки файрволла следует поместить в один из rc-файлов, так чтобы они автоматически выполнялись при запуске системы. Для обеспечения максимальной безопасности их следует выполнять после настройки сетевых интерфейсов, но до их активизации, чтобы предотвратить возможность несанкционированного доступа в момент загрузки системы.

#!/bin/sh


# Сбросить таблицу фильтров передачи # Установить правило по умолчанию в 'разрешить' # /sbin/ipfwadm -F -f /sbin/ipfwadm -F -p accept # # То же самое для входных фильтров # /sbin/ipfwadm -I -f /sbin/ipfwadm -I -p accept

# Настроить интерфейс PPP # Можно было бы использовать опцию '-a deny' вместо '-a reject -y' # но тогда будет невозможно открывать исходящие соединения на этом # интерфейсе. Опция '-o' указывает, что отвергнутые пакеты следует # протоколировать. Тратя место на диске, вы получаете возможность # обнаруживать атаки и ошибки в конфигурации. # /sbin/ipfwadm -I -a reject -y -o -P tcp -S 0/0 -D 172.16.174.30

# Отбрасывать очевидно неверные пакеты: # Информация не должна приходит с любых типов широковещательных адресов # /sbin/ipfwadm -F -a deny -o -S 224.0/3 -D 172.16.37.0/24 # # Пакеты с кольцевого интерфейса не должны попадать на реальный # /sbin/ipfwadm -F -a deny -o -S 127.0/8 -D 172.16.37.0/24

# разрешить входящие SMTP и DNS запросы, но только к выделенному для # этого серверу # /sbin/ipfwadm -F -a accept -P tcp -S 0/0 -D 172.16.37.19 25 53 # # DNS использует протокол UDP наряду с TCP, его тоже следует разрешить # /sbin/ipfwadm -F -a accept -P udp -S 0/0 -D 172.16.37.19 53 # # запретить "ответы" на опасные порты, такие как NFS или его расширений # (Larry McVoy's NFS extension). Если у Вас работает squid, добавьте и # его порты # /sbin/ipfwadm -F -a deny -o -P udp -S 0/0 53 \ -D 172.16.37.0/24 2049 2050

# ответы на другие порты разрешены # /sbin/ipfwadm -F -a accept -P udp -S 0/0 53 \ -D 172.16.37.0/24 53 1024:65535

# Запретить входящие соединения с демоном identd # Используйте параметр 'reject' чтобы машина, пытающаяся установить # соединение получала отказ немедленно # /sbin/ipfwadm -F -a reject -o -P tcp -S 0/0 -D 172.16.37.0/24 113

# Разрешить соединения определенных типов из "дружественных" сетей # 192.168.64 и 192.168.65. # /sbin/ipfwadm -F -a accept -P tcp -S 192.168.64.0/23 \ -D 172.16.37.0/24 20:23

# Разрешить прохождение любых пакетов из локальной сети. # /sbin/ipfwadm -F -a accept -P tcp -S 172.16.37.0/24 -D 0/0

# запретить остальные tcp-соединения и протоколировать их # (добавьте 1:1023 если у Вас перестанет работать ftp) # /sbin/ipfwadm -F -a deny -o -y -P tcp -S 0/0 -D 172.16.37.0/24

# то же самое для udp-соединений # /sbin/ipfwadm -F -a deny -o -P udp -S 0/0 -D 172.16.37.0/24

Правильная настройка файрволла -- нелегкая задача. Приведенный пример может послужить хорошей отправной точкой. Некоторую информацию Вы можете получить, воспользовавшись man-страницей программы ipfwadm. Обязательно получите информацию из всех возможных надежных источников и попросите кого-либо протестировать ваши настройки "снаружи".


Содержание раздела