Поиск

Газета FOSS News

16 ноября 2011

О газете
Архив
Авторам
Рекламодателям

 

Кабинет читателя

Вход в систему
Введите имя пользователя и пароль для входа в систему:

4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4

Увеличиваем безопасность через файерволы

28.02.10 /

В этой статье расскажу, о правилах файерволов, которые позволяют бороться с паразитируещим траффиком (фрагментированные пакеты, неправильные бродкасты, ...). Приведу примеры для таких файерволов: ipfw, pf, iptables. В некоторых из них будут специфические правила, которые отсутствуют в других.

Сразу скажу о переменных, которые используются здесь:

 - ${FwCMD} - путь к бинарнику ipfw, обычно это /sbin/ipfw

 - ${LanOut} - внешний интерфейс

 - ${IPT} - путь к бинарнику iptables, обычно это /sbin/iptables

 

1) IPFW

# Разрешаем весь траффик по внутреннему интерфейсу (петле)
# Вообще я во многих местах читал что без него может ничё не заработать вообще
# и прочие страшилки. Работает - почта, апач, .... А вот squid - не работает :)
# так что без него и правда - никуда.
${FwCMD} add allow ip from any to any via lo0
${FwCMD} add deny ip from any to 127.0.0.0/8
${FwCMD} add deny ip from 127.0.0.0/8 to any

# режем частные сети на внешнем интерфейсе - по легенде он у нас
# смотрит в интернет, а значит пакетам этим браться неоткуда на нём.
# рубим частные сeти
${FwCMD} add deny ip from any to 10.0.0.0/8 in via ${LanOut}
${FwCMD} add deny ip from any to 172.16.0.0/12 in via ${LanOut}
${FwCMD} add deny ip from any to 192.168.0.0/16 in via ${LanOut}
${FwCMD} add deny ip from any to 0.0.0.0/8 in via ${LanOut}

# рубим автоконфигуреную частную сеть
${FwCMD} add deny ip from any to 169.254.0.0/16 in via ${LanOut}

# рубаем мультикастовые рассылки
${FwCMD} add deny ip from any to 240.0.0.0/4 in via ${LanOut}

# рубим фрагментированные icmp
${FwCMD} add deny icmp from any to any frag

# рубим широковещательные icmp на внешнем интерфейсе
${FwCMD} add deny icmp from any to 255.255.255.255 in via ${LanOut}
${FwCMD} add deny icmp from any to 255.255.255.255 out via ${LanOut}

# рубим траффик к частным сетям через внешний интерфейс
# заметтьте - эти правила отличаются от тех что были выше!
${FwCMD} add deny ip from 10.0.0.0/8 to any out via ${LanOut}
${FwCMD} add deny ip from 172.16.0.0/12 to any out via ${LanOut}
${FwCMD} add deny ip from 192.168.0.0/16 to any out via ${LanOut}
${FwCMD} add deny ip from 0.0.0.0/8 to any out via ${LanOut}

# рубим автоконфигуреную частную сеть
${FwCMD} add deny ip from 169.254.0.0/16 to any out via ${LanOut}

# рубаем мультикастовые рассылки
${FwCMD} add deny ip from 224.0.0.0/4 to any out via ${LanOut}

# рубаем мультикастовые рассылки
${FwCMD} add deny ip from 240.0.0.0/4 to any out via ${LanOut}

# port-scan protect
${FwCMD} add 71 deny log tcp from any to any tcpflags fin, syn, rst, psh, ack, urg
${FwCMD} add 72 deny log tcp from any to any tcpflags !fin, !syn, !rst, !psh, !ack, !urg
${FwCMD} add 73 deny log tcp from any to any not established tcpflags fin

# Запрещаем пакеты с не кор рек т ны ми TCP-флагами.
# NULL-пакеты . второй тест nmap
${FwCMD} add 74 deny log tcp from any to any tcpflags !syn,!ack,!rst

# XMAS-пакеты . третий тест nmap
${FwCMD} add 75 deny log tcp from any to any tcpflags syn,fin,urg,psh,!ack
${FwCMD} add 76 deny log tcp from any to any tcpflags syn,fin,!ack,

# Седьмой тест nmap
${FwCMD} add 77 deny log tcp from any to any tcpflags fin,urg,psh,!ack
${FwCMD} add 78 deny log tcp from any to any tcpflags fin,!ack
${FwCMD} add 79 deny log tcp from any to any tcpflags urg,!ack
${FwCMD} add 80 deny log tcp from any to any tcpflags psh,!ack

# allow trafic only to that int, where it arrive
${FwCMD} add 70 deny log ip from any to any not verrevpath in

 

2) PF

# Нормализируем весь входящий траффик. Это избавит от всякого рода фрагментированностей.

#ВНИМАНИЕ! В OPENBSD, НАЧИНАЯ С ВЕРСИИ 4.6 ЭТОГО ПРАВИЛА УЖЕ НЕТ

#ИСПОЛЬЗОВАНИЯ ЕГО ПРИВЕДЁТ К ОШИБКЕ, БУДЬ-ТЕ ВНИМАТЕЛЬНЫ

scrub in all

#Включаем блокировку антиспуффинга. Кстати, для нормальной работы нужно ещё правило для петлевого интерфейса

set skip on lo0

antispoof quick for ${LanOut}

# Защищаемся от сканнирования Nmap'a.
block in quick from any os NMAP

# Разрешаем весь траффик по внутреннему интерфейсу (петле)
# Вообще я во многих местах читал что без него может ничё не заработать вообще
# и прочие страшилки. Работает - почта, апач, .... А вот squid - не работает :)
# так что без него и правда - никуда.
pass on lo0 inet proto ip from any to any
block quick inet ptoto ip from any to 127.0.0.0/8
block quick inet ptoto ip from 127.0.0.0/8 to any

# режем частные сети на внешнем интерфейсе - по легенде он у нас
# смотрит в интернет, а значит пакетам этим браться неоткуда на нём.
# рубим частные сeти
block in quick on ${LanOut} inet proto ip from any to 10.0.0.0/8
block in quick on ${LanOut} inet proto ip from any to 172.16.0.0/12
block in quick on ${LanOut} inet proto ip from any to 192.168.0.0/16
block in quick on ${LanOut} inet proto ip from any to 0.0.0.0/8

# рубим автоконфигуреную частную сеть
block in quick on ${LanOut} inet proto ip from any to 169.254.0.0/16

# рубаем мультикастовые рассылки
block in quick on ${LanOut} inet proto ip from any to 240.0.0.0/4

# рубим широковещательные icmp на внешнем интерфейсе
block in quick on ${LanOut} inet proto icmp from any to 255.255.255.255
block out quick on ${LanOut} inet proto icmp from any to 255.255.255.255

# рубим траффик к частным сетям через внешний интерфейс
# заметьте - эти правила отличаются от тех что были выше!
block out quick on ${LanOut} inet proto ip from 10.0.0.0/8 to any
block out quick on ${LanOut} inet proto ip from 172.16.0.0/12 to any
block out quick on ${LanOut} inet proto ip from 192.168.0.0/16 to any
block out quick on ${LanOut} inet proto ip from 0.0.0.0/8 to any

# рубим автоконфигуреную частную сеть
block out quick on ${LanOut} inet proto ip from 169.254.0.0/16 to any

# рубаем мультикастовые рассылки
block out quick on ${LanOut} inet proto ip from 240.0.0.0/4 to any

 

3) IPTABLES

# Разрешаем весь траффик по внутреннему интерфейсу (петле)
# Вообще я во многих местах читал что без него может ничё не заработать вообще
# и прочие страшилки. Работает - почта, апач, .... А вот squid - не работает :)
# так что без него и правда - никуда.
${IPT} -A INPUT -p tcp -i lo0 -j ACCEPT
${IPT} -A OUTPUT -p tcp -i lo0 -j ACCEPT
${IPT} -A INPUT -p tcp --dst 127.0.0.0/8 -j REJECT
${IPT} -A OUTPUT -p tcp --dst 127.0.0.0/8 -j REJECT
${IPT} -A INPUT -p tcp --src 127.0.0.0/8 -j REJECT
${IPT} -A OUTPUT -p tcp --src 127.0.0.0/8 -j REJECT

# режем частные сети на внешнем интерфейсе - по легенде он у нас
# смотрит в интернет, а значит пакетам этим браться неоткуда на нём.
# рубим частные сeти
${IPT} -A INPUT -p tcp -i ${LanOut} --dst 10.0.0.0/8 -j REJECT
${IPT} -A INPUT -p tcp -i ${LanOut} --dst 172.16.0.0/12 -j REJECT
${IPT} -A INPUT -p tcp -i ${LanOut} --dst 192.168.0.0/16 -j REJECT
${IPT} -A INPUT -p tcp -i ${LanOut} --dst 0.0.0.0/8 -j REJECT

# рубим автоконфигуреную частную сеть
${IPT} -A INPUT -p tcp -i ${LanOut} --dst 169.254.0.0/16 -j REJECT

# рубаем мультикастовые рассылки
${IPT} -A INPUT -p tcp -i ${LanOut} --dst 240.0.0.0/4 -j REJECT

# рубим фрагментированные icmp
${IPT} -A INPUT -f -p icmp -j REJECT

# рубим широковещательные icmp на внешнем интерфейсе
${IPT} -A INPUT -p icmp -i ${LanOut} --dst 255.255.255.255 -j REJECT
${IPT} -A OUTPUT -p icmp -i ${LanOut} --dst 255.255.255.255 -j REJECT

# режем частные сети на внешнем интерфейсе - по легенде он у нас
# смотрит в интернет, а значит пакетам этим браться неоткуда на нём.
# рубим частные сeти
${IPT} -A OUTPUT -p tcp -i ${LanOut} --src 10.0.0.0/8 -j REJECT
${IPT} -A OUTPUT -p tcp -i ${LanOut} --src 172.16.0.0/12 -j REJECT
${IPT} -A OUTPUT -p tcp -i ${LanOut} --src 192.168.0.0/16 -j REJECT
${IPT} -A OUTPUT -p tcp -i ${LanOut} --src 0.0.0.0/8 -j REJECT

# рубим автоконфигуреную частную сеть
${IPT} -A OUTPUT -p tcp -i ${LanOut} --src 169.254.0.0/16 -j REJECT

# рубаем мультикастовые рассылки
${IPT} -A OUTPUT -p tcp -i ${LanOut} --src 240.0.0.0/4 -j REJECT

Примечание: многое почерпнул с ресурса lissyara.su.


Автор: skeletor

По материалам:

Loading ...

Комментарии

Добавить комментарий

* - необходимое для заполнения поле

*




Изображение CAPTCHA для предотвращения спама
Если слово непонятно, нажмите здесь..
*
*
kollo, 18-05-12 04:29:
Leraning a ton from these neat articles.
 
© 2004-2009 Журнал "Root UA" - свидетельство СМИ: КВ №14786-3757Р
Газета "FOSS News" - свидетельство СМИ: ОД №1355-236-Р
При использовании материалов портала ссылка на Root.UA обязательна, для интернет-изданий – гиперссылка, не закрытая для индексации поисковыми системами.

sitenews