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>
Ajoutez un timeout pour les sessions [root@linux /]$ <span class="commande">vi /etc/profile</span>
# Ajouter la ligne suivante à la fin du fichier (délai de déconnection en secondes) :
TMOUT=3600
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
Routez les messages pour root : Par défault, tous les messages générés par la machines, sont livrés au compte root local. il faut pensé à rediriger tous les mails de root vers une email opérationelle. [root@linux /]$ <span class="commande">vi /etc/aliases</span>
# Remplacer la ligne root:... par
root :
<script language='JavaScript' type='text/javascript'>
<!--
var prefix = 'ma' + 'il' + 'to';
var path = 'hr' + 'ef' + '=';
var addy86206 = 'votreemail' + '@';
addy86206 = addy86206 + 'votredomaine' + '.' + 'net';
document.write( '<a ' + path + '\'' + prefix + ':' + addy86206 + '\'>' );
document.write( addy86206 );
document.write( '<\/a>' );
//-->\n </script><script language='JavaScript' type='text/javascript'>
<!--
document.write( '<span style=\'display: none;\'>' );
//-->
</script>Cet e-mail est protégé contre les robots collecteurs de mails, votre navigateur doit accepter le Javascript pour le voir
<script language='JavaScript' type='text/javascript'>
<!--
document.write( '</' );
document.write( 'span>' );
//-->
</script>
# Mettez à jour la base de données d'alias :
[root@linux /]$ <span class="commande">newaliases</span>
|