Sécuriser un serveur Linux

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 sont les paquets concernés par ce programme ?

dpkg -S UNE_PARTIE_DU_NOM_DU_PROGRAMME

#!/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

  • linuxaddict/administrer/securite.txt
  • Dernière modification: 27/04/2018, 14:45
  • par Claude Clerc