iptables ou firewalld para fechar todas as portas, exceto ssh?

0

Tenho a seguinte pergunta: Como posso fechar todas as portas, exceto a porta 22. O nmap mostra todas as portas usadas:

nmap localhost

Starting Nmap 7.01 ( https://nmap.org ) at 2017-02-20 20:06 CET
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000050s latency).
Other addresses for localhost (not scanned): ::1
Not shown: 999 closed ports
PORT   STATE SERVICE
22/tcp open  ssh

Nmap done: 1 IP address (1 host up) scanned in 0.08 seconds

também netstate exibe conexões abertas:

sudo netstat -tulpen | grep -v '127.0.0.1'  | grep -v '::1:'
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       User       Inode       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      0          160309215   286/sshd        
tcp6       0      0 :::22                   :::*                    LISTEN      0          160309218   286/sshd  

mas estes 999 não estão realmente fechados eles não estão em uso.

iptables -L dá:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination 

para que todas as portas estejam abertas agora.

Como este é um servidor externo, eu tenho que manter a porta 22 aberta, já que eu uso a conexão ssh através da porta 22 durante a alteração das configurações.

Qual pode ser a melhor maneira de configurar isso?

Eu posso parar o iptables e melhor iniciar o firewalld e fazer configurações lá? Ou eu posso parar temporariamente o iptables, fazer mudanças e então reiniciar o iptables?

Ou existem alguns arquivos de configuração que eu posso editar?

Eu não estou familiarizado com essas configurações, mas tenho que fazer isso com cuidado e corretamente.

Agradecemos antecipadamente por sua ajuda!

    
por blacky 20.02.2017 / 21:53

1 resposta

1

Para algo simples como esse eu usaria o ufw. Ele é instalado por padrão, mas vamos garantir:

~$ which ufw deve retornar \usr\bin\ufw se o ufw estiver instalado. Se o ufw não estiver instalado: ~$ sudo apt-get install ufw .

As etapas a seguir não terão efeito até que você ative ou recarregue o firewall, para que você não seja expulso.

~$ sudo ufw default deny incoming
~$ sudo ufw default allow outgoing
~$ sudo ufw allow in 22/tcp

Você acabou de dizer ao firewall para (a) não deixar nada entrar, (b) deixar tudo sair, e (c) deixar o tcp entrar na porta 22. Para tornar essas regras eficazes:

~ $ sudo ufw disable
~ $ sudo ufw enable

Agora você será avisado:

Command may disrupt existing ssh connections. Proceed with operation (y|n)? 

Se tiver certeza de que seguiu estas instruções cuidadosamente, responda sim. Finalmente, vamos exibir o status do firewall com sudo ufw status verbose :

Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW IN    Anywhere                  
22/tcp (v6)                ALLOW IN    Anywhere (v6) 

Por favor, leia a man page do ufw para informações adicionais.

    
por TooManyPets 26.02.2017 / 03:41