Iptables

Iniciado por rafatres, 22 de Dezembro de 2014, 20:39

tópico anterior - próximo tópico

rafatres

Boa noite,
Tenho um servidor web onde hospedo vários sites em um VPS e utilizo as seguintes regras:
# Generated by iptables-save v1.4.12 on Mon Apr  7 00:43:14 2014
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [2:134]
:fail2ban-apache - [0:0]
:fail2ban-control-panel - [0:0]
:fail2ban-dovecot - [0:0]
:fail2ban-postfix - [0:0]
:fail2ban-proftpd - [0:0]
:fail2ban-ssh - [0:0]
-A INPUT -p tcp -m multiport --dports 80,443 -j fail2ban-control-panel
-A INPUT -p tcp -m multiport --dports 143,993,110,995 -j fail2ban-dovecot
-A INPUT -p tcp -m multiport --dports 25,465 -j fail2ban-postfix
-A INPUT -p tcp -m multiport --dports 21,20,990,989 -j fail2ban-proftpd
-A INPUT -p tcp -m multiport --dports 80,443 -j fail2ban-apache
-A INPUT -p tcp -m multiport --dports 2048 -j fail2ban-ssh
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 2048 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 25 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 465 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 110 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 995 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 143 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 993 -j ACCEPT
-A INPUT -p udp -m udp --dport 80 -j ACCEPT
-A INPUT -p udp -m udp --dport 443 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 53 -j ACCEPT
-A INPUT -p udp -m udp --dport 53 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 20 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 587 -j ACCEPT
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
-A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP
-A INPUT -p tcp -m tcp --dport 60000:65535 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -j LOG
-A FORWARD -p icmp -m icmp --icmp-type 8 -m limit --limit 1/sec -j ACCEPT
-A FORWARD -p tcp -m limit --limit 1/sec -j ACCEPT
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -m limit --limit 3/min --limit-burst 3 -j LOG
-A FORWARD -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK RST -m limit --limit 1/sec -j ACCEPT
-A FORWARD -j LOG
-A OUTPUT -p tcp -m tcp --dport 20 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 21 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 587 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 60000:65535 -j ACCEPT
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 25 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 465 -j ACCEPT
-A fail2ban-apache -j RETURN
-A fail2ban-control-panel -j RETURN
-A fail2ban-dovecot -j RETURN
-A fail2ban-postfix -j RETURN
-A fail2ban-proftpd -j RETURN
-A fail2ban-ssh -s 162.243.249.117/32 -j DROP
-A fail2ban-ssh -j RETURN
COMMIT
# Completed on Mon Apr  7 00:43:14 2014
                                                                                                                              64,1          Bot

E em uma análise de segurança, obtive o seguinte:
"ICMP Timestamp Request"
Como solução, me foi proposto:
ipchains -A input -p icmp --icmp-type timestamp-request -j DROP
ipchains -A output -p icmp --icmp-type timestamp-reply -j DROP

Porém, não consigo incluir essas regras. :/

Outro problema:
Tenho em /etc/rc.local o seguinte código:
## Carregando as regras do firewall
if [ -f /etc/firewall/rules.txt ]
then
modprobe ip_conntrack
modprobe ip_conntrack_ftp
/sbin/iptables-restore /etc/firewall/rules.txt
fi
#end

exit 0

Para restaurar as regras do firewall quando o servidor é ligado/reiniciado. Porém, de uns tempos para cá não tem funcionado (o arquivo /etc/firewall/rules.txt existe e se eu digitar iptables-restore /etc/firewall/rules.txt, funciona). O que pode ser?
E se tiverem sugestões de outras regras, estou aberto a elas.
Obrigado,

zekkerj

Fuja desse analisador de segurança como o diabo foge da cruz. O ipchains não é mais usado, sei lá, desde o século passado...
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

rafatres

Certo então zekkerj.
Só fica meu problema das regras não iniciarem automaticamente.
Se tiveres sugestões de leitura quanto a firewall para servidores web, estou aceitando.
Obrigado,

zekkerj

O Ubuntu tem um firewall nativo (o UFW). Pq vc não o usa?
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

Arthur Bernardes

Se sua política padrão é ACCPET, porque está aceitando conexões e protocolos abaixo dela?

rafatres

#5
zekkerj,
Qual a diferença entre iptables e ufw? Muitos tutoriais que acho internet afora pra servidores utilizam o iptables. Acabei utilizando-o também.

Arthur,
Inicialmente minha política era DROP/REJECT, mas comecei a ter problemas com isso (acho que faltou liberar bastante coisa ainda) e acabei removendo essa política. Pretendo retorná-la no futuro, assim que analisar o que está sendo bloqueado (e não deveria) e liberar.

//Achei uma solução para salvar o iptables, é o pacote iptables-persistent. :)

Aliás, queria saber se tem como ver quais portas tais pacotes usam/foram bloqueadas ao tentar se usufruir delas com a política DROP. É possível?

zekkerj

CitarQual a diferença entre iptables e ufw? Muitos tutoriais que acho internet afora pra servidores utilizam o iptables. Acabei utilizando-o também.
O iptables é um front-end para configuração do NetFilter, que é a infraestrutura de firewall que vem com o Kernel do Linux.

UFW é um firewall completo.

Assim, o iptables é como um tijolinho que constrói muros e paredes; o UFW é a casa pronta.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

rafatres

zekkerj,
Entendi. Vou experimentar o ufw em um ambiente de desenvolvimento e brincar com as configurações dele, para ver como elas são, bem como, criar as regras que tenho nesse ambiente atual (produção) para ver como é. Assim que me familiarizar, vou estudar a substituição do iptables pelo ufw. Pelo que vi num tutorial, parece mais simples mesmo.
Obrigado!

zekkerj

Então experimente o GUFW, que é a interface gráfica do UFW.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D