AF
Asterisk Forum
обсуждения телефонии, VoIP и IP-PBX
12разделов
5 423тем
34 385сообщений
← К списку тем

Asterisk and iptables

Newbies/FAQ Forum 7 сообщений -
#1

День добрый!
Приведите, пожалуйста, пример настройки (правила) iptables на машине, где работает только Asterisk, ну и SSH.
Спасибо заранее.
#3

Не так то все просто, я это уже смотрел. Я имел ввиду полный набор правил, а не только добавления для *.
PS: ..я уже настроил, но вдруг кто-то что-то полезное скажет, а?
#4

Romik писал(а):
Не так то все просто, я это уже смотрел. Я имел ввиду полный набор правил, а не только добавления для *.
PS: ..я уже настроил, но вдруг кто-то что-то полезное скажет, а?


Вам, извините, на другой ресурс надо... rtfm ну или man iptables... если не поможет - то обратно в win...

По делу:
OUTPUT можно разрешить по умолчанию, на вход - 2 порта * + 22.
#5

Итак:

# дропаем все по дефолту
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)
#6

... /sbin/ (или где у вас там iptables живут) лучше все-таки добавлять, а то у некоторых при ините еще пути не прописались, а скрипт стартанул - лажа будет...

И еще с логом вы это.... роутер, наверное, на слабом канале? Ресурсов много?... В противном случае лог достанет.

А так:

1) На freshmeat.net (поискать на предмет firewall)

2) Кому уж совсем интересно: http://iptablesrocks.org
#7

Спасибо, Гость, что больше не ругаешься RTFM'ом.
PS: а надо бы еще логить резервированные IANA'ой адреса источника.