Приведите, пожалуйста, пример настройки (правила) iptables на машине, где работает только Asterisk, ну и SSH.
Спасибо заранее.
PS: ..я уже настроил, но вдруг кто-то что-то полезное скажет, а?
| Romik писал(а): |
| Не так то все просто, я это уже смотрел. Я имел ввиду полный набор правил, а не только добавления для *. PS: ..я уже настроил, но вдруг кто-то что-то полезное скажет, а? |
Вам, извините, на другой ресурс надо... rtfm ну или man iptables... если не поможет - то обратно в win...
По делу:
OUTPUT можно разрешить по умолчанию, на вход - 2 порта * + 22.
# дропаем все по дефолту
iptables --table filter -P INPUT DROP
iptables --table filter -P FORWARD DROP
iptables --table filter -P OUTPUT DROP
iptables --table nat -P PREROUTING DROP
iptables --table nat -P POSTROUTING DROP
iptables --table nat -P OUTPUT DROP
iptables --table mangle -P INPUT DROP
iptables --table mangle -P OUTPUT DROP
iptables --table mangle -P FORWARD DROP
iptables --table mangle -P PREROUTING DROP
iptables --table mangle -P POSTROUTING DROP
# и очищаем все
iptables --table filter -F
iptables --table nat -F
iptables --table mangle -F
iptables --table filter -X
iptables --table nat -X
iptables --table mangle -X
# обнуляя счетчики
iptables --table filter -Z
iptables --table nat -Z
iptables --table mangle -Z
# мой localhost
iptables --table filter --append INPUT --in-interface 127.0.0.1 --jump ACCEPT
iptables --table filter --append OUTPUT --out-interface 127.0.0.1 --jump ACCEPT
# отправляем в лог все неприемлимые пакеты, потом дропаем их
# ALL without FIN,URG,PSH bit set
iptables --table filter --append INPUT --protocol tcp --tcp-flags ALL FIN,URG,PSH --match limit --limit 3/minute --jump LOG --log-level info --log-prefix "DROP illegal tcp flag: "
# SYN and RST bits are both set
iptables --table filter --append INPUT --protocol tcp --tcp-flags ALL SYN,RST --match limit --limit 3/minute --jump LOG --log-level info --log-prefix "DROP illegall tcp flag: "
# SYN and FIN bits are both set
iptables --table filter --append INPUT --protocol tcp --tcp-flags ALL SYN,FIN --match limit --limit 3/minute --jump LOG --log-level info --log-prefix "DROP illegal tcp flag: "
# ALL without FIN bit set
iptables --table filter --append INPUT --protocol tcp --tcp-flags ALL FIN --match limit --limit 3/minute --jump LOG --log-level info --log-prefix "DROP illegal tcp flag: "
# ALL without any bit set
iptables --table filter --append INPUT --protocol tcp --tcp-flags ALL ALL --match limit --limit 3/minute --jump LOG --log-level info --log-prefix "DROP illegal tcp flag: "
# ALL of the bits are cleared
iptables --table filter --append INPUT --protocol tcp --tcp-flags ALL NONE --match limit --limit 3/minute --jump LOG --log-level info --log-prefix "DROP illegal tcp flag: "
# FIN and RST bit are both set
iptables --table filter --append INPUT --protocol tcp --tcp-flags FIN,RST FIN,RST --match limit --limit 3/minute --jump LOG --log-level info --log-prefix "DROP illegal tcp flag: "
# FIN without the ACK bit set
iptables --table filter --append INPUT --protocol tcp --tcp-flags ACK,FIN FIN --match limit --limit 3/minute --jump LOG --log-level info --log-prefix "DROP illegal tcp flag: "
# PSH without the ACK bit set
iptables --table filter --append INPUT --protocol tcp --tcp-flags ACK,PSH PSH --match limit --limit 3/minute --jump LOG --log-level info --log-prefix "DROP illegal tcp flag: "
# URG without the ACK bit set
iptables --table filter --append INPUT --protocol tcp --tcp-flags ACK,URG URG --match limit --limit 3/minute --jump LOG --log-level info --log-prefix "DROP illegal tcp flag: "
# Bad TCP option(64)
iptables --table filter --append INPUT --protocol tcp --tcp-option 64 --match limit --limit 3/minute --jump LOG --log-level info --log-prefix "DROP bad tcp option(64): "
# Bad TCP option(128)
iptables --table filter --append INPUT --protocol tcp --tcp-option 128 --match limit --limit 3/minute --jump LOG --log-level info --log-prefix "DROP bad tcp option(128): "
iptables --table filter --append INPUT --protocol tcp --tcp-flags ALL FIN,URG,PSH --jump DROP
iptables --table filter --append INPUT --protocol tcp --tcp-flags SYN,RST SYN,RST --jump DROP
iptables --table filter --append INPUT --protocol tcp --tcp-flags SYN,FIN SYN,FIN --jump DROP
iptables --table filter --append INPUT --protocol tcp --tcp-flags ALL FIN --jump DROP
iptables --table filter --append INPUT --protocol tcp --tcp-flags ALL ALL --jump DROP
iptables --table filter --append INPUT --protocol tcp --tcp-flags ALL NONE --jump DROP
iptables --table filter --append INPUT --protocol tcp --tcp-flags FIN,RST FIN,RST --jump DROP
iptables --table filter --append INPUT --protocol tcp --tcp-flags ACK,FIN FIN --jump DROP
iptables --table filter --append INPUT --protocol tcp --tcp-flags ACK,PSH PSH --jump DROP
iptables --table filter --append INPUT --protocol tcp --tcp-flags ACK,URG URG --jump DROP
iptables --table filter --append INPUT --protocol tcp --tcp-option 64 --jump DROP
iptables --table filter --append INPUT --protocol tcp --tcp-option 128 --jump DROP
# отправляем в лог все кривые пакеты, потом дропаем их
iptables --table filter --append INPUT --match unclean --match limit --limit 2/minute --jump LOG --log-level info --log-prefix "DROP malformed packet: "
iptables --table filter --append INPUT --match unclean -j DROP
# дабы не юзали наш IP в качестве источника атаки, скажем
iptables --table filter --append --protocol tcp --tcp-flags SYN,ACK SYN,ACK --match state --state NEW --jump LOG --log-level info --log-prefix "TCP-RESET to IP address substitution (SYN/ASK and NEW): "
iptables --table filter --append --protocol tcp --tcp-flags SYN,ACK SYN,ACK --match state --state NEW --jump REJECT --reject-with tcp-reset
# заносим в лог и дропаем все пакеты, которые не SYN, но одновременно помечены как NEW
iptables --table filter --append INPUT --protocol tcp ! --syn --match state --state NEW --match limit --limit 2/minute --jump LOG --log-level info --log-prefix "NEW but not SYN: "
iptables --table filter --append INPUT --protocol tcp ! --syn --match state --state NEW --jump DROP
# заносим в лог и дропаем все пакеты igmp, если замечаем флуд
iptables --table filter --append INPUT --protocol igmp --match limit --limit 2/minute --jump LOG --log-level info --log-prefix "DROP igmp packet: "
iptables --table filter --append INPUT --protocol igmp --jump DROP
# принимаем только echo-request и ttl-exceeded (все остальные нам нужные будут иметь --state RELATED, а потому итак будут приняты),
# сами отправляем все, что угодно по ICMP
iptables --table filter --append INPUT --protocol ICMP --icmp-type echo-request --jump ACCEPT
iptables --table filter --append INPUT --protocol ICMP --icmp-type time-exceeded --jump ACCEPT
iptables --table filter --append OUTPUT --protocol ICMP --jump ACCEPT
# разрешаем уже установленные и связанные соединения
iptables --table filter --append INPUT --protocol TCP --match state --state ESTABLISHED --jump ACCEPT
iptables --table filter --append INPUT --protocol TCP --match state --state RELATED --jump ACCEPT
iptables --table filter --append INPUT --protocol UDP --match state --state ESTABLISHED --jump ACCEPT
iptables --table filter --append INPUT --protocol UDP --match state --state RELATED --jump ACCEPT
# разрешаем все исходящие соединения с непривилегированых портов
iptables --table filter --append OUTPUT --protocol TCP --sport 32768: --jump ACCEPT
iptables --table filter --append OUTPUT --protocol UDP --sport 32768: --jump ACCEPT
# разрешаем все входящие на SSH порт с моих хостов
iptables --table filter --append INPUT --protocol TCP --source *.*.*.*/* --dport 22 --jump ACCEPT
iptables --table filter --append INPUT --protocol TCP --source *.*.*.*/* --dport 22 --jump ACCEPT
# собственно, Asterisk
iptables --table filter --append INPUT --protocol tcp --match tcp --dport 5060 --jump ACCEPT
iptables --table filter --append INPUT --protocol udp --match udp --dport 5060 --jump ACCEPT
Последний раз редактировалось: Romik (Ср Мар 16, 2005 08:42)
И еще с логом вы это.... роутер, наверное, на слабом канале? Ресурсов много?... В противном случае лог достанет.
А так:
1) На freshmeat.net (поискать на предмет firewall)
2) Кому уж совсем интересно: http://iptablesrocks.org
PS: а надо бы еще логить резервированные IANA'ой адреса источника.