# fail2ban pour sshd avec systemd ne fonctionne pas

## Alela

Bonjour,

J'essaye de faire fonctionner fail2ban pour ralentir les attaques par ssh. Le soucis est que les filtres ou ma configuration ne fonctionnent pas.

Ma configuration de fail2ban est la suivante :

/etc/fail2ban/jail.local :

```
[DEFAULT]

ignoreip = 172.0.0.1/32 192.168.0.1/24

backend = systemd
```

/etc/fail2ban/jail.d/sshd.conf :

```
# fail2ban SSH

# block ssh after 5 unsuccessful login attempts for 10 minutes

[sshd]

enabled  = true

action   = iptables[chain=INPUT, protocol=tcp, port=22, name=sshd]

maxRetry = 5

findtime = 600

bantime  = 600

port     = 22
```

Je n'ai touché à aucun autre fichier.

Quand je teste ma configuration, le résultat est le suivant :

```
# fail2ban-regex systemd-journal /etc/fail2ban/filter.d/sshd.conf 

Running tests

=============

Use   failregex file : /etc/fail2ban/filter.d/sshd.conf

Use         maxlines : 10

Use    journal match : _SYSTEMD_UNIT=sshd.service

Results

=======

Failregex: 4 total

|-  #) [# of hits] regular expression

|   5) [4] ^\s*(<[^.]+\.[^.]+>)?\s*(?:\S+ )?(?:kernel: \[ *\d+\.\d+\] )?(?:@vserver_\S+ )?(?:(?:\[\d+\])?:\s+[\[\(]?sshd(?:\(\S+\))?[\]\)]?:?|[\[\(]?sshd(?:\(\S+\))?[\]\)]?:?(?:\[\d+\])?:?)?\s(?:\[ID \d+ \S+\])?\s*[iI](?:llegal|nvalid) user .* from <HOST>\s*$

`-

Ignoreregex: 0 total

Lines: 12161 lines, 0 ignored, 4 matched, 12157 missed [processed in 11.76 sec]

Missed line(s): too many to print.  Use --print-all-missed to print all 12157 lines
```

fail2ban tourne bien, mais il ne trouve rien dans le journal alors que les attaques continuent de plus belle :

```
# fail2ban-client status sshd

Status for the jail: sshd

|- Filter

|  |- Currently failed:   0

|  |- Total failed:   259

|  `- Journal matches:   _SYSTEMD_UNIT=sshd.service + _COMM=sshd

`- Actions

   |- Currently banned:   0

   |- Total banned:   1

   `- Banned IP list:   
```

Auriez-vous une idée du problème dans ma configuration ?

----------

## El_Goretto

Essaie de lire la doc officielle de fail2ban (je viens de le faire à nouveau aujourd'hui à l'occasion du passage de la v0.8 en v0.9). En particuliers, tu verras qu'il ne faut pas modifier les fichiers en .conf mais faire un override avec des fichiers en .local. 

Il y a pas mal de choses qui ont bougé, comme la configuration par défaut (et si vous n'avez pas le support multiport d'iptables dans le noyau, ça va se voir du coup).

Ensuite, par tes tests, essaie de savoir si c'est ta configuration fail2ban qui est en cause ou bien si c'est un problème lié avec le backend systemd de fail2ban (que je n'utilise pas, holà non).

Et regarde aussi dans les logs de démarrage de fail2ban, tu ne les as pas posté.

----------

## Alela

Merci pour ta réponse El_Goretto.

En fait, je n'ai modifié aucun fichier de la configuration de base (comme écrit dans la doc). Le fichier /etc/fail2ban/jail.d/sshd.conf n'existait pas, je l'ai créé. Pour la forme, j'ai essayé ma configuration en le renommant en .local mais sans améliorations.

Au démarrage, je n'ai aucun message d'erreur :

```
déc. 01 18:39:00 yuna systemd[1]: Starting Fail2Ban Service...

déc. 01 18:39:00 yuna fail2ban-client[29470]: 2014-12-01 18:39:00,305 fail2ban.server         [29471]: INFO    Starting Fail2ban v0.9.1

déc. 01 18:39:00 yuna fail2ban-client[29470]: 2014-12-01 18:39:00,305 fail2ban.server         [29471]: INFO    Starting in daemon mode

déc. 01 18:39:00 yuna systemd[1]: Started Fail2Ban Service.
```

fail2ban tourne bien et le filtre sshd est bien en cours d'utilisation :

```
# fail2ban-client status

Status

|- Number of jail:   1

`- Jail list:   sshd
```

Je n'ai aucun message d'erreur. Tout semble fonctionner à merveille.

Je pense qu'il s'agit d'un problème avec le backend systemd qui n'est pas encore au point. J'ai l'impression que les expressions régulières utilisées ne sont pas adaptées. Pourtant, il y a eu des travaux de fait sur la dernière version (0.9.1) concernant systemd.

Une info supplémentaire :

```
# iptables -L 

Chain INPUT (policy ACCEPT)

target     prot opt source               destination         

f2b-sshd   tcp  --  anywhere             anywhere             tcp dpt:ssh

Chain FORWARD (policy ACCEPT)

target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)

target     prot opt source               destination         

Chain f2b-sshd (1 references)

target     prot opt source               destination         

RETURN     all  --  anywhere             anywhere           
```

----------

## Alela

Je n'avais pas vu ces lignes dans /var/log/fail2ban.log :

```
2014-11-30 12:54:36,841 fail2ban.transmitter    [1767]: WARNING Command ['sshd', 'status'] has failed. Received Exception('Invalid command',)

2014-11-30 13:11:04,774 fail2ban.transmitter    [1767]: WARNING Command ['sshd', 'journalmatch'] has failed. Received Exception('Invalid command',)
```

Ce que je ne comprends pas, c'est que la configuration a bien fonctionné à un moment :

```
2014-11-26 22:50:55,237 fail2ban.filter         [1767]: INFO    [sshd] Found 113.161.17.250

2014-11-26 22:50:56,176 fail2ban.actions        [1767]: NOTICE  [sshd] Ban 113.161.17.250

2014-11-26 22:50:58,396 fail2ban.filter         [1767]: INFO    [sshd] Found 113.161.17.250

2014-11-26 22:59:53,477 fail2ban.filter         [1767]: INFO    [sshd] Found 202.117.3.104

2014-11-26 23:00:57,035 fail2ban.actions        [1767]: NOTICE  [sshd] Unban 113.161.17.250

2014-11-26 23:30:05,084 fail2ban.filter         [1767]: INFO    [sshd] Found 202.117.3.104

2014-11-26 23:59:30,368 fail2ban.filter         [1767]: INFO    [sshd] Found 202.117.3.104
```

----------

## El_Goretto

Yep, j'allais te dire de regarder /var/log/fail2ban.log, car j'avais aussi la jail qui se lançait mais l'opération iptables échouait quand même, et il n'y a que là que ça se voyait.

Pour la partie backend systemd, je ne saurais t'aider malheureusement. 

Bon courage pour la suite, et n'hésite pas à partager tes réflexions et autres découvertes le long du chemin  :Wink: 

----------

