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 : (modification externe)
