linuxaddict:administrer:securite

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
linuxaddict:administrer:securite [27/04/2018, 13:19] Claude Clerclinuxaddict:administrer:securite [10/02/2024, 19:09] (Version actuelle) Claude Clerc
Ligne 1: Ligne 1:
-{{tag>sécurité serveur Linux Fail2ban}}+{{tag>sécurité serveur Linux Fail2ban bash firewall}}
 ====== Sécuriser un serveur Linux ====== ====== Sécuriser un serveur Linux ======
  
Ligne 15: Ligne 15:
   lsof -p NUMERO_PID   lsof -p NUMERO_PID
 Les dernières lignes de cette longue liste permettent de déterminer précisément ce que fait le programme. Les dernières lignes de cette longue liste permettent de déterminer précisément ce que fait le programme.
 +
 +Pour obtenir le PID (//Process IDentifier//) de tout ce qui tourne sur votre machine :
 +  ps auxwww
 +
 +Par exemple, pour trouver le PID de geany (qui est affiché à l'écran) :
 +  ps auxwww | grep geany
 +retourne :
 +  <nom d'utilisateur>      4967  0.6  0.8 103446360 136824 ?    Sl   déc.20   5:00 geany
 +Le PID de geany est donc actuellement de 4967. Il changera à chaque lancement de geany.
 +
 +==== Quels sont les paquets concernés par ce programme ? ====
 +  dpkg -S UNE_PARTIE_DU_NOM_DU_PROGRAMME
 +
 +===== Firewall =====
 +<sxh bash>
 +#!/bin/sh
 +### Firewall ###
 +
 +case "$1" in
 +
 +start|restart|reload|force-reload)
 +# Réinitialise les règles
 +iptables -t filter -F
 +iptables -t filter -X
 +
 +# Bloque tout le trafic
 +iptables -t filter -P INPUT DROP
 +iptables -t filter -P FORWARD DROP
 +iptables -t filter -P OUTPUT DROP
 +
 +# Autorise toute connexion avec l'IP VOTRE_IP_PUBLIQUE_PERSO
 +iptables -t filter -A INPUT -s VOTRE_IP_PUBLIQUE_PERSO -j ACCEPT
 +iptables -t filter -A OUTPUT -d VOTRE_IP_PUBLIQUE_PERSO -j ACCEPT
 +
 +# Limiter les risques de flood (limite à 1 connexion par seconde)
 +iptables -A FORWARD -p tcp --syn -m limit --limit 1/second -j ACCEPT
 +iptables -A FORWARD -p udp -m limit --limit 1/second -j ACCEPT
 +iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/second -j ACCEPT
 +
 +# Autorise les connexions déjà établies et localhost
 +iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
 +iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
 +iptables -t filter -A INPUT -i lo -j ACCEPT
 +iptables -t filter -A OUTPUT -o lo -j ACCEPT
 +
 +# ICMP (Ping) On autorise le ping
 +iptables -t filter -A INPUT -p icmp -j ACCEPT
 +iptables -t filter -A OUTPUT -p icmp -j ACCEPT
 +
 +# SSH (port 22)
 +iptables -t filter -A INPUT -p tcp --dport 22 -j ACCEPT
 +iptables -t filter -A OUTPUT -p tcp --dport 22 -j ACCEPT
 +
 +# DNS sortant
 +iptables -t filter -A OUTPUT -p tcp --dport 53 -j ACCEPT
 +iptables -t filter -A OUTPUT -p udp --dport 53 -j ACCEPT
 +# DNS entrant
 +#iptables -t filter -A INPUT -p tcp --dport 53 -j ACCEPT
 +#iptables -t filter -A INPUT -p udp --dport 53 -j ACCEPT
 +
 +# HTTP
 +iptables -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT
 +iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT
 +
 +# HTTPS
 +iptables -t filter -A OUTPUT -p tcp --dport 443 -j ACCEPT
 +iptables -t filter -A INPUT -p tcp --dport 443 -j ACCEPT
 +
 +# MySQL
 +iptables -t filter -A OUTPUT -p tcp --dport 3306 -j ACCEPT
 +#iptables -t filter -A INPUT -p tcp --dport 3306 -j ACCEPT
 +iptables -t filter -A OUTPUT -p udp --dport 3306 -j ACCEPT
 +#iptables -t filter -A INPUT -p udp --dport 3306 -j ACCEPT
 +
 +# MySQL-proxy
 +#iptables -t filter -A OUTPUT -p tcp --dport 6446 -j ACCEPT
 +#iptables -t filter -A INPUT -p tcp --dport 6446 -j ACCEPT
 +#iptables -t filter -A OUTPUT -p udp --dport 6446 -j ACCEPT
 +#iptables -t filter -A INPUT -p udp --dport 6446 -j ACCEPT
 +
 +# FTP
 +#iptables -t filter -A OUTPUT -p tcp --dport 20:21 -j ACCEPT
 +#iptables -t filter -A INPUT -p tcp --dport 20:21 -j ACCEPT
 +
 +# Mail SMTP
 +#iptables -t filter -A INPUT -p tcp --dport 25 -j ACCEPT
 +iptables -t filter -A OUTPUT -p tcp --dport 25 -j ACCEPT
 +
 +# Mail sSMTP
 +#iptables -t filter -A INPUT -p tcp --dport 465 -j ACCEPT
 +iptables -t filter -A OUTPUT -p tcp --dport 465 -j ACCEPT
 +#iptables -t filter -A INPUT -p tcp --dport 587 -j ACCEPT
 +iptables -t filter -A OUTPUT -p tcp --dport 587 -j ACCEPT
 +
 +# Mail POP3
 +#iptables -t filter -A INPUT -p tcp --dport 110 -j ACCEPT
 +#iptables -t filter -A OUTPUT -p tcp --dport 110 -j ACCEPT
 +
 +# Mail sPOP3
 +#iptables -t filter -A INPUT -p tcp --dport 995 -j ACCEPT
 +#iptables -t filter -A OUTPUT -p tcp --dport 995 -j ACCEPT
 +
 +# Mail IMAP
 +#iptables -t filter -A INPUT -p tcp --dport 143 -j ACCEPT
 +#iptables -t filter -A OUTPUT -p tcp --dport 143 -j ACCEPT
 +
 +# Mail sIMAP
 +#iptables -t filter -A INPUT -p tcp --dport 993 -j ACCEPT
 +#iptables -t filter -A OUTPUT -p tcp --dport 993 -j ACCEPT
 +
 +# NTP (horloge du serveur)
 +iptables -t filter -A OUTPUT -p udp --dport 123 -j ACCEPT
 +;;
 +
 +stop)
 +# Réinitialise les règles
 +iptables -t filter -F
 +iptables -t filter -X
 +
 +# Autorise tout le trafic
 +iptables -t filter -P INPUT ACCEPT
 +iptables -t filter -P FORWARD ACCEPT
 +iptables -t filter -P OUTPUT ACCEPT
 +;;
 +
 +status)
 +RES=$(iptables -L | grep INPUT | awk '{print $4}' | sed 's/)//g')
 +[ "$RES" != "ACCEPT" ] && echo "Firewall actif" || echo "Firewall inactif"
 +;;
 +
 +*) echo "Usage: service firewall {start|stop|status|restart|reload|force-reload}"
 +;;
 +esac
 +exit 0
 +
 +</sxh>
  
 ===== Fail2ban ===== ===== Fail2ban =====
   * [[https://doc.ubuntu-fr.org/fail2ban]]   * [[https://doc.ubuntu-fr.org/fail2ban]]
  
 +==== Fignolage ====
 +
 +Après installation de fail2ban et paramétrage pour sshd :
 +
 +Se connecter en root.
 +
 +Installer, si ce n'est déjà fait le paquet ''util-linux'' :
 +  apt install util-linux
 +
 +Créer le fichier ''/root/byebye.sh'' contenant :
 +<sxh bash>
 +#!/bin/bash
 +
 +for ip in $(lastb -i -s -5min | awk '{print $3}'); do {
 + if [[ $ip =~ ^[0-9] ]]; then
 + #echo $ip
 + /usr/bin/fail2ban-client set sshd banip $ip > /dev/null || true
 + fi
 +}; done
 +exit 0
 +</sxh>
 +Le rendre exécutable :
 +  chmod +x /root/byebye.sh
 +
 +Éditer la crontab :
 +  crontab -e
 +  
 +Ajouter les lignes :
 +  # Bye bye importuns !
 +  */5 * * * * /root/byebye.sh
 +
 +Quitter. La crontab se met en place.
 +
 +Lister les IP bloquées (et leur nombre) avec :
 +  fail2ban-client status sshd
 ===== Liens ===== ===== Liens =====
   * [[https://openclassrooms.com/courses/securiser-son-serveur-linux|Sécuriser un serveur Linux (OpenClassRooms)]]   * [[https://openclassrooms.com/courses/securiser-son-serveur-linux|Sécuriser un serveur Linux (OpenClassRooms)]]
 +  * [[https://doc.ubuntu-fr.org/fail2ban|Bannir des IP avec fail2ban - v2020]]
 +  * [[https://manpages.ubuntu.com/manpages/bionic/fr/man1/last.1.html|last, lastb - Afficher une liste des derniers utilisateurs connectés]]
 +  * [[https://blog.bandinelli.net/index.php?post/2015/01/02/Entretenir-et-s%C3%A9curiser-ownCloud-avec-logrotate-et-fail2ban|Entretenir et sécuriser Nextcloud/ownCloud avec logrotate et fail2ban]]
 +
 +----
 +
 +{{counter|today| personne a visité cette page aujourd'hui| personnes ont visité cette page aujourd'hui}} et {{counter}} en tout.
  • linuxaddict/administrer/securite.1524827980.txt.gz
  • Dernière modification : 27/04/2018, 13:19
  • de Claude Clerc