Библиотека сайта rus-linux.net
11. Советы по организации правил для фильтра пакетов
Общая мудрость в компьютерной безопасности - блокировать все, затем открывать то что необходимо. Это обычно звучит так: "то что явно не разрешено - запрещено". Я рекомендую именно этот стиль, если безопасность ваша главная цель.
Не запускаете никаких служб в которых вы не нуждаетесь, даже если вы думаете, что блокировали доступ к ним.
Если вы создаете выделенный firewall-сервер, сначала блокируйте весь траффик, затем запускайте определенные сервисы и разрешайте пакетам проходить к ним.
Я рекомендую обезопасить себя как можно сильнее: комбинируйте использование tcp-wrapperов (для соединений идущих на сам firewall), прокси (для соединений идущих транзитом через firewall), проверку маршрутов и использование фильтра пакетов. Проверка маршрутов - когда пакет приходит с интерфейса, с которого он не должен приходить, такой пакет должен быть разрушен (DROP): пример, если ваша внутренняя сеть имеет адрес 10.1.1.0/24, и пакет с таким исходным адресом приходит на ваш внешний интерфейс, он будет разрушен (DROP). Это можно сделать для одного интерфейса (ppp0) так:
# echo 1 > /proc/sys/net/ipv4/conf/ppp0/rp_filter
#
или для всех уже существующих интерфейсов и созданных в будущем:
# for f in /proc/sys/net/ipv4/conf/*/rp_filter; do
# echo 1 > $f
# done
#
Debian устанавливает такие настройки по умолчанию где это только возможно. Если вы используете ассиметричную маршрутизацию (т.е. пакеты могут приходить с разных направлений), вам необходимо отключить такое фильтрование на соответствующих интерфейсах.
Ведение лога полезно при настройке firewallа, но на рабочем firewallе, всегда используйте эту возможность с "limit", чтобы избежать переполнения ваших лог файлов.
Я крайне рекомендую использование отслеживания соединений на защищенных системах: конечно это отнимает часть ресурсов, так как все соединения регистрируются, но это очень полезное свойство для контролирования доступа к ваши сетям. Вам может понадобиться загрузить "ip_conntrack.o" модуль, если ваше ядро не загружает модули автоматически, и если он не встроен в ядро. Если вам необходимо отслеживать сложные протоколы, вам надо будет загрузить соответствующий модуль (например "ip_conntrack_ftp.o").
# iptables -N no-conns-from-ppp0
# iptables -A no-conns-from-ppp0 -m state --state ESTABLISHED,RELATED -j ACCEPT
# iptables -A no-conns-from-ppp0 -m state --state NEW -i ! ppp0 -j ACCEPT
# iptables -A no-conns-from-ppp0 -i ppp0 -m limit -j LOG --log-prefix "Bad packet from ppp0:"
# iptables -A no-conns-from-ppp0 -i ! ppp0 -m limit -j LOG --log-prefix "Bad packet not from ppp0:"
# iptables -A no-conns-from-ppp0 -j DROP
# iptables -A INPUT -j no-conns-from-ppp0
# iptables -A FORWARD -j no-conns-from-ppp0
Настройка и создание хорошего firewall не входит в данный HOWTO, но мой совет "всегда будьте минималистами". Просмотрите Security HOWTO для большей информации.
Next Previous Contents