iptables multiportas e negação

3

Eu quero registrar, com o iptables, tudo o que pode parecer ser uma inundação, exceto na web e portas de IRC. Então eu fiz:

iptables -A INPUT -p tcp -m multiport ! --dports 80,443,6667,6697 -m hashlimit --hashlimit-above 10/sec --hashlimit-burst 20 --hashlimit-mode srcip --hashlimit-name aflood --hashlimit-srcmask 8 -j LOG --log-prefix "[IP FLOOD ALL]"
iptables -A INPUT -p udp -m multiport ! --dports 80,443,6667,6697 -m hashlimit --hashlimit-above 10/sec --hashlimit-burst 20 --hashlimit-mode srcip --hashlimit-name aflood --hashlimit-srcmask 8 -j LOG --log-prefix "[IP FLOOD ALL]"
iptables -A INPUT -p icmp -m hashlimit --hashlimit-above 10/sec --hashlimit-burst 20 --hashlimit-mode srcip --hashlimit-name aflood --hashlimit-srcmask 8 -j LOG --log-prefix "[IP FLOOD ALL]"

Mas quando eu olho nos logs, eu obtenho (MAC e IP ofuscados):

Aug  3 16:49:00 server kernel: [IP FLOOD ALL]IN=eth0 OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:00:00 SRC=127.0.0.1 DST=127.0.0.1 LEN=107 TOS=0x00 PREC=0x00 TTL=61 ID=6765 DF PROTO=TCP SPT=6667 DPT=40605 WINDOW=10818 RES=0x00 ACK PSH URGP=0
Aug  3 16:49:00 server kernel: [IP FLOOD ALL]IN=eth0 OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:00:00 SRC=127.0.0.1 DST=127.0.0.1 LEN=104 TOS=0x00 PREC=0x00 TTL=61 ID=54214 DF PROTO=TCP SPT=6667 DPT=49484 WINDOW=10815 RES=0x00 ACK PSH URGP=0
Aug  3 16:50:00 server kernel: [IP FLOOD ALL]IN=eth0 OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:00:00 SRC=127.0.0.1 DST=127.0.0.1 LEN=40 TOS=0x00 PREC=0x00 TTL=60 ID=9024 DF PROTO=TCP SPT=80 DPT=36729 WINDOW=123 RES=0x00 ACK FIN URGP=0

Você pode ver o SPT com valores que eu protejo normalmente (6667 e 80).

Alguém tem uma ideia sobre esse problema?

    
por CrazyCat 03.08.2016 / 16:57

2 respostas

2

Esses pacotes estão retornando de conexões feitas para servidores externos de IRC (eles vêm da porta de origem 6667). Sua configuração visa elevar o limite apenas para conexões de entrada de IRC (porta de destino de entrada 6667 e assim).

    
por 04.08.2016 / 08:44
1

Resposta : Todos os pacotes que você vê no seu logfile combinam perfeitamente com suas regras de firewall. Suas regras nunca tentam fazer qualquer correspondência nas portas source .

Então, o que o arquivo de log te diz? A sua máquina mantém conexões válidas com outros servidores ou alguém está enviando pacotes falsificados para sua máquina. Como sugerido nos outros comentários, é bem provável que sua máquina tenha estabelecido conexões de saída com outros servidores irc e os pacotes registrados sejam respostas desses servidores.

Veja como recebi a resposta : Acabei de despejar suas regras em fffuu e ajustei um pouco a saída manualmente. Eu reescrevi suas LOG actions para ACCEPT e a política padrão para DROP para ver o que será aceito (por exemplo, LOG ed) após a simplificação.

Aqui está a saída depois que o conjunto de regras foi simplificado e todas as correspondências negadas nas portas foram reescritas para correspondências não negadas. Devido à minha substituição anterior de LOG por ACCEPT , tudo o que o firewall abaixo aceitar também será registrado pelo nosso conjunto de regras original:

ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0    dports: 0:79
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0    dports: 81:442
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0    dports: 444:6666
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0    dports: 6668:6696
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0    dports: 6698:65535
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0    dports: 0:79
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0    dports: 81:442
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0    dports: 444:6666
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0    dports: 6668:6696
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0    dports: 6698:65535
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0    
DROP       all  --  0.0.0.0/0            0.0.0.0/0

Agora, você pode facilmente combinar os pacotes do seu arquivo de log com este firewall simplificado. Todos combinam.

Aviso de isenção : eu sou o autor de fffuu , minhas opiniões podem ser tendenciosas e fffuu não é perfeito (ainda). Mas ei, é grátis e gratuito e espero que ajude: -)

Reprodutibilidade

Aqui está o que eu fiz em detalhes, caso você queira reproduzir:

Eu reescrevi as LOG actions para ACCEPT , usei o formato iptables-save e salvei em foo.txt :

*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
-A INPUT -p tcp -m multiport ! --dports 80,443,6667,6697 -m hashlimit --hashlimit-above 10/sec --hashlimit-burst 20 --hashlimit-mode srcip --hashlimit-name aflood --hashlimit-srcmask 8 -j ACCEPT
-A INPUT -p udp -m multiport ! --dports 80,443,6667,6697 -m hashlimit --hashlimit-above 10/sec --hashlimit-burst 20 --hashlimit-mode srcip --hashlimit-name aflood --hashlimit-srcmask 8 -j ACCEPT
-A INPUT -p icmp -m hashlimit --hashlimit-above 10/sec --hashlimit-burst 20 --hashlimit-mode srcip --hashlimit-name aflood --hashlimit-srcmask 8 -j ACCEPT
COMMIT

Depois, corri fffuu --chain INPUT foo.txt para obter a saída acima.

(fffuu ainda está em desenvolvimento, estou usando o instantâneo de desenvolvimento de repo do fffuu fb858bcf95268451772ca9156a04b9fc229d3578 para este comentário)

    
por 06.08.2016 / 15:16