OpenVPN: log et fail2ban

Récemment, j’ai eu à monter un serveur OpenVPN.

Personnellement, quand je monte ce type de services, j’aime bien avoir trois choses:

  • un moyen de bloquer les bourrins qui tentent de brute-forcer le service (en général, fail2ban fait bien le boulot);
  • un moyen d’avoir des logs lisibles rapidement/facilement (logwatch) ;
  • un moyen de ne pas avoir des fichiers de logs de 12km de longs (logrotate).

Le problème, c’est que par défaut, ces outils ne gèrent pas ou mal OpenVPN. Cet article n’explique pas comment installer et configurer un serveur VPN, juste comment configurer logrotate, fail2ban et logwatch.

Un peu de conf dans OpenVPN:

Je préfère que OpenVPN écrive dans ses propres fichiers de logs plutôt que dans syslog, je fais ça comme ça:

### dans /etc/openvpn/monVPN.conf:
# ...
## logs:
status /var/log/openvpn/status.log
log-append  /var/log/openvpn/server.log
verb 3
mute 10
# ...

Logrotate:

C’est tous simple, il suffit de rajouter un fichier opevpn.conf dans /etc/logrotate.d/:

/var/log/openvpn/*.log
{
    weekly
    rotate 52
    missingok
    notifempty
    delaycompress
    compress
    copytruncate
}

Avec le copytruncate, on évite de planter OpenVPN en voulant le faire redémarrer par logrotate.

Fail2Ban:

À peine plus compliqué:

  • on rajoute un filtre openvpn.conf dans /etc/fail2ban/filter.d/:
[Definition]
ignoreregex =
failregex = <HOST>:\d{1,5} TLS Auth Error
    <HOST>:\d{1,5} VERIFY ERROR:
    <HOST>:\d{1,5} TLS Error: TLS handshake failed
  • et un petit bloc de configuration dans /etc/fail2ban/jail.local:
[openvpn]
enabled = true
protocol = udp
port    = 1194
filter    = openvpn
logpath = /var/log/openvpn/server.log

Logwatch:

Là, c’est un peu plus compliqué: il faut modifier le script qui parse les logs, ajouter un script pour filtrer correctement les dates et configurer le tout.

Tout ce passe dans /etc/logwatch/:

  • scripts/shared/applyopenvpndate: ce script est téléchargeable ;
  • scripts/services/openvpn: ce script est ;
  • conf/logfiles/openvpn.conf:
LogFile = /var/log/openvpn/server.log
Archive = /var/log/openvpn/server.log.*
  • conf/services/openvpn.conf:
Title = "OpenVPN"
LogFile = openvpn
*ApplyOpenVPNDate
*RemoveHeaders =
$openvpn_ip_lookup = No

 

One thought on “OpenVPN: log et fail2ban

  1. Pingback: Block unauthorized OpenVPN logins using fail2ban « http://blogs.fsfe.org/stefan.a/

Comments are closed.