iptables recent

1. iptables recent

Ivan de oliveira Santos
melphos

(usa Debian)

Enviado em 05/10/2005 - 20:50h

Então, deixa eu falar. Tenho um regra que quando o usuário da um telnet em uma determinada porta, ela abre uma outra porta que estava fechada, e quando dou um telnet em outra porta, ele fecha a porta que estava aberta.
O que eu gostaria de fazer, uma sequencia de portas, estilo, um telnet na 1791, 6617 e na 1233 ele abre a porta 22 por exemplo. E quando dou um telnet na porta 3324, 5435, 7116 ele fecha a 22.
segue como está hoje.
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -m recent --rcheck --name SSH -j ACCEPT
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 6546 -m recent --name SSH --set -j DROP
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 6675 -m recent --name SSH --remove -j DROP


  


2. iptables recent + 1

Ivan de oliveira Santos
melphos

(usa Debian)

Enviado em 05/10/2005 - 23:36h

Consegui fazer com que ele abra a porta com 3 ou mais tentaticas de telnet, ou syn. Só que se dou um telnet na mesma porta 3 vezes, ele abre do mesmo jeito.
Modifiquei primeira liha para:
iptables -A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --rcheck --name SSH --rsource --seconds 60 --hitcount 3 -j ACCEPT
acrescentei mais estas duas:
iptables -A INPUT -p tcp -m tcp --dport 9837 -m state --state NEW -m recent --set --name SSH --rsource -j DROP
iptables -A INPUT -p tcp -m tcp --dport 22323 -m state --state NEW -m recent --set --name SSH --rsource -j DROP

...


3. interessate....

Sidney Alexandre Pagel
gnu

(usa Slackware)

Enviado em 12/10/2005 - 08:07h


Cara, não é exatamente uma resposta, e sim uma pergunta. Como faço para deixar o ssh fechado, por exemplo, e fazer com que ele abra depois de tres tentativas apenas? Ou então o contrário: deixo o ssh aberto, mas faço com que ele feche depois de tres tentativas frustradas (com erro de login ou senha)?


4. Interessante + 1

Ivan de oliveira Santos
melphos

(usa Debian)

Enviado em 12/10/2005 - 15:03h

Olá GNU !
Bom, o exemplo acima já faz isso, depois de 3 tentativas de conexão nas portas denominadas, o iptables abre a conexão apenas para aquele ip. Há um pequeno erro no exemplo acima, mas estou cosertndo ele agora no de baixo !!!

Veja:

1)iptables -A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --rcheck --name SSH --rsource --seconds 60 --hitcount 3 -j ACCEPT
1.1) Libere para a lista ( --name SSH ) as tentativas de conexão que tentam acessar ( destino ) a porta 22 do protocolo tcp verificando no módulo recent ( --rcheck ) que tenham 3 ou mais entradas ( --hitcount 3 ) na lista ( --name SSH ).

2)iptables -A INPUT -p tcp -m tcp --dport 22323 -m state --state NEW -m recent --name SSH --remove -j DROP
2.1) Negue as tentativas de novas conexões ( -m state --state NEW ) a porta ( destino ) 22323 e remova ( --remove ) da lista ( --name SSH ) o ip da tentativa de conexão.

3)iptables -A INPUT -p tcp -m tcp --dport 22324 -m state --state NEW -m recent --set --name SSH --rsource -j DROP
3.1) Negue a tentativa de novas conexões ( -m state --state NEW ) de acesso ( destino ) à porta 9837 e adicione ( --set ) o ip da tentativa ( --rsource ) a lista ( --name SSH ).

4)iptables -A INPUT -p tcp -m tcp --dport 22325 -m state --state NEW -m recent --name SSH --remove -j DROP
4.1) Negue as tentativas de novas conexões ( -m state --state NEW ) a porta ( destino ) 22323 e remova ( --remove ) da lista ( --name SSH ) o ip da tentativa de conexão.

Então, quando alguém tentar se conectar no ssh, porta 22, o firewall irá negar a tentativa de conexão, agora se você der um telnet, ou melhor, enviar um pacote tcp com a flag syn setada (Sinônimo de nova conexão) a porta 22324, o iptables irá colocar o seu ip em um arquivo, denominado SSH em /proc/net/ipt_recent, se neste arquivo o ip das tentativas estiver se repetindo 3 vezes em um periodo de tempo de 60 segundos, o iptables abrirá a porta 22 ( SSH ) para o ip. E quando o ip enviar um pacote com a flag syn setada ( telnet por exemplo ) para a porta 22323 ou 22325 o iptables retirará a regra que abre a porta e retirará o ip da lista ( /proc/net/ipt_recent/SSH ). Outra coisa interessante de se citar, é o fato de ter duas portas fechando e estarem antes e depois da porta que abre. Com esse esquema, se alguém der um namp em seu firewall, ele passará pela porta 22323, como o ip não está na lista o firewall não faz nada, depois passa na porta 22324, ai sim o firewall adiciona o ip do cara na lista, mas logo em seguida o cara passa pela porta 22325 e o firewall o retira da lista, ficando assim muito dificil de alguém coseguir abrir a porta ssh do seu firewall, e ainda mais, ele tem que tentar 3 conexões na porta 22324 para o firewall poder abrir a 22. Eu particularmente acho "QUASE IMPOSSÍVEL" de alguém conseguir abrir a porta. Ma svc sabe né, segurança é cruel, quanto mais vc tenta deixar seguro, sempre descobre algo novo !!!

Um abraço,
Ivan Santos


5. cara.. que doidera...

Sidney Alexandre Pagel
gnu

(usa Slackware)

Enviado em 12/10/2005 - 17:25h

Meu Deus do céu..adaptei teu esquema de portas aqui.. e funciona que é uma beleza.. Agora para e pensa: você implementa esse esquema de portas ae.. e dae coloca um usuário apenas pra poder logar SSH, e faz com que esse usuário NÃO possa se tornar root, o brigando-o a tornar-se outro usuário pra isso.. e você terá um SSH muito difícil de ser quebrado. O cara vai ter que sacar um esquema de portas inimaginável (coisa que ele terá que fazer por meio de adivinhações, sonhos ou sei lá o que, já que scanners não funcionam nesse caso ). Supondo que ele consiga, terá que quebrar uma senha para o acesso, terá que quebrar outra senha de usuario baixo, para então quebrar a senha do root.. não é um serviço para dummies.... hehehehehe


6. Re: iptables recent

Ivan de oliveira Santos
melphos

(usa Debian)

Enviado em 12/10/2005 - 19:29h

hehehe .. esse esquema eu tenho aqui, só acrescentando mais uma coisinha. Quando o usuário loga no sistema, ele pede outra senha !!! E se tentar dar ctrl+c o programinha desloga ele. Essa dica peguei no http://listas.cipsga.org.br/pipermail/linux-sbo/2005-January/000459.html
Mas fiz umas implementações, para que o usuário possa troca-la, também coloquei um esquema de troca de senha em um determinado período, não deixando o usuário acessar o sistema, o caso o PATH, se ele não mudar a senha.


7. fontes

Sidney Alexandre Pagel
gnu

(usa Slackware)

Enviado em 12/10/2005 - 19:35h

Cara... se um dia precisar implementar um firewall "impenetrável" já sei com quem falar... Me diz uma coisa aqui.. de onde vc conseguiu informações sobre estes modulos (hitcount, rcheck) que não aparecem no man do iptables, nem no guia foca, nem em lugar nenhum que eu ja tenha visto? Valew.


8. Re: iptables recent

Ivan de oliveira Santos
melphos

(usa Debian)

Enviado em 12/10/2005 - 23:42h

Heheheh .. obrigado grande mestre. Então na realidade tirei isso do proprio site da netfilter.org (http://www.netfilter.org/documentation/HOWTO//netfilter-extensions-HOWTO-3.html#ss3.16)
Mas se você quer realmente segurança, implemente o LIDS em seu server. Estou fazendo um artigo sobre a implementação do LIDS, mas não instalação, e sim a implementação propriamente dita. Porque as capabilities, o que são, como saber se tal arquivo, ex.: /bin/login precisa de permissão ou não, como saber o que este arquivo acessa no sistema para poder liberar o acesso, essas coisas. Mas vai demorar um pocadinho, porque estou meio que sem tempo fazer. Mas acho que na próxima quinta ou sexta fica ok.

Um abraço,
Ivan Santos



9. artigo

Sidney Alexandre Pagel
gnu

(usa Slackware)

Enviado em 13/10/2005 - 12:53h

Cara.. escreve um artigo sobre essas suas regras ae.. E to com um artigo na fila sobre contas de usuários e restrições ssh, se vc me permite, irei adicionar suas regras.. mantendo os devidos créditos.. pode ser?



10. Re: iptables recent

Ivan de oliveira Santos
melphos

(usa Debian)

Enviado em 13/10/2005 - 12:58h

Claro campeão pode sim na boa .. manda a ver ...
Então vou escrever sim, já está meio que encaminhado. Só preciso dar uma refinada e apurar mais sobre onde encontrar o conteudo do mesmo, man, sites, livros ...


11. Re: iptables recent

Gustavo Pardellas Feijó
chmod000

(usa Debian)

Enviado em 09/04/2008 - 15:21h

Melphos,

gostei bastante da sua dica também, já até estou usando.

Mas estou batendo a cabeça com uma parada... como faço para manter a lista SSH atualizada. Por exemplo, depois que um ip entra na lista, sai automaticamente após um determinado período de tempo.

Valeu!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts