Guillaume Vaillant : OpenVPN: log et fail2ban
lundi 6 janvier 2014 à 12:00Ré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] failregex =:\\d{1,5} TLS Auth Error :\\d{1,5} VERIFY ERROR: :\\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 là ;
- scripts/services/openvpn: ce script est là ;
- 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
Original post of Guillaume Vaillant.Votez pour ce billet sur Planet Libre.
Articles similaires
- Guillaume Vaillant : Cryptage de partitions sous Linux (04/07/2012)
- Guillaume Vaillant : Install et conf de base d’une Debian (14/06/2012)
- Guillaume Vaillant : Appliquer automatiquement les mises à jour de sécurité de Debian (05/12/2012)
- Guillaume Vaillant : utilisation d’un serveur LDAP comme source d’authentification pour des utilisateurs virtuels (04/10/2012)
- Guillaume Vaillant : Faire rapidement une clef d’install Debian (07/10/2011)