Vous êtes ici : Accueil / Debian GNU/Linux / Système / Sécurité / Filtrer l'accès à un port réseau avec iptables sur Debian

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.