Méthodologie : Dans la plupart de cas, même en installation minimal, le service SSH est prêt à fonctionner dès la fin de l'installation de votre distribution. Pour ma part, j'effectue les opérations suivantes à l'aide d'un client SSH installé sur mon poste de travail. Ce type de fonctionnement me permet en autre d'effectuer des copier/coller de lignes de commandes et de paramètres que j'ai stocké dans des fichiers textes. Remarques : - Pour toutes ces opérations, il faut être logué avec le compte root
- Si vous ne connaissez pas bien l'éditeur "vi", reportez-vous à la rubrique sur ce sujet
- Le répertoire /etc/security contient beaucoup d'éléments concernant la sécurité mais je n'ai pas encore eu le temps de tous les etudier.
Sauvegarde avant toutes modifications : <strong># Inventaire</strong>
<strong># Création d'un répertoire de stockage pour les sauvegardes et inventaires</strong>
[root@linux /]$ <span class="commande">mkdir /var/sauvegarde</span>
<strong># Remarque : Remplacer ddmmaaaa-hhmm par les valeurs correspondantes</strong>
<strong># Tracer tous les fichiers présents avec attributs et propriétaire</strong>
[root@linux /]$ <span class="commande">ls -aRl / > /var/sauvegarde/ls-aRl-ddmmaaaa-hhmm.log</span>
<strong># Liste des rpm trié installé actuellement sur le système</strong>
[root@linux /]$ <span class="commande">rpm -qa | sort > /var/sauvegarde/rpm-qa-ddmmaaaa-hhmm.log</span>
<strong># Organisation actuel des files System</strong>
[root@linux /]$ <span class="commande">df -ah > /var/sauvegarde/df-ah-ddmmaaaa-hhmm.log</span>
<strong># Il est important de sauvegarder les fichiers qui nous seront amenés à modifier.</strong>
<strong># Normalement, tous se trouve dans l'arborescence du répertoire /etc</strong>
[root@linux /]$ <span class="commande">cd /</span>
[root@linux /]$ <span class="commande">tar -czvf /var/sauvegarde/sav-av-securisation-etc.tar.gz etc</span>
Mise à l'heure et Internationalisation : Il est important pour la traçabilité des opérations, que le serveur soit à l'heure et que les paramètres d'affichage horaires soit parfaitement définies. Même chose pour les paramètres d'internationalisation. Un conseil : Laissez ces valeurs car cela à des conséquences sur la compilation ou d'autres opérations <strong># Editez le fichier /etc/sysconfig/i18n :</strong>
<strong># Le "fr_FR.UTF-8" utilisé par défaut pose des problèmes d'affichage et de compilation</strong>
[root@linux /]$ <span class="commande">vi /etc/sysconfig/i18n</span>
LANG="en_US"
SUPPORTED="en_US:fr_FR:fr"
LANGUAGE="en_US"
# LC_ALL="C" (à vérifier)
<strong># Editez le fichier /etc/sysconfig/clock :</strong>
[root@linux /]$ <span class="commande">vi /etc/sysconfig/clock</span>
ZONE="Europe/Paris"
UTC=true
# Europe/Paris correspond au fichier :/usr/share/zoneinfo/Europe/Paris Vérifiez et remplacez si nécessaire le fichier /etc/localtime Ce fichier définit, les paramètres d'affichage de l'horloge. Il est une copie d'un des fichiers que l'on trouve dans /usr/share/zoneinfo. Faites différents essai pour voir le fonctionnement et les changements apportés <strong># Affichage de la date avec un localtime /usr/share/zoneinfo/UTC :</strong>
[root@linux /]$ <span class="commande">date</span>
<span style="color: #ff0000">Mon Feb 2 15:07:28 UTC 2004</span>
<strong># Affichage de la date avec un localtime /usr/share/zoneinfo/Europe/Paris :</strong>
[root@linux /]$ <span class="commande">date</span>
<span style="color: #ff0000">Mon Feb 2 16:10:19 CET 2004</span> Vous remarquerez, le décalage horaire ainsi que le libellé CET au lieu du UTC. L'affichage des jours et mois en Français n'est pas lié au localtime utilisé mais à la langue dans la variable d'environnement "LANG" <strong># Exemple, si vous changer cette variable :</strong>
[root@linux /]$ <span class="commande">export LANG=fr_FR</span>
[root@linux /]$ <span class="commande">date</span>
<span style="color: #ff0000">lun fév 2 16:14:11 CET 2004</span>
<strong># Pour éviter de relancer la session à chaque modification :</strong>
[root@linux /]$ <span class="commande">source /etc/sysconfig/i18n</span>
[root@linux /]$ <span class="commande">source /etc/sysconfig/clock</span>
<strong># Vérifier si le fichier /etc/localtime actuel correspond à celui vous voulez utiliser :</strong>
[root@linux /]$ <span class="commande">diff /etc/localtime /usr/share/zoneinfo/UTC</span>
<span style="color: #ff0000">Binary files /etc/localtime and /usr/share/zoneinfo/UTC differ</span>
[root@linux /]$ <span class="commande">diff /etc/localtime /usr/share/zoneinfo/Europe/Paris</span>
<span style="color: #ff0000">Vous ne devriez n'avoir aucune réponse</span> Quelques soit le localtime utilisé au final, le principal est qu'il soit le même sur toutes vos machines. <strong># Pour changer le localtime</strong>
[root@linux /]$ <span class="commande">cd /etc</span>
[root@linux /]$ <span class="commande">rm -f localtime</span>
[root@linux /]$ <span class="commande">ln -s /usr/share/zoneinfo/Europe/Paris localtime</span> Paramétrage de la synchronisation automatique avec un serveur de temps. Si vous avez un serveur NTP en interne, utilisez-le à la place de celui proprosé. <strong># Vérifications du DNS (doit répondre IP 134.214.100.6) : </strong>
[root@linux /]$ <span class="commande">ping ntp.univ-lyon1.fr</span>
<span style="color: #ff0000">PING dns.univ-lyon1.fr (134.214.100.6) 56(84) bytes of data.</span>
<span style="color: #ff0000">64 bytes from dns.univ-lyon1.fr (134.214.100.6): icmp_seq=0 ttl=50 time=173 ms</span> Si ça ne fonctionne pas, vérifier le DNS dans /etc/resolv.conf. Ce fichier doit au moins contenir une entrée nameserver xxx.xxx.xxx.xxx. Sinon vérifier vos paramètres réseaux. NTP se trouve sur le CD 2 de Redhat Entreprise, fichier ntp-4.xxx.rpm. Le package NTP réclame la présence du package "libcap-1.10-15.i386.rpm" que vous trouverez sur le même cd <strong># Synchronisation horaire avec NTP.</strong>
<strong># Installation du package "libcap" dont à besoin le package NTP :</strong>
[root@linux /]$ <span class="commande">rpm -Uvh /mnt/cdrom/RedHat/RPMS/libcap-1.10-15.i386.rpm</span>
<strong># Installation du package NTP :</strong>
[root@linux /]$ <span class="commande">rpm -Uvh /mnt/cdrom/RedHat/RPMS/ntp-4.1.2-4.i386.rpm</span>
<strong># Modification du fichier de config /etc/ntp.conf :</strong>
[root@linux /]$ <span class="commande">vi /etc/ntp.conf</span>
# Ajoutez la ligne suivante, (a mettre avant le premier "server 127.127.1.0")
server ntp.univ-lyon1.fr prefer
<strong># Ajouter ce serveur dans /etc/ntp/step-tickers</strong>
[root@linux /]$ <span class="commande">echo 'ntp.univ-lyon1.fr' >> /etc/ntp/step-tickers</span>
<strong># Vérifiez la date et l'heure actuel :</strong>
[root@linux /]$ <span class="commande">date</span>
<span style="color: #ff0000">Mon Feb 2 15:51:15 UTC 2004</span>
<strong># Lancer la commande une première fois à la main :</strong>
[root@linux /]$ <span class="commande">/usr/sbin/ntpdate -s -b -p 8 -u `cat /etc/ntp/step-tickers`</span>
<strong># Vérifiez la date et l'heure après la synchronisation :</strong>
[root@linux /]$ <span class="commande">date</span>
<span style="color: #ff0000">Mon Feb 2 15:00:51 UTC 2004</span> Ajoutez une tâche cron pour la mise à jour horaire, directement dans /etc/crontab ou créez un fichier ntp.cron dans /etc/cron.daily [root@linux /]$ <span class="commande">echo "02 4 * * * root nice -n 19 /usr/sbin/ntpdate \
-s -b -p 8 -u `cat /etc/ntp/step-tickers`" >> /etc/crontab</span> Sécurisation de base pour SSH Dans la section réservé à SSH, nous aborderons en profondeur sa sécurisation mais il s'agit pour le moment du minimum requis. <strong># Editer /etc/ssh/sshd_config et mettre PermitRootLogin no</strong>
[root@linux /]$ <span class="commande">vi /etc/ssh/sshd_config</span>
PermitRootLogin no
<strong># Relancer le service SSH</strong>
[root@linux /]$ <span class="commande">/etc/init.d/sshd restart</span> Désactivation des services : Vous pouvez trouvez plus ou moins de services que ceux exposés ci-après. La liste suivante correspond à l'installation d'une Redhat Entreprise ES 9.0 en mode minimal. <strong># Pour désactiver un service au niveau d'exécution 3 :</strong>
[root@linux /]$ <span class="commande">chkconfig --level 3 nom_service off</span>
<strong># Pour activer un service au niveau d'exécution 3 :</strong>
[root@linux /]$ <span class="commande">chkconfig --level 3 nom_service on</span>
<strong># Pour supprimer un service (sans supprimer l'application) :</strong>
[root@linux /]$ <span class="commande">chkconfig --del nom_service</span>
<strong># Pour ajouter un service :</strong>
[root@linux /]$ <span class="commande">chkconfig --add nom_service</span>
/etc/init.d/atd ................. : OFF - Tâches programmés par la commande "at"
/etc/init.d/autofs .............. : OFF - Montage automatique de périphérique amovible (fdd, cdrom, jazz, etc...)
/etc/init.d/crond ............... : ON - Programmateur de tâches
/etc/init.d/functions ........... : N/A - Ce n'est pas un service mais une bibliothèque de scrips bash
/etc/init.d/gpm ................. : OFF - Gestionnaire de souris pour Vim et MC
/etc/init.d/halt ................ : N/A - Ce n'est pas un service mais le scripts utilisé pour arrêter la machine
/etc/init.d/ip6tables ........... : OFF - Firewall iptable (version ipv6)
/etc/init.d/iptables ............ : OFF - Firewall iptable (version ipv4)
/etc/init.d/irqbalance .......... : ? - ???
/etc/init.d/kdcrotate ........... : OFF - Kerberos (execution des scripts du fichier /etc/krb5.conf)
/etc/init.d/keytable ............ : ON - Outils de configuration de la console, clavier, etc...
/etc/init.d/killall ............. : N/A - Ce n'est pas un service.
/etc/init.d/kudzu ............... : OFF - Utilitaire pour découvrir et configurer les périphériques PNP
/etc/init.d/mdmonitor ........... : ON - Moniteur pour les systèmes RAID
/etc/init.d/microcode_ctl ....... : ? - Microcode pour le CPU ???
/etc/init.d/netdump ............. : OFF - ???
/etc/init.d/netfs ............... : OFF - Pour monter des FS réseau comme (SMB, NCP)
/etc/init.d/network ............. : ON - Activation des fonctions réseaux
/etc/init.d/nfs ................. : OFF - Services NFS
/etc/init.d/nfslock ............. : OFF - Service de vérrouillage NFS
/etc/init.d/nscd ................ : OFF - Service de cache pour les recherches NIS, DNS, ???
/etc/init.d/portmap ............. : OFF - Gestionnaire de sécurité pour NFS, NIS (RPC)
/etc/init.d/psacct .............. : OFF - Moniteur d'activité
/etc/init.d/random .............. : ON - Garantie un bon niveau d'entropie pour les valeurs aléatoires
/etc/init.d/rawdevices .......... : OFF - Assignation de RawDevices à des périphériques bloc ???
/etc/init.d/rhnsd ............... : OFF - Service de mise à jour automatique Redhat Network
/etc/init.d/saslauthd ........... : OFF - Serveur d'authentification SASL
/etc/init.d/single .............. : N/A - A priori, remplace l'ancien fichier /etc/init.d/local ???
/etc/init.d/smartd .............. : OFF - SMART Disk Monitoring Daemon ???
/etc/init.d/sshd ................ : ON - Serveur SSH
/etc/init.d/syslog .............. : ON - Gestionnaire des logs
/etc/init.d/xinetd .............. : OFF - Services Xinetd
/etc/init.d/ypbind .............. : OFF - Services NIS ???
<strong># D'autres services que vous pourriez trouver :</strong>
/etc/init.d/anacron ............. : OFF - Ordonnanceur de tâches (ne l'activez que si vous l'utilisez)
Login root via SU : Un serveur peut avoir plusieurs personnes chargés de son administration. Si chacune se logue directement en tant que "root", vous perdrez toutes traçabilités. L'objectif de cette opération, est d'obliger les administrateurs à ouvrir d'abord un login sous leur compte puis de passer en compte "root" par la commande "su -" Cette méthode permet également de retirer les droits d'administration à une personne sans avoir à changer le mot de passe du compte "root" <strong># Création d'un compte administrateur - A faire pour chaque administrateur</strong>
<strong># Evitez les noms génériques comme "admin1", ce n'est qu'un exemple</strong>
[root@linux /]$ <span class="commande">useradd -G wheel,adm admin1</span>
<strong># Mettre le fichier /etc/pam.d/su dans l'état suivant :</strong>
<strong># Cela permet ne n'autoriser que les membres du groupe "wheel" à utiliser "su"</strong>
[root@linux /]$ <span class="commande">vi /etc/pam.d/su</span>
auth sufficient /lib/security/$ISA/pam_rootok.so
#auth sufficient /lib/security/$ISA/pam_wheel.so trust use_uid
auth required /lib/security/$ISA/pam_wheel.so use_uid
auth required /lib/security/$ISA/pam_stack.so service=system-auth
account required /lib/security/$ISA/pam_stack.so service=system-auth
password required /lib/security/$ISA/pam_stack.so service=system-auth
session required /lib/security/$ISA/pam_stack.so service=system-auth
session optional /lib/security/$ISA/pam_xauth.so
<strong># Remarque : D'autres options sont possibles mais elles sortent des limites de ce chapitre.</strong> Modification du fichier /etc/inittab : <strong># Editez le fichier /etc/inittab</strong>
[root@linux /]$ <span class="commande">vi /etc/inittab</span>
<strong># Si vous avez suivi mes conseils et n'avez pas installé X-Windows vous devriez trouvez</strong>
<strong># la ligne suivant qui correspond au niveau d'initialisation par défaut.</strong>
id:3:initdefault:
<strong># Désactivez le shutdown par les touches CTRL-ALT-SUPP en commentant la ligne</strong>
#ca::ctrlaltdel:/sbin/shutdown -t3 -r now
<strong># Désactivez les consoles inutilisés en commentant les lignes</strong>
# Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
#3:2345:respawn:/sbin/mingetty tty3
#4:2345:respawn:/sbin/mingetty tty4
#5:2345:respawn:/sbin/mingetty tty5
#6:2345:respawn:/sbin/mingetty tty6
<strong># Remarque : La console tty2 sera utilisée pour redirigé les sorties de syslog</strong> Modification du fichier /etc/syslog.conf : <strong># Editez le fichier /etc/syslog.conf</strong>
[root@linux /]$ <span class="commande">vi /etc/syslog.conf</span>
<strong># Ajouter une entrée dans /etc/syslog pour rediriger toutes les sorties vers une des consoles :</strong>
[root@linux /]$ <span class="commande">echo "*.* /dev/tty2" >> /etc/syslog.conf</span>
<strong># Ajouter une entrée dans /etc/syslog pour rediriger toutes les sorties vers un fichier unique :</strong>
[root@linux /]$ <span class="commande">echo "*.* /var/log/full.log" >> /etc/syslog.conf</span>
<strong># Relancez syslog :</strong>
[root@linux /]$ <span class="commande">/etc/init.d/syslog restart</span> Modification du fichier /etc/securetty : Ce fichier permet de définir sur quels consoles, l'utilisateur "root" est autorisé à se connecter à distances. Ayant définit que l'utilisateur ne pouvait jamais se connecter directement, il est normal d'enlever toutes les entrées de ce fichier. <strong># Editez le fichier /etc/securetty</strong>
[root@linux /]$ <span class="commande">vi /etc/securetty</span>
<strong># Commentez avec "#" ou supprimez toutes les entrées.</strong>
#tty1
#tty2
#tty3
#tty4
#tty5
#tty6 Modification du fichier /etc/fstab : Les fonctions d'auto-montage sont parfaites pour une station de travail mais doivents être désactivés dans le cas d'un serveur. <strong># Editez le fichier /etc/fstab</strong>
[root@linux /]$ <span class="commande">vi /etc/fstab</span>
<strong># Commentez avec "#" les lignes concernant les périphériques amovibles</strong>
#/dev/cdrom /mnt/cdrom udf,iso9660 noauto,owner,kudzu,ro 0 0
#/dev/fd0 /mnt/floppy auto noauto,owner,kudzu 0 0
<strong># Remarque : Si vous ne désactivez pas le service "kudzu", ces entrées seront ajoutées à chaque démarrage</strong> Les règles PAM (Pluggable Authentication Modules) : <strong># Les fichiers PAM principaux sont :</strong>
/etc/pam.d/other
/etc/pam.d/su
/etc/pam.d/system-auth
/etc/pam.d/login
/etc/pam.d/passwd
/etc/pam.d/halt
/etc/pam.d/poweroff
/etc/pam.d/reboot
/etc/pam.d/sudo
/etc/pam.d/sshd
<strong># Les autres fichiers PAM :</strong>
/etc/pam.d/redhat-config-mouse
/etc/pam.d/authconfig
/etc/pam.d/chfn
/etc/pam.d/chsh
/etc/pam.d/kbdrate
/etc/pam.d/rhn_register
/etc/pam.d/setup
/etc/pam.d/up2date-config
/etc/pam.d/up2date
/etc/pam.d/up2date-nox
/etc/pam.d/webmin
Les services XINETD : En cours... |