Port knocking utilizando iptables
Port Knocking é uma técnica que consiste em enviar uma sequência pré-determinada de pacotes em portas específicas para abrir conexão com algum host.
Não vou me aprofundar sobre o assunto, caso queira fazer isto, o google é seu amigo =). O que irei fazer é demonstrar como utilizar o iptables para realizar esta tarefa.
Supondo que a sua política padrão é DROP e que a porta do ssh é 22 (porta padrão), vamos criar uma regra para liberar o ssh por 20 segundos quando chegar uma conexão tcp na porta 65535:
iptables -A INPUT -i eth0 -p tcp -m state --state NEW --dport 22 -m recent --rcheck --seconds 20 --name SSH --rsource -j ACCEPT iptables -A INPUT -i eth0 -p tcp -m state --state NEW --dport 65535 -m recent --set --name SSH --rsource -j DROP
Supondo que o ip do servidor onde você acabou de implementar as regras acima seja 187.10.223.67, digite:
telnet 187.10.223.67 65535
Logo em seguida, pressione CTRL + C e tente conectar no ssh, você terá somente 20 segundos após ter utilizado o telnet.
Simples né? com estas duas regras acima, você criou um port knocking em iptables :).
Palestra Latinoware 2009
Participei do latinoware 2009, este ano estava muito legal, com maior espaço para os standes e muita gente legal palestrando (incluindo eu).
Minha palestra tinha horário confirmado para as 12:00, como estava chovendo muito, levei uns 10 minutos para chegar no bloco onde iria palestrar. Chegando lá, levei uns 5 minutos para iniciar, isto inclui tirar a água da chuva que estava ensopando meu cabelo, ligar notebook e etc. Com isto, perdi minutos importantes e tive que acelerar em alguns tópicos e em outros resumir mais ainda. No geral minha palestra foi legal, o pessoal estava com muitas dúvidas tanto na parte de programação quanto na parte de sysadmin.
Para aqueles que quizerem baixar o conteúdo que foi apresentado, clique aqui.
Transferindo arquivos com o nc
O nc (netcat) é o canivete suiço do tcp/ip, com ele é possível fazer N coisas (o ncode vai gostar de ouvir isso =P). Uma delas é fazer transferência de arquivos, ou seja, você não necessita de ssh ou scp nem tão pouco ftp, basta apenas utilizar alguma porta que esteja liberada em seu fw (caso for fazer transferências via internet).
O processo é simples, vamos supor que quero fazer o backup do /etc e automaticamente transferir para outra maquina, para isto, utilizo o nc como server:
tar -cvzpf - /etc | nc -vvv -l -p 1234
Do lado do cliente, utilizo:
nc -vvv ip_do_servidor 1234 > etc.tar.gz
As opções utilizadas foram:
-v = verbose -l = listen -p = port
Simples assim.