Revise as regras do iptables para um servidor

Revise as regras do iptables para um servidor

Esta caixa está rodando o Ubuntu 14.04b e estava quase desconfigurada.
Achei que seria uma boa ideia trazer pelo menos um firewall, e o iptables foi minha escolha.

IMHO, será melhor carregar as regras de um arquivo gerado pelo iptables na inicialização pré-up da interface, por meio de /etc/network/interfaces, usando algo como
pre-up iptables-restore < /etc/iptables.rules
(com um iptables-savepost-down, caso eu tenha que mudar alguma coisa).

Existem, no entanto, duas coisas que me atrapalham:

  • Primeiro, não tenho certeza se meu arquivo realizará o trabalho corretamente (veja abaixo).
  • Em segundo lugar, da última vez que usei o iptables, o IPv6 nem existia! Descobri que existe um ip6tables para isso, mas não consigo determinar se posso usar o mesmo arquivo de regras para ambos... Isso seria ótimo, mas, infelizmente, parece fácil demais para ser verdade:/

A seguir está meu arquivo de regras. Alguém poderia ter a gentileza de me apontar algo estranho, ilógico ou desnecessário?

Como você pode ver, a caixa terá um Apacheservidor web(com nome de domínio, entãoDNSprecisa passar), umServidor MySQL(com acesso remoto), umServidor SFTP(parece que o FTP agora é uma coisa bastante desatualizada), atuará comoservidor de e-mail(postfix, provavelmente, e talvez uma lista de discussão com majordomo, se ainda existir) edeve ser absolutamente acessívelatravésSSH(Não posso perder o acesso SSH a este servidor: é um material dedicado em algum lugar a 400 km de distância, sem console)

# Generated by iptables-save v1.4.21 on Wed Sep 28 15:08:21 2016
*raw
:PREROUTING ACCEPT [30261051:8737714396]
:OUTPUT ACCEPT [28933128:15186346449]
COMMIT
# Completed on Wed Sep 28 15:08:21 2016
# Generated by iptables-save v1.4.21 on Wed Sep 28 15:08:21 2016
*nat
:PREROUTING ACCEPT [8040256:1000464908]
:INPUT ACCEPT [8040256:1000464908]
:OUTPUT ACCEPT [357964:47801350]
:POSTROUTING ACCEPT [357964:47801350]
COMMIT
# Completed on Wed Sep 28 15:08:21 2016
# Generated by iptables-save v1.4.21 on Wed Sep 28 15:08:21 2016
*mangle
:PREROUTING ACCEPT [30261051:8737714396]
:INPUT ACCEPT [30261051:8737714396]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [28933128:15186346449]
:POSTROUTING ACCEPT [28933128:15186346449]
COMMIT
# Completed on Wed Sep 28 15:08:21 2016
# Generated by iptables-save v1.4.21 on Wed Sep 28 15:08:21 2016
*filter
:INPUT ACCEPT [10752:1386943]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [18529:5801236]
# Do not kill established connections
-A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

#INPUT rules
#SSH & SFTP
-A INPUT -i eth0 -p tcp -m tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
#HTTP server
-A INPUT -i eth0 -p tcp -m tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
#HTTPS
-A INPUT -i eth0 -p tcp -m tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
#Echo
-A INPUT -p icmp -m icmp --icmp-type 0 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
#DNS
-A INPUT -i eth0 -p udp -m udp --sport 53 -j ACCEPT
#SMTP
-A INPUT -i eth0 -p tcp -m tcp --dport 25 -m state --state NEW,ESTABLISHED -j ACCEPT
#SQL in
-A INPUT -i eth0 -p tcp -m tcp --dport 3306 -m state --state NEW,ESTABLISHED -j ACCEPT
#IMAP
-A INPUT -i eth0 -p tcp -m tcp --dport 143 -m state --state NEW,ESTABLISHED -j ACCEPT
#IMAP sur SSL
-A INPUT -i eth0 -p tcp -m tcp --dport 993 -m state --state NEW,ESTABLISHED -j ACCEPT
#POP3
-A INPUT -i eth0 -p tcp -m tcp --dport 110 -m state --state NEW,ESTABLISHED -j ACCEPT
#POP3 sur SSL
-A INPUT -i eth0 -p tcp -m tcp --dport 995 -m state --state NEW,ESTABLISHED -j ACCEPT
#Limit HTTP flood
-A INPUT -p tcp -m tcp --dport 80 -m limit --limit 25/min --limit-burst 100 -j ACCEPT
#Loopback
-A INPUT -i lo -j ACCEPT

#OUTPUTS
#SSH & SFTP
-A OUTPUT -o eth0 -p tcp -m tcp --sport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
#HTTP
-A OUTPUT -o eth0 -p tcp -m tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
#HTTPS
-A OUTPUT -o eth0 -p tcp -m tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT
#echo
-A OUTPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A OUTPUT -p icmp -m icmp --icmp-type 0 -j ACCEPT
#DNS
-A OUTPUT -o eth0 -p udp -m udp --dport 53 -j ACCEPT
#SMTP
-A OUTPUT -o eth0 -p tcp -m tcp --sport 25 -m state --state ESTABLISHED -j ACCEPT
#SQL out
-A OUTPUT -o eth0 -p tcp -m tcp --sport 3306 -m state --state ESTABLISHED -j ACCEPT
#IMAP
-A OUTPUT -o eth0 -p tcp -m tcp --sport 143 -m state --state ESTABLISHED -j ACCEPT
#IMAP sur SSL
-A OUTPUT -o eth0 -p tcp -m tcp --sport 993 -m state --state ESTABLISHED -j ACCEPT
#POP3
-A OUTPUT -o eth0 -p tcp -m tcp --sport 110 -m state --state ESTABLISHED -j ACCEPT
#POP3 sur SSL
-A OUTPUT -o eth0 -p tcp -m tcp --sport 995 -m state --state ESTABLISHED -j ACCEPT
#Doublons by legacy script.
#Remove?
-A OUTPUT -p tcp -m tcp --dport 53
-A OUTPUT -p udp -m udp --dport 53
-A OUTPUT -p tcp -m tcp --dport 53 -j ACCEPT
-A OUTPUT -p udp -m udp --dport 53 -j ACCEPT
#Loopback
-A OUTPUT -o lo -j ACCEPT

#End of config. Make it happen!
COMMIT
# Completed on Wed Sep 28 15:08:21 2016

Obrigado por qualquer ajuda!

Responder1

Como o seu arquivo salvo não faz referência a nenhum IP, você também iptablesdeve usá-lo . ip6tablesSua melhor aposta é emitir um attrabalho para redefinir as regras do firewall em 2 minutos (ou a qualquer hora que você achar apropriado):

# echo "service iptables stop" | at now + 2 minutes

em seguida, aplique as regras de iptables do seu arquivo para IPv4 e IPv6:

# iptables-restore < iptables-save-file
# ip6tables-restore < iptables-save-file

se as coisas estiverem inacessíveis nesse ponto, aguarde 2 minutos para que o attrabalho desative o firewall e comece a configurar os conjuntos de regras manualmente. Se funcionarem, execute service iptables savee service ip6tables saveaproveite seu novo firewall.

Devo também observar que seu arquivo existente nunca nega, rejeita ou descarta qualquer tráfego - a política padrão em todas as cadeias é ACCEPT, e não há regras de rastreamento DROPou REJECTalvos, então você tem o que parece ser uma configuração de firewall bastante ineficaz .

informação relacionada