View
13
Download
0
Category
Preview:
Citation preview
Documentation Serveur Cerberus Sous Linux IPFIRE
Sommaire
Présentation..........................................................................................................................................2I Installation de Ipfire.........................................................................................................................3
I.I Installation du Système.............................................................................................................3I.II Configuration du Réseau.........................................................................................................4I.III Accès SSH..............................................................................................................................7
II Mise en Place du Raid1 logiciel avec Mdadm :..............................................................................7II.I Remplacement d'un disque......................................................................................................9II.II Etre alerté par mail en cas de défaillance du Raid1..............................................................10
III La Rotation de Logs avec Logrotate............................................................................................13IV Configuration des différents services via l'interface Web...........................................................17
IV.I OpenVpn...............................................................................................................................17IV.II WebProxy/UrlFilter (Squid/SquidGuard)............................................................................22IV.III Détection d'Intrusion avec Snort et Fail2ban avec Guardian.............................................26IV.IV IpTables.............................................................................................................................29IV.V Les Rapports........................................................................................................................31IV.VI Réglage de l'heure, Sauvegarde, et Mises à jour................................................................32
Arnaud GUEDJ 1 Section AFPA ASY2012/2013
Présentation
Cette documentation a pour but de décrire la procédure d'installation et de configuration de la distribution Linux Ipfire sur le serveur Cerberus de l'AFPA.
Ipfire est un système d'exploitation basé sur le noyau Linux (similaire à Ipcop) qui permet de transformer un Pc équipé au minimum de deux cartes réseaux en un véritable routeur/parefeu/proxy... haut de gamme. Son atout principal est sa simplicité d'administration qui se fait par l'intermédiaire d'une interface web sécurisée.
Contexte
Arnaud GUEDJ 2 Section AFPA ASY2012/2013
I Installation de Ipfire
I.I Installation du Système
Commencez par télécharger l'image iso ou img(pour un live usb) sur le site officiel :
Démarrez sur le support d'installation :
Une fois l'installateur démarré, à l'écran choisissez votre langue, puis accepter le formatage et la copie des fichiers sur le disque dur, ensuite sélectionnez le système de fichiers EXT3 ou EXT4, et patientez jusqu'à la fin de l'installation des fichiers.
Arnaud GUEDJ 3 Section AFPA ASY2012/2013
Après l'écran cidessus vous pourrez retirer le support d'installation, et configurer le clavier, le fuseau horaire, le nom d'hôte, et le nom de domaine si vous en avez un.
Les Mots de passe :
Nous avons 2 mots de passe à configurer, celui de root et celui de l'utilisateur Admin qui sera autorisé à se connecter sur l'interface Web.
Note : Tout comme avec Bash vous ne verrez aucun caractère s'afficher à l'écran lors de la saisie du mot de passe.
I.II Configuration du RéseauPar défaut nous avons deux interfaces réseaux à configurer, la verte pour le lan et la rouge pour le wan. Nous garderons ce type de configuration pour cette procédure.
Maintenant, il faut assigner une carte réseau pour chaque réseau (vert et rouge) :
Arnaud GUEDJ 4 Section AFPA ASY2012/2013
Ensuite, configurez les adresses réseaux de chaque carte :
Lors de la configuration de l'adresse réseau de l'interface verte vous pourrez ignorer cette fenêtre d'alerte en appuyant sur OK :
Arnaud GUEDJ 5 Section AFPA ASY2012/2013
Pour terminer, configurez les paramètres dns et votre passerelle pour l'interface rouge :
A l'écran suivant, il vous sera proposé de paramétrer le serveur dhcp sur l'interface verte, dans notre cas il sera désactivé. Après cette étape la configuration de Ipfire prend fin, et votre système est désormais opérationnel.
Vous pouvez à présent accéder à l'interface web en vous connectant à l'adresse ip de l'interface verte (lan), sur le port 444, dans notre cas : 192.168.233.10:444.
Arnaud GUEDJ 6 Section AFPA ASY2012/2013
I.III Accès SSHLa première chose à faire une fois arrivé sur l'interface web est d'aller démarrer le serveur ssh dans la colonne de droite « Accès SSH », ce qui nous permettra dans certains cas d'effectuer des configurations spécifiques qui sont uniquement possible via la ligne de commande.
II Mise en Place du Raid1 logiciel avec Mdadm :
Afin de sécuriser notre installation nous allons mettre en place du raid1 logiciel avec Mdadm sur le système complet, sauf sur la partition montée sur /boot.
Note : L'installateur de Ipfire ne permet pas pour l'instant de mettre en place du raid à l'installation du système.
Voici le partitionnement par défaut de Ipfire :
/dev/sda1 = /boot ( environ 70 MB en EXT2 )
/dev/sda2 = swap ( cela dépend de l'espace disque et de la ram )
/dev/sda3 = / ( 2 GB en EXT3 ou 4 dépend de votre sélection à l'installation )
/dev/sda4 = /var ( le reste en EXT3 ou 4 dépend de votre sélection à l'installation)
En Raid1 nous conserverons le même ordre de partitionnement, au final nous aurons cela :
/dev/sda1 = /boot
/dev/sdb1 = /boot
/dev/sda2 + /dev/sdb2 = /dev/mdX ( raid1)
/dev/mdXp1 = swap ( équivalent à la ram )
/dev/mdXp2 = / ( 5GB à la place de 2GB pour être tranquille )
/dev/mdXp3 = /var ( le reste )
Arnaud GUEDJ 7 Section AFPA ASY2012/2013
Note : L'installation de Grub n'est pas obligatoire sur les deux disques mais par sécurité, il vaut mieux avoir un chargeur d'amorçage sur chaque disque.
Installer Grub sur /dev/sdb :
Copiez le contenu de /boot vers /boot.bak puis démontez /dev/sda1, partitionnez le disque /dev/sdb avec fdisk :
/dev/sdb1 ( environ 80 MB et amorçable), formatée en EXT2.
/dev/sdb2 ( le reste )
Ensuite , montez /dev/sdb1 sur /boot, copiez le contenu de /boot.bak vers /boot, puis :
« grubinstall –recheck /dev/sdb »
Vous avez à présent deux disques amorçables passons à l'étape suivante.
Toujours en ssh, installez mdadm via le gestionnaire de paquets « Pakfire »:
« pakfire install mdadm »
Nous allons générer un nouveau initrd avec l'utilitaire Dracut, qui intègre les pilotes raid pour que la racine puisse être montée durant le démarrage, c'est à dire après le chargement de Grub.
Commencez par récupérer l'archive tar.gz la plus récente de dracut qui contient les modules raid logiciels :
https://www.kernel.org/pub/linux/utils/boot/dracut/
Extraire son contenu dans le répertoire de /root (par exemple) puis copiez les modules manquants comme ceci :
« cp R /root/dracut026/modules.d/90mdraid/ /usr/share/dracut/modules.d/90mdraid »
Modifiez quelques lignes :
« vi /usr/share/dracut/modules.d/90mdraid/65mdincrementalimsm.rules » commentez les lignes 1617 (ou vers la ligne 30, cela dépend de la version de dracut):
#ENV{DEVTYPE}!="partition", \# RUN+="/sbin/partx -d --nr 1-1024 $env{DEVNAME}
« vi /usr/share/dracut/modules.d/90mdraid/install » les lignes 34 doivent être comme ceci :
dracut_install mdadm#partx
Vérifiez aussi que le fichier /etc/dracut.conf contient la ligne non commentée « mdadmconf= yes ».
Vous pouvez maintenant générer votre nouveau initrd.img, mais avant il faut sauvegarder le fichier actuel se trouvant dans le répertoire /boot :
« cp a /boot/ipfirerd3.2.38.img /boot/ipfirerd3.2.38.img.bak »
Arnaud GUEDJ 8 Section AFPA ASY2012/2013
Puis lancez tout simplement la commande « dracut » qui générera un nouveau initrd dans /boot.
Renommez le comme l'ancien, c'est à dire « ipfirerd3.2.38.img », copiez le ensuite dans /boot.bak, puis démontez /dev/sdb1 et remontez /dev/sda1 sur /boot et recopiez le depuis /boot.bak vers /boot.
Vous devez à présent démarrer sur un livecd ou liveusb (Ubuntu par exemple), sauvegarder toutes les partitions de /dev/sda dans des dossiers séparés portant le nom de la partition et du point de montage, puis avec fdisk supprimer toutes les partitions de /dev/sda, SAUF /dev/sda1, ensuite créer une deuxième partition /dev/sda2, et créer votre raid1 avec mdadm puis partitionner comme décrit ici (page 7). Restaurez les dossiers sauvegardés dans les partitions raid correspondantes, ensuite il nous reste à adapter les fichiers /boot/grub/grub.conf et /etc/fstab :
grub.conf :
kernel /vmlinuz3.2.38ipfire root=/dev/md127p2 panic=10 ro
fstab :
/dev/sda1 /boot ext2 defaults 1 2
/dev/md127p1 swap swap pri=1 0 0
/dev/md127p2 / ext4 defaults 1 1
/dev/md127p3 /var ext4 defaults 1 1
Par défaut le raid est nommé « /dev/md127 », si ce n'est pas le cas il vous informera au démarrage qu'il ne trouve pas /dev/mdX et qu'il ne peut pas démarrer, donc à vous d'adapter le grub.conf, la configuration de fstab est normalement générée automatiquement.
II.I Remplacement d'un disqueJe vous conseille fortement de réinstaller grub à chaque fois que vous remplacerez un disque, en respectant cette configuration :
/dev/sdX1 = /boot (en EXT2, 80 MB et ne pas oublier de recopier les fichiers les plus récents depuis le répertoire /boot comme nous l'avons fais page 8).
/dev/sdX2 = à réintégrer dans le raid.
Arnaud GUEDJ 9 Section AFPA ASY2012/2013
II.II Etre alerté par mail en cas de défaillance du Raid1Nous ferons cela avec le serveur de mail Postfix :
Donc depuis la ligne de commande : « pakfire install postfix »
Nous passons maintenant à la configuration du serveur smtp:
/etc/postfix/main.cf :
myhostname = cerberus.localdomain.fr
mydomain = localdomain.fr
myorigin = $myhostname
mynetworks = 127.0.0.0/8 192.168.233.0/24
mynetworks_style = subnet
mydestination = $myhostname, $mydomain, $mynetworks, localhost
relayhost = [smtp.gmail.com]:587
smtp_sasl_auth_enable = yes
## Fichier contenant les identifiants gmail pour relayer les mails
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_use_tls = yes
## Fichier cacertificates.crt (certificat d'autorité courant utilisé par ssl) à récupérer sur
## n'importe quelle distribution linux (non présent dans ipfire).
smtp_tls_CAfile = /etc/ssl/certs/cacertificates.crt
## Fichier contenant les alias utilisateurs
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
smtpd_banner = $myhostname ESMTP $mail_name ($mail_version)
### Fin du fichier de configuration
Arnaud GUEDJ 10 Section AFPA ASY2012/2013
Contenu des fichiers annexes :
/etc/postfix/sasl_passwd :
[smtp.gmail.com]:587 user@gmail.com:password
/ etc/aliases :
# Begin /etc/aliases
MAILERDAEMON: postmaster
postmaster: root
admin: root
# End /etc/aliases
Une fois le fichier /etc/postfix/sasl_passwd rempli exécuter la commande :
« postmap /etc/postfix/sasl_passwd »
Pour le fichier /etc/aliases nous ferons de même une fois rempli :
« newaliases »
Et créer le répertoire « Maildir » dans le répertoire de l'utilisateur, root dans notre cas : /root/Maildir/
A la fin de la configuration redémarrez le service :
« /etc/init.d/postfix restart »
Vous pouvez vérifier les logs de Postfix dans « /var/log/mail ».
Démarrage automatique de postfix :
« ln -s /etc/init.d/postfix /etc/rc.d/rc0.d/K31postfix »« ln -s /etc/init.d/postfix /etc/rc.d/rc3.d/S31postfix »« ln -s /etc/init.d/postfix /etc/rc.d/rc6.d/K31postfix »
Arnaud GUEDJ 11 Section AFPA ASY2012/2013
Script d'alerte pour mdadm :
Copiez et collez ce contenu dans un fichier /usr/bin/mdadmstatusmail.sh
#!/bin/bash
if ! grep q "UU" /proc/mdstat;
then
echo "Subject: RAIDStatusmail" > /tmp/statusmail
echo "From: \"Cerberus\" <admin@cerberus.localdomain.fr>" >> /tmp/statusmail
echo "To: <user@afpa.fr>" >> /tmp/statusmail
mdadm detail /dev/md127 >> /tmp/statusmail
cat /tmp/statusmail | /usr/sbin/sendmail i t
rm f /tmp/statusmail;
fi
###fin du script
Rendez le exécutable « chmod 611 /usr/bin/mdadmstatusmail.sh ».
Afin d'automatiser l'envoi du mail, créez un lien symbolique du script dans le répertoire /etc/fcron.hourly :
« ln s /usr/bin/mdadmstatusmail.sh /etc/fcron.hourly/mdadmstatusmail.sh »
Toutes les heures le script vérifiera l'état du raid1, et en cas de défaillance il enverra un mail à « user@afpa.fr ».
Arnaud GUEDJ 12 Section AFPA ASY2012/2013
III La Rotation de Logs avec Logrotate
Logrotate va nous permettre de faire de la rotation de logs, de compresser les anciens logs et de recréer des nouveaux fichiers logs vides chaque semaine, nous ferons 52 rotations, donc une par semaine (donc 52 sauvegardes de chaque log), ce qui est égal à un an. Le fait d'avoir des logs pour chaque semaine permet aussi d'avoir des petits fichiers logs plus facilement lisibles et facile à parcourir en cas de maintenance.
La configuration de logrotate se fait dans le fichier /etc/logrotate.conf , nous reprenons le fichier de configuration initiale pour l'adapter à nos besoins comme ceci :
/etc/logrotate.conf :
# rotate log files weekly
weekly
# keep 52 weeks worth of backlogs
rotate 52
# create new (empty) log files after rotating old ones
create
# directive "olddir" à préciser pour définir un autre emplacement des archivessi besoin.
# uncomment this if you want your log files compressed
compress
# wtmp
/var/log/wtmp {
weekly
create 0664 root utmp
rotate 1
}
/var/log/httpd/access_log /var/log/httpd/error_log /var/log/httpd/ssl_request_log /var/log/httpd/ssl_engine_log {
missingok
sharedscripts
postrotate
Arnaud GUEDJ 13 Section AFPA ASY2012/2013
/bin/kill HUP `cat /var/run/httpd.pid 2>/dev/null` 2> /dev/null || true
endscript
}
/var/log/snort/alert {
copytruncate
compress
ifempty
missingok
postrotate
/bin/find /var/log/snort path '/var/log/snort/[09]*' prune exec /bin/rm rf {} \;
/bin/find /var/log/snort name 'snort.log.*' mtime +28 exec /bin/rm rf {} \;
/etc/init.d/snort restart
endscript
}
/var/log/squid/access.log /var/log/squid/user_agent.log /var/log/squid/referer.log {
copytruncate
ifempty
missingok
}
/var/log/squid/cache.log {
copytruncate
compress
missingok
}
/var/log/squid/store.log {
copytruncate
compress
missingok
postrotate
/bin/chmod R ugo+rX /var/log/squid
Arnaud GUEDJ 14 Section AFPA ASY2012/2013
/usr/sbin/squid k rotate
endscript
}
/var/log/messages /var/log/bootlog /var/log/dhcpcd.log {
create 664 root syslogd
sharedscripts
ifempty
postrotate
/bin/kill HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
}
/var/log/squidGuard/*.log {
copytruncate
compress
notifempty
missingok
}
/var/log/updatexlrator/*.log {
copytruncate
compress
notifempty
missingok
}
## Fin du fichier de configuration
Arnaud GUEDJ 15 Section AFPA ASY2012/2013
Nous allons maintenant automatiser la rotation de log chaque semaine avec fcrontab .
Editez le fichier fcrontab avec la commande « frontab e » par défaut l'éditeur vi sera lancé :
fcrontab e :
# Log rotation
30 23 * * 5 /usr/sbin/logrotate /etc/logrotate.conf
## la commande sera lancé tous les vendredi à 23h30.
Vérifiez qu'il n y ai pas d'autres tâches Logrotate dans le fichier fcrontab.
Arnaud GUEDJ 16 Section AFPA ASY2012/2013
IV Configuration des différents services via l'interface Web
IV.I OpenVpnVoici le chemin du répertoire de configuration de openvpn (/var/ipfire/ovpn/), cela peut être utile.
Pour accéder à la configuration de OpenVpn, allez sur l'onglet services, puis sur la colonne de droite OpenVpn :
Cochez Openvpn sur RED, cochez « CompressionLZO » et indiquez votre adresse Ip publique (FAI) dans le champ « nom d'hôte/IP du VPN local », choisissez votre algorithme de chiffrement « AES128CBC », et modifiez si vous le désirez l'adresse du réseau OpenVpn, (dans les options avancées du serveur il est possible d'ajouter des routes vers des sous réseaux interne qui seront accessibles par le client, il est aussi possible d'activer l'option « ClienttoClient » afin que les clients connectés au serveur puissent se voir.) puis cliquez sur « Générer des certificats Root/Hôte ».
Arnaud GUEDJ 17 Section AFPA ASY2012/2013
Cliquez sur « Générer des certificats Root/Hôte » après avoir rempli les champs.
La partie configuration serveur est terminée, il est maintenant nécessaire de générer les certificats clients en cliquant sur ajouter:
Arnaud GUEDJ 18 Section AFPA ASY2012/2013
Choisissez le mode RoadWarrior.
Précisez le nom de la connection.
Arnaud GUEDJ 19 Section AFPA ASY2012/2013
Rentrez votre nom d'utilisateur, remplissez les champs manquants, et NE SURTOUT PAS MODIFIER LES CHAMPS DEJA REMPLI, indiquez la validité du certificat (max 999), saisissez votre mot de passe si vous voulez protéger votre clé avec un mot de passe à chaque connexion, sinon laissez vide.
Cliquez ensuite sur « sauvegarder » en bas de page.
Arnaud GUEDJ 20 Section AFPA ASY2012/2013
La configuration de OpenVpn est maintenant terminée, vous pouvez télécharger le zip client contenant la configuration et le certificat. Pensez a ouvrir le port 1194 en UDP sur le routeur et en cas de load balancing avec deux connexions internet, précisez la connexion wan que vous voulez utilisez pour les connexions OpenVpn.
Arnaud GUEDJ 21 Section AFPA ASY2012/2013
IV.II WebProxy/UrlFilter (Squid/SquidGuard)Allez sur l'onglet réseau puis Webproxy dans la colonne de droite :
Voici les paramètres de base en mode transparent avec Filtre URL.
Arnaud GUEDJ 22 Section AFPA ASY2012/2013
Arnaud GUEDJ 23 Section AFPA ASY2012/2013
Nous allons maintenant télécharger la blacklist de l'université de Toulouse pour UrlFilter à cette adresse :
http://dsi.utcapitole.fr/blacklists/download/blacklists.tar.gz
Puis dans la colonne de droite allez sur Filtre de contenu, descendez et téléchargez l'archive blacklist sur le serveur :
Arnaud GUEDJ 24 Section AFPA ASY2012/2013
Une fois téléchargée, vous avez un grand choix de catégories que vous pouvez filtrer.
Voici d'autres paramètres intéressants dans la même page :
Arnaud GUEDJ 25 Section AFPA ASY2012/2013
IV.III Détection d'Intrusion avec Snort et Fail2ban avec GuardianSnort permet de faire de la détection d'intrusion système, il fonctionne avec des règles prédéfinies que l'on télécharge sur le site snort.org, sa mise en place est assez simple via l'interface web de Ipfire, allez sur l'onglet services et dans la colonne de droite cliquez sur « Détection d'intrusion ».
Activez le service sur les interfaces voulues et choisissez les règles communautaires GPL, puis créez un compte sur snort.org pour ensuite obtenir un Oinkcode, et cliquez sur « Télécharger un nouveau règlement ».
Arnaud GUEDJ 26 Section AFPA ASY2012/2013
Guardian est une extension de Snort permettant de rejeter pendant une intervalle de temps donnée une adresse ip suspectes (par ex. 3 saisies erronées successives de login ssh) trouvée dans les logs de Snort.
Installez via l'interface web (ou la ligne de commande) l'extension guardian, allez dans l'onglet ipfire et recherchez « guardianipfire » dans la liste des addons disponibles.
Arnaud GUEDJ 27 Section AFPA ASY2012/2013
Une fois installée, retournez dans le menu Détection d'intrusion, et vous verrez apparaître le plugin Guardian, vous pouvez ici définir l'intervalle de temps pour bloquer une adresse ip suspectes.
Arnaud GUEDJ 28 Section AFPA ASY2012/2013
IV.IV IpTablesL'interface web permet aussi d'ajouter des règles dans Iptables, de consulter les logs, les règles définies, l'état des connections ( grâce a conntrack ).
Arnaud GUEDJ 29 Section AFPA ASY2012/2013
Connaître le statut des connexions peut être très utile, allez dans l'onglet statut, puis « Connexions » dans la colonne de droite.
Arnaud GUEDJ 30 Section AFPA ASY2012/2013
IV.V Les RapportsVous pouvez consulter les logs des différents services dans l'onglet rapports.
Arnaud GUEDJ 31 Section AFPA ASY2012/2013
IV.VI Réglage de l'heure, Sauvegarde, et Mises à jour
IV.VI.I Réglage de l'heure
Si il y a bien une chose que l'on oublie souvent de vérifier, c'est l'heure de notre machine.
Pourtant il est très important d'avoir un système à l'heure surtout quand on fait du filtrage url et que l'on souhaite conserver les logs.
Alors rendez vous sur cette page, dans l'onglet services, « Heure du serveur » :
Arnaud GUEDJ 32 Section AFPA ASY2012/2013
IV.VI.II Sauvegarde
Comme avec un routeur constructeur propriétaire il est possible de faire des sauvegardes du système complet. En cas de panne on pourra restaurer toute la configuration de Ipfire.
Note : La sauvegarde copie uniquement les fichiers de configuration, ce sera à vous de restaurer les programmes manquants.
Arnaud GUEDJ 33 Section AFPA ASY2012/2013
IV.VI.III Mise à jour
Ipfire affiche les mises à jour disponibles dans la fenêtre de droite, pour mettre à jour manuellement, cliquez sur le petit bouton en dessous. Sinon vous pouvez cocher les mises à jour automatique en bas de page, ce que je déconseille fortement car il est plus prudent de sauvegarder la configuration complète de Ipfire avant, puis mettre à jour manuellement le système.
Arnaud GUEDJ 34 Section AFPA ASY2012/2013
Recommended