Outils pour utilisateurs

Outils du site


tinyhoneypot

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
tinyhoneypot [2017/02/04 16:35] – créée simontinyhoneypot [Date inconnue] (Version actuelle) – supprimée - modification externe (Date inconnue) 127.0.0.1
Ligne 1: Ligne 1:
-====== Tinyhoneypot ====== 
  
-Une astuce pour sécuriser son serveur en utilisant Tiny Honeypot et Fail2Ban.  
-(via http://book.knah-tsaeb.org/?SVAp2w ) 
- 
-Dernière mise à jour : **4 février 2017** 
- 
-===== Prérequis ===== 
- 
-Avoir changé le port ssh par défaut (22) . 
- 
-===== Installation ===== 
-Installation des programmes nécessaires : 
-<code bash> 
-    # apt-get update 
-    # apt-get install tinyhoneypot fail2ban xinetd 
-</code> 
-<hidden> 
-<code bash> 
-Lecture des listes de paquets... Fait 
-Construction de l'arbre des dépendances        
-Lecture des informations d'état... Fait 
-fail2ban est déjà la plus récente version disponible. 
-Les paquets supplémentaires suivants seront installés :  
-  libfile-copy-recursive-perl libpopt0 logrotate update-inetd 
-Les NOUVEAUX paquets suivants seront installés : 
-  libfile-copy-recursive-perl libpopt0 logrotate tinyhoneypot update-inetd xinetd 
-0 mis à jour, 6 nouvellement installés, 0 à enlever et 1 non mis à jour. 
-Il est nécessaire de prendre 318 ko dans les archives. 
-Après cette opération, 959 ko d'espace disque supplémentaires seront utilisés. 
-Souhaitez-vous continuer ? [O/n]  
-</code> 
-</hidden> 
- 
-Copie d'un exemple de configuration : 
-<code bash> 
-    # cp -v /usr/share/doc/tinyhoneypot/examples/xinetd.d/thp-pasv /etc/xinetd.d/ 
-‘/usr/share/doc/tinyhoneypot/examples/xinetd.d/thp-pasv’ -> ‘/etc/xinetd.d/thp-pasv’ 
-</code> 
- 
-Modification de la configuration copiée juste avant : 
-<code bash> 
-    # vim /etc/xinetd.d/thp-pasv  
-    # cat /etc/xinetd.d/thp-pasv  
-        # default: on 
-        # description: thp-ftpd calls the generic thpsvcs with param "ftp", 
-        # resulting in an ftpd emulation. 
-     
-        service thp-pasv 
-        { 
-            type = UNLISTED 
-            socket_type                 = stream 
-            protocol         = tcp 
-            port = 22 
-            wait = no 
-            user = thpot 
-            server = /usr/sbin/thpot 
-            server_args                 = nullresp 
-            nice = 10 
-            disable = no 
-            instances            = 1 
-            per_source = 1 
-        } 
-</code> 
- 
-On regarde le statut du service xinetd : 
-<code bash> 
-    # service xinetd status 
-</code> 
-<hidden> 
-<code bash>● xinetd.service - LSB: Starts or stops the xinetd daemon. 
-   Loaded: loaded (/etc/init.d/xinetd) 
-   Active: active (running) since sam. 2017-02-04 17:25:30 CET; 2min 56s ago 
-   CGroup: /system.slice/xinetd.service 
-           └─6351 /usr/sbin/xinetd -pidfile /run/xinetd.pid -stayalive -inetd_compat -inetd_ipv6 
- 
-févr. 04 17:25:30 C-3PO xinetd[6351]: removing daytime 
-févr. 04 17:25:30 C-3PO xinetd[6351]: removing daytime 
-févr. 04 17:25:30 C-3PO xinetd[6351]: removing discard 
-févr. 04 17:25:30 C-3PO xinetd[6351]: removing discard 
-févr. 04 17:25:30 C-3PO xinetd[6351]: removing echo 
-févr. 04 17:25:30 C-3PO xinetd[6351]: removing echo 
-févr. 04 17:25:30 C-3PO xinetd[6351]: removing time 
-févr. 04 17:25:30 C-3PO xinetd[6351]: removing time 
-févr. 04 17:25:30 C-3PO xinetd[6351]: xinetd Version 2.3.15 started with libwrap loadavg options compiled in. 
-févr. 04 17:25:30 C-3PO xinetd[6351]: Started working: 0 available services 
-</code> 
-</hidden> 
- 
-On redémarre le service xinetd et on vérifie qu'il écoute bien sur le port SSH par défaut : 
-<code bash> 
-    # service xinetd restart 
-    # netstat -lptn | grep xinetd 
-    tcp        0      0 0.0.0.0:22              0.0.0.0:              LISTEN      4426/xinetd  
-</code> 
- 
-On peut maintenant essayer de se connecter sans spécifier de port (donc tenter une connexion sur le port 22 ou Xinetd écoute) : 
-(en local) :  
-<code bash> 
-    # ssh 127.0.0.1 
-    ^C 
-</code> 
- 
-(sur le serveur) : 
-<code bash> 
-    # cat /var/log/thpot/captures 
-    févr. 04 17:30:38 SID=589601AEBFC6C.nullresp PID=6419 SRC=127.0.0.1 SPT=41690 ET=00:00:05 BYTES=39 
-</code> 
- 
-Ok, la première partie marche! On regarde maintenant pour utiliser Fail2ban avec ça. (ATTENTION : On ne doit pas modifier le fichier "jail.conf" mais uniquement le fichier "jail.local" !) On fait donc une copie de jail.conf => jail.local : 
-<code bash> 
-    # cp -v /etc/fail2ban/jail.conf /etc/fail2ban/jail.local 
-‘/etc/fail2ban/jail.conf’ -> ‘/etc/fail2ban/jail.local’ 
- 
-    # vim /etc/fail2ban/jail.local 
-    # cat /etc/fail2ban/jail.local 
-        (...) 
-        [ssh] 
-        enabled  = true 
-        port     = xxxx 
-        filter   = sshd 
-        logpath  = /var/log/auth.log 
-        maxretry = 6 
-     
-    #SLF: (voir https://www.howtoforge.com/tutorial/increase-ipv4-security-with-fail2ban-and-tinyhoneypot-on-debian-jessie/ ) 
-        [thp-ssh] 
-        enabled  = true 
-        port     = all 
-        filter   = thpot 
-        logpath  = /var/log/thpot/captures 
-        banaction = iptables-allports 
-        maxretry = 1 
-        findtime = 1800 
-        bantime  = 10800 
-        (...) 
-</code> 
- 
-**note**: J'ai mis un bantime relativement court au départ (3600 secondes) le temps de tester que tout fonctionne bien. Au pire je suis banni juste une heure si je fais une bêtise...  
-[Edit: j'ai mis 10800s pour le bantime à présent, je vais probablement augmenter encore dans les prochains jours. 
- 
-On rajoute le filtre fail2ban pour Tiny Honeypot : 
-<code bash> 
-    # vim /etc/fail2ban/filter.d/thpot.local 
-    # cat /etc/fail2ban/filter.d/thpot.local 
-        # Fail2Ban configuration file for Tiny Honeypot 
-        [Definition] 
-        # patern :  
-        # Mar 02 13:28:06 SID=56D6DC56E6F47.nullresp PID=4437 SRC=xxx.xxx.xxx.xxx SPT=45797 ET=00:00:09 BYTES=39 
-        # Mar 02 13:44:25 SID=56D6E02951E5.nullresp PID=4566 SRC=yyy.yyy.yyy.yyy SPT=44993 ET=00:00:04 
- 
-        failregex   = .* SRC=<HOST> .* 
-        ignoreregex = 
-</code> 
- 
-On peut tester si les regex de fail2ban fonctionnent bien : 
-<code bash> 
-    # fail2ban-regex /var/log/thpot/captures /etc/fail2ban/filter.d/thpot.local  
-     
-    Running tests 
-    ============= 
-    Use   failregex file : /etc/fail2ban/filter.d/thpot.local 
-    Use         log file : /var/log/thpot/captures 
-     
-    Results 
-    ======= 
-    Failregex: 86 total 
-    |-  #) [# of hits] regular expression 
-    |   1) [86] .* SRC=<HOST> .* 
-    `- 
-    Ignoreregex: 0 total 
-     
-    Date template hits: 
-    |- [# of hits] date format 
-    |  [86] MONTH Day Hour:Minute:Second 
-    `- 
-     
-    Lines: 86 lines, 0 ignored, 86 matched, 0 missed 
-</code> 
- 
-On redémarre ensuite le service fail2ban et on regarde ses logs et son statut : 
-<code bash> 
-    # service fail2ban restart 
-    # cat /var/log/fail2ban.log  
-    2016-03-02 14:49:40,128 fail2ban.server [4862]: INFO    Stopping all jails 
-    2016-03-02 14:49:40,240 fail2ban.jail   [4862]: INFO    Jail 'ssh' stopped 
-    2016-03-02 14:49:41,244 fail2ban.jail   [4862]: INFO    Jail 'thp-ssh' stopped 
-    2016-03-02 14:49:41,245 fail2ban.server [4862]: INFO    Exiting Fail2ban 
-    2016-03-02 14:49:41,796 fail2ban.server [4934]: INFO    Changed logging target to /var/log/fail2ban.log for Fail2ban v0.8.13 
-    2016-03-02 14:49:41,797 fail2ban.jail   [4934]: INFO    Creating new jail 'ssh' 
-    2016-03-02 14:49:41,817 fail2ban.jail   [4934]: INFO    Jail 'ssh' uses pyinotify 
-    2016-03-02 14:49:41,833 fail2ban.jail   [4934]: INFO    Initiated 'pyinotify' backend 
-    2016-03-02 14:49:41,834 fail2ban.filter [4934]: INFO    Added logfile = /var/log/auth.log 
-    2016-03-02 14:49:41,835 fail2ban.filter [4934]: INFO    Set maxRetry = 6 
-    2016-03-02 14:49:41,836 fail2ban.filter [4934]: INFO    Set findtime = 600 
-    2016-03-02 14:49:41,837 fail2ban.actions[4934]: INFO    Set banTime = 600 
-    2016-03-02 14:49:41,865 fail2ban.jail   [4934]: INFO    Creating new jail 'thp-ssh' 
-    2016-03-02 14:49:41,865 fail2ban.jail   [4934]: INFO    Jail 'thp-ssh' uses pyinotify 
-    2016-03-02 14:49:41,868 fail2ban.jail   [4934]: INFO    Initiated 'pyinotify' backend 
-    2016-03-02 14:49:41,869 fail2ban.filter [4934]: INFO    Added logfile = /var/log/thpot/captures 
-    2016-03-02 14:49:41,870 fail2ban.filter [4934]: INFO    Set maxRetry = 1 
-    2016-03-02 14:49:41,871 fail2ban.filter [4934]: INFO    Set findtime = 1800 
-    2016-03-02 14:49:41,871 fail2ban.actions[4934]: INFO    Set banTime = 3600 
-    2016-03-02 14:49:41,876 fail2ban.jail   [4934]: INFO    Jail 'ssh' started 
-    2016-03-02 14:49:41,880 fail2ban.jail   [4934]: INFO    Jail 'thp-ssh' started 
- 
-    # service fail2ban status 
-    ● fail2ban.service - LSB: Start/stop fail2ban 
-       Loaded: loaded (/etc/init.d/fail2ban) 
-       Active: active (running) since Wed 2016-03-02 14:49:41 CET;   8min ago 
-      Process: 4905 ExecStop=/etc/init.d/fail2ban stop (code=exited, status=0/SUCCESS) 
-      Process: 4922 ExecStart=/etc/init.d/fail2ban start (code=exited, status=0/SUCCESS) 
-       CGroup: /system.slice/fail2ban.service 
-               └─4934 /usr/bin/python /usr/bin/fail2ban-server -b -s /var/run/fail2ban/fail2ban.sock -p /var/run/fail2ban/fail2ban.pid 
- 
-    Mar 02 14:49:41 xxxxxx fail2ban[4922]: Starting authentication failure monitor: fail2ban. 
-</code> 
-Malgré un "failure monitor: fail2ban ..." ça fonctionne. Ma session active (dans un autre terminal) a même été dégagée. 
- 
-===== Tests ===== 
- 
-(en local vers 15h10 :) 
-<code bash> 
-    $ ssh xxx.xxx.xxx.xxx 
-    ^C 
-    $ ssh xxx.xxx.xxx.xxx 
-    ssh: connect to host xxx.xxx.xxx.xxx port 22: Connection refused 
-    $ ssh -p xxxx LOGIN@xxx.xxx.xxx.xxx 
-    ssh: connect to host xxx.xxx.xxx.xxx port xxxx: Connection refused 
-</code> 
-(dernière tentative à 15h16) 
- 
-Par contre, le ping marche toujours. Surprenant! 
- 
-Si on regarde les logs de fail2ban une fois qu'on est "débanni" du serveur, je remarque que j'ai déjà une "prise" 
-<code bash> 
-    # cat /var/log/fail2ban.log  
-    2016-03-02 15:23:22,329 fail2ban.actions[4934]: WARNING [thp-ssh] Ban 84.37.137.216 
-</code> 
- 
-Tiens, c'est pas moi ça ! La suite : http://links.simonlefort.be/?Cif-aA 
- 
-=== Bonus === 
-Pour voir les ports utilisés :  
-<code bash> 
-    # netstat -lptn 
-</code> 
tinyhoneypot.1486226157.txt.gz · Dernière modification : 2020/08/09 12:59 (modification externe)