Como adicionar regras à tabela raw do iptables?

1

Estou trabalhando no Linux Mint 18.1 e no GNU / Linux Debian 9 Stretch (testes).

Eu tenho apenas IPv4 disponível. Eu gostaria de aumentar a segurança na minha rede, eu li isso: Bloquear ataques TCP conhecidos . Supondo que eu gostaria de tentar, apesar de este comentário .

O problema é que não sei como adicionar essas regras a iptables ' raw table?

    
por Vlastimil 03.12.2016 / 05:02

2 respostas

0

Com a ajuda de iptables-save , descobri qual é o formato adequado ao salvar para:

/etc/iptables/rules.v4

Exemplo das regras no link da pergunta a seguir:

*raw
:PREROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A PREROUTING -p icmp -m u32 ! --u32 "0x4&0x3fff=0x0" -j DROP
-A PREROUTING -p icmp -m length --length 1492:65535 -j DROP
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j DROP
-A PREROUTING -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j DROP
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,PSH,URG -j DROP
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN -j DROP
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP
COMMIT
    
por 03.12.2016 / 10:01
0

Aqui, suponho que você não se importa com o IPv6. Então o arquivo que você quer editar é:

/etc/sysconfig/iptables

Coloque isso no topo do seu arquivo iptables. É uma implementação esqueleto da tabela RAW, que é usada antes de qualquer tabela associada ao roteamento (como FILTER). Observe que cada tabela possui seu próprio comando COMMIT na parte inferior de suas definições:

*raw
:TCPFLAGS - [0:0]

# the two rules below assure that only TCP packets get examined. All others continue into the *filter table.
-A PREROUTING -p tcp -j TCPFLAGS
-A PREROUTING -j ACCEPT

# quickly accept standard handshakes
# ALLOW ACK or ACK/SYN
#-A TCPFLAGS -j ACCEPT
-A TCPFLAGS -p tcp --tcp-flags FIN,ACK,URG,PSH,RST ACK  -j ACCEPT

# allow ACK/FIN with either URG or PSH, or both, or neither
# but SYN and RST can't be set
-A TCPFLAGS -p tcp --tcp-flags FIN,SYN,ACK,RST  ACK,FIN -j ACCEPT

# allow SYN or ACK/SYN
-A TCPFLAGS -p tcp --tcp-flags FIN,SYN,URG,PSH,RST SYN -j ACCEPT

# allow RST or ACK/RST
-A TCPFLAGS -p tcp --tcp-flags FIN,SYN,URG,PSH,RST RST -j ACCEPT

# this rule catches xmas-tree and fin attacks
-A TCPFLAGS -p tcp --tcp-flags FIN     FIN     -j DROP

# this rule catches xmas-tree and syn/rst attacks
-A TCPFLAGS -p tcp --tcp-flags SYN     SYN     -j DROP

# this rule catches null attacks
-A TCPFLAGS -p tcp --tcp-flags ALL     NONE    -j DROP

#-A TCPFLAGS -p tcp -ecn-tcp-cwr -j DROP
# these rules catch bad ack combinations
#-A TCPFLAGS -p tcp --tcp-flags ACK     ACK     -j ACC
-A TCPFLAGS -j ACCEPT

# so, what do we accept for tcp?
# handshakes (ACK/FIN), (ACK/SYN), (SYN), (ACK), (RST), (ACK/RST), and data packets with 
# PSH or URG or FIN or ACK

COMMIT

O acima fica acima das * definições de filtro. Eu não faço reivindicações quanto à correção das regras. Note que eu comentei algumas regras que não funcionaram para mim. Se você encontrar algo de errado com as minhas regras, por favor, coloque-o abaixo.

    
por 03.12.2016 / 07:53