Compléments à l'installation d'une Debian 4.0 Etch ou 5.0 Lenny
Vous trouverez dans cet article la liste des paquets que j'installe en plus de l'installation par défaut de Etch et Lenny.
Ce guide est obsolète. Reportez-vous à la nouvelle version disponible sur le Biapy Help Desk.
Compléments à l'installation de Debian GNU/Linux
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
Reportez vous à mon guide Installer Rootkit Hunter sur Debian.
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:
- Merci à Cemoi sur irc.freenode.net#debian-facile pour m'avoir rappelé l'existence de cet outil.
- Merci à Chojin pour son article PortSentry - Comment bloquer les attaques de type scan port sur SIVIT.
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 :
- Guide de référence pour Debian
- Manuel de sécurisation de Debian
- Some useful tools for enhenance Debian security
- Fail2ban: an enemy of script-kiddies
Cette dernière est vraiment importante pour protéger votre système des attaques des pirates.
portsentry
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
donc ... le serveur ne pourra jamais rien envoyer ?
Exim est installé par défaut
besoin d'aide pour mettre en pratique ce magnifique tuto...
ton tuto est super intéressant, mon problème c'est que je suis SUPER-Débutant en serveur et je ne comprends pas comment reproduire ton tuto, en particulier les bouts de codes (en gris) ... C'est à dire, quand c'est tout simple genre justee une commande à lancer dans un terminal ça va, j'arrive à suivre. Mais quand y a des scripts compliqués sur plusieurs lignes (compliqué pour moi = autre chose que echo "hello world"; ;)) bref je ne comprends pas si je dois copier à partir de mon prompt dans le terminal toutes les lignes à la suite ? ou mettre ça dans des fichiers (je ne sais pas lesquels du coup).
Donc en fait y a des trucs que je comprends (par exemple la config de vim avec le >> , ça veut dire que je vais coller les lignes avant le >> dans le fichier de conf de vim à savoir le fichier .vimrc de mon home. Bon. Ok. Mais très vite je suis perdu.
Genre la config de rkhunter ... sos ... comprends rien à ce que ça veut dire, mais même simplement reproduire je sais pas faire :S
Need help...
Merci d'avance
Bob
Copier / coller
Vous trouverez une explication concise dans l'article : http://howto.landure.fr/gnu-linux/ubuntu-edgy-eft/gnu-linux/comment-utiliser-mes-manuels
Bonne continuation.
PortSentry + snort
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 ;)