Личный блог Suvan`a.

Работая и играя с Linux... И что из этого иногда получается.

Фильтрация нелегальных адресов в брандмауэре.

Рубрика: Безопасность -> Брандмауэр
Метки: | | |
Среда, 8 апреля 2009 г.
Просмотров: 6054

     Loopback-адреса.

     Адреса обратной петли (127.0.0.0 - 127.255.255.255) никогда не могут ис­пользоваться за пределами интерфейса lo. Если пакеты с loopback-адресами появились на интерфейсе, отличном от lo, значит, они были подделаны (spoffed).

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


$IPT -N bad_packets

$IPT -P bad_packets ACCEPT

$IPT -A bad_packets -s 10.0.0.0/8 -j LOG --log-prefix "нелегальные_адреса"

$IPT -A bad_packets -s 10.0.0.0/8 -j DROP

$IPT -A bad_packets -s 172.16.0.0/12 -j LOG --log-prefix "нелегальные_адреса"

$IPT -A bad_packets -s 172.16.0.0/12 -j DROP

## Адреса диапазона 192.168.0.0 - 192.168.0.255

## могут использоваться, только если они приходят из DMZ

$IPT -A bad_packets -i $IF_EXT -s 192.168.0.0/24 -j LOG --log-prefix "нелегальные_адреса"

$IPT -A bad_packets -i $IF_EXT -s 192.168.0.0/24 -j DROP

$IPT -A bad_packets -i $IF_LAN -s 192.168.0.0/24 -j LOG --log-prefix "нелегальные_адреса"

$IPT -A bad_packets -i $IF_LAN -s 192.168.0.0/24 -j DROP

## Адреса диапазона 192.168.1.0 - 192.168.1.255

## могут использоваться, только если они приходят из LAN

$IPT -A bad_packets -i $IF_EXT -s 192.168.1.0/24 -j LOG --log-prefix "нелегальные_адреса"

$IPT -A bad_packets -i $IF_EXT -s 192.168.1.0/24 -j DROP

$IPT -A bad_packets -i $IF_DMZ -s 192.168.1.0/24 -j LOG --log-prefix "нелегальные_адреса"

$IPT -A bad_packets -i $IF_DMZ -s 192.168.1.0/24 -j DROP

## Зарезервированные, multicast, broadcast и loopback-адреса

$IPT -A bad_packets -s 169.254.0.0/16 -j LOG --log-prefix "нелегальные_адреса"

$IPT -A bad packets -s 169.254.0.0/16 -j DROP

$IPT -A bad_packets -s 192.0.2.0/16 -j LOG --log-prefix "нелегальные_адреса"

$IPT -A bad_packets -s 192.0.2.0/16 -j DROP

$IPT -A bad_packets -s 0.0.0.0/8 -j LOG --log-prefix "нелегальные_адреса"

$IPT -A bad_packets -s 0.0.0.0/8 -j DROP

SIPT -A bad_packets -s 224.0.0.0/4 -j LOG --log-prefix "нелегальные_адреса"

$IPT -A bad_packets -s 224.0.0.0/4 -j DROP

$IPT -A bad_packets -s 240.0.0.0/5 -j LOG --log-prefix "нелегальные_адреса"

$IPT -A bad_packets -s 240.0.0.0/5 -j DROP

$IPT -A bad_packets -s 127.0.0.0/8 -j LOG --log-prefix "нелегальные_адреса"

$IPT -A bad_packets -s 127.0.0.0/8 -j DROP

## Обычно пакеты , адресованные для

## адреса 255.255.255.255, должны быть отброшены

$IPT -A bad_packets -d 255.255.255.255 -j LOG --log-prefix "нелегальные_адреса"

$IPT -A bad_packets -d 255.255.255.255 -j DROP

     Широковещательные пакеты, адресованные внешнему интерфейсу, также должны быть отброшены, поскольку они могут являться частью DoS-атаки.

     Если ISP использует динамическую адресацию, уничтожение этих па­кетов может вызвать проблему, поскольку широковещательный адрес будет меняться при каждом подключении. Однако сценарий nat.sh со­держит параметры ядра, позволяющие игнорировать широковещательные ICMP-сообщения, следовательно, установка правила IPTables не является жиз­ненно необходимой.

     Если имеется статический внешний адрес, нужно добавить следующие правила (в этом случае внешний IP-адрес 1.2.3.17):

$IPT -A bad_packets -d 1.2.3.0 -j LOG --log-prefix "broadcast"

$IPT -A bad_packets -d 1.2.3.0 -j DROP

$IPT -A bad_packets -d 1.2.3.255 -j LOG --log-prefix

"broadcast"

$IPT -A bad_packets -d 1.2.3.255 -j DROP

     Все, что остается сделать, - это вставить созданную цепочку в начало це­почек INPUT, OUTPUT и FORWARD:

$IPT -I INPUT -j bad_packets

$IPT -I OUTPUT -j bad_packets

$IPT -I FORWARD -j bad_packets