+ Responder ao Tópico



  1. #1

    Padrão SSH Prevenir ataque de fuerza bruta

    Hola a todos,

    Este es mi primer post en este foro despues de llevar meses leyendo. Os comento mi problema, necesito eliminar los ataques por fuerza bruta a mi equipo MK al servicio SSH. Con iptables lo soluciono con estas reglas:

    iptables -A INPUT -p tcp –dport ssh -m state –state NEW -m recent –set –name SSH -j ACCEPT
    iptables -A INPUT -p tcp –dport ssh -m recent –update –seconds 60 –hitcount 4 –rttl –name SSH -j DROP

    Estas reglas me permiten añadir a una lista negra las IP que intentan acceder por SSH a mi equipo en un minuto,. El problema es que en MK no encuentro la opción para ir actualizando el contador de los accesos de una misma IP, no se si hay alguna opción similar o no existe.

    He probado utilizar la opción de connection-limit pero esta opción solo bloquea el acceso cuando existen más de 3 conexiones simultaneas.

    / ip firewall filter
    add chain=input protocol=tcp dst-port=22 connection-limit=3,32 \
    connection-state=established action=add-src-to-address-list \
    address-list="Bloqueo SSH" address-list-timeout=1m comment="" \ disabled=no

    add chain=input src-address-list="Bloqueo SSH" action=drop comment="" \
    disabled=no


    Una cosa que no me sirve es la de bloquear el servicio para ciertas IP validas.

    Estaria muy agradecidos si alguien me puede ayudar.

    Un saludo

    Kiket
    Última edição por kiket; 19-05-2007 às 06:29. Razão: Actualización

  2. #2

    Padrão

    Me respondo en este post nuevo por si a alguien le interesa. Como no he encontrado ningna solución elegante os dejo la forma como me funciona:

    ;;; DROP trafico SSH + 3 conexiones/min.
    chain=input protocol=tcp dst-port=22 connection-state=new
    src-address-list=3 conexion action=drop

    chain=input protocol=tcp dst-port=22 connection-state=new
    src-address-list=2 conexion action=add-src-to-address-list
    address-list=3 conexion address-list-timeout=1m

    chain=input protocol=tcp dst-port=22 connection-state=new
    src-address-list=1 conexion action=add-src-to-address-list
    address-list=2 conexion address-list-timeout=1m

    chain=input protocol=tcp dst-port=22 connection-state=new
    action=add-src-to-address-list address-list=1 conexion
    address-list-timeout=1m

    Es una forma poco rudimentaria pero funciona. Si alguien sabe una solución más elegante se lo agradeceria que lo posteara.

    Un saludo.

    Kiket

  3. #3
    xargs -n 1 kill -9 Avatar de sergio
    Ingresso
    Jan 2004
    Localização
    Capital do Triângulo
    Posts
    5.201
    Posts de Blog
    9

    Padrão

    Veja o Welcome to DenyHosts

    O daemon checa os logs e adiciona os IPs no hosts.deny e dropa com iptables durante um período (1 dia, 1 semana, 1 mês ou mais...) que você mesmo estabelece nas configurações.

  4. #4

    Padrão

    Hola Sergio,

    Gracias por tu respuesta, pero mi problema no es con iptables. Las reglas que he puesto arriba de iptables funcionan a la perfección( cuando una IP intenta acceder por cuarta vez se le edniega el acceso durante 1 minuto desde el último acceso ).

    Mi problema era en Mikrotik, de momento lo he solucionado con las 3 últimas reglas, creando 3 listas y comprobando si la ip se encuentra en las listas de accesos anteriores 1 conexion, 2conexion y 3conexion.

    Un saludo y muchas gracias.

    Kiket

  5. #5
    xargs -n 1 kill -9 Avatar de sergio
    Ingresso
    Jan 2004
    Localização
    Capital do Triângulo
    Posts
    5.201
    Posts de Blog
    9

    Padrão

    Citação Postado originalmente por kiket Ver Post
    Hola Sergio,

    Gracias por tu respuesta, pero mi problema no es con iptables. Las reglas que he puesto arriba de iptables funcionan a la perfección( cuando una IP intenta acceder por cuarta vez se le edniega el acceso durante 1 minuto desde el último acceso ).

    Mi problema era en Mikrotik, de momento lo he solucionado con las 3 últimas reglas, creando 3 listas y comprobando si la ip se encuentra en las listas de accesos anteriores 1 conexion, 2conexion y 3conexion.

    Un saludo y muchas gracias.

    Kiket
    Kiket, não prestei atenção em qual forum estava quando respondi.

    Outra coisa que poderá configurar, no MT, é alterar a porta padrão do ssh. Apenas com esta mudança notará que praticamente desaparecerão as tentativas de acesso, uma vez que estas tentativas são através de scripts testando IP/Porta.

  6. #6

    Padrão

    Hola Sergio,

    Gracias por tu respuesta. La solución que me planteas ya la he adoptado en otros servicios como el Web (cambiando el 80 por 8080...)pero en este caso no queria modificar el puerto. Tenia que encontrar la solución mediante reglas en el FW.

    Un saludo y muchas gracias por tu atención.

    Kiket

  7. #7
    xargs -n 1 kill -9 Avatar de sergio
    Ingresso
    Jan 2004
    Localização
    Capital do Triângulo
    Posts
    5.201
    Posts de Blog
    9

    Padrão

    Citação Postado originalmente por kiket Ver Post
    Hola Sergio,

    Gracias por tu respuesta. La solución que me planteas ya la he adoptado en otros servicios como el Web (cambiando el 80 por 8080...)pero en este caso no queria modificar el puerto. Tenia que encontrar la solución mediante reglas en el FW.

    Un saludo y muchas gracias por tu atención.

    Kiket
    E se criar uma regra INPUT para a porta do ssh apenas para as conexões de um determinado range de IPs (sua rede local por exemplo); resolve?

  8. #8

    Padrão

    No, por que accedo al MT desde el exterior desde diferentes IP. Pero ahora con las cadenas que he metido en el FW me funciona muy bien.

    La primera vez que accede una IP al MT se almacena en la address-list "1 conexion", cuando accede por segunda vez, comprueba si se encuentra en la 1 conexion , y entonces se almacena en la address-list "2 conexion" y la tercera vez a la "3 conexion", y con la regla drop delante de todas siempre me rechaza cualquier IP que se encuentre en la address-list "3 conexion".

    Ahora mismo funciona correctamente, solo pregunto si existe alguna forma mas elegante para realizar la misma funcion, como por ejemplo con iptables, que actualiza las tablas segun el numero de acceso, y si llega al limite hace un drop.

    He probado con connection-limit y solo sirve para conexiones simultaneas.

    Un saludo,

    Kiket

  9. #9

    Padrão

    Citação Postado originalmente por kiket Ver Post
    No, por que accedo al MT desde el exterior desde diferentes IP. Pero ahora con las cadenas que he metido en el FW me funciona muy bien.

    La primera vez que accede una IP al MT se almacena en la address-list "1 conexion", cuando accede por segunda vez, comprueba si se encuentra en la 1 conexion , y entonces se almacena en la address-list "2 conexion" y la tercera vez a la "3 conexion", y con la regla drop delante de todas siempre me rechaza cualquier IP que se encuentre en la address-list "3 conexion".

    Ahora mismo funciona correctamente, solo pregunto si existe alguna forma mas elegante para realizar la misma funcion, como por ejemplo con iptables, que actualiza las tablas segun el numero de acceso, y si llega al limite hace un drop.

    He probado con connection-limit y solo sirve para conexiones simultaneas.

    Un saludo,

    Kiket
    Dentro de ip services, especifique qual faixa de ip do acessar seu mk por ssh telnet ftp e etc e pronto...

  10. #10
    xargs -n 1 kill -9 Avatar de sergio
    Ingresso
    Jan 2004
    Localização
    Capital do Triângulo
    Posts
    5.201
    Posts de Blog
    9

    Padrão

    Citação Postado originalmente por kiket Ver Post
    No, por que accedo al MT desde el exterior desde diferentes IP. Pero ahora con las cadenas que he metido en el FW me funciona muy bien.

    La primera vez que accede una IP al MT se almacena en la address-list "1 conexion", cuando accede por segunda vez, comprueba si se encuentra en la 1 conexion , y entonces se almacena en la address-list "2 conexion" y la tercera vez a la "3 conexion", y con la regla drop delante de todas siempre me rechaza cualquier IP que se encuentre en la address-list "3 conexion".

    Ahora mismo funciona correctamente, solo pregunto si existe alguna forma mas elegante para realizar la misma funcion, como por ejemplo con iptables, que actualiza las tablas segun el numero de acceso, y si llega al limite hace un drop.

    He probado con connection-limit y solo sirve para conexiones simultaneas.

    Un saludo,

    Kiket
    Kiket, não sei dizer se existe uma maneira mais eficaz (elegante ) de fazer isso, mas o que você configurou está bom. Vou estudar isso depois e se encontrar algo posto aqui.