Com o iptables do kernel completamente vazio ( iptables -F
), isso fará o que você pede:
# iptables -A INPUT -p tcp --dport 22 -s 192.168.0.0/24 -j ACCEPT
# iptables -A INPUT -p tcp --dport 22 -s 127.0.0.0/8 -j ACCEPT
# iptables -A INPUT -p tcp --dport 22 -j DROP
Isso indica que todos os endereços da LAN podem conversar com a porta TCP 22, que o host local recebe a mesma consideração (sim, 127. * não apenas 127.0.0.1), e os pacotes de todos os outros endereços que não correspondam às duas primeiras regras ficam sem cerimônia o balde de bits . Você pode usar em REJECT
vez de DROP
se desejar uma rejeição ativa (TCP RST) em vez de tornar a porta TCP 22 um buraco negro para pacotes.
Se a sua LAN não usar o bloco 192.168.0. *, Naturalmente você precisará alterar o IP e a máscara na primeira linha para corresponder ao esquema de IP da LAN.
Esses comandos podem não fazer o que você deseja se o seu firewall já tiver algumas regras configuradas. (Diga iptables -L
como root para descobrir.) O que acontece com frequência é que uma das regras existentes captura os pacotes que você está tentando filtrar, para que o acréscimo de novas regras não tenha efeito. Embora você possa usar, em -I
vez de -A
com o iptables
comando, emendar novas regras no meio de uma cadeia, em vez de anexá-las, geralmente é melhor descobrir como as cadeias são preenchidas na inicialização do sistema e modificar esse processo para que suas novas regras sempre sejam instaladas. a ordem correta.
RHEL 7+
Em sistemas recentes do tipo RHEL, a melhor maneira de fazer isso é usar firewall-cmd
ou sua GUI equivalente. Isso informa ao firewalld
daemon do sistema operacional o que você deseja, que é o que realmente preenche e manipula o que você vê via iptables -L
.
RHEL 6 e anteriores
Em sistemas mais antigos do tipo RHEL, a maneira mais fácil de modificar cadeias de firewall ao fazer pedidos é editar /etc/sysconfig/iptables
. As ferramentas de firewall da GUI e da TUI do sistema operacional são bastante simplistas; portanto, quando você começar a adicionar regras mais complexas como essa, é melhor voltar aos bons e antigos arquivos de configuração. Cuidado, uma vez que você começa a fazer isso, corre o risco de perder as alterações se usar as ferramentas de firewall do sistema operacional para modificar a configuração, pois ele pode não saber como lidar com regras artesanais como essas.
Adicione algo parecido com esse arquivo:
-A RH-Firewall-1-INPUT -p tcp --dport 22 -s 192.168.0.0/24 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp --dport 22 -s 127.0.0.0/8 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp --dport 22 -j DROP
Onde você adiciona é a parte complicada. Se você encontrar uma linha nesse arquivo --dport 22
, substitua-a pelas três linhas acima. Caso contrário, provavelmente deve ocorrer antes da primeira linha existente terminar em -j ACCEPT
. Geralmente, você precisará adquirir alguma familiaridade com o modo como o iptables funciona; nesse ponto, o ponto de inserção correto será óbvio.
Salve esse arquivo e diga service iptables restart
para recarregar as regras do firewall. Certifique-se de fazer isso enquanto estiver conectado ao console, caso você gole as edições! Você não deseja sair da máquina enquanto estiver conectado por SSH.
A semelhança com os comandos acima não é coincidência. A maior parte desse arquivo consiste em argumentos para o iptables
comando. As diferenças em relação ao acima são que o iptables
comando é descartado e o INPUT
nome da cadeia se torna a RH-Firewall-1-INPUT
cadeia específica específica do RHEL . (Se você quiser examinar o arquivo com mais detalhes, verá anteriormente no arquivo onde eles renomearam a INPUT
cadeia. Por quê? Não sei dizer.)