Olá lista, Como sempre me preocupando com segurança, fiz um Firewall seguindo o que encontrei na net inclusive as dicas do pessoal da lista mas é minha primeiro experiência com o iptables. Em dois ambientes que coloquei tem se comportado bem mas eu gostaria da opinião dos senhores.
Basicamente é para bloquear qualquer ip fora do brasil: #!/bin/bash #------------------------------------------------------------------------------------------ #Firewall para boquear IP's fora do Brasil #------------------------------------------------------------------------------------------ #------------------------------------------------------------------------------------------VARIAVEIS #Range de IP's gerenciados pelo Registro.br RANGE="177.0.0.0/11 186.192.0.0/10 187.0.0.0/9 189.0.0.0/9 200.128.0.0/9 201.0.0.0/10 201.64.0.0/11 177.81.0.0/11" #>ACESSO E RAMAIS EXTERNOS< #IP's das interfaces de redes do servidor, varios IP's devem ser declaradas com espaco SERVIDOREXT="XXX.XXX.XXX.XXX" #>ACESSO E RAMAIS INTERNOS< #IP's das interfaces de redes do servidor, varios IP's devem ser declaradas com espaco SERVIDOR="XXX.XXX.XXX.XXX" #>REDES< #Range de redes que os ramais utilizaram para se conectar no asterisk, varias redes devem ser declaradas com espaco REDES="192.168.0.0/24" #------------------------------------------------------------------------------------------ POLITICAS() { #------------------------------------------------------------------------------------------ BLOQUEAR TUDO echo "Aplicando politicas default" iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP #------------------------------------------------------------------------------------------ } LIMPA() { #------------------------------------------------------------------------------------------ APAGAR TODAS AS REGRAS echo "Removendo politicas default" iptables -F iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT #------------------------------------------------------------------------------------------ } STATEFUL() { #------------------------------------------------------------------------------------------ MANTER CONEXOES JA ATIVAS echo "Estabilizando as conexoes de entrada" iptables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -p udp -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A OUTPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A OUTPUT -p udp -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -p udp -m state --state ESTABLISHED,RELATED -j ACCEPT #------------------------------------------------------------------------------------------ } #Regras de liberacao FIREWALL() { #------------------------------------------------------------------------------------------ LIBERAR LOOPBACK E BLOQUEAR PACOTES DESCONHECIDOS echo "Aplicando regras para o host" iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT iptables -A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT iptables -A INPUT -p tcp -m state --state INVALID -j DROP iptables -A INPUT -p udp -m state --state INVALID -j DROP iptables -A FORWARD -p tcp -m state --state INVALID -j DROP iptables -A FORWARD -p udp -m state --state INVALID -j DROP #------------------------------------------------------------------------------------------ #------------------------------------------------------------------------------------------ LIBERANDO A SAIDA DE PACOTES DO SERVIDOR PARA QUALQUER LUGAR for i in $SERVIDOREXT ; do echo "Liberando a saida de pacotes de $i para qualquer lugar <" iptables -I OUTPUT -p udp -m state --state NEW -s $SERVIDOREXT -d 0/0 -j ACCEPT iptables -I OUTPUT -p tcp -m state --state NEW -s $SERVIDOREXT -d 0/0 -j ACCEPT done for i in $SERVIDOR ; do echo "Liberando a saida de pacotes de $i para qualquer lugar <" iptables -I OUTPUT -p udp -m state --state NEW -s $SERVIDOR -d 0/0 -j ACCEPT iptables -I OUTPUT -p tcp -m state --state NEW -s $SERVIDOR -d 0/0 -j ACCEPT done #------------------------------------------------------------------------------------------ #------------------------------------------------------------------------------------------ REGRAS PARA PING E ACESSO EXTERNO for i in $SERVIDOREXT ; do echo "Permitindo ICMPS: $i <" iptables -I OUTPUT -p icmp --icmp-type 8 -s $i -j ACCEPT iptables -I INPUT -p icmp --icmp-type 8 -s 0/0 -j ACCEPT iptables -I OUTPUT -p icmp --icmp-type 0 -s $i -j ACCEPT iptables -I INPUT -p icmp --icmp-type 0 -s 0/0 -j ACCEPT echo "Permitindo acesso SSH: $i <" iptables -I INPUT -p tcp -m state --state NEW -s 0/0 -d $i --dport 16380 -j ACCEPT done #------------------------------------------------------------------------------------------ #------------------------------------------------------------------------------------------ REGRAS PARA PING E ACESSO INTERNO for i in $SERVIDOR ; do echo "Permitindo ICMPS: $i <" iptables -I OUTPUT -p icmp --icmp-type 8 -s $i -j ACCEPT iptables -I INPUT -p icmp --icmp-type 8 -s 0/0 -j ACCEPT iptables -I OUTPUT -p icmp --icmp-type 0 -s $i -j ACCEPT iptables -I INPUT -p icmp --icmp-type 0 -s 0/0 -j ACCEPT echo "Permitindo acesso SSH: $i <" iptables -I INPUT -p tcp -m state --state NEW -s 0/0 -d $i --dport 225 -j ACCEPT done #------------------------------------------------------------------------------------------ #------------------------------------------------------------------------------------------ LIBERANDO IP's BRASILEIROS echo "Aplicando regras para liberacao apenas do range brasileiro de IP's" for i in $RANGE ; do for d in $SERVIDOREXT ; do echo "-- Liberando range: $i no ip $d <" #RTP iptables -A INPUT -p udp -m state --state NEW -s $i --dport 10000:20000 -d $d -j ACCEPT #SIP iptables -A INPUT -p udp -m state --state NEW -s $i --dport 5060:5061 -d $d -j ACCEPT iptables -A INPUT -p tcp -m state --state NEW -s $i --dport 5060:5061 -d $d -j ACCEPT #IAX iptables -A INPUT -p udp -m state --state NEW -s $i --dport 4569 -d $d -j ACCEPT #IAX2 iptables -A INPUT -p udp -m state --state NEW -s $i --dport 5036 -d $d -j ACCEPT #RTP PADRAO GRANDSTREAM iptables -A INPUT -p udp -m state --state NEW -s $i --dport 5004 -d $d -j ACCEPT done done #------------------------------------------------------------------------------------------ #------------------------------------------------------------------------------------------ LIBERANDO REDES INTERNAS DO CLIENTE echo "Aplicando regras para liberacao de redes internas" for i in $REDES ; do for d in $SERVIDOR ; do echo "-- Liberando range: $i no ip $d <" #RTP iptables -A INPUT -p udp -m state --state NEW -s $i --dport 10000:20000 -d $d -j ACCEPT #SIP iptables -A INPUT -p udp -m state --state NEW -s $i --dport 5060:5061 -d $d -j ACCEPT iptables -A INPUT -p tcp -m state --state NEW -s $i --dport 5060:5061 -d $d -j ACCEPT #IAX iptables -A INPUT -p udp -m state --state NEW -s $i --dport 4569 -d $d -j ACCEPT #IAX2 iptables -A INPUT -p udp -m state --state NEW -s $i --dport 5036 -d $d -j ACCEPT #RTP PADRAO GRANDSTREAM iptables -A INPUT -p udp -m state --state NEW -s $i --dport 5004 -d $d -j ACCEPT done done #------------------------------------------------------------------------------------------ } case $1 in start) POLITICAS STATEFUL FIREWALL ;; stop) LIMPA ;; restart) $0 stop $0 start ;; status) iptables -nL ;; *) echo "Usage: start, stop, restart, status" ;; esac -- Wagner Mazuchi de Lima Junior 11 3323-5550 wag...@sincronismotelecom.com www.sincronismo.com.br Rua Tácito de Almeida, nº 196 01251-010 - Pacaembu - São Paulo - SP _______________________________________________ KHOMP: completa linha de placas externas FXO, FXS, GSM e E1; Media Gateways de 1 a 64 E1s para SIP com R2, ISDN e SS7; Intercomunicadores para acesso remoto via rede IP. Conheça em www.Khomp.com. _______________________________________________ ALIGERA Fabricante nacional de Gateways SIP-E1 para R2, ISDN e SS7. Placas de 1E1, 2E1, 4E1 e 8E1 para PCI ou PCI Express. Channel Bank Appliance Asterisk - Acesse www.aligera.com.br. _______________________________________________ Para remover seu email desta lista, basta enviar um email em branco para asteriskbrasil-unsubscr...@listas.asteriskbrasil.org