Archives pour l'étiquette ASR2004

Serveur backup0.asr2004.ligfy.org

Description du serveur de log et de backup backup0.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

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 »

Le disque a été configuré de façon large en séparant les données des service fournis sur le réseau sur des partitions différentes. Cette machine étant serveur de log et de backup deux grande partitions leur sont dédier. Cette séparation est un gage de sécurité prévenant l’écroulement du système par saturation de l’espace disque.


/dev/hda1 942M 123M 771M 14% /
/dev/hda5 942M 284M 610M 32% /usr
/dev/hda6 942M 83M 811M 10% /var
/dev/hda8 4.6G 37M 4.3G 1% /var/log
/dev/hda9 29G 36M 27G 1% /var/backups

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

Configuration Réseau

La configuration réseau est dès plus simple et ne comporte qu’un seule interface. Interface sur le réseau BACKBONE Nom : eth0 IP : 172.16.1.11 Matériel : RealTek RTL8139 Fast Ethernet chip type ‘RTL-8139C’ Module : 8139 inclus dans le noyaubackup

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

#
# BACKBONE
#
auto eth0
iface eth0 inet static
address 172.16.1.11
network 172.16.1.0
netmask 255.255.0.0
broadcast 172.16.1.255
gateway 172.16.1.1

DNS

Le serveur utilise le serveur DNS interne placé en zone BACKBONE en conséquences le fichier /etc/resolve.conf a la forme suivante :


search asr2004.ligfy.org
nameserver 172.16.1.250

Routage

Le routage devra pas être activé, le fichier /etc/network/options à donc la syntaxe suivante :


ip_forward=no
spoofprotect=yes
syncookies=no

Les routes suivante ont été configurées pour communiquer avec les deux autres réseaux de l’architecture.


Destination Gateway Genmask Flags MetricRef Use Iface
192.168.1.0 172.16.1.1 255.255.255.0 U 0 0 0 eth0
10.1.1.0 172.16.1.240 255.255.255.0 U 0 0 0 eth0
172.16.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
0.0.0.0 172.16.1.1 0.0.0.0 UG 0 0 0 eth0

SYSLOG

Le démon syslog a été configuré pour garder un trace précise toute en gardant un minimum de fichier.

Avec le fichier /etc/syslog.conf suivant :


auth,authpriv.* -/var/log/auth.log
*.*;auth,authpriv.none -/var/log/syslog
cron.* -/var/log/cron.log
daemon.* -/var/log/daemon.log
kern.* -/var/log/kern.log
lpr.* -/var/log/lpr.log
mail.* -/var/log/mail.log
user.* -/var/log/user.log

Afin d’accepter les log en provenance des autre machines de notre architecture le fichier de lancement du démon sysklogd a été modifier pour inclure l’option -r

Extrait des pages man de sysklogd concernant l’option -r :


-r This option will enable the facility to receive message from the network using an internet domain socket with the syslog service (see services(5)). The default is to not receive any messages from the network.

DOCUMENTATION

Projet Système Reseau 2004

Exemple, projet et description d’une 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

Objectif

Installer une infrastructure réseau Internet / Intranet en environnement GNU / Linux Debian.

L’infrastructure a été découpée en lot et attribuée à un groupe de stagiaire.

- groupe sécurité / sauvegarde
- groupe Internet / Intranet
- groupe Courrier / Proxy
- groupe Fichiers / Impression
- groupe Lan Client

Moyen Humain

Durée : 200 jours / homme
Chaque groupe est composé d’environ 4 personnes avec 1 chef de projet (management, documentation, Rp, présentation)

Architecture.

Après étude de l’architecture demandée il a été convenu l’organisation suivante.

L’architecture est décomposer en trois réseau dénommé en fonction de leur destination (DMZ, BACKBON E et LAN). Chacun de ces réseau utilisera une classe d’adresse ip de type distinct. Ainsi le réseau DMZ aura la classe d’adresse IP de type C 192.168.1.0. Le réseau BACKBON E utilisera la classe d’adresse IP de type B 172.16.1.0 mais avec un masque de sous réseau de type C. De même pour le ou les réseaux LAN client qui utiliseront la classe ip de type A sub divisé avec un masque de sous réseau de type C.

PNG - 105.6 ko
Plan du reseau avec les noms des machines
Chaque machine à sa place et les services seront bien gardés.

Pourquoi un type de classe par réseau ?

Le choix d’un type de classe par réseau à été faite afin de facilité la lecture de l’architecture, le suivit des log et le traçage des connections. Il est ainsi plus facile voir instinctif de retrouver l’origine ou la destination d’un connexion à partir de l’adresse ip. La répartition des types à été fait en fonction de leur possibilité d’extension. Ainsi pour exemple le réseau DMZ ne comportant que 2 machines reçois le réseau le plus petit en terme d’adresse disponible. Le réseau LAN lui comportant plusieurs dizaine de machine et pouvant être amené a évolué rapidement reçois le réseau le plus grand en terme d’adresse disponible et pouvant comporté le plus de subdivision.

Pourquoi un masque de sous réseau de classe C ?

De même que le choix de différente type de classe réseau, le choix d’un marque de sous réseau de classe C à été fait pour facilité le travail. L’ ensemble de l’architecture n’a ainsi que un masque de sous réseau facilement mémorisable. En outre cela offre un souplesse d’évolution plus grande par découpage en de multiple sous réseau.

Pourquoi aucun réseau en 0 (zero) comme 192.168.0.0 ?

Encore un fois par facilité d’écriture et de lecture, c’est subjectif, je sais, mais personnellement je trouve cela encore un fois plus confortable à lire en 80×50. Ce choix fait pour le réseau DMZ de classe C le même principe à été utilisé pour les autres réseaux.

Plan des services

Passerelle Internet.

La passerelle Internet est assuré par le routeur pare feux gtw0.asr2004.ligfy.org. Celui ci à lui même comme passerelle par défaut le routeur de notre FAI (194.3.200.254) et utilisera de façon provisoire le DNS de Ligfy.org (62.212.109.185). Voir la description de cette machine.

DMZ

L’ensemble des serveurs hébergeant des services en connexion avec l’Internet est isolé du reste de l’infrastructure dans un zone tampon nommé DMZ. Seul les services hébergés dans cette zone peuvent recevoir des connections depuis l’Internet ou en réaliser en direction de l’Internet ceci via le serveur coupe feux (firewall). Nous retrouvons dans cette zone le second serveur DNS en charge de la zone extérieur.

BACKBONE

Les serveurs hébergeant des services à destination des poste clients et n’ayant pas de connexion directe avec l’Internet sont regroupé dans cette zone. Le premier serveur DNS en charge de la zone interne y est disposé. LAN CLIENTS Enfin les LAN client accueil les postes utilisateurs et les postes d’administration.

OpenOffice Calc - 8.4 ko
Plan d’adressage IP

FLUX DNS.

L’architecture réseau avec un zone interne et externe nécessite l’utilisation de deux serveur DNS chaîné. Le premier placé sur le serveur physique routeur0.asr2004.ligfy.org comportera dans sa zone dns l’intégralité du parc serveur avec en CNAME le nom physique et en Record A les noms de service. Il comportera également une partie dynamique en lien avec le service dhcp également héberger sur la même machine pour référencer les postes clients. Le second DNS sera dans le réseau DMZ et ne contiendra que l’adresse IP de notre passerelle Internet (gtw0.asr2004.ligfy.org) en CNAME et la liste des services réseau offert sur l’Internet en Record A (www. asr2004.ligfy.org, ftp.asr2004.ligfy.org, smtp.asr2004.ligfy.org)

Un requête DNS en provenance de l’Internet arrivera sur l’interface réseau extérieur du firewall. Ce serveur transmettra la connexion (forwarding) sur le port 53 sur serveur DNS présent dans la DMZ et assurera le suivit de communication nécessaire. Ce serveur DNS est directement en contact avec les Root Server DNS mondiaux.

PNG - 63.1 ko
Flux DNS zone externe

Les requêtes DNS internet seront systématiquement adressé au serveur DNS du réseau BACKBONE en charge de la zone interne. Ce dernier comportant les informations concernant l’ensemble des serveurs de asr2004.ligfy.org pourra fournir l’adresse IP si la requête DNS concerne un serveur interne. Dans le cas contraire le requête sera escalader (option forwarder) au serveur DNS du réseau BACKBONE pour un résolution via les Root Server DNS mondiaux.

PNG - 63.1 ko
Flux DNS zone interne

FLUX EMAIL.

L’architecture réseau avec une zone tampon DNS impose l’utilisation d’un serveur de courrier relais. Ce serveur aura en charge d’échanger des courriers avec des tier via l’Internet. Il transmettra les courriers réceptionner après le filtrage anti-virus et anti-spam vers le second serveur de courrier. Le second serveur de courrier est disposé dans le zone réseau BACKBONE et à en charge l’acheminement interne des emails. Les emails sortant prendrons le chemin inverse toujours via le serveur relais en zone DMZ.

PNG - 68.8 ko
Flux emails

PROXY WEB ET FTP

Les connexions http et ftp en provenance du réseau BACKBONE et LAN en direction de l’Internet transiteront obligatoirement par le serveur proxy / cache disposé sur le réseau BACKBONE. Ce serveur proxy sera chaîné avec le serveur proxy disposé dans le réseau DMZ, ce dernier étant le seul à pouvoir initialisé une connexion vers l’Internet via le serveur pare feux (firewall).

PNG - 66.8 ko
Flux HTTP et PROXY

Serveur gtw0.asr2004.ligfy.org

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 :Digital 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