Installation pas à pas d’un serveur Ubuntu 10.04 : Sécurité
Le deuxième post concerne la sécurisation du serveur : installation d’un parefeu, des règles de banissement des adresses IP ainsi que de la configuration de la connexion SSH par clé publique/privée.
Denyhosts
Denyhosts est un utilitaire qui permet de bloquer automatiquement les tentatives de connexion provenant d’adresses IP après des échecs de connexion. Connecté au serveur en root via ssh, l’installation de denyhosts s’effectue par
apt-get install denyhosts
et denyhosts est configuré par l’édition du fichier /etc/denyhosts.conf
. Le fichier est très bien commenté et la configuration de denyhosts est donc aisée. Quelques exemples de paramètres pouvant être modifiés :
-
BLOCK_SERVICE=ALL
permet de bloquer tout type de tentatives de connexion (contrairement àBLOCK_SERVICE=sshd
qui ne bloque que les connexions ssh) ; -
DENY_THRESHOLD_INVALID=
permet de régler le seuil du nombre de tentatives de connexions avec un login incorrect avant le banissement de l’IP; -
DENY_THRESHOLD_VALID=
permet de régler le seuil du nombre de tentatives de connexion avec un login correct mais un mot de passe incorrect avant le banissement de l’IP; -
DENY_THRESHOLD_ROOT=
permet de régler le seuil du nombre de tentatives de connexion avec le login root et un mot de passe incorrect avant le banissement de l’IP; -
SYSLOG_REPORT=YES
permet d’inclure les échecs de connexion dans les log systèmes.
Diminuer les seuils par défaut revient donc à augmenter la sécurité du serveur. Si vous-même utilisez une connexion internet avec une IP fixe pour accéder au serveur, l’ajout de cette IP dans /etc/hosts.allow
évitera le banissement de votre propre IP pour cause d’erreurs répétées de mot de passe. Insérer simplement la ligne
ALL: xx.xxx.xx.xxx
où xx.xxx.xx.xxx est votre IP. Mais attention ! Ceci introduit évidemment une faille de sécurité : toute personne utilisant votre IP pourra faire des tentatives de connexion répétées sur le serveur.
Plus d’informations : Documentation ubuntu francophone sur denyhosts.
Parefeu shorewall
Shorewall est un logiciel utilisé sous serveur linux en routeur/parefeu. L’installation se fait par connexion ssh en root en tapant
apt-get install shorewall
Des exemples de configuration pour un serveur unique (“one interface”) sont disponibles dans le répertoire
/usr/share/doc/shorewall/examples/one-interface. Copiez ces fichiers dans le répertoire de configuration de shorewall par
cp /usr/share/doc/shorewall/examples/one-interface/* /etc/shorewall/.
On commence ensuite par éditer le fichier policy
qui définit les règles entre le pare-feu (noté $FW) et l’extérieur (noté net ; les interfaces sont définies dans le fichier interface
).
Par exemple, la configuration
$FW net ACCEPT net $all DROP info all all REJECT info
accepte tous les flux du pare-feu vers l’extérieur et rejette tous les flux de l’extérieur vers le pare-feu.
On peut ensuite définir quelques exceptions en éditant le fichier rules
; par exemple, pour accepter les connexions ssh de l’extérieur vers le pare-feu (ce qui est préférable si vous souhaitez pouvoir continuer à vous connecter à votre serveur, il faut ajouter la ligne
SSH(ACCEPT) net $FW
http://www.shorewall.net/ports.htm (en anglais) explique comment définir diverses règles. Il peut, par exemple, être utile d’autoriser les requêtes HTTP si vous souhaitez installer un serveur apache.
Ensuite, éditez le fichier /etc/default/shorewall
et ajouter la ligne "startup=1"
pour rendre shorewall actif au démarrage. Enfin, démarrez shorewall par
shorewall start
fail2ban
fail2ban est un utilitaire qui lit les logs des serveurs (ssh, apache…) et recherche les erreurs d’authentification répétées pour bannir l’adresse IP responsable de celles-ci. fail2ban s’installe à partir d’une connexion ssh en root par :
apt-get install fail2ban
La configuration se fait via le fichier /etc/fail2ban/jail.conf
. Quelques paramètres :
-
dans
ignoreip
, il peut être utile d’ajouter l’adresse IP fixe de la maison si vous en avez une ; -
les règles sont activées par la syntaxe suivante :
[ssh] enabled = true port = ssh filter = sshd logpath = /var/log/auth.log maxretry = 6
qui scanne le fichier
/var/log/auth.log
pour trouver des erreurs de connexion ssh en recherchant la séquencesshd
et bannit l’adresse IP au delà de 6 tentatives.</li> -
l’exemple suivant permet de bannir les requêtes DFind w00tw00t sur le serveur apache :
[apache-w00tw00t] enabled = true filter = apache-w00tw00t action = iptables[name=Apache-w00tw00t,port=80,protocol=tcp] logpath = /var/log/apache2/access*.log maxretry = 1
</ul>
Pour rendre cette dernière règle active, il faut définir le filtre en créant le fichier /etc/fail2ban/filter.d/apache-w00tw00t.conf
contenant
[Definition] failregex = ^-.*"GET \/w00tw00t\.at\.ISC\.SANS\.DFind\:\).*".* ignoreregex =
On relance fail2ban pour actualiser les paramètres
fail2ban-client reload
et on peut vérifier l’état de fail2ban par :
fail2ban-client status
Connexion SSH
La première étape consiste à éditer le fichier /etc/ssh/ssh_config
pour prévenir la déconnexion après une grande période d’inactivité. Cela se fait en ajoutant les lignes :
ServerAliveInterval 15 ServerAliveCountMax 20
Ces paramètres envoient une requête permettant de maintenir l’activité toutes les 15 secondes et la connexion est coupée après 20 tentatives infructueuses de connexion via la liaison ssh.
La deuxième étape consiste à sécurité la connexion ssh en la configurant par utilisation d’un jeu de clés privée/publique plutôt qu’un mot de passe. On commence par générer, sur son ordinateur local, une paire de clé (si on n’en possède pas) par :
ssh-keygen -t dsa
Par défaut, la clé est sauvée dans ~/.ssh
On copie la clé publique (celle dont le nom finit par .pub
) dans les clés autorisées par
ssh-copy-id -i ~/.ssh/majoliecle.pub root@IP
où majoliecle
doit être remplacée par le nom de la clé et IP
par l’IP du serveur.
On tente alors la connexion au serveur
ssh-add .ssh/majoliecle.pub ssh root@IP
(la première ligne sert à charger sur l’ordinateur local la clé privée qui permettra l’authentification par le serveur) ; si le serveur connecte sans demander de mot de passe : c’est gagné ! On peut alors supprimer la possibilité de connexion par mot de passe. Pour cela, on édite le fichier /etc/init.d/sshd_config
et on met les options PasswordAuthentification
et ChallengeResponseAuthentication
à no
.
Attention ! La clé privée doit être conservée précieusement et de manière fiable : non seulement elle permet la connexion au serveur mais sa perte interdit l’accès au serveur !
On redémarrer le serveur ssh par :
/etc/init.d/ssh restart
Enfin, on peut ajouter la clé publique sur l’interface manager d’OVH au cas où il serait nécessaire de démarrer en mode “rescue”.
</div>Step-by-step Ubuntu 10.04 LTS server configuration: first connexion and basic config
My birthday present: a server renting, Kimsufi (provided by OVH) with “Ubuntu Server Edition” installed (10.04 LTS). The step-by-step configuration is described in these posts, the first one being the first connexion and the basic configuration.
A raw distribution with SSH access is delivered. Two emails are sent by OVH:
- the first one, when creating the user account, gives access to the manager interface on OVH website;
- the second one, when the server is ready, gives the server IP and the root’s password.
First connexion
Open a terminal and type:
ssh root@IP
where IP is the server IP address (or its name); enter the password.
The original password can be modified by passwd
: changing the password and keeping it in a safe location is highly recommended.
Packages update
The packages are updated by:
apt-get update apt-get upgrade
Network Time Protocol install
The Network Time Protocol (or NTP) is a protocol for synchronizing the clock of your server over time servers. NTP is simply installed by
apt-get install ntpq
and can be configured by editing the file /etc/net.conf
where time servers can be added. My Kimsufi server is located near Paris so I added the following time servers:
server ntp.ubuntu.com server ntp1.jussieu.fr server ntp.obspm.fr
Then the NTP daemon has to be restarted so that the modifications are taken into account:
service ntp restart
and the time servers list can be checked by:
ntpq -p
Additional information : Ubuntu NTP documentation.
Backup FTP configuration
Connecting to the manager interface, a FTP backup can be activated and used to save some files (up to 100 Go).
Encrypt a private directory and synchronize it with a serverCrypter et synchroniser avec un serveur un répertoire privé
Coming soon…
Depuis Ubuntu 8.10, il est possible de crypter un répertoire Private situé dans le dossier utilisateur. L’utilisation de cette fonctionnalité permet un cryptage simple et transparent pour l’utilisateur : le répertoire crypté .Private est automatiquement monté décrypté dans le répertoire Private au login.
Installation de ecryptfs-utils
-
L’installation de la fonctionnalité se fait par le biais de l’installation du paquet
ecryptfs-utils
:sudo apt-get install ecryptfs-utils
-
On initialise ensuite la configuration par
ecryptfs-setup-private
qui crée un répertoire .Private dans votre répertoire utilisateur (c’est le répertoire crypté) et un répertoire Private (où est monté décrypté le répertoire .Private). Un nom utilisateur (login) et un mot de passe (password) doivent être entrés ainsi qu’une phrase de passe pour le montage: cette phrase de passe doit être conservée précieusement dans un endroit sûr : elle sera demandée au cas où les données devraient être récupérées manuellement.</li>
- Se déconnecter de sa session et se reconnecter pour établir le montage du répertoire Private. Tout fichier ou dossier copié dans Private sera alors automatiquement crypté dans .Private et le répertoire Private sera automatiquement démonté lors de la déconnexion de la session. </ol>
-
Pour cela, il faut préalablement que le répertoire Private soit démonté (car accéder au répertoire crypté durant la synchronisation peut générer des problèmes)
ecryptfs-umount-private
-
Synchronisation des données en mémoire et sur le disque par
sync
(voir page de manuel de sync en français)</li>
- Synchronisation des données sur le serveur distant (par unison, par exemple)
-
Remonter le répertoire Private :
ecryptfs-mount-private
en entrant son mot de passe utilisateur (pas le mot de passe de ecryptfs)</li> </ol>
TODO : Voir si il est prudent de faire un processus similaire sur le répertoire distant.
Voir aussi : Documentation Ubuntu sur ecryptfs-utils (en anglais).
</div>
Synchroniser avec un répertoire distant (unison, connexion ssh)
J’utilise unison pour synchroniser mes répertoires sur un serveur distant par connexion ssh : ce qui est synchronisé est bien sûr le répertoire .Private, crypté
How to create and publish a Flash video?Créer et publier une vidéo Flash sur un site web
Coming soon… Ce tutoriel explique comment convertir, sous linux, vos vidéos préférées au format flash puis comment les installer sur un site internet.
Étape 1 : Convertir la vidéo au format flash
ffmpeg est un utilitaire assez complet de conversion de vidéos. Pour l’installer, dans Ubuntu, taper :
sudo apt-get install ffmpeg
La conversion, au format flash (extension flv), d’une vidéo (par exemple, myvideo.avi
) se fait par :
ffmpeg -i myvideo.avi myvideo.flv
Remarque : Plus d’options sur la fonction ffmpeg sur la page de documentation.
Étape 2 : Publier la vidéo sur internet
Pour pouvoir publier une vidéo Flash sur son site web, il faut disposer d’un lecteur Flash. OS FLV est un lecteur flash libre. Téléchargez la dernière version ici puis décompressez l’archive téléchargée. Le répertoire décompressé (nommé OSFlvPlayer_vxx
) contient un exemple demo.html
avec une vidéo nommée mario.flv
. Un autre exemple peut être trouvé sur cette page. Le fichier index.html
a la syntaxe suivante :
Meilleur stage STID 2011Alejandra Botero Acosta : Meilleur stage STID 2011
Présentation ayant eu lieu lors de la 1/2 journée satellite STID aux JdS de Tunis.
Le film (PresentationAlejandra.flv
), le fichier index.html
ainsi que les fichiers du lecteur flash (fichiers AC_RunActiveContent.js
, OSplayer.as
, OSplayer.fla
, OSplayer.swf
, rac.js
ainsi que le répertoire flash
) doivent être placés dans le même répertoire sur le serveur web (ou bien adaptez les chemins dans le code source ci-dessus).
How to capture videos from the internetEnregistrer une vidéo sur internet
Coming soon…
Comment enregistrer sur votre ordinateur une vidéo d’internet ? Les solutions présentées ici sont multi-plateformes (utilisables avec linux, windows, …)
Utilisation de VideoLAN
VideoLAN (ou VLC) est un logiciel libre permettant de lire et d’enregistrer de la musique, des vidéos, DVD, CD, des flux audios et des flux réseaux (ndlr : flux = données audio ou vidéo qui sont lues de manière continue depuis internet). On peut télécharger et installer VLC sur son site web officiel.
Pour enregistrer une vidéo avec VLC (par exemple, le fichier “Real Player” http://www.abc.net.au/lateline/content/2007/s2277738.htm),
- Lancer VLC et dans “Vue”, cliquer sur “Contrôles avancés” : sur la partie basse de la fenêtre apparaît un bouton d’enregistrement ;
- Copier l’adresse du lien de la vidéo sur la page qui vous intéresse : dans l’exemple ci-dessus, on se place sur le lien, on clique bouton droit et “Copier l’adresse du lien” (avec le navigateur Firefox) : l’adresse copiée est rtsp://media1.abc.net.au/reallibrary/lateline/200806/20080617-late-fund_16_9_bband.rm ;
- Dans VLC, faire “Média” -> “Ouvrir un flux réseau”. Y coller l’adresse précédente comme sur l’image ci-dessous :
-
Cliquer sur Lire puis, une fois la vidéo démarrée, sur le bouton rouge en bas à droite qui permet l’enregistrement.
La vidéo est enregistrée, sous la forme d’un fichier vidéo, directement sur votre disque dur (dans le répertoire par défaut).
Pour des spécifications plus avancées (répertoire d’enregistrement, format de la vidéo enregistrée…), il faut utiliser le menu “Média” -> “Diffusion”.
Enregistrer des vidéos Flash avec Firefox
La méthode précédente doit permettre d’enregistrer des flux Flash sur internet (comme les vidéos de YouTube) ; toutefois, VLC a parfois du mal à lire les flux Flash. Dans ce cas, il existe une solution alternative utilisant le navigateur Firefox.
- Lancer Firefox et vérifier que vous pouvez lire une vidéo Flash ; par exemple : http://www.youtube.com/watch?v=3DOyp1tXAxc. Si vous ne lisez pas la vidéo, installez le plugin flash ;
-
Installer ensuite le plugin DownloadHelper pour Firefox : le télécharger et utiliser le menu “Outils” -> “Modules complémentaires” pour l’installer sur Firefox. Au redémarrage de Firefox, le module est installé si vous voyez une petite icône comme sur l’image ci-dessous à côté de la barre de titre :
-
En ouvrant la page http://www.youtube.com/watch?v=3DOyp1tXAxc, l’icône s’anime et se colorie comme sur l’image ci-dessous
-
En cliquant sur la flèche située à côté de l’icône, juste au-dessus de la vidéo, un menu similaire à celui de l’image ci-dessous apparaît :
Choisir, par exemple, “Téléchargement” pour qu’un fichier vidéo soit enregistré dans le répertoire par défaut des téléchargements Firefox.
Attention ! Tout ceci ne dispense, en aucune manière, de respecter le droit d’auteur. Les vidéos disponibles légalement sur YouTube sont à visionner dans un cadre strictement privé et personnel.