Tutoriel N° 281
Sécuriser serveur OVH release 3 avec un firewall
Ce tutoriel vous propose l'installation d'un firewall fonctionnant sur la release 3 d'OVH pour sécuriser votre serveur.
# Création du script du firewall.
# Exécution et arrêt du script du firewall.
Nous vous proposons la mise en place de ce tutoriel gratuitement pour l'achat de celui ci sur demande
Des connaissances de base pour se connecter en SSH sont nécessaires à ce tutoriel.
Pour rappel sous windows il y a le logiciel Putty, sous mac osx il suffit de lancer l'application Term
et de saisir:
ssh -l root XX.XX.XX.XX
avec XX.XX.XX.XX l'ip de votre serveur vps ou kimsufi
avec XX.XX.XX.XX l'ip de votre serveur vps ou kimsufi
# Création du script du firewall.
Remplacer dans le script ci dessous XX.XX.XX.XX par l'IP de votre connection internet
Vous pouvez le site http://www.mon-ip.com pour avoir votre IP.
ATTENTION: Seule votre adresse IP pourra acceder au FTP, au SSH et au PING.
Vous pouvez ajouter autant d'IP en dupliquant les lignes avec une autre IP.
ARRET BRUTAL DU FIREWALL: Si votre IP devait changer, il faudra dans ce cas demander un REBOOT HARD (avec le MANAGER d'OVH) de la machine pour simplement désactiver le FIREWALL.
nano /etc/init.d/firewall
#!/bin/sh
iptables -t filter -F
iptables -t filter -X
iptables -t filter -A INPUT -p icmp --source proxy.ovh.net -j ACCEPT
iptables -t filter -A INPUT -p icmp --source proxy.p19.ovh.net -j ACCEPT
iptables -t filter -A INPUT -p icmp --source proxy.rbx.ovh.net -j ACCEPT
iptables -t filter -A INPUT -p icmp --source proxy.rbx2.ovh.net -j ACCEPT
iptables -t filter -A INPUT -p icmp --source ping.ovh.net -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 22 --source cache.ovh.net -j ACCEPT
iptables -t filter -A INPUT -p icmp --source XX.XX.XX.XX -j ACCEPT # Autorisation PING IP
iptables -t filter -P INPUT DROP # Tout Interdire en entrant
iptables -t filter -P FORWARD DROP # Tout Interdire en transfert
iptables -t filter -P OUTPUT DROP # Tout Interdire en sortant
# Configuration des connexions entrantes (Du reste du monde, vers le VPS)
iptables -t filter -A INPUT -i lo -j ACCEPT # Autorisation loopback (purement interne)
iptables -t filter -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -t filter -A INPUT -p udp --dport 53 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 25 -j ACCEPT # Autorisation SMTP
iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT # Autorisation HTTP
iptables -t filter -A INPUT -p tcp --dport 110 -j ACCEPT # Autorisation POP
iptables -t filter -A INPUT -p tcp --dport 443 -j ACCEPT # Autorisation HTTPS
iptables -t filter -A INPUT -p tcp --dport 10000 -j ACCEPT # Autorisation WEBMIN
#iptables -t filter -A INPUT -p tcp --dport 22 -j ACCEPT # Autorisation SSH ALL
iptables -t filter -A INPUT -p tcp --dport 22 --source XX.XX.XX.XX -j ACCEPT # Autorisation SSH IP
#iptables -t filter -A INPUT -p tcp --dport 21 -j ACCEPT # Autorisation FTP ALL
iptables -t filter -A INPUT -p tcp --dport 21 --source XX.XX.XX.XX -j ACCEPT # Autorisation FTP IP
iptables -t filter -A INPUT -p tcp --dport 22 --source XX.XX.XX.XX -j ACCEPT # Autorisation SSH IP
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT # Autorisation des connexions existantes
# Configuration des connexions sortantes (Du vPS, vers le reste du monde)
iptables -t filter -A OUTPUT -o lo -j ACCEPT # Autorisation loopback (purement interne)
iptables -t filter -A OUTPUT -p icmp -j ACCEPT # Autorisation PING
iptables -t filter -A OUTPUT -p tcp --dport 21 -j ACCEPT # Autorisation FTP
iptables -t filter -A OUTPUT -p tcp --dport 22 -j ACCEPT # Autorisation SSH
iptables -t filter -A OUTPUT -p tcp --dport 25 -j ACCEPT # Autorisation SMTP
iptables -t filter -A OUTPUT -p tcp --dport 43 -j ACCEPT # Autorisation WHOIS
iptables -t filter -A OUTPUT -p tcp --dport 53 -j ACCEPT # Autorisation DNS TCP
iptables -t filter -A OUTPUT -p udp --dport 53 -j ACCEPT # Autorisation DNS UDP
iptables -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT # Autorisation HTTP
iptables -t filter -A OUTPUT -p tcp --dport 110 -j ACCEPT # Autorisation POP
iptables -t filter -A OUTPUT -p tcp --dport 443 -j ACCEPT # Autorisation HTTPS
iptables -t filter -A OUTPUT -p tcp --dport 587 -j ACCEPT # Autorisation SMTP TLS
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT # Autorisation des connexions existantes
iptables -t filter -F
iptables -t filter -X
iptables -t filter -A INPUT -p icmp --source proxy.ovh.net -j ACCEPT
iptables -t filter -A INPUT -p icmp --source proxy.p19.ovh.net -j ACCEPT
iptables -t filter -A INPUT -p icmp --source proxy.rbx.ovh.net -j ACCEPT
iptables -t filter -A INPUT -p icmp --source proxy.rbx2.ovh.net -j ACCEPT
iptables -t filter -A INPUT -p icmp --source ping.ovh.net -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 22 --source cache.ovh.net -j ACCEPT
iptables -t filter -A INPUT -p icmp --source XX.XX.XX.XX -j ACCEPT # Autorisation PING IP
iptables -t filter -P INPUT DROP # Tout Interdire en entrant
iptables -t filter -P FORWARD DROP # Tout Interdire en transfert
iptables -t filter -P OUTPUT DROP # Tout Interdire en sortant
# Configuration des connexions entrantes (Du reste du monde, vers le VPS)
iptables -t filter -A INPUT -i lo -j ACCEPT # Autorisation loopback (purement interne)
iptables -t filter -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -t filter -A INPUT -p udp --dport 53 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 25 -j ACCEPT # Autorisation SMTP
iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT # Autorisation HTTP
iptables -t filter -A INPUT -p tcp --dport 110 -j ACCEPT # Autorisation POP
iptables -t filter -A INPUT -p tcp --dport 443 -j ACCEPT # Autorisation HTTPS
iptables -t filter -A INPUT -p tcp --dport 10000 -j ACCEPT # Autorisation WEBMIN
#iptables -t filter -A INPUT -p tcp --dport 22 -j ACCEPT # Autorisation SSH ALL
iptables -t filter -A INPUT -p tcp --dport 22 --source XX.XX.XX.XX -j ACCEPT # Autorisation SSH IP
#iptables -t filter -A INPUT -p tcp --dport 21 -j ACCEPT # Autorisation FTP ALL
iptables -t filter -A INPUT -p tcp --dport 21 --source XX.XX.XX.XX -j ACCEPT # Autorisation FTP IP
iptables -t filter -A INPUT -p tcp --dport 22 --source XX.XX.XX.XX -j ACCEPT # Autorisation SSH IP
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT # Autorisation des connexions existantes
# Configuration des connexions sortantes (Du vPS, vers le reste du monde)
iptables -t filter -A OUTPUT -o lo -j ACCEPT # Autorisation loopback (purement interne)
iptables -t filter -A OUTPUT -p icmp -j ACCEPT # Autorisation PING
iptables -t filter -A OUTPUT -p tcp --dport 21 -j ACCEPT # Autorisation FTP
iptables -t filter -A OUTPUT -p tcp --dport 22 -j ACCEPT # Autorisation SSH
iptables -t filter -A OUTPUT -p tcp --dport 25 -j ACCEPT # Autorisation SMTP
iptables -t filter -A OUTPUT -p tcp --dport 43 -j ACCEPT # Autorisation WHOIS
iptables -t filter -A OUTPUT -p tcp --dport 53 -j ACCEPT # Autorisation DNS TCP
iptables -t filter -A OUTPUT -p udp --dport 53 -j ACCEPT # Autorisation DNS UDP
iptables -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT # Autorisation HTTP
iptables -t filter -A OUTPUT -p tcp --dport 110 -j ACCEPT # Autorisation POP
iptables -t filter -A OUTPUT -p tcp --dport 443 -j ACCEPT # Autorisation HTTPS
iptables -t filter -A OUTPUT -p tcp --dport 587 -j ACCEPT # Autorisation SMTP TLS
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT # Autorisation des connexions existantes
Créer script pour initialiser iptables
cd /etc/init.d
nano /etc/init.d/iptables_flush.sh
nano /etc/init.d/iptables_flush.sh
#!/bin/sh
echo "Flushing iptables rules..."
sleep 1
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
echo "Flushing iptables rules..."
sleep 1
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
On donne les droits d'éxécution
chmod 777 iptables_flush.sh && chmod 777 firewall
Pour arreter le firewall manuellement en SSH:
sh /etc/init.d/iptables_flush.sh
Pour lancer le firewell manuellement en SSH:
sh /etc/init.d/firewall
fini