ESPACE-GROUPWARE.COM
Accueil arrow Linux Redhat Fedora arrow Sécurisation de base d'un serveur Linux
Menu Principal
Accueil
Téléchargements
Liens
Contacts
Administration
Services
Compétences
Tarifs
Documentations
RadicalSpam
SpamAssassin
Postfix
Tutoriels
Nagios
Tomcat
Linux RPM
Linux Redhat Fedora
Linux Divers
Sécurisation de base d'un serveur Linux Convertir en PDF Version imprimable Suggérer par mail

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 = '&#109;a' + 'i&#108;' + '&#116;o';
 var path = 'hr' + 'ef' + '=';
 var addy86206 = 'v&#111;tr&#101;&#101;m&#97;&#105;l' + '&#64;';
 addy86206 = addy86206 + 'v&#111;tr&#101;d&#111;m&#97;&#105;n&#101;' + '&#46;' + 'n&#101;t';
 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>
 
 
< Précédent   Suivant >
 

(c) Espace-Groupware.com (2006) - Stéphane RAULT
Joomla 1.0.10 - http://www.joomla.org