Am I doing the right thing by using the external IP of my router? or should I use the internal ip of my machine, or the range of internal ip addresses?
TL; DR: se o seu servidor estiver "na Internet" em sua própria máquina, você usa o endereço do roteador nas regras iptables
.
Resposta mais longa:
As regras de firewall funcionam na perspectiva do dispositivo que está sendo protegido por firewall. Idealmente, todos os dispositivos do mundo teriam seu próprio endereço IP. Mas eles não fazem isso, e nós temos essa hackeria feia chamada NAT. No caso simplista, trata-se de um dispositivo ou software que utiliza um intervalo de endereços IP, como 192.168.1. *, E os mapeia para um único endereço IP. Os endereços 192.168. * São garantidamente inatingíveis, portanto, nunca podem ser encontrados na Internet real. A rede de cada pessoa está oculta atrás de um dispositivo NAT, de modo que cada rede é apresentada como um único endereço IP exclusivo. Portanto, muitas pessoas podem usar o mesmo intervalo de endereços 192.168. * Em suas redes internas, pois ninguém mais consegue vê-los diretamente.
Então, voltando à pergunta.
Se o seu servidor estiver "fora" da sua rede com NAT, ele verá apenas o único endereço público. Então é isso que deve estar nas regras iptables
.
Por outro lado, se o seu servidor estiver conectado à sua própria rede sem um dispositivo NAT entre eles, os endereços internos reais devem ser usados.
Esta é uma versão altamente simplificada da feia realidade do endereçamento de Internet IPv4, mas deve começar.
Agora, para responder ao seu problema específico, é por isso que suas regras de iptables
não funcionam como esperado. Comece com a corrente INPUT
e siga-a sequencialmente. A primeira linha chama a cadeia RH-Firewall-1-INPUT
. Ao seguir isso, você verá um par de regras que ACCEPT
trafegam nas portas 80 e 443. E, em seguida, há uma regra DROP
para todo o resto. No final dessa cadeia, retornamos para INPUT
e finalmente alcançamos seu ACCEPT
para a porta 22. Mas todo o tráfego já está sendo descartado até esse ponto, portanto, a regra é irrelevante.
Uma solução aqui é mover a regra ACCEPT
para a porta 22 para a cadeia RH-Firewall-1-INPUT
, imediatamente após as regras para as portas 80 e 443, mas antes do valor de todos DROP
.
A solução apropriada, eu suspeito, é aprender a usar firewalld
, mas não sei se isso estava disponível no CentOS 6.x ou se ele chegou primeiro apenas no CentOS 7.