Issabel ISO (Latest): Download Here
Cloud Services: User Portal - Quick Guide
News: Telegram channel
Become a Patron!

Hoy quiero compartir algo que para mi me pareció muy útil que es poner a las IP bloqueadas el pais de donde pertenecen en la opción fail2ban Banned IP

Primero vamos a descargar el archivo
geoiploc.php

desde consola digitamos

cd /var/www/html/modules/sec_fb_banned/

wget www.chir.ag/projects/geoiploc/autogen/geoiploc.tar.gz

después descomprimimos

tar xvf geoiploc.tar.gz

ahora modificamos el archivo que esta en la misma carpeta index.php

vim index.php

Buscamos el reglón :

$oGrid->setURL($url);

debajo de este reglón ponemos (incluir la carpeta que acabamos de descomprimir)

include("geoiploc.php");

después buscamos

$arrColumns = array($button_eliminar,tr("Jail"),tr("IP"));

y lo cambiamos por este :

$arrColumns = array($button_eliminar,tr("IP"),tr("Jail"),_tr("Pais"));

Aquí o que hacemos es agregar la columna PAIS en la table y cambiar el orden (primero la IP, la Jaula después el pais ),

Ahora vamos a buscar el siguiente (esta a solo dos reglones de lo anterior)=:

if( is_array($arrResult) && $total>0 ){
    foreach($arrResult as $key => $value){
        $arrTmp[0] = "<input type='checkbox' name='".$value['id']."' id='".$value['id']."'>";
        $arrTmp[1] = $value['jail'];
        $arrTmp[2] = $value['ip'];
        $arrData[] = $arrTmp;
    }
}

y lo cambiamos por esto :

if( is_array($arrResult) && $total>0 ){
    foreach($arrResult as $key => $value){
        $ip = $value['ip'];
        $region = (getCountryFromIP($ip, " NamE"));
        $arrTmp[0] = "<input type='checkbox' name='".$value['id']."' id='".$value['id']."'>";
        $arrTmp[2] = $value['jail'];
        $arrTmp[1] = $value['ip'];
        $arrTmp[3] = $region;
        $arrData[] = $arrTmp;
    }
}

Aquí agregaos los datos para que nos de la IP y listo ahí esta , ya sirve perfectamente te da la IP tipo de bloqueo y pais de origen .

una cosita mas la variante $limit = 20; es la que dice cuantas ip muestra por pagina si quieren aumentar o bajar ahí lo pueden hacer .

Me disculpo no soy un experto si hay un mejor método , interesante , quiero ahora poner la bandera del pais junto al nombre ya para temas de presentación

    Gran aporte, y muy útil, muchas gracias por compartirlo.

    Seria bueno si lo subes para que se añada en próximas actualizaciones y hacer un pull request en github.

    Voy a probarlo, me ocurre también que en el fail2ban solo me muestra en las jail(jaula) asterisk y sshd , pero si bloquea en el f2b-apache-auth no sale en la lista de ip bloqueadas, no se si alguien lo ha podido modificar para que aparezca también.

    gracias.

    hgmnetwork Me parece una excelente idea ya que este bloqueo no aparece en el fail2ban y toca desactivar el servicio , podemos revisar a ver si lo podemos modificar !.

      Justo probando he dado como hacerlo, realmente no es muy complicado lo raro es que segun he revisado solo aparece para mostrar asterisk y apache el resto no sale en caso de bloqueo, he podido añadirlo facilmente y explico aqui tambien como para compartirlo con los demás y se pueda añadir a mejoras y futuras actualizaciones

      para añadir en el fail2ban que se muestre el apache-auth que es el acceso si tienen bloqueado por htaccess para que antes de entrar pida usuario y clave y lo muestre en las ips bloqueadas hacer lo siguiente

      editar el fichero

      vi /var/www/html/modules/sec_fb_banned/index.php

      buscar donde pone

      $respuesta = array();
      exec('/usr/bin/issabel-helper fb_client status asterisk', $respuesta, $retorno);
      $output = implode(" ",$respuesta);
      $asteriskban = trim($output);
      //  $asteriskban = "192.168.1.3 192.168.1.178 192.168.6.28 192.168.216.223 192.168.6.162 192.168.23.41 192.168.9.2";

      y justo debajo añadir el código con el jail del apache-auth

      //añadido por hgmnetwork.com para el apache-auth que es el acceso por htaccess usuario y clave o web
      $respuesta = array();
      exec('/usr/bin/issabel-helper fb_client status apache-auth', $respuesta, $retorno);
      $output = implode(" ",$respuesta);
      $apacheautban = trim($output);
      // $apacheautban = "192.168.1.3 192.168.1.178 192.168.6.28 192.168.216.223 192.168.6.162 192.168.23.41 192.168.9.2";

      un poco mas abajo buscar

      if(strlen($asteriskban)){
      $asteriskbanarr= explode(" ",$asteriskban);
      foreach ($asteriskbanarr as $v)
      {
      $rejected[]=array("id"=>$id,"jail"=>"asterisk","ip"=>$v);
      $id++;
      }
      }

      y añadir justo debajo
      //añadido por hgmnetwork.com 05-02-2021 para el apache aut

      if(strlen($apacheautban)){
      $apacheautbanarr= explode(" ",$apacheautban);
      foreach ($apacheautbanarr as $v)
      {
      $rejected[]=array("id"=>$id,"jail"=>"apache-auth","ip"=>$v);
      $id++;
      }
      }

      es muy importante poner
      $rejected[]=array("id"=>$id,"jail"=>"apache-auth","ip"=>$v);

      apache-auth ya que si se pone otra cosa al eliminar la ip no funcionara eso debe ser exacto al nombre del jail de iptables

      se puede repetir con todos los jail que se quiera

      y listo se reinicia el fail2ban y ya aparecen en la web también los apache-auth

      espero les sirva de ayuda y se pueda poner en las próximas actualizaciones ya que tanto lo del país como mostrar los bloqueos de apache, correo, y otros jail creo que seria bueno por defecto.

        MUCHAS GRACIAS!!

          hgmnetwork Tengo una pregunta , resulta que si se bloquea por intentos a la plataforma WEB (poner mal la contraseña) , que tipo de bloqueo es ? .

          Estuve mirando y bloquee una IP por intentos de bloqueos desde la pagina WEB , pero no me da la opción de desbloquear de la pagina WEB , se podría agregar esta opción de igual que hiciste con apache-aut ? , o definitivamente estoy mal !.

          Muchas gracias !

            Por ejemplo mira :

            -A f2b-asterisk-udp -s 185.16.38.105/32 -j REJECT --reject-with icmp-port-unreach able
            -A f2b-asterisk-udp -s 150.136.223.242/32 -j REJECT --reject-with icmp-port-unrea chable
            -A f2b-asterisk-udp -j RETURN


            -A f2b-issabel-gui -s 190.66.223.XX/32 -j REJECT --reject-with icmp-port-unreacha ble


            -A f2b-issabel-gui -j RETURN
            -A f2b-postfix -j RETURN
            -A f2b-postfix-sasl -j RETURN
            -A f2b-sshd -s 218.92.0.172/32 -j REJECT --reject-with icmp-port-unreachable
            -A f2b-sshd -s 61.177.172.104/32 -j REJECT --reject-with icmp-port-unreachable
            -A f2b-sshd -s 218.92.0.247/32 -j REJECT --reject-with icmp-port-unreachable
            -A f2b-sshd -s 218.92.0.145/32 -j REJECT --reject-with icmp-port-unreachable
            -A f2b-sshd -s 218.92.0.133/32 -j REJECT --reject-with icmp-port-unreachable
            -A f2b-sshd -s 115.159.151.171/32 -j REJECT --reject-with icmp-port-unreachable
            -A f2b-sshd -s 103.246.240.30/32 -j REJECT --reject-with icmp-port-unreachable

            Esta es la IP bloqueada por acceso a la WEB errados
            -A f2b-issabel-gui -s 190.66.223.XX/32 -j REJECT --reject-with icmp-port-unreacha ble

            Quiero hacer lo que hiciste pero agregando este reglón que tipo de proceso es ? f2b-issabel-gui

              Ferchoorias si se puede en el Código que añadir Nicolás es en el array añadir el Jail issabel-gui así aparecerá también ese

              Bueno la función es "issabel-gui" , y ya parece como Issabel , es el tipo de bloqueo por WEB , seria modificar para que salga en la nueva versión , lo arregle como tu arreglaste el tuyo peor ya seria mirar y optimizarlo como lo dejo el señor Nicolás

                19 days later

                Buen día
                Será posible que nos ayuden con generar el rpm, y así actualizar.
                Miro que alguien coloca los rpm.
                Saludos.

                  18 days later

                  hgmnetwork
                  Buena noche,
                  Con la nueva actualización del modulo de seguridad, ¿Se genera la actualización a lo que comentan?
                  Saludos.

                    insotec creo que si que ya quedó actualizado si actualizas el beta pero cuidado con las actualizaciones en produccion

                      Hola,
                      Muchas gracias por el aporte. Es util, pero la implementación debemos revisarla. Instalar otra base de geolocalización, que no se va a actualizar nunca más a menos que se descargue nuevamente y descomprima ese php no es lo ideal.

                      En Issabel ya estamos implementando las bases de MaxMind pero que lamentablemente requieren de un registro (que antes no), y estamos viendo la forma de usar las funciones nativas geoip de php que utiliza esas bases para poder utilizarlas desde php.

                      Tambien estamos considerando otras alternativas a MaxMind que no requieran registro, pero en nuestras pruebas las bases de MaxMind siguen siendo las más completas y fiables.

                      Estamos trabajando en este tema, y se añadirá la columna de país en los reportes de bloqueadas, una vez que unifiquemos criterios y veamos que base utilizar.

                        asternic genial esa mejora, el aportar el país es bueno para así poder más fácilmente ver, e incluso bloquear si se quiere por un país determinado.

                          hgmnetwork Desde hace años que es posible bloquear por paises si se quiere, si es que xtables_addons esta instalado, desde el Firewall usando reglas GeoIP. También es posible bloquear todos los continentes, y permitir países individuales. Agregar la columna país en la lista de bloqueo es independiente de esta funcionalidad que existe desde hace varios años ya.

                          Estuve todo el día de hoy, y varios otros días hace meses revisando y analizando la cuestión de bases de geolocalización. Y es mucho más complejo de lo que les pueda parecer. MaxMind sentó las bases, creó librerías que están incluídas en todas las distros, incluído Centos (libreria y bases en paquetes GeoIP-*). Muchas utilidades y librerías de lenguajes utilizan estas bases (php-pecl-geoip por ejemplo), geoiplookup en consola (que es también utilidad de maxmind).

                          La cosa es que MaxMind desde hace un tiempo ya no sólo requiere registrarse con ellos y obtener un key para poder descargar las bases gratuitas, sino que está cambiando el formato de las bases de datos, y deprecando las anteriores. Con esta depreación, todas esas familias de herramientas que utilicen sus librerías dejarán de funcionar. Una alternativa es convertir las bases con formato nuevo en el formato legacy, y eso ya estamos haciendo desde que exigen registración.

                          Pero, y hay muchos más peros, los desarrolladores de xtables_addons están migrando de MaxMind a DB-IP. Hoy estuvimos mirando esa base y parece ser más precisa que la de MaxMind gratuita. Entonces muy contentos intententamos por varias horas incorporar esa nueva base como alternativa, y convertirla al formato MaxMind Legacy para poder ser utilizada por librerías nativas de php o geoiplookup en consola.

                          Aquí viene otro pero, las librerías MaxMind descargadas de GitHub y actualizadas hace días nomás, no aceptan a Kosovo como país, mientras que las bases de DB-IP si lo incluyen. Entonces, hay que parchear y recompilar las librerías GeoIP de Maxmind para agregar este país, un trabajo extra que no podemos evaluar si vale la pena puesto que MaxMind mismo anuncia que deprecará esa librería en Mayo de 2022.

                          y se imaginan como sigue la cosa... Algo que puede parecer muy sencillo, es una caja de pandora, un berenjenal o una lata de gusanos, la analogía que más les guste.

                          Y todo este esfuerzo bajo el riesgo de que DB-IP decida restringir las descargas como ya lo hizo MaxMind en su momento.

                          Veremos en los próximos días como termina esta historieta.

                          Si, se que por paises se puede hace tiempo, me referia a que si aparece en el bloqueo el Pais, se podria ver que paises son los que más atacan y así bloquearlos, incluso no se si se podria hacer directamente desde el Fail2ban al añadir la opción del pais que se pueda bloquear para que sea más fácil para manejar con el firewall, entiendo que es más complicado de realizar, pero a la hora de usabilidad seria más fácil y si no es posible al menos poder ver que paises es de donde más atacan y así poder en el firewall bloquearlos.

                          Genial la idea de la actualización de las ips, todo lo que sea seguridad, cuanto mas mejor. mis felicitaciones y mil gracias por el gran esfuerzo que realizan, no me cansaré de agradecerles al equipo de issabel todas las mejoras y el el esfuerzo que muy pocos valoran por desgracia.