Configuração segura do iptables para o Samba

2

Estou tentando configurar um iptables para que as conexões de saída do meu servidor CentOS 6.2 sejam permitidas APENAS se forem do estado ESTABLISHED. Atualmente, a configuração a seguir está funcionando muito bem para o sshd, mas todas as regras do Samba são totalmente ignoradas por uma razão que não consigo descobrir.

Script Bash do iptables para configurar TODAS as regras:

# Remove all existing rules
iptables -F


# Set default chain policies
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP


# Allow incoming SSH
iptables -A INPUT -i eth0 -p tcp --dport 22222 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 22222 -m state --state ESTABLISHED -j ACCEPT


# Allow incoming Samba
iptables -A INPUT -i eth0 -s 10.1.1.0/24 -p udp --dport 137:138 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -d 10.1.1.0/24 -p udp --sport 137:138 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -s 10.1.1.0/24 -p tcp --dport 139 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -d 10.1.1.0/24 -p tcp --sport 139 -m state --state ESTABLISHED -j ACCEPT


# Enable these rules
service iptables restart

lista de regras do iptables depois de executar o script acima:

[root@repoman ~]# iptables -L
Chain INPUT (policy DROP)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:22222 state NEW,ESTABLISHED

Chain FORWARD (policy DROP)
target     prot opt source               destination

Chain OUTPUT (policy DROP)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             anywhere            tcp spt:22222 state ESTABLISHED

Por fim, estou tentando restringir o Samba da mesma maneira que fiz para o sshd. Além disso, estou tentando restringir conexões ao seguinte intervalo de endereços IP: 10.1.1.12 - 10.1.1.19

Vocês podem oferecer algumas dicas ou até mesmo uma solução completa? Eu li man iptables bastante extensivamente, então não tenho certeza porque as regras do Samba estão sendo descartadas.

Além disso, remover os sinalizadores -s 10.1.1.0/24 não altera o fato de as regras serem ignoradas.

    
por Eric 04.06.2012 / 04:17

2 respostas

1

É o service iptables restart no final que é o problema. Quando você executa os comandos iptables , essas regras são colocadas em prática imediatamente. O serviço iptables que você está reiniciando usa um arquivo de configuração para carregar todas as regras de firewall quando o sistema é inicializado. Quando você o executa, ele substitui todas as regras que você acabou de criar com o que estava na configuração armazenada.

De acordo com este que você deveria use os comandos iptables para fazer o firewall funcionar corretamente e, em seguida, service iptables save para salvar a configuração do firewall para a próxima inicialização.

    
por 04.06.2012 / 06:18
1

Você não entende o que os estados da conexão significam. NOVIDADE significa que este é o primeiro pacote em uma conexão, que no caso do TCP é o primeiro pacote SYN. ESTABLISHED significa que o pacote pertence a uma conexão existente, que no caso do TCP é tudo após o primeiro pacote SYN. Para que uma conexão entre no estado ESTABLISHED, esse primeiro pacote precisa passar. Ao permitir apenas conexões ESTABLISHED, você está bloqueando o primeiro pacote e, portanto, as conexões nunca serão estabelecidas.

A maneira que o rastreamento de conexão é normalmente usado ao configurar o iptables é policiar o primeiro pacote de cada conexão (ou seja, o estado NEW) e, em seguida, permitir a passagem de todos os pacotes no estado ESTABLISHED. Como uma conexão só pode entrar no estado ESTABLISHED se o primeiro pacote for permitido, é seguro aceitar todos os pacotes no estado ESTABLISHED.

    
por 04.06.2012 / 05:03