iptables
Файл /etc/rc.d/rc.firewall изначально отсутствует, но если его создать (руками или каким-то инструментом для автоматизированной настройки), он будет вызываться из /etc/rc.d/rc.sysinit.
> А он нужен там?
Конечно нужен. Без него в правилах без поллитра уже через неделю не разберешься. А насчет rc.firewall — надо просто создать такой файл и он при загрузке будет подхватываться.
[…] в незамороченных случаях (обычно) проще применять /etc/sysconfig/iptables, service iptables, iptables-save и iptables-restore.
Бишь создать чем угодно устраивающую конфигурацию в рантайме (то есть когда iptables в ядре настроены любой последовательностью вызовов /sbin/iptables, которая привела к удовлетворительному результату) и записать командой iptables-save. Она попадёт в первый из вышеупомянутых файлов и будет использоваться сервисом iptables при загрузке.
[про rc.firewall] опять же куча всяких древних (и даже не очень, но слаквареобразных) мануалов рекомендует туда пихать развесистые скрипты, в которых единственное осмысленное — это параметризация. Бывают менее тривиальные конфигурации, правда, отнюдь не всегда они нужны.
- пишем скрипт (очистить_все; установить_нужное).
- запускаем.
- если понравилось — service iptables save.
- скрипт остается лежать в /sbin. процедуру повторить.
- редактируя файрвол, проще работать с макросами : $lan_iface, $lan_ip, $outerface и т. д. если админов более одного и/или сложные правила, то опять же легче разбираться в скрипте с комментариями, чем в голых цепочках.
- если вдруг что-то начудил до невозможности входа по ssh, можно пнуть ящик, после ребута будет рабочая конфигурация. иначе пришлось бы подключать монитор с клавой.
Кстати, в etcnet начиная с 0.7.9 содержится некоторая поддержка конфигурирования iptables в стиле SysV, поинтерфейсно/таблично.
Ссылки
Alt linux iptables настройка
Безопасность бывает различная, в данном разделе мы рассмотрим внешнюю сетевую безопасность. Главным правилом для обеспечения безопасности при доступе по сети, является следующее условие: выключайте на сервере весь неиспользуемый сервис! Команды netstat -anp | grep udp и netstat -anp | grep LISTEN помогут определить, какой сервис в данный момент предоставляет ваш сервер. Отключить ненужный сервис вы можете с помощью команд chkconfig или ntsysv .
Вторым правилом будет следующее: по возможности обновляйте серверные компоненты из updates дистрибутива, особенно в том случае, если в обновлениях исправлены ошибки в безопасности. Подпишитесь на список рассылки security-announce По этому списку приходит очень немного сообщений, но содержащаяся в них информация и объявления могут иметь очень большое значение для безопасности вашей системы.
Третьим правилом можно считать следующее: не подключайте критически важные ресурсы к глобальной сети Интернет, если это возможно.
Четвёртое правило: используйте где возможно криптование, ssh-туннелирование, SSL-подписи. Это предохранит ваш трафик от подслушивания.
Последнее правило — фильтруйте весь нежелательный трафик. Об этом поговорим подробнее.
Настройка межсетевого экрана
Для построения фильтра пакетов на уровне ядра в Linux применяются следующие пакеты: для ядер 2.2 — ipchains ; для ядер 2.4 — iptables ; для ядер 2.6 — iptables и ebtables . Далее будем рассматривать iptables как наиболее популярный для настройки межсетевого экрана.
Фундаментальную информацию по настройке iptables и пакетного фильтра на его основе, включая настройку маскарадинга и NAT, с примерами и готовыми скриптами, можно найти в статье http://gazette.linux.ru.net/rus/articles/index-iptables-tutorial.html.
Фильтр пакетов — это программа ( iptables ) которая просматривает заголовки пакетов по мере их прохождения, и решает дальнейшую судьбу всего пакета. Фильтр может сбросить DROP-пакет (т. е. как будто пакет и не приходил вовсе), принять ACCEPT-пакет (т. е. пакет может пройти дальше), или сделать с ним что-то ещё более сложное.
Под Linux , фильтр пакетов встроен в ядро (как модули), и мы можем делать с пакетами несколько хитроумных вещей, но основной принцип в просмотре заголовков пакетов и решении их дальнейшей судьбы сохраняется.
Ваша текущая настройка межсетевого экрана хранится в ядре, и соответственно будет потеряна при перезагрузке системы. Для сохранения текущих настроек существует команда iptables-save . Она помогает сохранить настройки в файле /etc/sysconfig/iptables . Не исправляйте этот файл вручную! Конфигурация из него зачитывается и восстанавливается при запуске сервиса iptables . Альтернативным вариантом будет размещение в каталоге /etc/rc.d сценария rc.firewall , производящего настройку межсетевого экрана. Файл сценария, естественно, должен быть исполняемым.
Для того, чтобы разобраться в работе iptables , необходимо понять, как пакеты проходят цепочки. На рисунке представлен этот механизм. Как видите, по левой цепочке пакет проходит в случае когда ваш маршрутизатор переправляет пакет дальше, а по правой — когда это локальный трафик, или предназначенный самому маршрутизатору.
Более наглядно можно себе представить картину маршрутизации на примере межсетевого экрана, установленного между домашней сетью и Интернет (см. следующий рисунок).
О назначении самих цепочек и расширенных возможностях iptables читайте документацию по представленной выше ссылке или man iptables .
Для примера приведём несколько правил.
# Политики цепочек по умолчанию. Если межсетевой экран не находит описания для # данного пакета, он поступает с ним согласно этих правил. iptables -P INPUT DROP iptables -P OUTPUT ACCEPT iptables -P FORWARD DROP # Обнуление существующих цепочек iptables -F INPUT iptables -F OUTPUT iptables -F FORWARD # Защита от Syn-flood. iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT # Защита от скрытого сканирования портов. iptables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT # Защита от Ping of death. iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT # Запрещаем NEW и INVALID входящие пакеты с ppp. iptables -A INPUT -i ppp+ -m state --state NEW,INVALID -j DROP # Разрешаем пакеты, принадлежащие и относящиеся к уже установленному # соединению. iptables -N block iptables -A block -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A block -m state --state NEW -i ! ppp+ -j ACCEPT iptables -A block -j DROP iptables -A INPUT -j block
В этих правилах описывается примерная защита для одиноко стоящего хоста с коммутируемым (или ADSL) подключением к Интернет. В самом конце цепочки INPUT осуществляется переход в самодельную цепочку block .