Ceci est une ancienne révision du document !
Sécuriser un serveur Linux
Commandes (très) utiles
Quels sont les ports ouverts ?
nmap -v localhost
Cette liste de ports ouverts sera nécessaire pour concevoir le firewall.
Quel programme utilise un port donné ?
lsof -i tcp:NUMERO_DU_PORT
Une liste de commandes, avec n° PID, utilisateur, etc apparaît.
Que fait le programme de PID donné ?
lsof -p NUMERO_PID
Les dernières lignes de cette longue liste permettent de déterminer précisément ce que fait le programme.
Quels paquets ont permis l'installation de ce programme ?
dpkg -S UNE_PARTIE_DU_NOM_DU_PROGRAMME
Firewall
#!/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 78.201.137.113 (Claude) iptables -t filter -A INPUT -s 78.201.137.113 -j ACCEPT iptables -t filter -A OUTPUT -d 78.201.137.113 -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