Wiki » Historique » Révision 6
Révision 5 (Eric Seigne, 08/07/2021 19:43) → Révision 6/18 (Eric Seigne, 09/07/2021 12:33)
# Wiki
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 ...
Pour l'instant l'idée est la suivante:
* un utilisateur (administrateur) créé autant de clé d'API qu'il a de serveur sur lesquels fail2ban tournent
* 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)
* l'administrateur se connecte sur le panneau d'admin fail2band.com pour créer ses clés d'api et :
* un script "push" permet d'envoyer ses données vers le serveur
* un script "pull" permet de télécharger la blacklist
## Configuration initiale
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 !
## Configuration pour un nouveau serveur (uploader sa blacklist)
* 1. Créer son compte sur https://fail2band.com/
* 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")
* 3. Installer le script https://projets.cap-rel.fr/projects/fail2band/repository/webservice-fail2band/revisions/master/entry/tools/fail2band_push.sh
* 4. Ouvrir le script et ajouter les infos ad-hoc dans la partie configuration (api, ip)
* 5. 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/
* 5. 6. Modifier ses règles fail2ban pour ajouter fail2band dans les actions, par exemple ajout de fail2band pour inli-authlog:
```
[inli-authlog]
enabled = true
filter = inli-authlog
banaction = %(banaction_allports)s
fail2band
protocol = all
logpath = /var/log/auth.log
maxretry = 1
bantime = 2678400
```
* 6. 7. 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 ...
## Configuration pour télécharger sa blacklist depuis un autre serveur
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 ...
* 1. Installer le script https://projets.cap-rel.fr/projects/fail2band/repository/webservice-fail2band/revisions/master/entry/tools/fail2band_pull.sh
* 2. Ouvrir le script et ajouter les infos ad-hoc dans la partie configuration (api, ip)
* 3. 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/
* 3. 4. 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/
* 4. 5. Modifier/adapter le fichier de configuration de la prison, par exemple
```
[fail2band-remote-ssh]
enabled = true
banaction = iptables-allports
filter = fail2band-remote
protocol = all
logpath = /var/log/fail2band-remote-ssh.log
maxretry = 1
findtime = 1h
bantime = 1d
```
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
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 ...
* 5. 6. Relancer fail2ban et vérifier sur le fichier log local de fail2ban que tout marche bien
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
```
/usr/local/bin/fail2band_pull.sh ssh
```
Go to top
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 ...
Pour l'instant l'idée est la suivante:
* un utilisateur (administrateur) créé autant de clé d'API qu'il a de serveur sur lesquels fail2ban tournent
* 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)
* l'administrateur se connecte sur le panneau d'admin fail2band.com pour créer ses clés d'api et :
* un script "push" permet d'envoyer ses données vers le serveur
* un script "pull" permet de télécharger la blacklist
## Configuration initiale
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 !
## Configuration pour un nouveau serveur (uploader sa blacklist)
* 1. Créer son compte sur https://fail2band.com/
* 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")
* 3. Installer le script https://projets.cap-rel.fr/projects/fail2band/repository/webservice-fail2band/revisions/master/entry/tools/fail2band_push.sh
* 4. Ouvrir le script et ajouter les infos ad-hoc dans la partie configuration (api, ip)
* 5. 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/
* 5. 6. Modifier ses règles fail2ban pour ajouter fail2band dans les actions, par exemple ajout de fail2band pour inli-authlog:
```
[inli-authlog]
enabled = true
filter = inli-authlog
banaction = %(banaction_allports)s
fail2band
protocol = all
logpath = /var/log/auth.log
maxretry = 1
bantime = 2678400
```
* 6. 7. 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 ...
## Configuration pour télécharger sa blacklist depuis un autre serveur
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 ...
* 1. Installer le script https://projets.cap-rel.fr/projects/fail2band/repository/webservice-fail2band/revisions/master/entry/tools/fail2band_pull.sh
* 2. Ouvrir le script et ajouter les infos ad-hoc dans la partie configuration (api, ip)
* 3. 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/
* 3. 4. 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/
* 4. 5. Modifier/adapter le fichier de configuration de la prison, par exemple
```
[fail2band-remote-ssh]
enabled = true
banaction = iptables-allports
filter = fail2band-remote
protocol = all
logpath = /var/log/fail2band-remote-ssh.log
maxretry = 1
findtime = 1h
bantime = 1d
```
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
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 ...
* 5. 6. Relancer fail2ban et vérifier sur le fichier log local de fail2ban que tout marche bien
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
```
/usr/local/bin/fail2band_pull.sh ssh
```