Olá Pessoal, tudo certo?
Esta dica é bem objetiva e prática, contendo alguns "macetezinhos" para o iptables, tais como redirecionamento de portas, logs etc. Lembrando que as políticas de regras padrão são INPUT, FORWARD e DROP. Use e abuse. =)
1 - Se eu quero fazer o log de uma porta, como posso fazer?
Bom, suponhamos que você queira logar toda tentativa de conexão no seu SSH e por descuido acabou deixando a porta como padrão (22). Utilize a seguinte linha:
iptables -A INPUT -p tcp --dport 22 -i eth0 -j LOG --log-level 6 --log-prefix "LOG DE ACESSO NO SSH (22): "
Explicação: Observe o "eth0" na linha. O eth0 equivale a interface de
rede externa do seu firewall, ou seja, o link direto com a internet. Você pode logar outras portas, tais como RDP (3389), Sybase (1498, 1499) e tantas outras portas. Basta alterar a linha conforme necessário.
2 - Tenho uma máquina na minha
rede que possui acesso de Terminal Server. Quais regras posso utilizar para acessar minha máquina internamente e externamente?
Bom, nesta parte consideraremos que você tem uma máquina já configurada, bonitinha, com o IP 192.198.0.10 tendo acesso ao TS.
Suponhamos que você tem um IP fixo ou utiliza o DDNS para fazer DNS dinâmico e lá do seu trabalho quer acessar a sua máquina de casa para acessar algum arquivo. Se você utiliza modem ADSL roteador, configure o modem para utilizar DMZ com o endereço da interface EXTERNA do seu firewall. Se você utiliza conexões a rádio ou com IPs fixos diretos, não são necessárias tais configurações.
#iptables -t nat -A PREROUTING -p tcp --dport 3389 -j DNAT --to 192.168.0.10
iptables -t nat -A PREROUTING -p tcp --sport 3389 -s 192.168.0.10/24 -j ACCEPT
iptables -A FORWARD -p tcp --dport 3389 -s 0/0 -d 192.168.0.10/24 -j ACCEPT
iptables -A FORWARD -p tcp --sport 3389 -s 192.168.0.10/24 -j ACCEPT
#iptables -t nat -A PREROUTING -p udp --dport 3389 -j DNAT --to 192.168.0.10
iptables -t nat -A PREROUTING -p udp --sport 3389 -s 192.168.0.10/24 -j ACCEPT
iptables -A FORWARD -p udp --dport 3389 -s 0/0 -d 192.168.0.10/24 -j ACCEPT
iptables -A FORWARD -p udp --sport 3389 -s 192.168.0.10/24 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp --dport 3389 -s 192.168.0.0 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp --dport 3389 -j DNAT --to 192.168.0.10
iptables -A FORWARD -p tcp --dport 3389 -j ACCEPT
Explicação: Observe as linhas que contém o "#" na frente (o que quer dizer uma linha comentada, que não será aplicada). Estas duas linhas não deixam com que usuários da sua
rede interna façam conexões RDP para servidores externos. Ou seja, toda tentativa de conexão interna > externa de Terminal Server acabará caindo na sua máquina 192.168.0.10, provedora de TS. Se você quiser que as regras sejam aplicadas, remova o indicador de comentário (tirando o "#" do início da linha). Ah, sim, agora você pode conectar tanto internamente quanto externamente na sua máquina com o TS.
3 - Já que eu sei fazer log de portas do SSH, como liberar o acesso ao SSH da minha máquina?
É simples:
# [ SSH Interno ]
iptables -t nat -A PREROUTING -p tcp --dport 22 -s 192.168.0.0 -j ACCEPT
iptables -t nat -A PREROUTING -p udp --dport 22 -s 192.168.0.0-j ACCEPT
iptables -A INPUT -p tcp --dport 22 -s 192.168.0.0 -j ACCEPT
iptables -A INPUT -p udp --dport 22 -s 192.168.0.0 -j ACCEPT
# [ SSH Externo ]
iptables -t nat -A PREROUTING -p tcp --dport 22 -j ACCEPT
iptables -t nat -A PREROUTING -p udp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p udp --dport 22 -j ACCEPT
4 - Tenho um
sistema na minha
rede com
banco de dados Sybase e uma filial de minha empresa precisa acessar o
banco de dados que está no meu
servidor aqui na matriz, como proceder?
Nos casos que eu tive contato, as portas a serem utilizadas eram 1498 e 1499, tanto UDP quanto TCP. Porém, nos logs, apenas detectei conexões na porta 1498 protocolo TCP. Claro que por prudência deixaremos todas as portas configuradas.
Considerando que o seu
banco de dados seja também o IP 192.168.0.10:
iptables -t nat -A PREROUTING -p tcp --dport 1498:1499 -j DNAT --to 192.168.0.10
iptables -t nat -A PREROUTING -p udp --dport 1498:1499 -j DNAT --to 192.168.0.10
iptables -t nat -A PREROUTING -p tcp --sport 1498:1499-s 192.168.0.10/24 -j ACCEPT
iptables -t nat -A PREROUTING -p udp --sport 1498:1499 -s 192.168.1.2/24 -j ACCEPT
iptables -A FORWARD -p tcp --dport 1498:1499 -s 0/0 -d 192.168.0.10/24 -j ACCEPT
iptables -A FORWARD -p udp ¿dport 1498:1499 -s 0/0 -d 192.168.0.10/24 -j ACCEPT
iptables -A FORWARD -p tcp --sport 1498:1499 -s 192.168.0.10/24 -j ACCEPT
iptables -A FORWARD -p udp --sport 1498:1499 -s 192.168.0.10/24 -j ACCEPT
5 - E contra Syn Flood, como faço?
Fácil, fácil! Duas linhas resolvem o problema:
iptables -A FORWARD -p tcp --syn -m limit --limit 5/s -j ACCEPT
iptables -A FORWARD -p tcp --syn -j DROP
OPS!!! Engano meu caro, estas regras NÃO bloqueiam ataques SYN de maneira efetiva! Quer estender um pouco mais sua leitura sobre IPTABLES e ataques de SYN FLOOD? Leia: Iptables protege contra SYN FLOOD - Viva o Linux
Bom pessoal, são apenas
dicas simples e que muitas vezes precisamos aplicar. Não coloquei aqui liberação de POP, SMTP, consulta DNS, Skype e afins porque acho que configurações de e-mail, redirecionamento para Squid e DNS são básicos, caso necessário posso contribuir com outra dica.
Até a próxima e bom trabalho!
Um abraço!