07_Sécurisation
Mise à jour
apt update && apt upgrade -y
Vérifier / créer l’utilisateur Nagios
id nagios || useradd -r -s /usr/sbin/nologin nagios
Script iptables complet
Créer :
nano /root/iptables-nagios.sh
#!/bin/bash
### RESET ###
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
### POLITIQUES PAR DÉFAUT ###
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
### LOOPBACK ###
iptables -A INPUT -i lo -j ACCEPT
### CONNEXIONS EXISTANTES ###
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
### ANTI-SCAN (SYN flood, Xmas, Null) ###
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
### RATE-LIMIT ANTI-BRUTEFORCE SSH ###
iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -m limit --limit 3/min --limit-burst 5 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP
### HTTPS (Nagios) ###
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
### HTTP (uniquement pour redirection vers HTTPS) ###
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
### LOG DES BLOQUÉS ###
iptables -A INPUT -j LOG --log-prefix "IPTABLES DROP: " --log-level 4
Rendre exécutable :
chmod +x /root/iptables-nagios.sh
/root/iptables-nagios.sh
Rendre les règles persistantes
apt install iptables-persistent -y
netfilter-persistent save
Installer knockd
apt install knockd -y
Configurer knockd
Éditer :
nano /etc/knockd.conf
Exemple :
[options]
logfile = /var/log/knockd.log
[openSSH]
sequence = 7000,8000,9000
seq_timeout = 5
command = /sbin/iptables -I INPUT -p tcp --dport 22 -j ACCEPT
tcpflags = syn
[closeSSH]
sequence = 9000,8000,7000
seq_timeout = 5
command = /sbin/iptables -D INPUT -p tcp --dport 22 -j ACCEPT
tcpflags = syn
Activer knockd :
systemctl enable knockd
systemctl restart knockd
Utilisation
Depuis ton poste :
knock IP_DU_SERVEUR 7000 8000 9000
ssh user@IP_DU_SERVEUR
Pour refermer :
knock IP_DU_SERVEUR 9000 8000 7000
Fail2ban (Apache + SSH + Nagios)
apt install fail2ban -y
Jail Apache (auth Nagios)
Créer :
nano /etc/fail2ban/jail.d/apache-nagios.conf
[apache-auth]
enabled = true
port = http,https
filter = apache-auth
logpath = /var/log/apache2/*error.log
maxretry = 5
bantime = 3600
Jail SSH
Créer :
nano /etc/fail2ban/jail.d/ssh-hard.conf
[sshd]
enabled = true
port = 22
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 7200
findtime = 600
Redémarrer :
systemctl restart fail2ban
Authentification Apache
Dans /etc/apache2/sites-available/nagios.conf :
AuthType Basic
AuthName "Nagios Access"
AuthUserFile /usr/local/nagios/etc/htpasswd.users
Require valid-user
Créer l’utilisateur :
htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
HTTPS obligatoire
Activer SSL :
a2enmod ssl rewrite
systemctl restart apache2
Créer le vhost HTTPS :
nano /etc/apache2/sites-available/nagios-ssl.conf
(Je peux te générer une version complète si tu veux.)
Activer :
a2ensite nagios-ssl.conf
systemctl reload apache2
Sécurisation Nagios (permissions + CGI)
chown -R nagios:nagios /usr/local/nagios
chmod -R o-rwx /usr/local/nagios
Désactiver les commandes externes
Dans nagios.cfg :
check_external_commands=0
Sécuriser NRPE / agents
NRPE client :
use_ssl=1
allowed_hosts=IP_DU_SERVEUR_NAGIOS