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-save
post-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 iptables
deve usá-lo . ip6tables
Sua melhor aposta é emitir um at
trabalho 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 at
trabalho desative o firewall e comece a configurar os conjuntos de regras manualmente. Se funcionarem, execute service iptables save
e service ip6tables save
aproveite 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 DROP
ou REJECT
alvos, então você tem o que parece ser uma configuração de firewall bastante ineficaz .