tinyhoneypot
Différences
Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
tinyhoneypot [2017/02/04 16:35] – créée 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 : **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 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 = 1800 | ||
- | bantime | ||
- | (...) | ||
- | </ | ||
- | |||
- | **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 / | ||
- | # 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.1486226157.txt.gz · Dernière modification : 2020/08/09 12:59 (modification externe)