Se você não usar (ou não quiser usar) ufw
e precisar de uma resposta iptables
, aqui está a essência de como fazer isso. Observe que você também precisa se adaptar ao IPv4 e ao IPv6.
IPv4
Primeiro, examine suas regras iptables
( iptables -L -n
). Supondo uma instalação padrão, você não terá regras.
iptables -A INPUT -s SOURCEIP/CIDR -p tcp --dport PORTNUM -j ACCEPT
é a sintaxe geral para adicionar uma regra ao final da tabela INPUT
, declarando especificamente que "Eu quero permitir o endereço IP de origem (e o intervalo de IPs, se um sufixo CIDR for fornecido - é não necessário) acesso ao meu servidor quando as solicitações chegam a porta PORTNUM via TCP ". Se você quiser permitir somente um endereço IP, omita a parte /CIDR
com SOURCEIP
.
Se você tiver alguma regra na tabela INPUT para negar acesso (no final), precisará usar iptables -I INPUT RULENUMBER
(onde RULENUMBER
é o número da linha na tabela INPUT
em que você deseja inserir esta regra ).
Certifique-se, no entanto, de adicionar regras como estas:
iptables -A INPUT -i lo -j ACCEPT
- Aceite qualquer coisa sobre o loopback do host local (127.0.0.1, etc.)
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
- Aceite o tráfego relacionado a conexões já estabelecidas (necessário para garantir que a comunicação volta ao seu servidor e ao seu cliente remoto)
Depois que a configuração estiver concluída, você precisará adicionar uma regra para negar todas as outras conexões. Essa regra seria essa, adicionada ao final da tabela INPUT
:
iptables -A INPUT -j REJECT --reject-with icmp-host-unreachable
.
IPv6
Primeiro, examine suas regras ip6tables
( ip6tables -L -n
). Supondo uma instalação padrão, você não terá regras.
ip6tables -A INPUT -s SOURCEIP/CIDR -p tcp --dport PORTNUM -j ACCEPT
é a sintaxe geral para adicionar uma regra ao final da tabela INPUT
, declarando especificamente que "Eu quero permitir o endereço IP de origem (e o intervalo de IPs, se um sufixo CIDR for fornecido - é não necessário) acesso ao meu servidor quando as solicitações chegam a porta PORTNUM via TCP ". Se você quiser permitir somente um endereço IP, omita a parte /CIDR
com SOURCEIP
.
Se você tiver alguma regra na tabela INPUT para negar acesso (no final), precisará usar ip6tables -I INPUT RULENUMBER
(onde RULENUMBER
é o número da linha na tabela INPUT
em que você deseja inserir esta regra ).
Certifique-se, no entanto, de adicionar regras como estas:
ip6tables -A INPUT -i lo -j ACCEPT
- Aceite qualquer coisa sobre o loopback do host local (127.0.0.1, etc.)
ip6tables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
- Aceite o tráfego relacionado a conexões já estabelecidas (necessário para garantir que a comunicação volta ao seu servidor e ao seu cliente remoto)
Além disso, com o IPv6, você precisa aceitar praticamente todos os pacotes ICMPv6, já que é muito mais necessário do que no IPv4. Isso alcançaria isso: ip6tables -A INPUT -p ipv6-icmp -j ACCPET
Depois que a configuração estiver concluída, você precisará adicionar uma regra para negar todas as outras conexões. Essa regra seria essa, adicionada ao final da tabela INPUT
:
ip6tables -A INPUT -j REJECT --reject-with icmp6-addr-unreachable
.
Torne essas regras persistentes (as únicas soluções do iptables precisam disso)
Hora de fazer as regras persistirem. Vamos instalar iptables-persistent
. apt-get install iptables-persistent
.
A instalação perguntará se você deseja salvar suas regras atuais. Diga "sim" para prompts IPv4 e IPv6. O conjunto de regras que acabamos de "adicionar" ou criado agora estará permanentemente disponível.
(Se você usar ufw
em vez de iptables
, não precisará instalar este pacote)
Embora ufw
gerencie automaticamente o conjunto de regras para garantir que esteja na ordem correta, iptables
é o modo 'sysadmin' de fazer o firewall avançado. O UFW apenas faz regras e funções fáceis - as complexas que você tem a ver com iptables
ou adiciona manualmente aos arquivos de configuração da sintaxe ufw
with iptables
.