A abordagem que geralmente faço para uma tarefa como essa é garantir que eu tenha uma regra à prova de falhas no início da cadeia INPUT
que permite explicitamente minha conexão de gerenciamento existente. Isso garantirá que quaisquer regras subsequentes que possam impedir uma conexão não afetarão a atual. Uma vez que eu tenho todas as regras no lugar, eu então testo com uma segunda conexão que deve ser aceita, mas que não corresponde à regra de segurança contra falhas. Se isso funcionar, sei que posso desconectar com segurança a minha sessão original e remover a regra de segurança contra falhas.
Por exemplo, digamos que você queira permitir o SSH a partir de 192.168.0.0/16, exceto 192.168.2.0/24, e você está atualmente conectado ao servidor a partir de 192.168.22.22. Para proteger-se contra um possível erro de digitação, você pode definir suas regras da seguinte forma:
iptables -I INPUT -p tcp -s 192.168.22.22 --dport 22 -j ACCEPT
iptables -I INPUT -p tcp --dport 22 -j LOG
iptables -A INPUT -p tcp -s 192.168.2.0/24 --dport 22 -j DROP
iptables -A INPUT -p tcp -s 192.168.0.0/16 --dport 22 -j ACCEPT
Nesse caso, inserimos a primeira regra com -I
, de modo que ela está no início da cadeia, e adicionamos as outras com -A
para que sejam colocadas no final. Suas regras são provavelmente mais complexas do que isso, mas o objetivo é garantir que sua regra à prova de falhas venha primeiro. Dessa forma, mesmo que você digite por engano 192.168.22.0/24 na segunda linha, sua linha à prova de falhas coincidirá primeiro, garantindo que você mantenha o acesso.
Teste as regras tentando conectar-se de algum lugar em 192.168.0.0/16 que não seja 192.168.22.22 ou 192.168.2.0/24. Independentemente do resultado, ele deve ser registrado em /var/log/kern.log
. Se a conexão falhar, você saberá que tem mais trabalho a fazer; o log pode ajudá-lo a determinar por que ele falhou também.
Depois que seus testes forem bem-sucedidos, você poderá remover com segurança a regra de segurança contra falhas:
iptables -D INPUT -p tcp -s 192.168.22.22 --dport 22 -j ACCEPT