Un peu de sécurité : fail2ban & firewall

On installe ufw :

apt-get install ufw

On vérifie que IPv6 est bien pris en charge dans le fichier :

nano /etc/default/ufw

Contient bien la ligne suivante, sinon on l'ajoute/modifie :

IPV6=yes

On met à jour les règles de base, et on le relance :

ufw allow from {ip locale} to any port {port ssh}
ufw default deny incoming
ufw default allow outgoing
ufw allow 80
ufw allow 443
ufw disable
ufw enable

On vérifie l'état :

ufw status
Status: active

To                         Action      From
--                         ------      ----
22022                      ALLOW       Anywhere
80                         ALLOW       Anywhere
443                        ALLOW       Anywhere
22022                      ALLOW       Anywhere (v6)
80                         ALLOW       Anywhere (v6)
443                        ALLOW       Anywhere (v6)

Visualisez les règles existantes :

ufw status verbose

Lister les règles avec numérotation :

ufw status numbered

Pour pouvoir simplement supprimer une règle via son ID :

ufw delete <ID>

Pour du iptables, on sera vers du :

iptables -A INPUT -p icmp -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 22022 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -P INPUT DROP

Et on installe et active le paquet iptables-persistent pour rendre les règles persistantes après redémarrage (d'où le nom) :

apt-get install iptables-persistent

On installe ensuite fail2ban :

apt install fail2ban

On édit la config :

nano /etc/fail2ban/jail.local

Et on ajoute/modifie :

[DEFAULT]
destemail = liandri@libox.fr
sendername = "Libox Fail2Ban"
sender = fail2ban@libox.fr
banaction = ufw

Aller configurer les différentes jails liées aux services :

nano /etc/fail2ban/jail.conf
[...]
#Exemple pour SSH
[ssh]
enabled  = true
port     = ssh
filter   = sshd
logpath  = /var/log/auth.log
maxretry = 3
[...]

Éditer le fichier contenant les chemins vers les fichiers de log, pour décommenter la ligne d'auth (commentée sous Debian 9) :

nano /etc/fail2ban/paths-debian.conf
[DEFAULT]
[...]
syslog_auth = /var/log/auth.log
[...]

Voir les cons bloqués :

iptables -L -n

Si dans le rapport Logwatch, vous retrouvez la ligne : Jail sshd is not a JournalFilter instance, il suffit juste de modifier la façon d'agir de Fail2ban.
On commence par modifier/ajouter la ligne backend = auto dans le fichier /etc/fail2ban/jail.local :

nano /etc/fail2ban/jail.local
[DEFAULT]
[...]
#backend auto
backend gamin
[...]

On installe ensuite le paquet gamin si pas installé, et on relance Fail2ban :

apt-get install gamin
service fail2ban restart

Débloquer une IP

fail2ban-client set JAIL unbanip IP

Exemple :

fail2ban-client set nextcloud unbanip 45.21.98.65

Tester une regex

fail2ban-regex /mon/fichier/log.log /etc/fail2ban/filter.d/mon-filtre.conf regex

Exemple :

fail2ban-regex /var/www/nextcloud/data/nextcloud.log /etc/fail2ban/filter.d/nextcloud.conf <IP>

Un peu plus de sécurité : logwatch

On installe :

apt-get install logwatch

On configure logwatch :

nano /usr/share/logwatch/default.conf/logwatch.conf

On ajoute/modifie les infos suivantes :

Format = html
MailTo = liandri@libox.fr
MailFrom = logwatch@libox.fr
Detail = High

On configure la tâche :

nano /etc/cron.daily/00logwatch

Et on ajoute/édite la ligne :

/usr/sbin/logwatch --mailto liandri@libox.fr --detail high

Bonus log : logrotate

On édite le fichier de l'application à suivre (FreshRSS par exemple) :

nano /etc/logrotate.d/freshrss
/var/www/freshrss/data/users/Liandri/log.txt {
        weekly
        missingok
        rotate 8
        compress
        notifempty
        create 640 www-data www-data
}

Sécurité : recevoir un mail lorsque quelqu’un se connecte

Pour être averti dès que quelqu’un se connecte en ssh, via https://framacloud.org/fr/auto-hebergement/divers.html#recevoir-un-mail-lorsque-quelquun-se-connecte

nano /etc/ssh/sshrc
#!/bin/sh
# source: http://blog.uggy.org/post/2009/06/05/...
DATE=`date "+%d.%m.%Y--%Hh%Mm"`
IP=`echo $SSH_CONNECTION | awk '{print $1}'`
REVERSE=`dig -x $IP +short`
echo "Connexion de $USER sur $HOSTNAME
IP: $IP
ReverseDNS: $REVERSE
Date: $DATE

" | mail -s "Connexion de $USER sur $HOSTNAME" test@libox.fr

Avec Sendmail :

#!/bin/sh
# source: http://blog.uggy.org/post/2009/06/05/...
DATE=`date "+%d.%m.%Y--%Hh%Mm"`
IP=`echo $SSH_CONNECTION | awk '{print $1}'`
REVERSE=`dig -x $IP +short`
echo "To: test@libox.fr
Subject: Connexion de $USER sur $HOSTNAME
From: test@libox.fr

Connexion de $USER sur $HOSTNAME
IP: $IP
ReverseDNS: $REVERSE
Date: $DATE

" | sendmail -v test@libox.fr

AppArmor

apt-get install apparmor-utils

Checkup :

apparmor_status

Plus : https://www.howtogeek.com/118328/how-to-create-apparmor-profiles-to-lock-down-programs-on-ubuntu/

Paquets bonus

Quelques paquets sécurité/monitoring supplémentaires :

apt-get install iotop htop sysstat net-tools

Avec accès rapide à :

# Qui est log
w
# derniers logins
last
# kernel logs
dmesg
# Utilisation RAM
free -m
# uptime
uptime
# Processus
htop
# disk IO
iotop
# Connexions réseau
netstat -pant
# Utilisation disque
df -h

RAR & 7zip pour la compression

wget http://www.rarlab.com/rar/rarlinux-x64-5.5.b5.tar.gz
tar xvf rarlinux-x64-5.5.b5.tar.gz
cd rar/
make

On peut compléter avec :

ln -s /usr/local/bin/rar /usr/bin/rar
ln -s /usr/local/bin/unrar /usr/bin/unrar

7z :

apt-get install p7zip-full
  • system/linux/debian/2-security.txt
  • Dernière modification: 2023/08/05 16:22
  • (modification externe)