Script Iptables

Iniciado por edumcz, 27 de Novembro de 2010, 04:42

tópico anterior - próximo tópico

edumcz

Vai ter um servidor ubuntu e iptables  

zekkerj

Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

zekkerj

Legal, um bom script. Mas ainda assim algumas partes merecem comentário.

Citar### Libera serviços para este roteador
echo "Liberando portas de servicos a para esse roteador.."
PORTSALLOW="20 21 53 80 123 8046 8081 8082 20000 4445 5550"

for i in $PORTSALLOW; do
iptables -A INPUT -p tcp --dport $i -j ACCEPT
iptables -A INPUT -p udp --dport $i -j ACCEPT
iptables -A INPUT -p tcp --sport $i -j ACCEPT
iptables -A INPUT -p udp --sport $i -j ACCEPT
done
Nem todos os serviços que rodam em TCP rodam em UDP (aliás, quase nenhum serviço roda nos dois protocolos ao mesmo tempo). Assim, não há necessidade de abrir portas nos dois ao mesmo tempo.
Também não é legal abrir a porta de origem desses protocolos indiscriminadamente; há uma forma muito melhor de fazer isso, e você já a usa (módulo "state").

Citar#Negar acessos externos
iptables -A INPUT -p tcp --dport 10024 -j DROP
iptables -A INPUT -p tcp --dport 10031 -j DROP
iptables -A INPUT -p tcp --dport 1025:65530 -j DROP
Qual o motivo de fazer isso?

Citariptables -t nat -A PREROUTING -d 192.168.2.3 -p tcp -m tcp --dport 20 -j DNAT --to-destination 192.168.0.2:20
tem algumas coisas que são desnecessárias nos comandos.

Por exemplo: "-s 0/0" ou "-d 0/0" são desnecessários. Da mesma forma, "-p tcp" já implica em "-m tcp", portanto vc não precisa disso. O endereço de destino do DNAT também assume que vc direciona para a mesma porta, assim vc também não precisa especificar a porta nesse caso (só quando a porta de origem e destino são diferentes).

E aproveitando que eu destaquei essa regra, aviso logo: ela é inútil. Primeiro, pq a porta que vc está redirecionando (ftp-data) é tratada pelo módulo state. Segundo, pq até onde eu lembro, o tráfego dessa porta é udp, e não tcp. Terceiro, pq esse tráfego flui no sentido contrário da conexão, ou seja, do servidor pro cliente.

Citarecho "Filtrar pacotes fragmentados"
iptables -A INPUT -f -j DROP
Não há motivo pra filtrar pacotes fragmentados. Isso só traz dor de cabeça, vai por mim.

Citariptables -A INPUT -i eth1 -s 224.0.0.0/4 -j DROP
Você tem certeza de que não quer tráfego multicast em sua rede?

Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

zekkerj

CitarBloco de IPs da rede interna: 10.10.10.0/24
O script não leva em consideração o endereço da rede interna. Qualquer que seja, ele vai funcionar da mesma forma.

CitarPolítica padrão de filtragem: Negar tudo o que não for explicitamente permitido;
Ele já faz isso.

CitarServiços publicados: HTTP (porta 80, IP interno 10.10.10.2), DNS (porta 23, IP interno 10.10.10.3) e correio eletrônico (porta 25, IP interno 10.10.10.4), não mascarados. Instalar máquina interna que assuma todos estes IPs e serviços;
Publicados para a rede interna ou externa?
Outra coisa, o serviço DNS funciona na porta 53/udp, não na porta 23. E não é recomendado publicar o serviço DNS interno na rede externa.

CitarPermitir tráfego "entrante" em portas altas apenas para conexões "saintes" já estabelecidas;
Ele também já faz isso.

CitarImplementar 4 regras de filtragem de tráfego "sainte" que impeça usuários internos de lançarem ataques baseados em conexões mal formadas. Explique, através de comentários no script, a funcionalidade de cada uma destas regras.
Como essa parte é justamente a parte do exercício, eu não vou fazê-la por você. Mas, assim como pedi que vc apresentasse o que já tem pronto, posso comentar sua resposta e dar dicas em cima do que você tiver feito.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D