Personal tools
You are here: Home GNU / Linux Debian 4.0 Etch Compléments à l'installation d'une Debian 4.0 Etch ou 5.0 Lenny
Navigation
 
Un poste de développeur PHP est à pourvoir dans mon entreprise ! Si vous êtes intéressé, plus de détails sont disponibles sur la page consacrée à l'offre d'emploi de développeur PHP.
Document Actions
  • Send this page to somebody
  • Print this page
  • Add Bookmarklet

Compléments à l'installation d'une Debian 4.0 Etch ou 5.0 Lenny

by admin last modified 2009-12-08 12:04

Vous trouverez dans cet article la liste des paquets que j'installe en plus de l'installation par défaut de Etch et Lenny.

En premier lieu, connectez vous en root :

su

Configuration minimale

Nous désactivons la source CDROM d'apt de façon à obtenir tous nos paquets depuis l'internet (si vous lisez cette page, c'est que vous avez l'internet ;)

sed -i -e 's/^\(deb cdrom\)/#\1/' /etc/apt/sources.list

et nous mettons à jour :

apt-get update

Nous installons ensuite le support du temps internet pour garder notre système à l'heure:

apt-get install ntp

Nous installons openssh-server et fail2ban pour avoir un accès ssh sécurisé à notre ordinateur :

apt-get install openssh-server fail2ban

Nous activons la colorisation de la commande ls:

/bin/cp /etc/skel/.bashrc $HOME
/bin/sed -i -e 's/^# \(.*\(LS_OPTIONS\|dircolors\).*\)$/\1/' $HOME/.bashrc

Personnellement, étant un vimiste, il me faut mon outil de travail :

/usr/bin/apt-get install vim

Si vous le souhaitez, vous pouvez mettre en place une configuration par défaut pour Vim. Personnellement, j'utilise :

echo "set list
set number
set expandtab
set tabstop=2
set softtabstop=2
set shiftwidth=2
set nobackup
set encoding=utf-8
set fileencoding=utf-8
syn on" >> $HOME/.vimrc

Une fois ceci fait, déconnectez-vous et reconnectez-vous.

Recevoir des rapports quotidiens sur le fonctionnement de votre serveur

Pour vous assurer que votre serveur fonctionne correctement, et qu'il ne subit ni attaque, ni disfonctionnement, il est important de le configurer pour envoyer régulièrement des rapports sur son fonctionnement. C'est ce que nous allons voir maintenant.

Redirection des emails du compte root

Un système Unix peut être assez bavard, et a tendance a envoyer tous les emails importants au compte Root. Il est très important de suivre ces emails. Pour ce faire, vous pouvez utiliser un lecteur d'e-mail en ligne de commande.... ou alors, rediriger les emails destinés au compte root de la machine vers votre email habituel.

Attention : Suivant la configuration du serveur SMTP de votre fournisseur de compte e-mail, les emails envoyés par votre machine peuvent être rejetés. Personnellement, je n'ai pas ces problèmes avec les comptes GMail.

En premier lieu, renseignez l'email que vous souhaitez utiliser :

ROOT_EMAIL=my-account@gmail.com

Et configurez la redirection des emails du compte Root vers cet email :

/bin/sed -i -e "s/^\\(root:\\).*\$/\\1 ${ROOT_EMAIL}/" \
/etc/aliases

Surveillance des logs

Nous installons logwatch pour surveiller notre système. Le rapport fourni par ce logiciel nous renseigne sur les tentatives d'intrusions et les éventuels problèmes rencontrés par le système.

/usr/bin/apt-get install logwatch libdate-manip-perl

Vérification des mises à jour

Afin de recevoir des alertes lorsqu'il est nécessaire de mettre à jour votre Debian, installez cron-apt :

/usr/bin/apt-get install cron-apt

Et configurez le pour envoyer un e-mail au compte root lorsqu'une mise à jour est disponible :

/bin/sed -i -e 's/^#[ \t]*\(MAILTO="root"\)/\1/' \
-e '/^#[ \t]*\(MAILON="error"\)/a\
MAILON="upgrade"' \
/etc/cron-apt/config

Amélioration de la sécurité du serveur

Configuration de Fail2Ban

Depuis que j'ai découvert cet outil, il est devenu mon meilleur ami. Ce script surveille les fichiers journaux, et banni temporairement les IPs qui jouent un peu trop avec votre serveur. C'est un outil IN-DIS-PEN-SABLE si votre serveur est directement présent sur Internet. Si ce n'est déjà fait, installez-le :

/usr/bin/apt-get install fail2ban

Nous allons maintenant activer certaines configurations supplémentaires afin d'augmenter sa portée. En premier lieu, nous activons la protection contre les attaques en déni de service sur le SSH :

/bin/sed -i -e '/\[ssh-ddos\]/, /filter/ {0,/^enabled.*/ s//enabled = true/ }' /etc/fail2ban/jail.conf

Nous activons aussi la protection du système d'authentification PAM (vu que ce mécanisme est présent un peu partout dans un système UNIX, c'est quelquechose de très pratique XD):

/bin/sed -i -e '/\[pam-generic\]/, /filter/ {0,/^enabled.*/ s//enabled = true/ }' /etc/fail2ban/jail.conf

Enfin, nous redémarrons fail2ban pour prendre en compte les nouvelles configurations:

/etc/init.d/fail2ban restart

Rercherche de Root Kits avec RkHunter

Nous installons un outil de vérification de présence de root kits :

/usr/bin/apt-get install rkhunter libmd5-perl

Nous configurons rkhunter en fonction de notre système:

SSH_ROOT_ALLOWED=no
TEST_ROOT_ALLOWED=$(/bin/grep -i "PermitRootLogin.*yes" /etc/ssh/sshd_config)
if [ -n "$TEST_ROOT_ALLOWED" ]; then
SSH_ROOT_ALLOWED=yes
fi
/bin/sed -i -e 's|^[#]*\(ALLOWHIDDENDIR=/dev/.udev\)$|\1|' \
-e 's|^[#]*\(ALLOWHIDDENDIR=/dev/.static\)$|\1|' \
-e 's|^[#]*\(ALLOWHIDDENDIR=/dev/.initramfs\)$|\1|' \
-e "s|^[#]*\\(ALLOW_SSH_ROOT_USER=\\).*$|\\1${SSH_ROOT_ALLOWED}|" \
/etc/rkhunter.conf

Au besoin, nous autorisons la présence de certains fichiers dans le dossier /dev :

if [ -e /dev/shm/network/ifstate ]; then
/bin/sed -i -e '0,/ALLOWDEVFILE/{//a\
ALLOWDEVFILE=/dev/shm/network/ifstate
;}' \
/etc/rkhunter.conf
fi

La version de RkHunter présente dans Debian 5.0 Lenny permet de maintenir une base de signature des fichiers importants basée sur les informations fournies par le gestionnaire de paquets Debian. Cette fonctionnalité est importante car elle permet de détecter plus rapidement les modifications du contenu de certains logiciels (ps, ls, etc...). Pour activer cette fonctionnalité, utilisez la ligne de commande suivante :

/bin/sed -i -e 's|^[#]*\(HASH_FUNC=\).*$|\1md5sum|' \
-e 's|^[#]*\(PKGMGR=\).*$|\1DPKG|' \
/etc/rkhunter.conf

La distribution Debian mettant en place des patchs de sécurité sans mettre à jour les numéros de version des applications, nous désactivons la vérification de ce numéro de version :

/bin/sed -i -e 's|^[#]*\(DISABLE_TESTS=".*\)\(".*\)$|\1 apps\2|' \
/etc/rkhunter.conf

Mettez à jour la base des menaces de RkHunter pour la première fois (par la suite elle est mise à jour chaque semaine):

/usr/bin/rkhunter --update

Si vous avez activé la fonctionnalité de vérification de la signature des fichiers, utilisez cette commande pour mettre à jour la base des signatures :

/usr/bin/rkhunter --propupdate

Afin de ne pas être forcé d'exécuter cette commande après chaque utilisation d'apt-get, faites en sorte qu'elle soit exécutée automatiquement :

/bin/echo '// Update rkhunter file signatures databases after running dpkg.
DPkg::Post-Invoke {
"if [ -x /usr/bin/rkhunter ]; then if [ $(/usr/bin/rkhunter --help | /bin/grep "propupd" | /usr/bin/wc -l) -gt 0 ]; then /usr/bin/rkhunter --propupd; fi; fi";
};' | /usr/bin/tee /etc/apt/apt.conf.d/90rkhunter

Remarque: Pour connaître les informations que vous renverra RkHunter chaque jour, vous pouvez utiliser la commande:

/usr/bin/rkhunter --configfile /etc/rkhunter.conf --report-warnings-only --checkall

Remarque : il existe d'autres outils de recherches de root kits similaires à RkHunter. J'ai longtemps utilisé chkrootkit, mais comme il est impossible de le configurer proprement pour ignorer les faux positifs, j'ai fini par l'abandonner.

Accès SSH (optionnel, mais recommandé)

Si vous souhaitez améliorer encore la sécurité de votre serveur SSH, vous pouvez créé un utilisateur dédié pour l'accès SSH et interdire l'accès SSH au compte root. Une fois identifié sur le serveur, il vous suffira d'utiliser la commande "su" pour vous identifier avec le compte root.

Nous installons un outil de génération de mot de passes:

/usr/bin/apt-get install apg

Choisissez un mot de passe sécurisé. Pour créer un tel mot de passe, vous pouvez utiliser la commande suivante:

/usr/bin/apg -q -a  0 -n 1 -M NCL

Nous créons un compte utilisateur sans privilèges (remplacez "myuser" par le login de votre choix):

/usr/sbin/adduser myuser

Configurez le serveur SSH de façon à ce qu'il n'accepte pas les connexions avec l'utilisateur root. Utilisez pour ce faire les lignes de commande suivantes:

/bin/sed -i -e 's/PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config
/etc/init.d/ssh restart

Attention: Ne faites ceci que si vous disposez d'un autre compte que le compte root sur la machine. Si vous ne disposez pas d'un compte utilisateur normal, votre machine ne sera plus accessible par SSH (La création d'un tel utilisateur est faite par la commande "adduser" ci-dessus).

Autres outils

Détection des intrusions

Nous installons snort pour surveiller les tentatives d'intrusion sur notre système. Vous recevrez alors un résumé quotidien des alertes de sécurité.

/usr/bin/apt-get install snort

Protection contre les recherches de ports ouverts (port scanning)

PortSentry permet de se protéger contre les scanners de ports. En premier lieu, il vous l'installer :

DEBIAN_FRONTEND='noninteractive' apt-get install portsentry iptables

Une fois ceci fait, il est nécessaire de configurer proprement portsentry avant de l'activer. La première chose à faire est de faire en sorte que PortSentry ignore votre adresse IP. Cela vous évitera d'être banni de votre propre serveur. En premier lieu, il vous faut entrer votre adresse IP (fixe de préférence):

  • Si vous êtes identifé en SSH avec le compte root, il vous suffit d'utiliser la commande suivante :
    PROTECTED_IP=$(/usr/bin/who --ips | /bin/grep root | /usr/bin/cut --characters=40-)
    /bin/echo "Votre adresse IP est : ${PROTECTED_IP}."
  • Dans tous les autres cas, rentrez votre adresse IP manuellement :
    PROTECTED_IP=83.243.21.40

Vous pouvez maintenant ajouter l'adresse IP à la liste des adresses IP ignorées par PortSentry :

/bin/echo "
# Ignoring root account owner IP:
${PROTECTED_IP}" \
| /usr/bin/tee -a /etc/portsentry/portsentry.ignore.static

A présent, activez le bloquage des scans de ports TCP et UDP :

/bin/sed -i -e 's/^BLOCK_UDP=.*/BLOCK_UDP="1"/' \
-e 's/^BLOCK_TCP=.*/BLOCK_TCP="1"/' \
/etc/portsentry/portsentry.conf

Configurez PortSentry pour utiliser "iptables" plutôt que "route" pour bloquer les attaques :

/bin/sed -i -e 's/^KILL_ROUTE=.*$/#\0/' \
-e '0,/^[\t #]*\(KILL_ROUTE=.*iptables[^\&]*\)$/s//\1/' \
/etc/portsentry/portsentry.conf

Activez le mode de détection avancé de PortSentry :

/bin/sed -i -e 's/^TCP_MODE.*$/TCP_MODE="atcp"/' \
-e 's/^UDP_MODE.*$/UDP_MODE="audp"/' \
/etc/default/portsentry

Enfin, redémarrez PortSentry :

/etc/init.d/portsentry restart

Sources:

Encore un peu plus loin :)

Enfin, je vous conseille de suivre les guides suivants pour compléter et améliorer votre système:

Pour aller plus loin

Afin d'améliorer de manière encore plus poussée votre système, je vous conseille ces deux lectures :

Cette dernière est vraiment importante pour protéger votre système des attaques des pirates.

PortSentry + snort

Posted by Jérôme at 2009-06-15 11:57
Salut,

N'ayant pas d'ip fixe (numéricable :( ) Puis-je remplacer l'ip (pour PortSentry) par un nom de domaine DDNS? Étant donné que mon routeur met tout seul à jour le ddns lorsque mon ip change (tout les deux mois~, ça sert à rien mais c'est numéricable :/ ) je pourrais utiliser cet outil sans risque.
Si oui il y a t il une méthode? Et si non, il y a t il une méthode pour bidouiller?
J'ai maintenant plusieurs serveurs, et ils sont tous soumis aux attaques incessantes, et un outils en plus ne sera pas de trop....

Quand à snort, je l'avais déjà testé, ne fournit pas t il plus d'infos qu'il faudrait? (en fait il surveille tout le réseau...)
Toi même l'utilises tu sur toutes tes installations? Que me conseils tu?

Merci d'avance ;)

portsentry

Posted by lwolf at 2009-06-15 12:36
Salut,

j'ai laissé tombé l'utilisation de portsentry et snort car trop contraignant. De plus, c'est assez inutile chez moi, car mes serveurs sont tous dans des machines virtuelles, et j'utilise iptables pour ouvrir ou non les ports adéquats :) Xen powa !.

Si ton serveur subit beaucoup d'attaques, il existe des regles netfilter / iptables pour protéger ton serveur.

Bon courrage

serveur mail

Posted by Gonzague at 2009-08-01 01:52
tiens à aucun moment dans cette affaire tu ne nous fais installer un serveur mail .. :-D

donc ... le serveur ne pourra jamais rien envoyer ?

Exim est installé par défaut

Posted by Lone Wolf at 2009-08-01 08:36
Normalement Exim est installé par défaut sur Debian. Je fait juste mettre en place une redirection des mails root vers un email externe. D'après mon expérience, ca marche souvent tout seul.


Powered by Plone CMS, the Open Source Content Management System

This site conforms to the following standards: