Prérequis:
- Un serveur (Virtuel ou Dédié) avec CentOS 6.2 installé. (kimsufi vous propose un serveur à 14€99HT avec installation de CentOS 6.2 sinon récupérez ce qu’il faut pour le serveur virtuel)
- Les droits root (Administrateur système).
- Putty (Téléchargez le ici, tuto)
- Savoir utiliser VI/VIM (tuto)
IPTables est en quelque sorte le meilleur pare feu de linux (associé avec Netfilter), il permet énormément de réglages mais nous n’allons voir que les réglages basiques mais ce sera suffisant dans la plupart des cas.
Voici la liste des arguments que nous allons utiliser avec leurs significations:
i | interface d’entrée (input) |
i | interface de sortie (output) |
t | table (par défaut filter contenant les chaînes INPUT, FORWARD, OUTPUT) |
j | règle à appliquer (Jump) |
A | ajoute la règle à la fin de la chaîne (Append) |
I | insère la règle au début de la chaîne (Insert) |
R | remplace une règle dans la chaîne (Replace) |
D | efface une règle (Delete) |
F | efface toutes les règles (Flush) |
X | efface la chaîne |
P | règle par défaut (Policy) |
lo | localhost (ou 127.0.0.1, machine locale) |
Pour CentOS 7:
Par defaut IpTables n’est plus installé nous allons donc arrêter Firewalld et réinstaller IpTables:
Désactivons Firewalld:
1 |
systemctl mask firewalld |
Arrêtons Firewalld:
1 |
systemctl stop firewalld |
Installons IpTables:
1 |
yum -y install iptables-services |
Activons IpTables au démarrage:
1 |
systemctl enable iptables |
Démarrons IpTables
1 |
systemctl start iptables |
Si vous utilisez ip6tables exécutez ceci aussi:
1 |
systemctl enable ip6tables |
1 |
systemctl start ip6tables |
Voila ce sera tout ce qu’il y’a à faire en plus pour CentOS 7 continuez maintenant :p
Nous allons créer un script qui sera lancé à chaque démarrage de votre serveur et qui restaurera les règles:
1 |
vi /etc/init.d/firewall |
Ensuite les 23 premières lignes sont plus ou moins obligatoire le reste est en fonction de vos besoin.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
#!/bin/sh # chkconfig: - 64 36 # Vider les tables actuelles iptables -t filter -F # Vider les règles personnelles iptables -t filter -X # Interdire toute connexion entrante et sortante iptables -t filter -P INPUT DROP iptables -t filter -P FORWARD DROP iptables -t filter -P OUTPUT DROP # --- # Ne pas casser les connexions etablies iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT # Autoriser loopback iptables -t filter -A INPUT -i lo -j ACCEPT iptables -t filter -A OUTPUT -o lo -j ACCEPT # ICMP (Ping) iptables -t filter -A INPUT -p icmp -j ACCEPT iptables -t filter -A OUTPUT -p icmp -j ACCEPT # --- # SSH In iptables -t filter -A INPUT -p tcp --dport 22 -j ACCEPT # SSH Out iptables -t filter -A OUTPUT -p tcp --dport 22 -j ACCEPT # DNS In/Out iptables -t filter -A OUTPUT -p tcp --dport 53 -j ACCEPT iptables -t filter -A OUTPUT -p udp --dport 53 -j ACCEPT iptables -t filter -A INPUT -p tcp --dport 53 -j ACCEPT iptables -t filter -A INPUT -p udp --dport 53 -j ACCEPT # NTP Out iptables -t filter -A OUTPUT -p udp --dport 123 -j ACCEPT # HTTP + HTTPS Out iptables -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT iptables -t filter -A OUTPUT -p tcp --dport 443 -j ACCEPT # HTTP + HTTPS In iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT iptables -t filter -A INPUT -p tcp --dport 443 -j ACCEPT iptables -t filter -A INPUT -p tcp --dport 8443 -j ACCEPT # FTP Out iptables -t filter -A OUTPUT -p tcp --dport 20:21 -j ACCEPT # FTP In modprobe ip_conntrack_ftp # ligne facultative avec les serveurs OVH iptables -t filter -A INPUT -p tcp --dport 20:21 -j ACCEPT iptables -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # Mail SMTP:25 iptables -t filter -A INPUT -p tcp --dport 25 -j ACCEPT iptables -t filter -A OUTPUT -p tcp --dport 25 -j ACCEPT # Mail POP3:110 iptables -t filter -A INPUT -p tcp --dport 110 -j ACCEPT iptables -t filter -A OUTPUT -p tcp --dport 110 -j ACCEPT # Mail IMAP:143 iptables -t filter -A INPUT -p tcp --dport 143 -j ACCEPT iptables -t filter -A OUTPUT -p tcp --dport 143 -j ACCEPT # Mail POP3S:995 iptables -t filter -A INPUT -p tcp --dport 995 -j ACCEPT iptables -t filter -A OUTPUT -p tcp --dport 995 -j ACCEPT |
N’hésitez pas à changer les ports ouverts en fonction de votre configuration.
Une fois votre fichier correctement personnalisé, rendons le exécutable:
1 |
chmod +x /etc/init.d/firewall |
Vous pouvez dés a présent le tester en exécutant le fichier:
1 |
/etc/init.d/firewall |
Vérifiez que vous ayez toujours le contrôle de votre serveur (putty, ftp, mail, http etc…) en cas de soucis relancez le serveur et vérifiez dans le fichier la configuration des ports avant de continuer.
Ensuite activons le lancement automatique au démarrage:
1 |
chkconfig firewall on |
Pour le désactiver (en cas de besoin):
1 |
chkconfig firewall off |
Et voila votre serveur est sécurisé.
Pingback: Parametrez votre serveur pour Symfony | Blog Sephirots