Permitir somente que o NAS interno se comunique com o ssh

1

Eu tenho um NAS interno que eu nunca quero ser capaz de fazer uma conexão de saída em nada, exceto SSH.

Eu acredito que a seguinte regra no meu roteador irá bloquear todo o tráfego de saída para o meu NAS em 192.168.1.100:

iptables -A OUTPUT --source 192.168.1.100 -m state --state NOVO -j DROP

O que não estou claro é como permitir uma conexão TCP de saída na porta 22.

Mister Epic
fonte

Respostas:

0

A regra que você especificou pode ou não funcionar para bloquear o acesso - observe que você usou "-A", o que significa adicionar a regra ao final da tabela. Se houver uma regra anterior permitindo acesso, isso substituirá a regra. Além disso, a regra que você tem é desnecessariamente complexa.

Para responder à pergunta que você fez é

iptables -I OUTPUT -j DROP
iptables -I OUTPUT -p tcp --dport 22 -j ACCEPT

Isso define uma regra no início da tabela de entrada para descartar todo o tráfego. Em seguida, insere uma regra antes para permitir conexões SSH de saída. Infelizmente, é improvável que isso seja feito porque (a) significa que qualquer serviço que você esteja executando no NAS também não funcionará e (b) as pesquisas de DNS não funcionarão e (c) O bloqueio do ICMP poderá danificar as coisas - embora funciona a maior parte do tempo.

Dependendo exatamente do que você está tentando fazer, você pode ajustar as regras de modo a permitir ICMP, conexões de entrada e SSH e conexões da seguinte maneira:

   iptables -I OUTPUT -m state --state NEW -j DROP
   iptables -I OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
   iptables -I OUTPUT -p icmp -j ACCEPT
   iptables -I OUTPUT -p tcp --dport 22 -j ACCEPT
   iptables -I OUTPUT -p tcp --dport 53 -j ACCEPT
   iptables -I OUTPUT -p udp --dport 53 -j ACCEPT

Observo que essas regras se concentram no tráfego de saída. Embora isso possa funcionar com segurança, geralmente é melhor lidar com o tráfego de entrada, principalmente se você souber os intervalos de endereços IP e / ou as portas que devem ter permissão para se conectar. Você faria isso usando a cadeia INPUT. Talvez algo como

iptables -I INPUT -j DROP
iptables -I INPUT -p tcp --sport 53 -j ACCEPT
iptables -I INPUT -p udp --sport 53 -j ACCEPT
iptables -I INPUT -p tcp --sport 22 -j ACCEPT
iptables -I INPUT -s 192.168.0.0/16 -j ACCEPT
iptables -I INPUT -s 10.0.0.0/8 -j ACCEPT
iptables -I INPUT -s 172.16.0.0/20 -j ACCEPT

O que permitirá que as pessoas na sua rede local (assumindo que elas estejam em um bloco RFC1918 comum) se comuniquem com o seu dispositivo em todos os protocolos e permitam ICMP, DNS e SSH de qualquer lugar.

davidgo
fonte