É uma boa prática permitir todas as portas do resultado netstat, colocando-as em iptables

1

Estou configurando o firewall e várias vezes descobri que ele está bloqueando um serviço ou porta que é necessário, como dns ou https..etc, é seguro fazer netstat -nat | grep LISTEN então qualquer que seja a porta lá, coloque-os no iptables neste formato:

   -A INPUT -p 67 -j ACCEPT

Editar: Aqui está o meu resultado netstat com a opção p:

tcp        0      0 127.0.0.1:10001             0.0.0.0:*                   LISTEN      9521/sw-cp-                         serverd
tcp        0      0 0.0.0.0:21                  0.0.0.0:*                   LISTEN      2729/vsftpd                         
tcp        0      0 SERVERIP:53                 0.0.0.0:*                   LISTEN      1399/named                          
tcp        0      0 SERVERIP2:53                0.0.0.0:*                   LISTEN      1399/named                          
tcp        0      0 127.0.0.1:53                0.0.0.0:*                   LISTEN      1399/named                          
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1527/sshd                           
tcp        0      0 127.0.0.1:953               0.0.0.0:*                   LISTEN      1399/named                          
tcp        0      0 0.0.0.0:12443               0.0.0.0:*                   LISTEN      9521/sw-cp-                         serverd
tcp        0      0 127.0.0.1:3306              0.0.0.0:*                   LISTEN      1802/mysqld                         
tcp        0      0 :::110                      :::*                        LISTEN      1570/courie                         rtcpd
tcp        0      0 :::143                      :::*                        LISTEN      1552/courie                         rtcpd
tcp        0      0 :::80                       :::*                        LISTEN      4865/httpd                          
tcp        0      0 :::8880                     :::*                        LISTEN      9521/sw-cp-                         serverd
tcp        0      0 :::465                      :::*                        LISTEN      30122/xinet                         d
tcp        0      0 :::53                       :::*                        LISTEN      1399/named                          
tcp        0      0 :::22                       :::*                        LISTEN      1527/sshd                           
tcp        0      0 :::25                       :::*                        LISTEN      30122/xinet                         d
tcp        0      0 :::443                      :::*                        LISTEN      4865/httpd                          
tcp        0      0 :::8443                     :::*                        LISTEN      9521/sw-cp-                         serverd
tcp        0      0 :::993                      :::*                        LISTEN      1562/courie                         rtcpd
tcp        0      0 :::995                      :::*                        LISTEN      1579/courie                         rtcpd
tcp        0      0 :::106                      :::*                        LISTEN      30122/xinet   

e aqui está minha configuração do iptables:

# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A INPUT -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -o eth0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
-A INPUT -i eth0 -p tcp --dport 8080 -j ACCEPT
-A INPUT -i eth0 -p tcp --dport 8443 -j ACCEPT
-A INPUT -p tcp --dport 53 -j ACCEPT
-A INPUT -p udp --dport 53 -j ACCEPT
-A INPUT -p 50 -j ACCEPT
-A INPUT -p 51 -j ACCEPT
-A INPUT -p tcp -m state -m tcp --dport 10000 --state NEW -j ACCEPT
-A INPUT -p udp -m udp --dport 631 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A INPUT -i eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -o eth0 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT
-A OUTPUT -o eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -i eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
-A OUTPUT -o eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -i eth0 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT
-A INPUT -p tcp --sport 20 -m state --state ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT -p tcp --dport 20 -m state --state ESTABLISHED -j ACCEPT
-A INPUT -p tcp --sport 1024: --dport 1024: -m state --state ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp --sport 1024: --dport 1024: -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp -j LOG --log-prefix "Reject Traffic " --log-level 6
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited


COMMIT

parece que o firewall estava bloqueando as atualizações do drweb. mas também estava bloqueando o dns, por isso eu adicionei 53 portas, também 8080 e 8443

    
por Dreaded semicolon 04.05.2012 / 06:39

3 respostas

2

Se você insistir em ter um firewall com uma regra de negação padrão, será necessário fazer uma lista de todos os serviços de escuta que você está executando e as portas que eles usam e permitir explicitamente a cada um deles. Uma maneira de fazer isso seria netstat. talvez você queira tentar adicionar a opção -p, para poder ver quais processos estão associados.

É claro que portas abertas em um computador que não é um roteador quase não implicam em segurança, a menos que você queira filtrar um determinado serviço de uma interface específica (por exemplo, nenhum FTP de redes não confiáveis) ou o computador esteja executando malware ( caso em que você tem outros problemas), como o tráfego para as portas que você não está ouvindo é sempre rejeitado de qualquer maneira. Portanto, se você abrir todas as portas que seu servidor está escutando, você pode muito bem não ter o firewall.

    
por 04.05.2012 / 06:44
3

Isso definitivamente não é uma boa prática. Para cada regra adicionada, você precisa saber para que serve e por que precisa dela.

    
por 04.05.2012 / 08:00
2

Use o netstat ou qualquer outra ferramenta de varredura / monitoramento de rede que você possa ter para gerar uma lista de portas para cada aplicativo, então percorra-o manualmente e verifique se tudo nesta lista está OK .

Se for um servidor recém-configurado e ainda não estiver em direto na Web, será o mais limpo possível. Tudo deve ser legítimo, mas é sempre uma boa ideia verificar os resultados para: a) saber o que está no seu servidor e como isso funciona; b) certificar-se de que algo não chegou lá e que não deveria ser .

Observe que realmente não há muita proteção oferecida por um firewall - ela nunca deve ser sua principal defesa. Seu servidor não vai abrir aleatoriamente uma porta e começar a enviar / receber nela - por padrão, todas as portas estão fechadas. É somente se você for enganado a instalar algo no servidor ou se houver uma vulnerabilidade em algo que você já esteja usando e que não tenha sido corrigida (talvez seja uma exploração de dia zero ou você não atualizou rápido o suficiente) que o problema começa - nesse caso, seu firewall não será de muita ajuda.

Por exemplo, se houver uma vulnerabilidade encontrada em seu software de servidor FTP, uma porta anteriormente desbloqueada manualmente (por exemplo, 21) será agora um vetor de ataque. O invasor agora tem os mesmos privilégios em sua máquina do que qualquer usuário em que o servidor FTP estava executando - e seu firewall não pode fazer nada a respeito.

Se você deseja um servidor da Web realmente seguro, chroot (ou melhor ainda, BSD jail) os aplicativos e verifique se eles estão sendo executados como um usuário diferente ( nunca raiz! ) com o mínimo de permissões você pode se safar. Se você tem algo como o SELinux (baseado no RedHat) ou o AppArmor (baseado no Debian) em sua distro, use-o. É uma proteção no nível do kernel que coloca na lista de permissões as ações que um programa pode executar (por exemplo, quais diretórios podem ler / gravar de / para, quais interrupções podem desencadear, quais portas podem ser abertas etc.) e pode ser um grande benefício quando se trata de proteger seu servidor corretamente.

tl; o firewall não é tão bom quanto você pensa. Use esse tempo na configuração baseada em ACL e na prisão de todos os seus serviços.

    
por 04.05.2012 / 07:55