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 .