[1] Comentário enviado por
fabio em 19/10/2006 - 03:53h:
Cara, muito bom esse recurso. Excelente artigo, já está nos meus favoritos :)
um abraço
[2] Comentário enviado por
tatototino em 19/10/2006 - 07:26h:
Muito bom, parabéns!
Depois vou testá-lo!
Até mais!
[3] Comentário enviado por
Flare em 19/10/2006 - 09:41h:
Parabens, muito bom o artigo
:)
[4] Comentário enviado por
eudson em 19/10/2006 - 10:16h:
Kra muito interessante mesmo, ha um bom tempo eu estava atraz desse recurso!!!
Já ta na minha lista de estudos!
[5] Comentário enviado por
davidsonbhz em 19/10/2006 - 10:35h:
Gostei! Bem explicado e com exemplos práticos. Vou testar por aqui
[6] Comentário enviado por
peregrino em 19/10/2006 - 17:39h:
cara muito bom mesmo parabens so gostaria que tivesse uma continuação desse ou ter mais algumas opções boas como esta
falow
[7] Comentário enviado por
jakovski em 19/10/2006 - 21:02h:
parabems bem lega !!!
[8] Comentário enviado por
segundow em 19/10/2006 - 21:54h:
Melphos....
gostei muito do seu artigo, muito útil e rico para a comunidade. Vou testar essa funcionalidade aqui, eu particularmente não a conhecia. Já até pensei na possibilidade de fazer tratamento nas regras para os clientes que não possuem IP fixo (será um benção)!
Você conhece mais algum artigo ou poderia nos passar mais algum documento para enriquecimento sobre o recent?
Grande abraço
Segundow
[9] Comentário enviado por
melphos em 14/11/2006 - 13:25h:
Então campeão,
O módulo recent é pouco documentado mesmo, já vi muitas coisas nele na grande rede mas a maioria para bloquear ataques de brute force. No próprio site da netfilter.org tem apenas o que complementei no artigo, descrição de cada item.
O que você pode fazer é junta-lo com outros módulos, por exemplo:
Módulo time:
iptables -N HourSSH
iptables -A INPUT -p tcp -m time --timestart 09:00 --timestop 18:00 --days Mon,Tue,Wed,Thu,Fri -m state --state NEW -m recent --set --name HourSSH --dport 22 -i eth1 -j HourSSH
iptables -A HourSSH -p tcp -m state --state NEW -m recent --check --name HourSSH --seconds 60 --hitcount 3 -j DROP
Bloqueio no período das 9h as 18h que o SSH fique liberado, e se tentarem se conectar mais de 2 vezes em um período de tempo de 60 segundos, será bloqueado o seu acesso.
Da para usar a imaginação !!!
Boa sorte,
Ivan Santos
[10] Comentário enviado por
acelere em 06/12/2006 - 20:09h:
Pois é Melphos,
adicionei as regras que vc postou mas elas não conseguiram barrar ataques ao ssh2.
Acho que o problema é que o ssh2 usa outras portas além da 22. O meu log contem várias linhas com:
... failed password for invalid user ZZZ from xxx.ccc.xxx.ccc port 47653 ssh2
Claro que o numero 47653 varia bastante.
Tentei uma vasculhada para saber se as portas do ssh2 eram padrão, mas não achei um "port range".
Vc tem alguma dica de regra que barre esse tipo de ataque?
Valeu,
acelere
[11] Comentário enviado por
melphos em 07/12/2006 - 12:05h:
Olá campeão,
Este artigo se aplica a qualquer tipo de versão do SSH, principalmente a versão 2 do SSH. E o SSH versão 2, não usa outros ranges de portas igual ao ftp por exemplo. Se não está bloqueando você deve verificar suas regras anteriores, ver se tem alguma regra que está liberando o ataque.
Para deixar um pouco mais claro, essa porta 47653, não é a porta que o SSH está escutando, e sim a porta que o ataque está originando. Basicamente, é a porta de origem.
Voltando ao artigo, a um detalhe que descobri esses dias quando fui instalar alguns firewall's no cliente. Seguinte, para distribuições como Suse, Red Hat, essas regras precisam estar em uma ordem correta, ou melhor dizendo, precisa criar uma CHAIN para enviar os pacotes com destino a porta 22 para está CHAIN e tratar com o módulo recent dentro dela, e depois voltar a CHAIN de origem. Pode ser isto que está acontecendo no seu caso.
Qualquer coisa,
Não exite em comunicar,
Abraços e boa sorte,
Ivan Santos
[12] Comentário enviado por
acelere em 12/12/2006 - 08:26h:
Ok,
Vamos ver se eu consigo:
1) crio a CHAIN:
iptables -N melphos
2) mando para esta CHAIN os pacotes da porta 22:
iptables -A melphos -p TCP --dport 22 --syn -j ACCEPT
E depois?
Como eu coloco o filtro usando o recent dentro dessa CHAIN?
Como os outros pacotes passam por esta CHAIN?
Como eu faço para voltar à CHAIN de origem?
Sei que isso não é um tutorial de iptables, mas acho que completa o seu artigo!
Grato,
acelere
[13] Comentário enviado por
elgio em 29/08/2007 - 10:48h:
Meu amigo!
Muito bom este teu artigo.
Eu tinha, amadoramente, tentado bloquear este force brute SSH com limit, limitando a 10/m. Problema: meus usuários legítimos acabavam não conseguindo logar-se por que o limite já tinha estourado. Ai eu abri uma porta alternativa para eles e divulguei...
Mas agora, com o modulo recent, lendo teu artigo eu fiz:
# Aceita de um mesmo IP somente 3 por minuto
iptables -A INPUT -i eth0 -p tcp --dport 22 --tcp-flags SYN,RST,ACK SYN -m recent --set --name SSH
iptables -A INPUT -i eth0 -p tcp --dport 22 --tcp-flags SYN,RST,ACK SYN -m recent --update --seconds 60 --hitcount 3 --name SSH -j REJECT
# mesmo tendo passado pela regra acima (3 por minuto), aceita somente 30 por dia
iptables -A INPUT -i eth0 -p tcp --dport 22 --tcp-flags SYN,RST,ACK SYN -m recent --set --name SSH2
iptables -A INPUT -i eth0 -p tcp --dport 22 --tcp-flags SYN,RST,ACK SYN -m recent --update --seconds 86400 --hitcount 30 --name SSH2 -j REJECT
A ideia é limitar 3 por minuto, mas se o cara vai no ritmo, tentando até 30 por dia (outra lista) ai ele fica na geladeira por 24 horas! Se o robozinho do cara respeitar o 3/min, em 10 min ele estoura o segundo limite e dançou! Só amanhã!
Pus no ar agora.
[14] Comentário enviado por
melphos em 29/08/2007 - 11:00h:
Olá Elgio,
Muito bom as regras, você usou as várias possibilidades do módulo recent. Parabéns !!!
abraços,
melphos
[15] Comentário enviado por
leliocampos em 19/09/2007 - 14:25h:
Boa tarde
Você testou o ultimo exemplo, o de ping. Eu tentei de tudo, até gerar log, ele gera, mas não libera o acesso na porta 22.
No aguardo,
Lélio
[16] Comentário enviado por
k4mus em 26/11/2007 - 12:58h:
Parabens amigo ..otimo artigo..
>>Ctrl+d<<
[17] Comentário enviado por
k4mus em 26/11/2007 - 13:17h:
..Na regra dois do brute force: ah um errinho na escrita: :)
iptables -A INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --name sshlimita --rchek --seconds 120 --hitcount 3 -j LOG --log-prefix "SSHLimitaConn: "
(--rchek - correçao --rcheck)
..nas explicaçao abaixo esta falanco ..mas, so pra constar mesmo :)
abraço galera
..abraços!!!
[18] Comentário enviado por
melphos em 26/11/2007 - 15:01h:
leliocampos,
Como nestes exemplos não usei CHAINs, fica ai a dica para que em sistemas, por exemplo, derivados do Red Hat, as regras dêem certo. Se for derivados do Debian, tente criar CHAINs para essas regras mesmo.
Abraços,
Melphos
[19] Comentário enviado por
melphos em 26/11/2007 - 15:03h:
Olá k4mus,
Obrigado pelo elogio e muito obrigado pela correção, as vezes na correria, ou na madrugada, que é quando sobra o tempinho, o sono fala mais alto.
VALEU MESMO PELA CORREÇÃO !!
Abração,
Melphos
[20] Comentário enviado por
balani em 30/01/2008 - 00:04h:
Excelente artigo, estou me aprofundando em firewall, e a cada dia venho me surpreendo com o nivel dos artigos postados aki no VOL.
Seu artigo vai dar problema com o Greenpeace, pq ele não quebra apenas um galho mais uma floresta inteira...rsrsrs
Parabens!!!
E VIVA A LIBERDADE, VIVA O LINUX
[21] Comentário enviado por
demattos em 01/02/2008 - 18:24h:
Boa Noite, muito bom o artigo, mas gostaria de saber o seguinte, tenho aqui uma rede de computadores wireless usando minha internet ou seja compartilho com 20 (casas)computadores, eu queria era limitar somente 2 conexcoes dor ip a internet, vc saberia se com estes recurso do iptables e possivel fazer isto
Obrigado
[22] Comentário enviado por
melphos em 01/02/2008 - 20:47h:
balani,
He he he ... obrigado. Estou fazendo um outro artigo sobre performance no iptables, onde irei falar um pouco sobre "Connection tracking", memória., /pro/sys/net/ipv4/*, sobre passos ideais e customizações em uma instalação de um firewall, como por exemplo, permissões, particionamento, sistema de arquivos, etc. E irei dar uma "chamiscada" nas integrações dos módulos.
Faça muitos testes, entenda como funciona o módulo recent, mas vá a fundo mesmo, tente entender o que é feito por trás de uma regra.
qualquer problema, pode entrar em contato: melphos@gmail.com
Abraços e muito sucesso,
Melphos
[23] Comentário enviado por
anonymous em 22/12/2009 - 08:09h:
Mt show! Já adicionei em favoritos
[24] Comentário enviado por
brizao em 28/07/2010 - 00:01h:
um negócio interessante também seria utilizar o programa fail2ban que faz a mesma coisa e no diretório /etc/fail2ban/jail.conf que é onde se configura o tempo de banimento, os protocolos e serviços que serão enjaulados em caso de tentativa de força bruta..