tinyhoneypot
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
tinyhoneypot [2017/02/19 14:28] – [Tinyhoneypot] simon | tinyhoneypot [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:// | ||
- | |||
- | Dernière mise à jour : **19 février 2017** | ||
- | |||
- | <WRAP center round important 60%> | ||
- | J'ai eu un problème avec la regex de fail2ban qui ne " | ||
- | </ | ||
- | |||
- | ===== 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 bash> | ||
- | Lecture des listes de paquets... Fait | ||
- | Construction de l' | ||
- | Lecture des informations d' | ||
- | 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' | ||
- | Souhaitez-vous continuer ? [O/n] | ||
- | </ | ||
- | </ | ||
- | |||
- | Copie d'un exemple de configuration : | ||
- | <code bash> | ||
- | # cp -v / | ||
- | ‘/ | ||
- | </ | ||
- | |||
- | Modification de la configuration copiée juste avant : | ||
- | <code bash> | ||
- | # vim / | ||
- | # cat / | ||
- | # default: on | ||
- | # description: | ||
- | # resulting in an ftpd emulation. | ||
- | | ||
- | service thp-pasv | ||
- | { | ||
- | type = UNLISTED | ||
- | socket_type | ||
- | protocol | ||
- | port = 22 | ||
- | wait = no | ||
- | user = thpot | ||
- | server = / | ||
- | server_args | ||
- | nice = 10 | ||
- | disable = no | ||
- | instances | ||
- | per_source = 1 | ||
- | } | ||
- | </ | ||
- | |||
- | On regarde le statut du service xinetd : | ||
- | <code bash> | ||
- | # service xinetd status | ||
- | </ | ||
- | < | ||
- | <code bash>● xinetd.service - LSB: Starts or stops the xinetd daemon. | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | |||
- | févr. 04 17:25:30 C-3PO xinetd[6351]: | ||
- | févr. 04 17:25:30 C-3PO xinetd[6351]: | ||
- | févr. 04 17:25:30 C-3PO xinetd[6351]: | ||
- | févr. 04 17:25:30 C-3PO xinetd[6351]: | ||
- | févr. 04 17:25:30 C-3PO xinetd[6351]: | ||
- | févr. 04 17:25:30 C-3PO xinetd[6351]: | ||
- | févr. 04 17:25:30 C-3PO xinetd[6351]: | ||
- | févr. 04 17:25:30 C-3PO xinetd[6351]: | ||
- | févr. 04 17:25:30 C-3PO xinetd[6351]: | ||
- | févr. 04 17:25:30 C-3PO xinetd[6351]: | ||
- | </ | ||
- | </ | ||
- | |||
- | 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: | ||
- | </ | ||
- | |||
- | 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 | ||
- | </ | ||
- | |||
- | (sur le serveur) : | ||
- | <code bash> | ||
- | # cat / | ||
- | févr. 04 17:30:38 SID=589601AEBFC6C.nullresp PID=6419 SRC=127.0.0.1 SPT=41690 ET=00:00:05 BYTES=39 | ||
- | </ | ||
- | |||
- | Ok, la première partie marche! On regarde maintenant pour utiliser Fail2ban avec ça. (ATTENTION : On ne doit pas modifier le fichier " | ||
- | <code bash> | ||
- | # cp -v / | ||
- | ‘/ | ||
- | |||
- | # vim / | ||
- | # cat / | ||
- | (...) | ||
- | [ssh] | ||
- | enabled | ||
- | port = xxxx | ||
- | filter | ||
- | logpath | ||
- | maxretry = 6 | ||
- | | ||
- | #SLF: (voir https:// | ||
- | [thp-ssh] | ||
- | enabled | ||
- | port = all | ||
- | filter | ||
- | logpath | ||
- | banaction = iptables-allports | ||
- | maxretry = 1 | ||
- | findtime = 300 | ||
- | bantime | ||
- | (...) | ||
- | </ | ||
- | |||
- | **note**: J'ai mis un bantime relativement court au départ (600 secondes) le temps de tester que tout fonctionne bien. Au pire je suis banni juste 10 minutes si je fais une bêtise... Une fois que tout fonctionne bien, il faut augmenter le temps de ban. | ||
- | |||
- | On rajoute le filtre fail2ban pour Tiny Honeypot : | ||
- | <code bash> | ||
- | # vim / | ||
- | # cat / | ||
- | # 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 | ||
- | ignoreregex = | ||
- | </ | ||
- | |||
- | On peut tester si les regex de fail2ban fonctionnent bien : | ||
- | <code bash> | ||
- | # fail2ban-regex / | ||
- | | ||
- | Running tests | ||
- | ============= | ||
- | Use | ||
- | Use log file : / | ||
- | | ||
- | Results | ||
- | ======= | ||
- | Failregex: 86 total | ||
- | |- #) [# of hits] regular expression | ||
- | | 1) [86] .* SRC=< | ||
- | `- | ||
- | Ignoreregex: | ||
- | | ||
- | Date template hits: | ||
- | |- [# of hits] date format | ||
- | | [86] MONTH Day Hour: | ||
- | `- | ||
- | | ||
- | Lines: 86 lines, 0 ignored, 86 matched, 0 missed | ||
- | </ | ||
- | |||
- | On redémarre ensuite le service fail2ban et on regarde ses logs et son statut : | ||
- | <code bash> | ||
- | # service fail2ban restart | ||
- | # cat / | ||
- | 2016-03-02 14: | ||
- | 2016-03-02 14: | ||
- | 2016-03-02 14: | ||
- | 2016-03-02 14: | ||
- | 2016-03-02 14: | ||
- | 2016-03-02 14: | ||
- | 2016-03-02 14: | ||
- | 2016-03-02 14: | ||
- | 2016-03-02 14: | ||
- | 2016-03-02 14: | ||
- | 2016-03-02 14: | ||
- | 2016-03-02 14: | ||
- | 2016-03-02 14: | ||
- | 2016-03-02 14: | ||
- | 2016-03-02 14: | ||
- | 2016-03-02 14: | ||
- | 2016-03-02 14: | ||
- | 2016-03-02 14: | ||
- | 2016-03-02 14: | ||
- | 2016-03-02 14: | ||
- | 2016-03-02 14: | ||
- | |||
- | # service fail2ban status | ||
- | ● fail2ban.service - LSB: Start/stop fail2ban | ||
- | | ||
- | | ||
- | Process: 4905 ExecStop=/ | ||
- | Process: 4922 ExecStart=/ | ||
- | | ||
- | | ||
- | |||
- | Mar 02 14:49:41 xxxxxx fail2ban[4922]: | ||
- | </ | ||
- | Malgré un " | ||
- | |||
- | ===== 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 | ||
- | </ | ||
- | (dernière tentative à 15h16) | ||
- | |||
- | Par contre, le ping marche toujours. Surprenant! | ||
- | |||
- | Si on regarde les logs de fail2ban une fois qu'on est " | ||
- | <code bash> | ||
- | # cat / | ||
- | 2016-03-02 15: | ||
- | </ | ||
- | |||
- | Tiens, c'est pas moi ça ! La suite : http:// | ||
- | |||
- | === Bonus === | ||
- | Pour voir les ports utilisés : | ||
- | <code bash> | ||
- | # netstat -lptn | ||
- | </ |
tinyhoneypot.1487514526.txt.gz · Dernière modification : 2020/08/09 12:59 (modification externe)