Filtrer l'accès à un port réseau avec iptables sur Debian
Par Pierre-Yves Landuré
—
Dernière modification
11/11/2017 09:37
Ce guide présente une méthode simple pour filtrer de manière sélective l'accès à certains ports d'un serveur Debian.
Ce guide est testé sur:
- Debian 7.0 Wheezy
Paramètres
Renseignez le numéro du port à protéger:
PORT="3306"
Renseignez le protocole du port à protéger:
PROTOCOL="tcp"
Renseignez les adresses IP autorisées à accéder au port protégé:
ALLOWED_IPS="xx.xx.xx.xx
xx.xx.xx.xx"
Installation
Déterminez le nom du fichier de configuration:
CONFIG_FILE="/etc/network/if-up.d/firewall-${PROTOCOL}-${PORT}"
Initialisation de la protection
Configurez le blocage du port protégé:
if [ ! -e "${CONFIG_FILE}" ]; then
command echo "#"\!"/bin/bash
# Block new connections to ${PROTOCOL} port ${PORT}:
command iptables -C INPUT -p ${PROTOCOL} -m state --state NEW --dport ${PORT} -j DROP > '/dev/null' 2>&1 \\
|| command iptables -A INPUT -p ${PROTOCOL} -m state --state NEW --dport ${PORT} -j DROP" \
> "${CONFIG_FILE}"
command chmod +x "${CONFIG_FILE}"
fi
Déblocage des IPs autorisées
Ouvrez le port pour les adresses IPs autorisées:
for ALLOWED_IP in ${ALLOWED_IPS}; do
if [ -z "$(command grep "${ALLOWED_IP}" "${CONFIG_FILE}")" ]; then
command echo "
# Allow access for IP ${ALLOWED_IP}
command iptables -C INPUT -s '${ALLOWED_IP}' -p '${PROTOCOL}' --dport ${PORT} -j ACCEPT > '/dev/null' 2>&1 \\
|| command iptables -I INPUT -s '${ALLOWED_IP}' -p '${PROTOCOL}' --dport ${PORT} -j ACCEPT" \
>> "${CONFIG_FILE}"
fi
done
Chargez les nouvelles règles d'accès:
"${CONFIG_FILE}"
Les règles définies dans le fichier ${CONFIG_FILE} seront chargées à chaque démarrage du système.