Iptables, permitir portas comuns, bloquear o resto

0

Eu quero permitir que as pessoas se conectem às portas 22, 80 e 443. Também quero poder fazer pesquisas de DNS no meu servidor.

Veja o que estou tentando:

iptables -A INPUT -m tcp -p tcp --dport 1 -j ACCEPT
iptables -A INPUT -m udp -p udp --dport 1 -j ACCEPT

iptables -A INPUT -m tcp -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -m udp -p udp --dport 53 -j ACCEPT

iptables -A INPUT -m tcp -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -m udp -p udp --dport 80 -j ACCEPT

iptables -A INPUT -m tcp -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -m udp -p udp --dport 443 -j ACCEPT

iptables -A INPUT -m tcp -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -m udp -p udp --dport 22 -j ACCEPT

iptables -A INPUT -m tcp -p tcp -j REJECT
iptables -A INPUT -m udp -p udp -j REJECT

iptables -A OUTPUT -m tcp -p tcp -j ACCEPT
iptables -A OUTPUT -m udp -p udp -j ACCEPT

iptables -L

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:tcpmux
ACCEPT     udp  --  anywhere             anywhere             udp dpt:1
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:domain
ACCEPT     udp  --  anywhere             anywhere             udp dpt:domain
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http
ACCEPT     udp  --  anywhere             anywhere             udp dpt:http
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:https
ACCEPT     udp  --  anywhere             anywhere             udp dpt:https
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh
ACCEPT     udp  --  anywhere             anywhere             udp dpt:ssh
REJECT     tcp  --  anywhere             anywhere             tcp reject-with icmp-port-unreachable
REJECT     udp  --  anywhere             anywhere             udp reject-with icmp-port-unreachable

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             anywhere             tcp
ACCEPT     udp  --  anywhere             anywhere             udp

Se eu omitir estas linhas:

iptables -A INPUT -m tcp -p tcp -j REJECT
iptables -A INPUT -m udp -p udp -j REJECT

Eu posso pingar, mas não estou fechando todas as portas por padrão, que é o objetivo. Por que uma regra INPUT afeta minha capacidade de realizar pesquisas de nome de host (ex "ping google.com" do meu servidor?)

    
por JoshRibs 08.08.2014 / 00:35

2 respostas

2

Você precisa permitir o tráfego relacionado novamente (isto é, as respostas ao seu tráfego DNS de saída). Além disso, talvez você queira usar uma queda padrão em vez de uma regra específica de negar tudo para economizar espaço.

iptables -A ENTRADA -p tcp -m multiporta --dados 22,80,443 -j ACEITAR

iptables -A INPUT -m state - estado RELACIONADO, ESTABELECIDO -j ACCEPT

iptables -P INPUT DROP

Suas regras de cadeia OUTPUT não são necessárias, já que a cadeia tem um ACCEPT padrão no momento, e as regras da porta 53 não são necessárias porque você não está hospedando um servidor DNS, simplesmente usando um, então o tráfego sai pela cadeia OUTPUT, não pelo INPUT.

    
por 08.08.2014 / 00:44
1

Como explicado aqui , você deve permitir o tráfego de entrada para a conexão ESTABLISHED / RELATED, então simplesmente adicione a seguinte regra no começando:

iptables -A INPUT -m state - state ESTABELECIDO, RELACIONADO -j ACCEPT

    
por 08.08.2014 / 00:44

Tags