Description du routeur / firewall principal gtw0.asr2004.ligfy.org du projet d’architecture réseau internet / intranet en environnement GNU / Linux Debian concrétisant la fin de ma formation Administrateur Système et Réseau au GRETA SUD TERTIAIRE 93

Configuration Système

Debian Woody en installation minimum (sans utilisation de dselect ni de tasksel) Aucun service réseau à l’exception de ssh configuré en « PermitRootLogin no »

Utilisateur

Création d’un utilisateur admin pour les connexions ssh de maintenance. Le compte admin à été spécialement configuré avec l’UID 999. Pour ce faire les fichiers /etc/passwd et /etc/group on été manuellement modifié ainsi que la propriété et le groupe d’appartenance du répertoire /home/admin et son contenue

DNS

Le serveur hébergeant un service DNS de façon provisoire avec en conséquences le fichier /etc/resolve.conf suivant :


search asr2004.ligfy.org
nameserver 172.16.1.250

Configuration Réseau

Passerelle par défaut : Le routeur de notre FAI 194.3.200.254

Interface sur l’Internet :
Nom : eth0
IP : 194.3.200.120
Matériel : RealTek RTL8139 Fast Ethernet
Module : Realteck inclus dans le noyau.

Interface sur le réseau DMZ
Nom : eth1
IP : 192.168.1.1
Matériel :D igital DC21040
Module : Tulip dans le fichier /etc/modules

Interface sur le réseau BACKBONE
Nom : eth2
IP : 172.16.1.1
Matériel : Digital DC21041
Module : Tulip dans le fichier /etc/modules

Avec le fichier /etc/network/interface suivant :


# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)

# The loopback interface
auto lo
iface lo inet loopback

#
# INTERNET
#
auto eth0
iface eth0 inet static
address 194.3.200.120
netmask 255.255.255.0
network 194.3.200.0
broadcast 194.3.200.255
gateway 194.3.200.254

# DMZ
#
auto eth1
iface eth1 inet static
address 192.168.1.1
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255

# BACKBONE
#
auto eth2
iface eth2 inet static
address 172.16.1.1
netmask 255.255.0.0
network 172.16.O.O
broadcast 172.16.255.255

Routage

Le routage devant être activé le fichier /etc/network/options à la syntaxe suivante :


ip_forward=yes
spoofprotect=yes
syncookies=no

FIREWALL

La logique de sécurité décidé est la stricte séparation de l’Internet et de la structure interne de notre réseau. En conséquences les connexions en provenance de l’Internet sont systématiquement refusé. Les requêtes DNS, FTP ; WEB et SMTP arrivant sur le router sont transmise (forwarding) sous contrôle aux serveurs en charge de ces services. Les connexions sortante vers l’Internet sont autoriser seulement en provenance de la zone DNZ et exclusivement pour les requêtes DNS, FTP ; WEB et SMTP en provenance des deux serveurs en charge de ces services.

Pour répondre à la même logique les connexions en provenance de la zone BACKBONE seront systématiquement refusé à l’exception des requêtes DNS, FTP ; WEB et SMTP transmise (forwarding) sous contrôle au serveur en charge de ces services dans le zone DMZ.

La zone DMZ est depuis l’Internet comme depuis la zone BACKBONE totalement invisible.

En conséquences voici le fichier de configuration nécessaire des IPTABLES /etc/network/if-pre-up.d/iptables-start :


#!/bin/sh
# /etc/network/if-pre-up.d/iptables-start
# Script qui démarre les règles de filtrage "iptables"

#############################################
# DEBUT des "politiques par défaut"
# AVEC !
# REMISE à ZERO des règles de filtrage

# 1) Je veux que les connexions entrantes soient bloquées par défaut
# 2) Je veux que les connexions destinées à être forwardées
# soient bloquée par défaut
# 3) Je veux que les connexions sortantes soient bloquée par défaut
iptables -t filter -F
iptables -t filter -X
iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP
iptables -t filter -P OUTPUT DROP

# Je veux que le NAT soit possible par défaut
iptables -t nat -F
iptables -t nat -X
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT

# Je veux que la mutilation de paquet soit possible
# par défaut (mangle)
iptables -t mangle -F
iptables -t mangle -X
iptables -t mangle -P PREROUTING ACCEPT
iptables -t mangle -P INPUT ACCEPT
iptables -t mangle -P OUTPUT ACCEPT
iptables -t mangle -P FORWARD ACCEPT
iptables -t mangle -P POSTROUTING ACCEPT

# FIN des "politiques par défaut"
#############################################

#############################################
# CREATION Chaine utilisateur pour log
#

iptables -N LOGDROP
iptables -A LOGDROP -j LOG --log-prefix LogDrop
iptables -A LOGDROP -j DROP

# FIN de creation chaine utilisateur
#############################################

#############################################
# DEBUT des exeptions aux filtrage

# Pas de filtrage sur l'interface de "loopback"
# en INPUT et OUTPUT
iptables -t filter -A INPUT -i lo -j ACCEPT
iptables -t filter -A OUTPUT -o lo -j ACCEPT

# Pas de filtrage sur l'interface eth1
# sur le reseau DMZ
iptables -t filter -A INPUT -i eth1 -j ACCEPT
iptables -t filter -A OUTPUT -o eth1 -j ACCEPT

# Pas de filtrage pour l'interface eth2
# sur le reseau BACKBONE
iptables -t filter -A INPUT -i eth2 -j ACCEPT
iptables -t filter -A OUTPUT -o eth2 -j ACCEPT

# FIN des exeptions aux filtrage
#############################################

#############################################
# DEBUT des règles de filtrage

# J'accepte le forward de paquet sortant depuis la DMZ vers l'INTERNET
iptables -t filter -A FORWARD -i eth1 -o eth0 -m state --state ! INVALID -j ACCEPT

# J'accepte le forward de paquet depuis la DMZ vers le BACKBONE
iptables -t filter -A FORWARD -i eth1 -o eth2 -m state --state ! INVALID -j ACCEPT

# J'accepte le forward de paquet depuis le BACKBONE vers la DMZ
iptables -t filter -A FORWARD -i eth2 -o eth1 -m state --state ! INVALID -j ACCEPT

# J'accepte le forward entrant depuis l'INTERNET vers la DMZ
# relatifs à des connexions déjà établies
iptables -t filter -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT

# J'accepte le protocole ICMP (i.e. le "ping")
# depuis tout les reseaux sur toutes les interfaces
iptables -A INPUT -p icmp -j ACCEPT

# J'accepte les packets entrants relatifs à des connexions déjà établies
iptables -A INPUT -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT

# Décommentez les deux lignes suivantes pour que le serveur FTP éventuel
# soit joignable de l'extérieur
#iptables -A INPUT -p tcp --dport 20 -j ACCEPT
#iptables -A INPUT -p tcp --dport 21 -j ACCEPT

# Décommentez la ligne suivante pour que le serveur SSH éventuel
# soit joignable de l'extérieur
#iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# Décommentez la ligne suivante pour que le serveur de mail éventuel
# soit joignable de l'extérieur
#iptables -A INPUT -p tcp --dport 25 -j ACCEPT

# Décommentez les deux lignes suivantes pour que le serveur de DNS éventuel
# soit joignable de l'extérieur
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j ACCEPT

# Autoriser la sortie de requete DNS
# iptables -t filter -A OUTPUT -o eth0 -p tcp --dport 53 -j ACCEPT
# iptables -t filter -A OUTPUT -o eth0 -p udp --dport 53 -j ACCEPT

# Décommentez la ligne suivante pour que le serveur Web éventuel
# soit joignable de l'extérieur
# iptables -A INPUT -p tcp --dport 80 -j ACCEPT

# Autoriser la sortie de requeste HTTP et HTTPS depuis le firewall
# ceci ne concerne pas le NAT, les autres machine etant forwarder
# iptables -t filter -A OUTPUT -o eth0 -p tcp --dport 80 -j ACCEPT
# iptables -t filter -A OUTPUT -o eth0 -p tcp --dport 443 -j ACCEPT
# même chose pour le proxy en http:8080
# iptables -t filter -A OUTPUT -o eth0 -p tcp --dport 8080 -j ACCEPT

# Décommentez la ligne suivante pour que le serveur CVS éventuel
# soit joignable de l'extérieur via le mécanisme de "pserver"
# (si les utilisateurs accèdent au serveur CVS exclusivement via SSH,
# seule la ligne concernant le serveur SSH doit être décommentée)
#iptables -A INPUT -p tcp --dport 2401 -j ACCEPT

# FIN des règles de filtrage
#############################################

#############################################
# DEBUT des règles pour le partage de connexion (i.e. le NAT)

# Décommentez la ligne suivante pour que le système fasse office de
# "serveur NAT" et remplaçez "eth0" par le nom de l'interface connectée
# à Internet
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth2 -j MASQUERADE

# FIN des règles pour le partage de connexion (i.e. le NAT)
#############################################

#############################################
# DEBUT des règles de "port forwarding"
#

# Forwarding des requetes DNS en provenance de l'internet
# vers le serveur DNS en DMZ
iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 53 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -p udp --dport 53 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A PREROUTING -p tcp --dport 53 -i eth0 -j DNAT --to 192.168.21.1:53
iptables -t nat -A PREROUTING -p udp --dport 53 -i eth0 -j DNAT --to 192.168.21.1:53

# Forwarding des requestes DNS en provenance du BACKBONE
# vers le serveur DNS en DMZ
iptables -A FORWARD -i eth2 -o eth1 -p tcp --dport 53 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth2 -o eth1 -p udp --dport 53 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A PREROUTING -p tcp --dport 53 -i eth2 -j DNAT --to 192.168.1.21:53
iptables -t nat -A PREROUTING -p udp --dport 53 -i eth2 -j DNAT --to 192.168.1.21:53

# Forwarding des requestes http en provenance du BACKBONE
# vers le serveur PROXY:8080 en DMZ
iptables -A FORWARD -i eth2 -o eth1 -p tcp --dport 8080 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth2 -o eth1 -p udp --dport 8080 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A PREROUTING -p tcp --dport 8080 -i eth2 -j DNAT --to 192.168.1.21:8080
iptables -t nat -A PREROUTING -p udp --dport 8080 -i eth2 -j DNAT --to 192.168.1.21:8080

# FIN des règles de "port forwarding"
############################################

############################################
# DEBUT des log de l'integralité des paquets
# droper dans /var/log/kernel.log

# iptables -A INPUT -j LOGDROP
# iptables -A OUTPUT -j LOGDROP
# iptables -A FORWARD -j LOGDROP

# FIN des log
############################################

Avec le fichier /etc/network/if-post-down.d/iptables-stop suivant :

#!/bin/sh
# /etc/network/if-post-down.d/iptables-stop
# Script qui arrête le filtrage "iptables"

# REMISE à ZERO des règles de filtrage
iptables -F
iptables -t nat -F

# REMISE de toutes les politiques par défaut à ACCEPT
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

SYSLOG

Le démon syslog a été configuré pour garder un trace global en local dans un minimum de fichier et expédier un copie au serveur en charge de la gestion des log de l’architecture.

Avec le fichier /etc/syslog.conf suivant :


#: /etc/syslog.conf Configuration file for syslogd.
# For more information see syslog.conf(5)
# manpage.

#
# First some standard logfiles. Log by facility.
#

auth,authpriv.* /var/log/auth.log
*.*;auth,authpriv.none -/var/log/syslog
*.*;auth,authpriv.none @backup0.asr2004.ligfy.org

DOCUMENTATION

IpTables par l’exemple : Lea-Linux

Firewall et sécurité d’un réseau personnel sous Linux olivieraj.free.fr

Désolé, les commentaire sont désactivés pour l'instant.

   
© 2012 Karlesnine Suffusion theme by Sayontan Sinha