Wiki » Historique » Version 6
Eric Seigne, 09/07/2021 12:33
1 | 1 | Eric Seigne | # Wiki |
---|---|---|---|
2 | |||
3 | 3 | Eric Seigne | fail2band : une api qui permet de [[remonter ses ip bannies]] et de les télécharger depuis ses autres serveurs ... voir à terme de les partager avec d'autres utilisateurs ... |
4 | 2 | Eric Seigne | |
5 | 4 | Eric Seigne | Pour l'instant l'idée est la suivante: |
6 | * un utilisateur (administrateur) créé autant de clé d'API qu'il a de serveur sur lesquels fail2ban tournent |
||
7 | * il ne faut surtout pas utiliser la même clé d'API sur 2 serveurs, car c'est un élément qui permet de ne pas "boucler" (ie renvoyer la blacklist du serveur 1 sur serveur 1) |
||
8 | * l'administrateur se connecte sur le panneau d'admin fail2band.com pour créer ses clés d'api et : |
||
9 | * un script "push" permet d'envoyer ses données vers le serveur |
||
10 | * un script "pull" permet de télécharger la blacklist |
||
11 | 1 | Eric Seigne | |
12 | 6 | Eric Seigne | ## Configuration initiale |
13 | |||
14 | Directement sur votre serveur, téléchargez l'assistant de configuration https://projets.cap-rel.fr/projects/fail2band/repository/webservice-fail2band/revisions/master/raw/tools/fail2band_setup.sh et lancez le : il créé votre compte utilisateur et si vous en avez déjà un vous génère la clé d'accès à l'api pour le serveur et créé le fichier de configuration /etc/fail2band/config ! |
||
15 | |||
16 | 4 | Eric Seigne | ## Configuration pour un nouveau serveur (uploader sa blacklist) |
17 | 3 | Eric Seigne | |
18 | 1 | Eric Seigne | * 1. Créer son compte sur https://fail2band.com/ |
19 | * 2. Créer une clé d'API pour ce serveur via la console web de https://fail2band.com (à terme le script CLI devra permettre de le faire direct sur le serveur "client") |
||
20 | 3 | Eric Seigne | * 3. Installer le script https://projets.cap-rel.fr/projects/fail2band/repository/webservice-fail2band/revisions/master/entry/tools/fail2band_push.sh |
21 | 6 | Eric Seigne | * 4. Installer https://projets.cap-rel.fr/projects/fail2band/repository/webservice-fail2band/revisions/master/entry/tools/fail2ban/action.d/fail2band.conf dans /etc/fail2ban/action.d/ |
22 | * 5. Modifier ses règles fail2ban pour ajouter fail2band dans les actions, par exemple ajout de fail2band pour inli-authlog: |
||
23 | 3 | Eric Seigne | |
24 | ``` |
||
25 | [inli-authlog] |
||
26 | enabled = true |
||
27 | filter = inli-authlog |
||
28 | banaction = %(banaction_allports)s |
||
29 | fail2band |
||
30 | protocol = all |
||
31 | logpath = /var/log/auth.log |
||
32 | 1 | Eric Seigne | maxretry = 1 |
33 | 3 | Eric Seigne | bantime = 2678400 |
34 | |||
35 | ``` |
||
36 | 6 | Eric Seigne | * 6. Relancer fail2ban et vérifier sur le fichier log local de fail2ban que les nouvelles IP bannies sont aussi "poussées" sur le serveur fail2band.com ... |
37 | 4 | Eric Seigne | |
38 | 1 | Eric Seigne | |
39 | ## Configuration pour télécharger sa blacklist depuis un autre serveur |
||
40 | 4 | Eric Seigne | |
41 | |||
42 | Rappel: le principe de base est que la blacklist est commune pour le compte utilisateur mais différentiée pour les clés d'api utilisées ... |
||
43 | |||
44 | * 1. Installer le script https://projets.cap-rel.fr/projects/fail2band/repository/webservice-fail2band/revisions/master/entry/tools/fail2band_pull.sh |
||
45 | 6 | Eric Seigne | * 2. Installer https://projets.cap-rel.fr/projects/fail2band/repository/webservice-fail2band/revisions/master/entry/tools/fail2ban/filter.d/fail2band-remote.conf dans /etc/fail2ban/filter.d/ |
46 | * 3. Installer https://projets.cap-rel.fr/projects/fail2band/repository/webservice-fail2band/revisions/master/entry/tools/fail2ban/jail.d/fail2band-remote.conf dans /etc/fail2ban/jail.d/ |
||
47 | * 4. Modifier/adapter le fichier de configuration de la prison, par exemple |
||
48 | 4 | Eric Seigne | |
49 | ``` |
||
50 | [fail2band-remote-ssh] |
||
51 | enabled = true |
||
52 | banaction = iptables-allports |
||
53 | filter = fail2band-remote |
||
54 | protocol = all |
||
55 | logpath = /var/log/fail2band-remote-ssh.log |
||
56 | maxretry = 1 |
||
57 | 1 | Eric Seigne | findtime = 1h |
58 | 4 | Eric Seigne | bantime = 1d |
59 | |||
60 | ``` |
||
61 | |||
62 | Important: vous voyez le suffixe "ssh" à fail2band-remote ? il est également sur le nom du fichier log à monitorer, c'est aussi le nom du filtre qu'on va envoyer à la requête réseau via le script pull |
||
63 | |||
64 | Ce suffixe correspond aux noms des collecteurs de vos règles fail2ban lors de l'envoi. Ainsi si vous envoyez des données de postfix-sasl vous pourrez télécharger uniquement les IP bannies par ce filtre ... |
||
65 | |||
66 | 6 | Eric Seigne | * 5. Relancer fail2ban et vérifier sur le fichier log local de fail2ban que tout marche bien |
67 | 4 | Eric Seigne | |
68 | 5 | Eric Seigne | Ensuite il faut que le fichier /var/log/fail2band-remote-ssh.log se remplisse à partir de la base centrale ... il faut lancer le script fail2band_pull.sh via un cron par exemple, dans le futur on regardera de plus près les websockets ou autres bricoles permises par http2 |
69 | |||
70 | |||
71 | 1 | Eric Seigne | ``` |
72 | 5 | Eric Seigne | /usr/local/bin/fail2band_pull.sh ssh |
73 | 4 | Eric Seigne | ``` |