Installation ferme (suite)
Suite de la semaine précédente.
Générer les certificats pour pop3s et imaps
Créer la clef privée:
openssl genrsa -out mail_server.key
Générer le certificat pour la machine
openssl req -new -key mail_server.key -out imaps54.csr
L'envoyer sur l'autorité de certification:
scp imaps54.csr 192.168.2.55:
Ensuite, s'identifier sur l'autorité de certification:
ssh 192.168.2.55
et signer le certificat:
openssl ca -policy policy_anything -out mail.deb.crt -infiles ../imaps54.csr
Ensuite, rapatrier le certificat signé sur le serveur mail:
scp mail.deb.crt 192.168.2.54:
S'identifier sur le serveur mail et déplacer le certificat signé par l'autorité de certification et la clef privée.
mv mail.deb.crt /etc/ssl/certs/ mv mail_server.key /etc/ssl/private/
Configurer Dovecot
Changer le fichier /etc/dovecot/dovecot.conf:
protocols = imap imaps pop3 pop3s imap_listen = * pop3_listen = * log_path = /var/log/dovecot.log ssl_cert_file = /etc/ssl/certs/mail.deb.crt ssl_key_file = /etc/ssl/private/mail_server.key
Redémarrer le service:
/etc/init.d/dovecot restart
Ensuite tester avec un client…
Routage
Pour voir ce qui se passe, nous allons avoir besoin du paquet tcpdump:
apt-get update apt-get install tcpdump
Soit un réseau interne 10.0.0.0/24 et un réseau externe 192.168.2.0/24. Pour router des packets d'un réseau à un autre, il faut une machine connectée aux 2 réseaux, donc 2 cartes réseaux physiques distinctes.
Ensuite, il faut configurer les 2 interfaces dans /etc/network/interfaces.
# The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth0 eth1 iface eth0 inet static address 192.168.2.42 netmask 255.255.255.0 gateway 192.168.2.2 iface eth1 inet static address 10.0.0.12 netmask 255.255.255.0
Pour pouvoir faire passer les paquets d'un réseau à l'autre, il faut mettre dans /etc/network/options:
ip_forward=yes
Ensuite, soit redémarrer le service réseau:
/etc/init.d/networking restart
Soit taper:
echo "1" > /proc/sys/net/ipv4/ip_forward
Le routage est alors activé.
La machine B dans le réseau interne a l'IP 10.0.0.22.
Sur la machine A du réseau externe a l'IP 192.168.2. Pour que A joigne B, il faut lui dire où aller pour le réseau 10.0.0.0/24:
route add -net 10.0.0.0/24 gw 192.168.2.42
Si on essaie:
ping 10.0.0.22
Les paquets ne passent pas. C'est parce que la machine B ne sait pas joindre la machine A. Il faut donc rajouter la route suivante sur la machine A:
route add -net 192.168.2.0/24 gw 10.0.0.12
Ensuite lorsqu'une machine “ping” l'autre, ça marche.
Installer sur les 3 machines tcpdump.
NAT
= network address translation
Si on veut que le réseau interne puisse aller sur internet, c'est obligatoire: on a besoin d'une adresse routable sur internet, alors que le réseau interne a des adresses privées.
Il faut donc transformer l'adresse source du paquet. Quand B envoie un paquet vers A, lorsque le paquet passe par le routeur, celui-ci masque l'IP source du paquet et la remplace par son adresse (celle sur le même réseau que B).
On réalise cette transformation de paquets IP grâce au logiciel iptables, qui est connu comme le firewall par excellence sous Linux.
iptables travaille avec des tables, notamment une table de translation d'adresses réseau (NAT).
Pour lister la table nat:
iptables -t nat -L Chain PREROUTING (policy ACCEPT) target prot opt source destination Chain POSTROUTING (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination
Il y a 3 chaînes dans la table nat:
- prerouting: avant le routage du paquet
- postrouting: après le routage du paquet
- pour les paquets qui ne font que transiter
iptables -t nat -A POSTROUTING -p tcp --dst 10.0.0.11 -j SNAT --to-source 10.0.0.1
= faire du nat -A POSTROUTING : append dans la chaîne après le routege concerne le trafic tcp à destination de la machine 10.0.0.11 faire (-j): du nat source à remplacer par l'IP 10.0.0.1
vu que l'extérieur du réseau 10.0.0.0, tout va paraître venir de 10.0.0.1.
Le routeur va prendre note de qui était l'émetteur du paquet dans le réseau 10.0.0.0 et il va renvoyer les réponses à l'émetteur original.
Application: réseau interne connecté (IP privée, non routable sur internet) à
Le nat source est également appelé masquerade. Ici, on le fait juste pour l'adresse 10.0.0.11.
Pour le faire pour tout le sous-réseau:
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
où eth1 est l'interface réseau externe au réseau.
Si tout le trafic doit être redirigé vers une machine donnée qui est derrière le routeur, il faut faire du destination nat.
iptables -t nat -A PREROUTING --dst 192.168.2.41 -j DNAT --to-destination 10.0.0.11
On fait du dnat en prerouting et du snat en postrouting. Si on fait du snat en postrouting, la destination du paquet est le routeur, et il ne route pas → passe pas par la chaîne postrouting
Pour le serveur web derrière le firewall, on fait du port forwarding:
iptables -t nat -A PREROUTING --dst 192.168.2.41 -p tcp --dport 80 -j DNAT --to-destination 10.0.0.11
Ici, le firewall a les IPs 192.168.2.41 et 10.0.0.1 et le serveur web a l'IP 10.0.0.11
Si on veut changer le port de destination (vers 8080) sur 10.0.0.11, il suffit de rajouter : et le numéro de port:
iptables -t nat -A PREROUTING --dst 192.168.2.41 -p tcp --dport 80 -j DNAT --to-destination 10.0.0.11:8080