bloqueando todo o tráfego, exceto endereços IP na lista de permissões

0

Eu preciso bloquear todas as conexões de entrada e saída no firewall, exceto endereços IP na lista branca. Eu estou atualmente na máquina virtual usando o Ubuntu. Eu tentei estes comandos de este site: mas eu não consigo me conectar a este site, que é o google, mas o ping funciona, não tenho experiência com o linux, outros sites não funcionam bem.

iptables -A INPUT -s 172.217.23.206 -j ACCEPT
iptables -A OUTPUT -d 172.217.23.206 -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT DROP
    
por empleat 30.10.2018 / 21:01

1 resposta

3

iptables funciona em uma base de primeiro jogo. Vamos detalhar seu exemplo:

iptables -A INPUT -s 172.217.23.206 -j ACCEPT
iptables -A OUTPUT -d 172.217.23.206 -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT DROP

A primeira linha informa iptables para permitir todo o tráfego do endereço IP 172.217.23.206 para a máquina onde essas regras foram aplicadas. E todo o tráfego é, literalmente, todo o tráfego . Então, não importa o protocolo, porta, opções, etc .; contanto que a fonte corresponda a 172.217.23.206 que passa.

A segunda linha permite todo e qualquer tráfego da sua máquina para 172.217.23.206 . Novamente, não importa qual seja o protocolo, porta, etc; contanto que o destino corresponda a 172.217.23.206 , é permitido.

A terceira linha informa iptables a soltar qualquer tráfego de entrada que não corresponda às duas primeiras regras, enquanto a quarta e última linha informa iptables a soltar qualquer tráfego de saída que não corresponda às três linhas anteriores.

Estou supondo que você queira criar um cenário que permita o tráfego para apenas alguns sites. O conjunto de regras que você escreveu não funcionará para esse cenário;

  • Seu computador não tem como saber que o google.com pode resolver para 172.217.23.206 . Normalmente, ele pode adquirir essas informações consultando um servidor DNS ou por entradas /etc/hosts locais.
  • Não há motivos para permitir tráfego de entrada neste cenário, pois iptables é inteligente o suficiente para rastrear suas conexões e permitir respostas. Este processo está chamando estado de manutenção.
  • Permitir todo o tipo de tráfego para 172.217.23.206 , apenas para obter um website, não faz qualquer sentido.
  • O tráfego ICMP (incluindo ping ) é um tipo especial. Você precisa bloqueá-lo especificamente.

Este conjunto de regras se encaixa neste cenário:

iptables -I INPUT 1 -i lo -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -p tcp -d unix.stackexchange.com --dport 80 -j ACCEPT
iptables -A OUTPUT -p tcp -d unix.stackexchange.com --dport 443 -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT DROP

Este conjunto de regras permite que seu computador consulte servidores DNS usando a porta 53 / udp. Em seguida, ele permite o tráfego TCP para unix.stackexchange.com, para a porta 80 (http) e 443 (https). Ele mantém o controle das conexões e descarta todo o tráfego.

Você pode eliminar a regra que permite consultas DNS, desde que você tenha configurado as entradas correspondentes em /etc/resolv.conf .

    
por 30.10.2018 / 21:48