Quais são as configurações essenciais de firewall para um servidor web CentOS recentemente instalado?

1

Eu recentemente tenho um servidor CentOS da Linode.com que estou usando como um servidor web Apache com a pilha LAMP.

Noto que o firewall está ativado por padrão, mas não parece ter regras ativas.

O que devo fazer neste caso?

Devo bloquear todo o tráfego, em seguida, permitir seletivamente apenas as portas 80 e 443 do meu servidor web?

Existem alguns "modelos de firewall" ou guias essenciais de regras de firewall?

    
por WackGet 02.05.2013 / 05:33

2 respostas

2

Você deve bloquear todos os & Permitir seletivamente quais portas você precisa. Felizmente, se você se bloquear acidentalmente, poderá acessar seu Linode através do console Lish para liberar quaisquer regras de firewall erradas.

Aqui estão algumas das configurações de firewall que uso regularmente:

Permitindo SSH, HTTP, HTTPS

iptables -A INPUT -p tcp -m multiport --destination-ports 22,80,443 -j ACCEPT
iptables -A INPUT -s 127.0.0.1/24 -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -P INPUT DROP
iptables -P FORWARD DROP

Se você precisar permitir FTP, inclua a porta 21 (para conexões passivas, você pode precisar definir um intervalo de portas adicional que eu uso 21000-21100:

iptables -A INPUT -p tcp -m multiport --destination-ports 21,22,80,443,21000:21100 -j ACCEPT
iptables -A INPUT -s 127.0.0.1/24 -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -P INPUT DROP
iptables -P FORWARD DROP

Por algum motivo, também descobri que não consigo enviar e-mails usando sendmail, exim etc., a menos que eu abra a porta 25 (sua configuração de correio normalmente seria configurada para aceitar apenas o e-mail enviado do servidor local):

iptables -A INPUT -p tcp -m multiport --destination-ports 21,22,25,80,443,21000:21100 -j ACCEPT
iptables -A INPUT -s 127.0.0.1/24 -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -P INPUT DROP
iptables -P FORWARD DROP

Para liberar suas regras para começar de novo sem bloquear você mesmo, use o seguinte conjunto de comandos:

iptables -P FORWARD ACCEPT
iptables -P INPUT ACCEPT
iptables -F

Para ver as regras e & estatísticas, você pode usar o seguinte comando:

iptables -L -nv

Também não se esqueça de salvar suas regras e amp; verifique se o IPTables inicia na reinicialização.

    
por 02.05.2013 / 05:46
1

Se você bloquear todo o tráfego, a caixa ficará inativa (pelo menos para você).

Pesquise quais portas você precisa para os serviços que você está usando (assim como os serviços que você não é, mas que ainda são essenciais, como o BIND)

As portas essenciais comuns para um servidor são:

22 TCP (SSH, but you should change this)
21 TCP (FTP, but this is insecure. Use SFTP on the SSH port.)
80, 443 TCP (HTTP/S)
53 UDP (DNS)
# use iptables -A INPUT -p (udp|tcp) --dport=$PORT -j ACCEPT

Você também deve bloquear vetores comuns de ataque com seu firewall, como o SYN flooding (o handshake do TCP é SYN-SYN-ACK , com o último SYN sendo uma combinação) Bloqueie conexões não estabelecidas que tentam SYN-ACK , mas aceite as estabelecidas. / p>

/sbin/iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -A INPUT -m conntrack --ctstate INVALID -j DROP

Além disso, não bloqueie o ping (ICMP). Você não pode ser pingado para a morte através do ICMP; seria muito mais eficiente usar o TCP, e você tem as portas 80 e 443 abertas.

# Allow ICMP
/sbin/iptables -A INPUT -i eth0 -p icmp -j ACCEPT

Depois de ter todos os serviços de que precisa, bloqueie todo o tráfego restante. Você também deve considerar ter acesso completo ao localhost se tiver acesso total à sua caixa e souber o que está sendo executado.

/sbin/iptables -A INPUT -i lo -j ACCEPT

E se você tiver o IPv6, não esqueça de fazer o mesmo que o acima com ip6tables . Quase todo mundo esquece isso por algum motivo.

    
por 02.05.2013 / 05:52