Skip to main content

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