Сведения о документе

Сетевая безопасность


Безопасность бывает различная, в данном разделе мы рассмотрим внешнюю сетевую безопасность. Главным правилом для обеспечения безопасности при доступе по сети, является следующее условие: выключайте на сервере весь неиспользуемый сервис! Команды 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.

Сведения о документе