Tabelas IP para uso doméstico

1

Eu tenho tentado configurar regras para um desktop que eu tenho em minha rede doméstica e mesmo que a princípio esta configuração funcionou, eu mudei algo em algum lugar e agora ele não passará por nenhum tipo de conexão. Este script é executado com a inicialização do sistema.

#!/bin/bash   

### Variables ###
LAN="eth0"
WLAN="wlan0"
iptables="/sbin/iptables"
ip6tables="/sbin/ip6tables"
ssh_port=50000


### Initial set up ###
clear
# echo -e "\n"


### Flush ###
$iptables -F
$iptables -X
$iptables -Z
echo "Rules flushed; tables are empty now" && echo ""    


### Basic rules ###
$iptables -A INPUT -s 127.0.0.1 -j ACCEPT
$iptables -A OUTPUT -s 127.0.0.1 -j ACCEPT
$iptables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
echo "Basic rules written"&&echo""


### Special rules ###
# slsk
$iptables -A INPUT -p tcp --dport 63922 -j ACCEPT
$iptables -A INPUT -p tcp --dport 63923 -j ACCEPT
$iptables -A INPUT -p tcp --dport 2416 -j ACCEPT
# mpd
$iptables -A INPUT -p tcp --dport 8800 -j ACCEPT
$iptables -A INPUT -p udp --dport 8800 -j ACCEPT
# allow pings 
$iptables -A INPUT -p icmp -m state --state NEW -j ACCEPT
# ssh server
$iptables -A INPUT -p tcp --dport $ssh_port -j LOG
$iptables -A INPUT -p tcp --dport $ssh_port -j ACCEPT
#$ip6tables -A INPUT -p tcp --dport $ssh_port -j LOG
#$ip6tables -A INPUT -p tcp --dport $ssh_port -j ACCEPT
echo "Special rules set" && echo ""


#### Default policies ###
$iptables -A INPUT -j DROP
$iptables -A OUTPUT -j ACCEPT
$iptables -A FORWARD -j DROP 
echo "Default policies set" && echo ""


echo "Firewall set up finished" && echo ""

Tem alguma coisa errada? Como posso resolver isso?

--- editar --- Em resposta a Alexander Chen

Esta é uma extração do log depois de adicionar a regra de log (ub é o nome do meu computador):

May 12 18:37:19 ub kernel: [30205.793422] iptables negados: IN = wlan0 OUT = MAC = e8: de: 27: 07: 1f: d6: 64: d9: 54: c2: d0: ec: 08:00 SRC = 212.89.0.77 DST = 192.168.1.3 LEN = 175 TOS = 0x00 PREC = 0x00 TTL = 250 ID = 43075 DF PROTO = UDP SPT = 53 DPT = 27334 LEN = 155

### Basic rules ###
[...]
#### Default policies ###
$iptables -A INPUT -j LOG --log-prefix "iptables denied: " --log-level 7
$iptables -A INPUT -j DROP
$iptables -A OUTPUT -j ACCEPT
$iptables -A FORWARD -j DROP 
echo "Default policies set" && echo ""

É assim que eu tenho o arquivo de configuração agora mesmo depois de tentar novamente com a pequena correção UDP. Antes de usar a regra de log, ela ainda não permitiria o tráfego, mas depois de adicioná-la antes da regra de soltar parece funcionar, mesmo que eu não consiga pingar nada da linha de comando (e acho que muita coisa vai dar me algumas dores de cabeça). Eu vou continuar testando algumas coisas. Editar * sim, não funciona; A princípio, parece que não funciona, e finalmente volta a funcionar. Devo postar todo o log?

    
por qkthr 12.05.2016 / 16:39

2 respostas

1

A mensagem de erro no registro do kernel informa que um pacote UDP de entrada para sua porta 53 foi descartado.

Olhando para a sua configuração, não há nada que diga ao firewall para aceitar o UDP. (Você tem uma regra para aceitar pacotes de conexão TCP estabelecidos e relacionados , mas nada para o UDP.)

A solução é remover a restrição em pacotes estabelecidos e relacionados para o TCP, para que também se aplique ao UDP:

$iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    
por 12.05.2016 / 19:00
1

Parece que você não permitiu conexões UDP, bloqueando o DNS na porta UDP 53.

Se você estiver usando DHCP, também precisará permitir o DHCP nas portas UDP 67-68.

Adicione as duas linhas seguintes e conecte-se:

$iptables -A INPUT -p udp --dport 67:68 -j ACCEPT
$iptables -A INPUT -p udp --dport 53 -j ACCEPT

Pode haver outras portas no udp que você pode precisar abrir, dependendo do que mais estiver sendo executado.

    
por 12.05.2016 / 17:26