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).
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?
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).
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: -)
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)