Брандмауэры и специальное программное обеспечение 8 Часть 4

Вид материалаРеферат

Содержание


Внедрение политик
Тестирование политик
Подобный материал:
1   ...   59   60   61   62   63   64   65   66   ...   101

Внедрение политик


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

1. Будем использовать следующие имена:

foolint=209.191.169.1/25 # это интерфейс eth0

foolint=209.191.169.129/25 # это интерфейс eth1

Блокируем входящие ping-запросы:
ipchains -A input -s echo-request -i ethl -j DENY

Теперь разрешаем пропуск трафика из внутренней сети наружу (за исключе
нием NNTP)

ipchains -A input -s foolint ! 119 -d 0/0 -i ethO -j ACCEPT

4. Блокируем службы, которые являются общей проблемой безопасности или не
используются вами (такие как telnet, ftp, http и imap):

ipchains -A input -p tcp -i ethl -s 0/0 -d foolint 23 -j DENY

ipchains -A input -p tcp -i ethl -s 0/0 -d foolint telnet -j DENY

ipchains -A input -p tcp -i ethl -s 0/0 -d foolint 80 -j DENY

ipchains -A input -p tcp -i ethl -s 0/0 -d foolint imap -j DENY

На этом шаге (шаг 4) интерфейс eth1 можно не указывать, так как если соответствующие данные проникают в систему через интерфейс ethO, такие пакеты удовлетворяют правилу, определенному на шаге 3, и прохождение цепочки input для них на этом завершается.

5. Принимаем данные DNS (только через foolint), ssh и большинство портов с но
мерами выше 1024 (для обеих сетей), а также SMTP и РОР-3:

ipchains -A input -p all -s О/О -d foolint domain -j ACCEPT

ipchains -A input -p tcp -s 0/0 -d fooall 22 -j ACCEPT

ipchains -A input -p tcp -s 0/0 -d fooall 1024:5999 -j ACCEPT

ipchains -A input -p tcp -s 0/0 -d fooall 6010 -j ACCEPT

ipchains -A input -p tcp -s 0/0 -d fooall 25 -j ACCEPT

ipchains -A input -p tcp -s 0/0 -d fooall pop-3 -j ACCEPT

Принимаем пакеты узла localhost:
ipchains -A input -i lo -j ACCEPT

Блокируем все остальное:
ipchains -P input DENY

8. Обеспечиваем передачу пакетов в обоих направлениях — правила цепочки
input осуществляют остальную фильтрацию:

ipchains -P forward ACCEPT

9. Оптимизируем прохождение трафика:

1) минимальная задержка для трафика Web, telnet и ssh:

ipchains -A output -p tcp -d 0/0 80 -t 0x01 0x10 ipchains -A output -p tcp -d 0/0 telnet -t 0x01 0x10 ipchains -A output -p tcp -d 0/0 22 -t 0x01 0x10

максимальный объем передаваемых данных для ftp-data:
ipchains -A output -p tcp -d 0/0 ftp-data -t 0x01 0x08

максимальная надежность для smtp:
ipchains -A output -p tcp -d 0/0 smtp -t 0x01 0x04

минимальные затраты рор-3:

ipchains -A output -p tcp -d 0/0 pop-3 -t 0x01 0x10

В завершение следует добавить правило (если пакет прошел все тесты, его следует принять):

ipchains -P output ACCEPT

Следует, однако, позаботиться еще об одном. Необходимо предотвратить подделку IP-адресов (IP-spoofing), когда кто-то из внешних пользователей делает вид, что он находится во внутренней сети. Никто не должен подключаться к внешнему интерфейсу и при этом заявлять, что он находится внутри сети (или является узлом localhost). Следующие правила позволяют документировать сведения о подобных попытках в журнале и отклонять (REJECT) их:

ipchains -I input 1 -i eth1 -s foolint -l -j REJECT

ipchains -I input 1 -i eth1 -s 127.0.0.1 -l -j REJECT


ПРИМЕЧАНИЕ

Чтобы предотвратить подделку IP-адресов, можно воспользоваться файлом /proc/sys/net/ipv4/conf/ */rp_filter. Достаточно добавить в этот файл единицу («1»). Однако при этом нарушится корректное функционирование модуля FreeS/WAN. Таким образом, для этой цели лучше использовать правила ipchains.

Тестирование политик


Чтобы протестировать сформированный набор правил, проще всего придумать несколько тестовых случаев и использовать параметр -С программы ipchains. Среди тестовых данных нужно поместить как данные, которые не должны проникать во внутреннюю сеть, так и данные, которые должны туда попасть. Для получения дополнительной диагностической информации во время тестирования следует использовать ключ -v. Так вы сможете узнать, прошел ли пакет через брандмауэр или нет. Помните, что совместно с параметром -С помимо имени цепочки следует использовать ключ -s с указанием адреса и порта, ключ -d с указанием адреса и порта, ключ -р и ключ -i.

Иногда для некоторых правил полезно бывает включить документирование в журнале сведений о тестировании пакетов. Эту возможность следует использовать осторожно, в противном случае за короткое время будут созданы чрезвычайно длинные журналы. Как правило, удобно включать документирование только для одного правила за один раз.

Наблюдение


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

Применение таких механизмов защиты, как tcpd, tripwire и courtney, впрочем, как и многих других, не даст никаких результатов, если вы не будете присматривать за ними. В первую очередь атакующий будет пытаться нейтрализовать именно эти механизмы. В случае атаки брандмауэр позволяет вам выиграть дополнительное время. Однако время работает на атакующего, то есть против вас. Атаку лучше всего блокировать тогда, когда проникновение за барьер защиты еще не произошло, то есть тогда, когда атакующий еще только пытается обнаружить в вашей системе защиты слабые места. Не выполнив поиска слабых мест, атакующий не сможет проникнуть в систему, поэтому прежде чем произойдет взлом системы, вы получите предупреждение об этом. Заметите ли вы его? Это зависит от вашей бдительности.