Bloquear el tráfico hostil entrante dinámicamente con PF y fail2ban en OS X

La image más grande es que estoy tratando de bloquear dinámicamente / desbloquear IPs usando fail2ban 0.8.14. He estado siguiendo una vieja guía para OS 10.5 con no incluye PF.

Creo que he configurado todo correctamente, pero el PF del OS X me está causando algunos problemas.

  • ¿Cómo utilizar Terminal para enviar pulsaciones de teclas?
  • ¿Cómo está conectado el Apple Watch a Internet?
  • SSH ya no funciona después de la actualización a 10.12.4
  • Sólo HTTPS sitios web que trabajan de otra manera que recibo ERR_CONNECTION_REFUSED
  • Establecer el nombre de host / nombre de equipo para macOS
  • Unkown process de escucha en el puerto 8080
  • Talaninc tiene el IP 192.168.1.68 y es el "local"

    Celebgul tiene el IP 192.168.1.50 y es el "remoto"


    Por lo que entiendo , debería ser capaz de emitir el siguiente command:

    user@celebgul:~$ sudo /sbin/pfctl -t fail2ban -T add 192.168.1.68/32 

    Esto agregará la dirección IP 192.168.1.68 a la tabla fail2ban y bloqueará el tráfico entrante de Talantinc , por lo que debería fallar lo siguiente:

     forquare@talantinc:~$ ssh user@192.168.1.50 Password: Last login: Mon Aug 3 12:09:05 2015 from talantinc.local user@celebgul:~$ 

    Pero como puede ver, tiene éxito.


    Por lo que puedo ver , mi entendimiento es incorrecto. He añadido 192.168.1.68 , y aún así puede SSH de él a Celebgul .

    Puedo consultar la tabla y ver 192.168.1.68 en ella:

     user@celebgul:~$ sudo pfctl -t fail2ban -T show No ALTQ support in kernel ALTQ related functions disabled 192.168.1.68 

    No he cambiado ninguno de los files de configuration por defecto de Apple para PF, mi entendimiento era que sólo tendría que editar / crear mi propia si quería reglas que eran de larga duración / persistió a través de reinicios.

    ¿Cómo puedo utilizar PF para bloquear las conexiones entrantes en el cliente de OS X (no en el server)?

    Estoy mirando específicamente a El Capitán, sin embargo no puedo conseguir esto para trabajar en Mavericks tampoco.

  • El nombre de usuario y la contraseña del proxy no se restringn en las preferences del sistema
  • Redireccione el tráfico utilizando PF junto con el uso compartido de Internet
  • ¿Cómo puedo "decir" a otro Mac?
  • Cómo montar y nombrar un volumen si aún no está montado con un script de inicio
  • PuTTY Equivalente para Mac
  • WiFi No permanecer conectado después del sueño-vigilia
  • 3 Solutions collect form web for “Bloquear el tráfico hostil entrante dinámicamente con PF y fail2ban en OS X”

    He aquí un tutorial mejorado para instalar fail2ban en OS X 10.10 (probablemente funciona también en 10.9) basado en la guía (de alguna manera defectuosa) en forgetcomputers.zendisk.com.

    El instalador automatizado no funcionó en absoluto para mí, así que lo hice manualmente.

    1. cd to ~ / Descargas y descargas fail2ban-0.8.10

       cd ~/Downloads curl -O https://forgetcomputers.zendesk.com/hc/en-us/article_attachments/200287990/fail2ban-0.8.10.tar.gz 
    2. Desempaque el package de alquitrán:

       tar xzf fail2ban-0.8.10.tar.gz 
    3. cd to fail2ban-0.8.10 e instalar el software:

       cd fail2ban-0.8.10/ sudo python setup.py install 
    4. Hacer un file para el logging:

       sudo touch /var/log/fail2ban.log 
    5. cd de nuevo y download el package de modificaciones:

       cd ~/Downloads/ curl -O https://forgetcomputers.zendesk.com/hc/en-us/article_attachments/200287980/install_fail2ban_mods.tar.gz 
    6. Desempackage este package:

       tar xzf install_fail2ban_mods.tar.gz 
    7. Ejecute el script de installation desde el package de modificaciones:

       sudo ./fail2ban_mods/install_fail2ban_mod.sh 
    8. Hazte sudo y cambia el nombre de /etc/fail2ban/jail.local (el file jail.local es superior a jail.conf y puede romper todo porque el file instalado contiene una configuration totalmente inútil):

       sudo bash mv /etc/fail2ban/jail.local /etc/fail2ban/jail.local.bak sudo bash sudo bash mv /etc/fail2ban/jail.local /etc/fail2ban/jail.local.bak 
    9. Agregue las siguientes dos líneas a /etc/pf.conf con nano /etc/pf.conf :

       table <fail2ban> persist block drop log quick from <fail2ban> to any 
    10. En /etc/fail2ban/jail.conf, modifique la sección [ssh-pf] al final con nano siguiente manera:

       [ssh-pf] enabled = true filter = sshd action = pf logpath = /var/log/system.log maxretry = 3 

      Puede ingresar otro recuento de maxretry o definir un time de búsqueda o time de búsqueda individual.

    11. En /etc/fail2ban/action.d/pf.conf, asegúrese de que los valores siguientes se establecen y nano /etc/fail2ban/action.d/pf.conf si es necesario con nano /etc/fail2ban/action.d/pf.conf :

       actionban = /sbin/pfctl -t fail2ban -T add <ip> actionunban = pfctl -t fail2ban -T delete `pfctl -t fail2ban -T show 2>/dev/null | grep <ip>` [Init] tablename = fail2ban localhost = 127.0.0.1 
    12. Apague pf, dígale que vuelva a cargar su configuration y vuelva a iniciarla:

       pfctl -d pfctl -f /etc/pf.conf pfctl -e 
    13. Detenga el daemon fail2ban si ya se está ejecutando e inicie con launchctl:

       fail2ban-client stop launchctl load -w /Library/LaunchDaemons/org.fail2ban.init.plist launchctl load -w /Library/LaunchDaemons/org.fail2ban.networkingo.plist launchctl load -w /Library/LaunchDaemons/org.fail2ban.reset.plist 

    Prueba del sistema

    1. Abra una window de terminal y vea el logging de fail2ban (live-update):

       sudo tail -f /var/log/fail2ban.log 
    2. Mientras mantiene este terminal activo en el server, SSH en el server de un cliente y ver la salida del terminal del server (el nombre de usuario es arbitrario, ya que estamos probando lo que sucederá cuando se intenta un inicio de session incorrecto, replace server_ip con la dirección IP o nombre de host de el server):

        ssh username@server_ip 
    3. En la máquina cliente, escriba la contraseña incorrecta varias veces hasta que vea un post en el logging de fail2ban que indica que el cliente ha sido prohibido. Este post se verá así:

      2015-08-04 18: 56: 25,001 fail2ban.actions [216]: AVISO [ssh-pf] Prohibición 192.168.8.15

      Cuando vea este post, se ha prohibido la dirección IP de la máquina cliente. En este punto, cualquier bash futuro de SSH de esta IP (dentro del período de bantime de fail2ban) debería ser time de espera y no tener éxito.

    4. Para detener la queue sólo tiene que introducir ctrl C

    Si desea instalar el último fail2ban 0.9.1

    1. Descargue manualmente fail2ban en su carpeta ~ / Downloads

    2. cd to ~ / Descargas y descomprimir el package de tar:

       cd ~/Downloads tar xzf fail2ban-0.9.1.tar.gz 
    3. cd to fail2ban-0.9.1 e instalar el software:

       cd fail2ban-0.9.1/ sudo python setup.py install 
    4. Hacer un file para el logging:

       sudo touch /var/log/fail2ban.log 
    5. cd de nuevo y download el package de modificaciones:

       cd ~/Downloads/ curl -O https://forgetcomputers.zendesk.com/hc/en-us/article_attachments/200287980/install_fail2ban_mods.tar.gz 
    6. Desempackage este package:

       tar xzf install_fail2ban_mods.tar.gz 
    7. Realice una copy de security de /etc/fail2ban/filter.d/sshd.conf y copie el file desde el mod_pack al directory fail2ban / filter.d. Puede copyr el otro filter.conf pero mejor hacer una copy de security de los files originales. No probé esto sin embargo.

       sudo bash mv /etc/fail2ban/filter.d/sshd.conf /etc/fail2ban/filter.d/sshd.conf.old cp ~/Downloads/fail2ban_mods/filter.d/sshd.conf /etc/fail2ban/filter.d/ cp ~/Downloads/fail2ban_mods/fail2ban_reset.sh /private/etc/fail2ban cp ~/Downloads/fail2ban_mods/lib-launchdaemons/org.fail2ban* /Library/LaunchDaemons sudo bash sudo bash mv /etc/fail2ban/filter.d/sshd.conf /etc/fail2ban/filter.d/sshd.conf.old cp ~/Downloads/fail2ban_mods/filter.d/sshd.conf /etc/fail2ban/filter.d/ cp ~/Downloads/fail2ban_mods/fail2ban_reset.sh /private/etc/fail2ban cp ~/Downloads/fail2ban_mods/lib-launchdaemons/org.fail2ban* /Library/LaunchDaemons 
    8. Agregue las siguientes dos líneas a /etc/pf.conf con nano /etc/pf.conf :

       table <fail2ban> persist block drop log quick from <fail2ban> to any 
    9. En /etc/fail2ban/jail.conf, modifique la sección [ssh-pf] al final con nano siguiente manera:

       [ssh-pf] enabled = true filter = sshd action = pf logpath = /var/log/system.log maxretry = 3 

      Puede ingresar otro recuento de maxretry o definir un time de búsqueda o time de búsqueda individual.

    10. En /etc/fail2ban/action.d/pf.conf, asegúrese de que se establecen los siguientes valores y nano /etc/fail2ban/action.d/pf.conf si es necesario con nano /etc/fail2ban/action.d/pf.conf :

       actionban = /sbin/pfctl -t fail2ban -T add <ip>/32 actionunban = /sbin/pfctl -t fail2ban -T delete <ip>/32 [Init] tablename = fail2ban 
    11. Apague pf, dígale que vuelva a cargar su configuration y vuelva a iniciarla:

       pfctl -d pfctl -f /etc/pf.conf pfctl -e 
    12. Detenga el daemon fail2ban si ya se está ejecutando y vuelva a iniciarlo:

       fail2ban-client stop launchctl load -w /Library/LaunchDaemons/org.fail2ban.init.plist launchctl load -w /Library/LaunchDaemons/org.fail2ban.networkingo.plist launchctl load -w /Library/LaunchDaemons/org.fail2ban.reset.plist 

    Ahora pruebe su sistema de nuevo como se describió anteriormente.

    Mejoras

    Dado que la implementación de la tabla y la regla fail2ban no es estándar y el locking real de fail2ban no sobrevive a un reinicio, reelaboré todo el mecanismo pf, creé un ancla independiente (inspirada en IceFloor ) para eliminar cualquier dependencia en / etc de Apple /pf.conf y modificó la acción de prohibición.

    1. A partir de la installation de fail2ban 0.9.1 descrita anteriormente, ingrese:

       sudo bash nano /etc/fail2ban/action.d/pf.conf sudo bash sudo bash nano /etc/fail2ban/action.d/pf.conf 

      y cambiar en el file /etc/fail2ban/action.d/pf.conf las líneas que comienzan con

       actionban = .... 

      a

       actionban = /sbin/pfctl -a fail2ban.anchor -t fail2ban -T add <ip>/32 && /sbin/pfctl -k <ip>/32 && /sbin/pfctl -Ef /etc/fail2ban/pf/fail2ban.conf 

      y

       actionunban = .... 

      a

       actionunban = /sbin/pfctl -a fail2ban.anchor -t fail2ban -T delete <ip>/32 
    2. Crear una carpeta pf en / etc / fail2ban /

       mkdir /etc/fail2ban/pf 
    3. Cree tres files fail2ban, fail2ban.conf y fail2ban.sh en la carpeta previamente hecha con el siguiente contenido; después haga fail2ban.sh ejecutable con chmod:

      fail2ban:

       table <fail2ban> persist block drop log quick from <fail2ban> to any 

      fail2ban.conf:

       ############### LOOPBACK ############### # # skip loopback (no filtering on loopback interface) set skip on lo0 scrub-anchor "com.apple/*" ############### INBOUND ############### # anchor "fail2ban.anchor" load anchor "fail2ban.anchor" from "/etc/fail2ban/pf/fail2ban" # ############### LOOPBACK ############### # # skip loopback (no filtering on loopback interface) set skip on lo0 scrub-anchor "com.apple/*" ############### INBOUND ############### # anchor "fail2ban.anchor" load anchor "fail2ban.anchor" from "/etc/fail2ban/pf/fail2ban" set saltear lo0 ############### LOOPBACK ############### # # skip loopback (no filtering on loopback interface) set skip on lo0 scrub-anchor "com.apple/*" ############### INBOUND ############### # anchor "fail2ban.anchor" load anchor "fail2ban.anchor" from "/etc/fail2ban/pf/fail2ban" # ############### LOOPBACK ############### # # skip loopback (no filtering on loopback interface) set skip on lo0 scrub-anchor "com.apple/*" ############### INBOUND ############### # anchor "fail2ban.anchor" load anchor "fail2ban.anchor" from "/etc/fail2ban/pf/fail2ban" 

      fail2ban.sh:

       #!/bin/sh # start # # We need to trap on TERM signals, according to Apple's launchd docs: # trap 'exit 1' 15 # # Use the "ipconfig waitall" command to wait for all the interfaces to come up: # ipconfig waitall sleep 5 # # System sysctl # sysctl -w net.inet6.ip6.fw.verbose=0 sysctl -w net.inet.ip.fw.verbose=0 sysctl -w net.inet.ip.fw.verbose_limit=0 # # interface forwarding enabled by default # sysctl -w net.inet.ip.forwarding=1 # enable PF and load rules from default fail2ban configuration file using tokens (apple specific PF options -E and -X) # /sbin/pfctl -e /sbin/pfctl -Ef /etc/fail2ban/pf/fail2ban.conf # Exit with a clean status exit 0 # this file is public domain and is available to everyone with no exceptions. bin #!/bin/sh # start # # We need to trap on TERM signals, according to Apple's launchd docs: # trap 'exit 1' 15 # # Use the "ipconfig waitall" command to wait for all the interfaces to come up: # ipconfig waitall sleep 5 # # System sysctl # sysctl -w net.inet6.ip6.fw.verbose=0 sysctl -w net.inet.ip.fw.verbose=0 sysctl -w net.inet.ip.fw.verbose_limit=0 # # interface forwarding enabled by default # sysctl -w net.inet.ip.forwarding=1 # enable PF and load rules from default fail2ban configuration file using tokens (apple specific PF options -E and -X) # /sbin/pfctl -e /sbin/pfctl -Ef /etc/fail2ban/pf/fail2ban.conf # Exit with a clean status exit 0 # this file is public domain and is available to everyone with no exceptions. # #!/bin/sh # start # # We need to trap on TERM signals, according to Apple's launchd docs: # trap 'exit 1' 15 # # Use the "ipconfig waitall" command to wait for all the interfaces to come up: # ipconfig waitall sleep 5 # # System sysctl # sysctl -w net.inet6.ip6.fw.verbose=0 sysctl -w net.inet.ip.fw.verbose=0 sysctl -w net.inet.ip.fw.verbose_limit=0 # # interface forwarding enabled by default # sysctl -w net.inet.ip.forwarding=1 # enable PF and load rules from default fail2ban configuration file using tokens (apple specific PF options -E and -X) # /sbin/pfctl -e /sbin/pfctl -Ef /etc/fail2ban/pf/fail2ban.conf # Exit with a clean status exit 0 # this file is public domain and is available to everyone with no exceptions. # #!/bin/sh # start # # We need to trap on TERM signals, according to Apple's launchd docs: # trap 'exit 1' 15 # # Use the "ipconfig waitall" command to wait for all the interfaces to come up: # ipconfig waitall sleep 5 # # System sysctl # sysctl -w net.inet6.ip6.fw.verbose=0 sysctl -w net.inet.ip.fw.verbose=0 sysctl -w net.inet.ip.fw.verbose_limit=0 # # interface forwarding enabled by default # sysctl -w net.inet.ip.forwarding=1 # enable PF and load rules from default fail2ban configuration file using tokens (apple specific PF options -E and -X) # /sbin/pfctl -e /sbin/pfctl -Ef /etc/fail2ban/pf/fail2ban.conf # Exit with a clean status exit 0 # this file is public domain and is available to everyone with no exceptions. # #!/bin/sh # start # # We need to trap on TERM signals, according to Apple's launchd docs: # trap 'exit 1' 15 # # Use the "ipconfig waitall" command to wait for all the interfaces to come up: # ipconfig waitall sleep 5 # # System sysctl # sysctl -w net.inet6.ip6.fw.verbose=0 sysctl -w net.inet.ip.fw.verbose=0 sysctl -w net.inet.ip.fw.verbose_limit=0 # # interface forwarding enabled by default # sysctl -w net.inet.ip.forwarding=1 # enable PF and load rules from default fail2ban configuration file using tokens (apple specific PF options -E and -X) # /sbin/pfctl -e /sbin/pfctl -Ef /etc/fail2ban/pf/fail2ban.conf # Exit with a clean status exit 0 # this file is public domain and is available to everyone with no exceptions. # #!/bin/sh # start # # We need to trap on TERM signals, according to Apple's launchd docs: # trap 'exit 1' 15 # # Use the "ipconfig waitall" command to wait for all the interfaces to come up: # ipconfig waitall sleep 5 # # System sysctl # sysctl -w net.inet6.ip6.fw.verbose=0 sysctl -w net.inet.ip.fw.verbose=0 sysctl -w net.inet.ip.fw.verbose_limit=0 # # interface forwarding enabled by default # sysctl -w net.inet.ip.forwarding=1 # enable PF and load rules from default fail2ban configuration file using tokens (apple specific PF options -E and -X) # /sbin/pfctl -e /sbin/pfctl -Ef /etc/fail2ban/pf/fail2ban.conf # Exit with a clean status exit 0 # this file is public domain and is available to everyone with no exceptions. # #!/bin/sh # start # # We need to trap on TERM signals, according to Apple's launchd docs: # trap 'exit 1' 15 # # Use the "ipconfig waitall" command to wait for all the interfaces to come up: # ipconfig waitall sleep 5 # # System sysctl # sysctl -w net.inet6.ip6.fw.verbose=0 sysctl -w net.inet.ip.fw.verbose=0 sysctl -w net.inet.ip.fw.verbose_limit=0 # # interface forwarding enabled by default # sysctl -w net.inet.ip.forwarding=1 # enable PF and load rules from default fail2ban configuration file using tokens (apple specific PF options -E and -X) # /sbin/pfctl -e /sbin/pfctl -Ef /etc/fail2ban/pf/fail2ban.conf # Exit with a clean status exit 0 # this file is public domain and is available to everyone with no exceptions. # #!/bin/sh # start # # We need to trap on TERM signals, according to Apple's launchd docs: # trap 'exit 1' 15 # # Use the "ipconfig waitall" command to wait for all the interfaces to come up: # ipconfig waitall sleep 5 # # System sysctl # sysctl -w net.inet6.ip6.fw.verbose=0 sysctl -w net.inet.ip.fw.verbose=0 sysctl -w net.inet.ip.fw.verbose_limit=0 # # interface forwarding enabled by default # sysctl -w net.inet.ip.forwarding=1 # enable PF and load rules from default fail2ban configuration file using tokens (apple specific PF options -E and -X) # /sbin/pfctl -e /sbin/pfctl -Ef /etc/fail2ban/pf/fail2ban.conf # Exit with a clean status exit 0 # this file is public domain and is available to everyone with no exceptions. # #!/bin/sh # start # # We need to trap on TERM signals, according to Apple's launchd docs: # trap 'exit 1' 15 # # Use the "ipconfig waitall" command to wait for all the interfaces to come up: # ipconfig waitall sleep 5 # # System sysctl # sysctl -w net.inet6.ip6.fw.verbose=0 sysctl -w net.inet.ip.fw.verbose=0 sysctl -w net.inet.ip.fw.verbose_limit=0 # # interface forwarding enabled by default # sysctl -w net.inet.ip.forwarding=1 # enable PF and load rules from default fail2ban configuration file using tokens (apple specific PF options -E and -X) # /sbin/pfctl -e /sbin/pfctl -Ef /etc/fail2ban/pf/fail2ban.conf # Exit with a clean status exit 0 # this file is public domain and is available to everyone with no exceptions. # #!/bin/sh # start # # We need to trap on TERM signals, according to Apple's launchd docs: # trap 'exit 1' 15 # # Use the "ipconfig waitall" command to wait for all the interfaces to come up: # ipconfig waitall sleep 5 # # System sysctl # sysctl -w net.inet6.ip6.fw.verbose=0 sysctl -w net.inet.ip.fw.verbose=0 sysctl -w net.inet.ip.fw.verbose_limit=0 # # interface forwarding enabled by default # sysctl -w net.inet.ip.forwarding=1 # enable PF and load rules from default fail2ban configuration file using tokens (apple specific PF options -E and -X) # /sbin/pfctl -e /sbin/pfctl -Ef /etc/fail2ban/pf/fail2ban.conf # Exit with a clean status exit 0 # this file is public domain and is available to everyone with no exceptions. # #!/bin/sh # start # # We need to trap on TERM signals, according to Apple's launchd docs: # trap 'exit 1' 15 # # Use the "ipconfig waitall" command to wait for all the interfaces to come up: # ipconfig waitall sleep 5 # # System sysctl # sysctl -w net.inet6.ip6.fw.verbose=0 sysctl -w net.inet.ip.fw.verbose=0 sysctl -w net.inet.ip.fw.verbose_limit=0 # # interface forwarding enabled by default # sysctl -w net.inet.ip.forwarding=1 # enable PF and load rules from default fail2ban configuration file using tokens (apple specific PF options -E and -X) # /sbin/pfctl -e /sbin/pfctl -Ef /etc/fail2ban/pf/fail2ban.conf # Exit with a clean status exit 0 # this file is public domain and is available to everyone with no exceptions. 
    4. Cree el file org.fail2ban.plist en / Library / LaunchDaemon con el siguiente contenido:

       <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Disabled</key> <false/> <key>ExitTimeOut</key> <integer>1</integer> <key>Label</key> <string>org.fail2ban</string> <key>Program</key> <string>/etc/fail2ban/pf/fail2ban.sh</string> <key>RunAtLoad</key> <true/> </dict> </plist> <? xml version = "1.0" encoding = "UTF-8"?> <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Disabled</key> <false/> <key>ExitTimeOut</key> <integer>1</integer> <key>Label</key> <string>org.fail2ban</string> <key>Program</key> <string>/etc/fail2ban/pf/fail2ban.sh</string> <key>RunAtLoad</key> <true/> </dict> </plist> 
    5. Elimine las dos líneas siguientes de /etc/pf.conf con nano /etc/pf.conf :

       table <fail2ban> persist block drop log quick from <fail2ban> to any 
    6. Cargue el file /Library/LaunchDaemons/org.fail2ban.plist con launchctl después de detener fail2ban y pf:

       fail2ban-client stop pfctl -d pfctl -f /etc/pf.conf launchctl load -w /Library/LaunchDaemons/org.fail2ban.plist fail2ban-client start 

      o reinicie su Mac después de cargar org.fail2ban.plist con launchctl.

    Ahora la prohibición funciona correctamente incluso después de reiniciar el sistema. Si desea agregar una dirección IP manualmente para bloquearla, simplemente ingrese:

     sudo /sbin/pfctl -a fail2ban.anchor -t fail2ban -T add <ip>/32 && /sbin/pfctl -k <ip>/32 && /sbin/pfctl -Ef /etc/fail2ban/pf/fail2ban.conf 

    Para desabrocharlo (no será automáticamente prohibido después de que el fail2ban bantime!) Escriba:

     sudo /sbin/pfctl -a fail2ban.anchor -t fail2ban -T delete <ip>/32 

    Así que para responder a su pregunta:

    Si desea utilizar la tabla fail2ban para prohibir una IP manualmente después de aplicar las mejoras , debe ingresar el command anterior. El motivo de las partes adicionales:

    • /sbin/pfctl -k <ip>/32 es necesario para matar todas las inputs de estado procedentes del host especificado.
    • /sbin/pfctl -Ef /etc/fail2ban/pf/fail2ban.conf para recargar el fail2ban.conf con gracia y reflejar los cambios realizados en la tabla fail2ban.

    Sin las mejoras anteriores puede utilizar:

     sudo /sbin/pfctl -t fail2ban -T add <ip>/32 && /sbin/pfctl -k <ip>/32 && /sbin/pfctl -Ef /etc/pf.conf 

    Instalación de fail2ban 0.9.1 en El Capitán

    Lo tengo instalado en El Capitan en modo sudo nvram boot-args="rootless=0" ( sudo nvram boot-args="rootless=0" y reinicio) después de quitar la parte doc-install a / usr / share / docs / fail2ban (= las líneas 140-143) en el setup.py de fail2ban 0.9.1.

    Utilice el método de installation y configuration 0.9.1 mejorado. Si el command pfctl -sA no revela fail2ban.anchor, compruebe si hay las comillas dobles correctas (no hay comillas inteligentes!) En el file /etc/fail2ban/pf/fail2ban.conf.

    Me faltaba una pieza del rompecabezas que klanomath amablemente llenó al enlazar a este post " Configurar Fail2ban en Mac OS X 10.7+ " y Buscar 웃 reforzado con este post " Integrando PF con Fail2ban 0.9 ".

    Mientras PF agregaba la dirección IP a la tabla fail2ban , no sabía qué hacer con ella. Hay un par de maneras de lograr esto:

    El primer post vinculado arriba sugiere modificar /etc/pf.conf y agregar lo siguiente:

     table <fail2ban> persist block drop log quick from <fail2ban> to any 

    El segundo post sugiere una ruta más correcta, creando un nuevo file "anchor" /etc/fail2ban/pf-anchor.conf e insertando lo siguiente:

     table <fail2ban> counters block drop log quick from <fail2ban> to any 

    A continuación, hace reference a este ancla en /etc/pf.conf insertando:

     anchor fail2ban 

    No he verificado el segundo método, pero mis testings iniciales con el primer método ha resuelto mi problema con PF. Gracias a klanomoath y Buscar 웃 por publicar enlaces a guías relevantes, o mis consultas de búsqueda estaban muy lejos o es la primera vez que DuckDuckGo me ha defraudado.

    La installation de Server.app tiene varias ventajas para las manos UNIX tradicionales, ya que OS X hace opciones de configuration en el sistema operativo cliente que no funcionan bien para las personas que viven en el mundo de command-line. (Archivos Max por process, ajuste VM, otros cambios de afinación del kernel)

    A less que sea una solución fácil, recomendaría instalar el server y habilitar el cortafuegos adaptativo de OS X para asegurarse de que tiene habilitados los services launchd adecuados.

    En pocas palabras, el artículo anterior pide:

     sudo pfctl -f /etc/pf.conf sudo /Applications/Server.app/Contents/ServerRoot/usr/sbin/serverctl enable service=com.apple.afctl sudo /Applications/Server.app/Contents/ServerRoot/usr/libexec/afctl -c sudo /Applications/Server.app/Contents/ServerRoot/usr/libexec/afctl -f 

    Seguido por el paso 2:

     sudo defaults write /System/Library/LaunchDaemons/com.apple.pfctl ProgramArguments '(pfctl, -f, /etc/pf.conf, -e)' sudo chmod 644 /System/Library/LaunchDaemons/com.apple.pfctl.plist sudo plutil -convert xml1 /System/Library/LaunchDaemons/com.apple.pfctl.plist 

    A partir de ahí, puede utilizar el marco pfctl / afctl para bloquear hosts y puertos según sea necesario. Puede probar las cosas intentando ataques de fuerza bruta ssh y ver que el firewall está funcionando (o no) antes de intentar personalizar el cortafuegos aún más.

    Loving Apple Products like poisoning (iPhone, iPad, iMac, Macbook, iWatch).