8791 sujets

Développement web côté serveur, CMS

Bonjour,

J'ai suivi un peu le tutoriel du site pour créer un script iptables pour un serveur dédié et je me suis aidé d'un script d'un ami par la même occasion.

Je rencontre un problème avec mon script actuel, dès que je le lance le serveur ne ping plus, obligé de reboot à distance.

Voici mon script actuel :

#!/bin/sh

# Vide les tables actuelles
iptables -t filter -F
iptables -t filter -X LOG_DROP_IN
iptables -t filter -X LOG_DROP_OUT

# Creations des regles de logs
iptables -N LOG_DROP_IN
iptables -A LOG_DROP_IN -j LOG --log-prefix '[IPTABLES DROP IN] :'
iptables -A LOG_DROP_IN -j DROP

iptables -N LOG_DROP_OUT
iptables -A LOG_DROP_OUT -j LOG --log-prefix '[IPTABLES DROP OUT] :'
iptables -A LOG_DROP_OUT -j DROP

# Initialisation des regles de logs
iptables -A INPUT -j LOG_DROP_IN
iptables -A OUTPUT -j LOG_DROP_OUT

# Interdit toutes connexions entrantes et sortantes
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 -t filter -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t filter -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

# Autoriser 127.0.0.1 (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/Out
iptables -t filter -A INPUT -p tcp --dport 2647 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 2647 -j ACCEPT

# DNS In/Out
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 OUTPUT -p tcp --dport 53 -j ACCEPT
iptables -t filter -A OUTPUT -p udp --dport 53 -j ACCEPT

# NTP Out
iptables -t filter -A OUTPUT -p udp --dport 123 -j ACCEPT

# -------------------------------

# HTTP In/Out
iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT


Si quelqu'un pourrait me donner un petit coup de pouce...

Cordialement
Rathorian
Modifié par Rathorian (14 Apr 2012 - 13:10)
Hello,

Je passais sur alsacréations en simple visiteur et ton message dans la sidebar du site m'a interpellé (normal, sysadmin que je suis...)

Avant tout, deux remarques :
- le "-t filter" est inutile, "filter" est la table par défaut quand "-t" est absent
- je pense que le filtrage en OUTPUT est excessif : a priori tu es maître de ton serveur et tu n'as pas de flux sortant inconnu

Ensuite, ton problème est simple : tu as placé le renvoi vers "LOG_DROP_IN" en tout premier de ta chaîne INPUT (idem pour ta chaîne OUTPUT). Du coup tes paquets, DROPés à la fin de LOG_DROP_IN, ne rencontrent jamais tes autres règles.

Deux solutions :
1/ tu places ton "iptables -A INPUT -j LOG_DROP_IN" en dernier (idem pour le OUT)
2/ (je trouve celle-ci mieux) tu remplaces "iptables -A" (append) par "iptables -I" (insert) pour placer toute règle ultérieure AVANT les précédentes

Mais d'une manière générale, j'ajouterais que faire un script iptables c'est "so 20me siècle". Pour ma part j'ai choisi d'utiliser ufw pour sécuriser mes serveurs dédiés indépendants : sa configuration et sa manipulation sont bien plus simples !
Modifié par tiramiseb (14 Apr 2012 - 12:31)