iptables bloqueia tudo menos http/https/ssh

iptables bloqueia tudo menos http/https/ssh

Eu tenho essa configuração de iptables no meu vps que deve rodar o Wordpress. O que eu quero fazer é bloquear todas as solicitações recebidas, exceto http na porta 80, https na porta 443 e ssh na porta 22.

Chain INPUT (policy ACCEPT)
    num  target     prot opt source               destination         
    1    f2b-sshd   tcp  --  anywhere             anywhere             multiport dports ssh
    
    Chain FORWARD (policy ACCEPT)
    num  target     prot opt source               destination         
    
    Chain OUTPUT (policy ACCEPT)
    num  target     prot opt source               destination         
    
    Chain f2b-sshd (1 references)
    num  target     prot opt source               destination         
    1    REJECT     all  --  [retracted_ip]       anywhere             reject-with icmp-port-unreachable
    2    REJECT     all  --  [retracted].com     anywhere             reject-with icmp-port-unreachable
    3    RETURN     all  --  anywhere             anywhere            

Encontrei alguns comandos online, mas não tenho certeza se eles podem entrar em conflito com o fail2ban.

Responder1

Em geral:

As regras de firewall são processadas na ordem em que são definidas e aparecem (na saída dos comandos iptables -L -v -n --line-numbers, e/ou similares).iptables -L -v -n -t nat --line-numbersiptables-save

Criar novas regras nas cadeias erradas e/ou na ordem errada resultará em consequências indesejadas, quebra de funcionalidade, segurança e/ou bloqueio de tráfego válido.

Esteja ciente de que executar iptablescomandos de baixo nível para gerenciar seu firewall nem sempre é a melhor solução. Pelo que eu sei, no Ubuntu, é preferível usar as ferramentas UFW e funcionará de maneira confiável em conjunto com o fail2ban.


Fail2ban cria uma ou mais cadeias personalizadas (que lidam com a maior parte do trabalho pesado para bloquear endereços IP específicos com comportamento inadequado) como a f2b-sshdcadeia. Normalmente você deixa o fail2ban gerenciar as entradas nessas cadeias.

Além disso, o fail2ban cria regras para as cadeias personalizadas que cria na INPUTcadeia. Normalmente essas regras devem virprimeiro no INPUTcadeia, antes de quaisquer outras regras que você criar.

Na configuração atual do firewall, quando você usa iptables com a -Aopção para anexar novas regras à cadeia INPUT, tudo deve funcionar.


A execução dos comandos a seguir anexará as regras usuais para criar um firewall que permite ssh, http e https, e que bloqueia todo o outro tráfego de entrada.

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp  -m tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp  -m tcp --dport 443 -j ACCEPT
iptables -A INPUT -j REJECT --reject-with icmp-host-prohibited

Responder2

Primeiro vamos fazer backup :)

sudo iptables-save > ./mybackup

Se você perdeu a conexão e deseja o KVM, pode voltar facilmente ao início do backup

sudo iptables-restore < ./mybackup

Então você pode começar a adicionar regras

sudo iptables -A INPUT -d YOURIPPUBLIC -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A INPUT -d YOURIPPUBLIC  -p tcp -m tcp --dport 443 -j ACCEPT
sudo iptables -A INPUT -d YOURIPPUBLIC  -p tcp -m tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -d YOURIPPUBLIC  -p tcp -m tcp --dport 22 -j DROP
sudo iptables -A INPUT -d YOURIPPUBLIC  -j DROP

isso acima se você quiser fazer firewall para ip diferente da sua instância, YOURIPPUBLIC : 33.33.33.33 ou com netmask 33.33.33.33/32

RELACIONADO, ESTABELECIDO - Se obtido antes da conexão, basta pular todas as próximas regras do firewall. Para conectar-se, siga as próximas regras :)

se você quiser toda a rede

sudo iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
sudo iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp -m tcp --dport 22 -j DROP
sudo iptables -A INPUT -j DROP

Você pode salvar para editar mais tarde:

iptables-save > /.mynew.iptables.list.txt

informação relacionada