Vous êtes sur la page 1sur 10

012345678901234567890123456789012234567890123456789012345678901234567890123456789

*********************************
* mon serveur linux *
*********************************
Introduction
=========

Comme la plupart d entre nous, mon premier microordinateur fonctionnait sous Windows. Ce systeme d exploitation est 
tres pratique pour la bureautique, et les logiciel propriétaire de microsoft. Etant d un esprit curieux je voulais maitriser 
mon outil informatique, et le parametrer a mon goût, pouvoir automatiser certaines tache, en plannifier... 
Je me suis alors apercu que le fonctionnement de windows n'était pas facile a comprendre, et surtout qu il netait pas fait 
pour etre compris. 
J'ai donc decidé de me tourner vers linux. Apres pas mal de deboir, j'ai reussi a installer  les deux OS sur le meme 
ordinateur. En me rendant compte des capacités enormes de linux (bureautique, reseaux et serveur) je voulais faire 
fonctionner les service ftp http et ssh sur la machine que j utilisais pour  faire de la bureautique et du multimedia. Apres 
plusieurs tentative je me suis vite rendu compte que le cohabitation entre ces 2 usages etait impossible. 
Je me suis donc acheter une nouvelle machine, et utilisé mon ancien pc en tant que serveur. Nous allons voir ici les 
differentes phase de configuration de ce serveur.

1.materiel
==========

­un pc Pentium II ou +, avec un ou plusieurs disques durs consequents.
l avantage d avoir plusieur disque est bien sur d accroitre sa capacite
de stockage, mais aussi de faire des sauvegarde d un disue sur l autre,
ce qui bien sur ameliore la securite.

­une connection adsl de qualite, dans mon cas wanadoo 512 kb/s. Je conseil
l utilisation du modem ethernet.

­une ou plusieurs cartes reseaux. Pour un probleme de compatibilité, les
cartes reseaux reconnues par linux sont plus cher. Personnellemnt j ai
utilisé ??????? qui ne pose aucun probleme a l installation.

­un RJ45 droit pour relié le modem ethernet au pc faisant office de serveur,
et un RJ45 croisé pour relié les deux pc entre eux.????????.

­et bien sur une distribution linux. Utilisant la mandrake a des fins
bureautiques, j ai prefere utiliser la redhat 9.0. La debian a l air 
interessante aussi.

2.Installation redhat
=====================

L'installation "serveur" de la redhat est suffisante. Je n ai pas trouvé 
necessaire d installer une interface graphique. En effet, tous les utilitaires
sont disponibles en ligne de commande et presentent beaucoup plus d options.

A savoir qu apres installation l objectif est de prendre le controle du serveur
a distance via ssh. A cet effet, le meilleur client ssh windows que j ai utilise
est putty.exe.
J ai quand meme ajouté quelques package additionnels, autant que je me
souvienne:
­ mysql
­ imagemagik
­ gcc
­ vsftpd
­ rp­pppoe

????commandes pour acceder aux terminaux?????????
avec la commande "startx" on a acces a une interface graphique de base, mais
suffisante. essayer puis dans un terminal tapper "userconf" vous verrez.

je vous conseil vivement de creer d autres utilisateur que root. une erreur
est si vite arrivee.
ex: rm ­rf / home/user/inutil  , ici l espace avant home est fatal.
un utilisateur par utilité du serveur est conseillé. un utilisateur web qui
gerera tous ce qui est lié au web (site internet, ftp...) . un utilisateur
mathias pour que mathias puisse gerer ses données personnelles. pour ce qui
est des utilisateurs ftp nous y reviendront plus tard.

3.configuration du reseau
=========================

un petit dessin vaut mieux qu un grand discours :

  |
|eth0 eth1
internet <­­­­­ |­­­­­> serveur linux <­­­­­­­> PC XP
|ppp0  et routeur 
|
     firewall 192.168.1.1 192.168.1.11

rp­pppoe et adsl­setup
­­­­­­­­­­­­­­­­­­­­­­

l acces a internet se fait grace au protocole pppoe, parfaitement gerer par
le package rp­pppoe. pour parametrer le votre connection adsl wanadoo, taper
la commande adsl­setup.ce scripts adsl­setup generera les fichiers :

/etc/sysconfig/network­scripts/ifcfg­ppp0
/etc/sysconfig/network­scripts/ifcfg­eth0

qui permetront aux interfaces reseaux (eth0 et ppp0) de se monter automatiquement
au demarrage. Ces interfaces sont necessaire pour la connection a internet.

/etc/sysconfig/network­scripts/ifcfg­ppp0
­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­

USERCTL=yes
BOOTPROTO=dialup
NAME=DSLppp0
DEVICE=ppp0
TYPE=xDSL
ONBOOT=no
PIDFILE=/var/run/pppoe­adsl.pid
FIREWALL=NONE
PING=.
PPPOE_TIMEOUT=300
LCP_FAILURE=3
LCP_INTERVAL=80
CLAMPMSS=1412
CONNECT_POLL=6
CONNECT_TIMEOUT=300
DEFROUTE=yes
SYNCHRONOUS=no
ETH=eth0
PROVIDER=DSLppp0
USER='fti/3ukzr3q@fti'
PEERDNS=no
PERSIST=yes

Si vous souffrez de deconnections intempestives jouer sur la valeur des
parametres (ici montée a 300):
CONNECT_TIMEOUT= 
PPPOE_TIMEOUT=

/etc/sysconfig/network­scripts/ifcfg­eth0
­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­ 

DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes
USERCTL=no
PEERDNS=no
TYPE=Ethernet

ici pas de probleme particulier.

la connection a internet
­­­­­­­­­­­­­­­­­­­­­­­­

pour la connection a internet utiliser les script de connection livre avec rp­pppoe.
ce sont les commandes adsl­start pour lancer la connection,
et adsl­stop pour l arreter.

si vous avez un pobleme pour surfer sur le web, verfier que vous avez bien renseigne
le fichier /etc/resolv.conf

# MADE­BY­RP­PPPOE
search localdomain
nameserver 193.252.19.3
nameserver 193.252.19.4
il est genere lui aussi par adsl­setup et contient les IP des serveurs de noms
de dommaine (DNS). ici ce sont les serveurs propres a wanadoo.

/etc/sysconfig/network­scripts/ifcfg­eth1
­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­

DEVICE=eth1
BOOTPROTO=none
BROADCAST=192.168.1.255
IPADDR=192.168.1.1
NETMASK=255.255.255.0
NETWORK=192.168.1.0
ONBOOT=yes
USERCTL=no
PEERDNS=no
TYPE=Ethernet

ce fichier est renseigné a la main. il permet de monter l interface eth1. elle
nous servira a relier le serveur linux au PC XP. L adresse IP de cette carte
sur le reseau interne ainsi que l adresse IP de la carte reseau du PC XP, seront
determinée pas le serveur DHCP.

serveur dhcp
­­­­­­­­­­­­

le parametrage du demon dhcpd comme le parametrage de la plupart des demon linux 
se situe dans le dossier /etc. C est le fichier /etc/dhcp.conf

#dhcp.conf
default­lease­time 600;
max­lease­time 7200;
option subnet­mask 255.255.255.0;
option broadcast­address 192.168.1.255;
option routers 192.168.1.1;
option domain­name­servers 192.168.1.1;
subnet 192.168.1.0 netmask 255.255.255.0 {
 range 192.168.1.11 192.168.1.11;
}
ddns­update­style ad­hoc; 

on voit ici que l IP du routeur sera 192.168.1.1, et que l IP du PC XP sera forcée
a 192.168.1.11 (car comprise entre les valeurs 192.168.1.11 ­ 192.168.1.11).

tout ces fichiers etant remplis les interfaces reseaux devraient se monter
correctement au demarrage.

PC XP
­­­­­

????

pour ce qui est du routage vers notre PC XP, voir la section firewall.
4.Les services
==============

a l origine, j ai monté mon serveur pour faire du ftp , mais decouvrant la
richesse de linux, j y ai aussi installé les serveurs;
­ httpd (serveur web)
­ sshd (prise en main du serveur a distance)
­ mysqld (serveur de base de donnee)
­ smbd (serveur samba)

vsftpd
­­­­­­

auparavant j utilisais une distribution mandrake qui utilise ce celebre serveur
ftp proftpd. et comme beaucoup je me demande bien pourquoi il ont choisis ce
logiciel a la configuration assez complexe et meme douteuse. le projet est ambitieux
cf www.proftpd.org, mais il n a pas ete mené jusqu au bout.

j ai ete agreablement surpris pas la configuration a la fois simple et souple 
du serveur vsftpd :

#autorise les utilisateur locaux
local_enable=YES
#permets aux utilisteurs du ftp d ecrire
write_enable=YES
#masque des fichiers recu
local_umask=022
#autorise l acces aux anonymes
anonymous_enable=NO
#permet d activer le message d accueil .message
dirmessage_enable=YES
#acive les logs 
xferlog_enable=YES
#specifie le port de connection
connect_from_port_20=YES
#specifie les ports ouverts en passif ..pas convaincu...
pasv_min_port=30000
pasv_max_port=30200
#
nopriv_user=vsftpd
secure_chroot_dir=/usr/share/empty
# You may fully customise the login banner string:
ftpd_banner=Welcome ! have a good time! 
#  chroot
chroot_local_user=YES
#
pam_service_name=vsftpd
userlist_enable=YES
#enable for standalone mode
listen=YES
tcp_wrappers=YES

voila c est tout. ce fichier permet a tout utilisateur (sauf root) de se connecter
a son propre repertoire /home/user. 

pour ma part, a l aide de la commande adduser, j ai créer :
­ un utilisateur web qui me permet de gerer mes services web. son repertoire
est donc /home/web.
­ une multitude d utilisateurs "bidons" (marie, vasco, mat ...)qui ne possedent
tous le seul privilege de se connecter au serveur ftp. Ils ne possedent pas de
propre repertoire mais un repertoire commun, /home/commun, qui me permet de partager
des documents sur internet. Pour les subtilite d authentification voir annexe 1.
­ un utilisateur xp. son repertoire personnel /home/xp est tout simplement l equivalent
du dossier mes document. en effet le raccourci windows, mes documents, pointe
vers le repertoire /home/xp du serveur linux, via une connection samba. ce qui
me permet d acceder a mes donnees personnelles, a partir du web, tout en les
separant des mes donnees partagees.

smbd
­­­­

fichier /etc/smb/smbd.conf

[global]
        workgroup = LOCALDOMAIN
        server string = Mon ptit serveur samba
hosts allow = 192.168.1. 127.
        encrypt passwords = Yes
smb passwd file = /etc/samba/smbpasswd
        log file = /var/log/samba/%m.log
        max log size = 0
invalid users = root

socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
dns proxy = no

[smb]
   comment = My stuff
   path = /home/
   valid users = smbusr
   public = no
   writable = yes
   printable = no

ce fichier de configuration est basique, et ne tient pas du tout compte des
nombreuse fonctionnalite de serveur samba. mais il permet a partir d un poste
du reseau, de lire, d ecrire, et de gerer les fichiers du serveur. fichier qui
pourront donc rester disponibles sur internet. 
sshd
­­­­

le configuration par defaut est satisfaisante.

ssh (secure shell), permet de prendre main a distance le serveur, grace au
puissant shell de commande. le client utiliser sous windows est putty.exe. il
est pratique, leger, et gratuit.

httpd
­­­­­

ce service, permet de d heberger soit meme un ou plusieurs site web. la configuration
par defaut est satisfaisante pour heberger un petit site. je ne me permettrait
pas de rentrer dans le detail tant les options sont nombreuses.

5.Firewall
==========

un gros morceau. le nombre de tentative de piratage est grande...elle est freqemment
de plusieurs par minute. un firewall bien parametre permet d eviter de tel
intrusion et de laisser les attaques vaines.

sous linux, iptables est un programmes qui inspecte tout les paquets de données
entrant et sortant sur le reseau local. il permet donc de mettre en place des
filtres. je vais vous laisser ici un exemple de firewall:

6.Problemes non resolus
=======================

je n ai pas reussi a faire cotoyer sur mon ftp des user et un user anonyme.
je n ai pas reussi a lancer mon serveur ftp par xinetd correctement. 

*****************************************************************************
* ANNEXE     *
*****************************************************************************

annexe 1
========

Installation du serveur FTP 
vsftpd sur Debian Woody
$Revision: 1.13 $
$Date: 2003/08/29 07:56:20 $

Introduction

Vsftpd est un serveur FTP assez simple à paramétrer et considéré comme sécurisé. 
Licence
Copyright 2002­2003 Alexandre Ratti. Document diffusé dans les conditions des licences GPL 2 (GNU General Public 
License) et GFDL 1.2 (GNU Free Documentation License). [Explications]

Installation et paramétrage
Les manips décrites ont été faites sur Debian GNU/Linux 3.0 (Woody) avec vsftpd 1.0.0­2. Cette section décrit le 
paramétrage d'un serveur FTP de base, avec authentification /etc/passwd. L'utilisation d'une base de données PAM est 
décrite dans la section suivante.

Installez le serveur : "apt­get update && apt­get install vsftpd".

Créez un répertoire vide : "mkdir /home/empty". Il constitue le répertoire personnel de l'utilisateur non privilégié utilisé 
par les processus secondaires du démon.

Créez un utilisateur spécialisé aux droits limités. Les processus secondaires du démon seront exécutés sous cette 
identité. Dans cet exemple, l'utilisateur s'appelle "chrvsftp".

adduser ­­home /home/empty ­­no­create­home ­­disabled­login \
­­system ­­group chrvsftp

Paramétrez le serveur en modifiant le fichier /etc/vsftpd.conf. Voir notamment les paramètres suivants :

– Identité sous laquelle les processus non privilégiés du démon sont exécutés :
nopriv_user=chrvsftp

– Enfermer les utilisateurs locaux connectés dans une arborescence limitée (leur répertoire personnel) :
chroot_local_user=YES

– Répertoire vide et non modifiable par les processus du serveur. Il est utilisé comme cellule chroot lorsque le serveur 
n'a pas besoin d'accéder au système de fichiers. /var/run/vsftpd est la valeur par défaut sur Debian Woody.
secure_chroot_dir=/var/run/vsftpd

Créer un fichier de bannière avec un message accueillant ("Big Brother is watching you", par exemple). Ce message sera 
affiché à la place du nom du serveur FTP à l'ouverture d'une connexion. Il permet de dissimuler le nom et la version du 
serveur utilisé.

echo "Big Brother is watching you" > /etc/banner.msg

Configurez /etc/xinetd.conf (ou /etc/xinetd.d/vsftpd) :

service ftp
{
        id              = ftp_public
        disable         = no
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/sbin/vsftpd
        per_source      = 5
        instances       = 10
        nice            = 10
        log_on_success += PID HOST DURATION
        log_on_failure += HOST
        banner          = /etc/banner.msg
}

Vous pouvez limiter l'accès au serveur FTP en n'écoutant qu'une interface ("bind 192.168.0.10", par exemple) ou en 
n'acceptant que certains clients ("only_from toto.net"). Relancez xinetd ("/etc/init.d/xinetd restart").

Définissez un sous­domaine, le cas échéant (ftp.toto.net, par exemple) et connectez­vous au serveur avec un client FTP. 
Authentification des clients
Trois types d'accès sont proposés :

Accès anonyme. Activable et paramétrable dans /etc/vsftpd.conf. 

Accès avec compte local. Les clients sont authentifiés par le fichier /etc/passwd. Une fois connectés, ils sont confinés 
dans leur répertoire personnel. Pour créer un utilisateur limité au service FTP, vous pouvez interdire l'accès au système 
via un terminal :

adduser ­­home /var/ftp/toto ­­disabled­login ­­no­create­home toto

Accès d'utilisateurs virtuels (qui n'ont pas de compte dans /etc/passwd) avec authentification par une base de données 
PAM. Tous les accès ont lieu sous l'identité d'un utilisateur réel (défini par le paramètre guest_username).

Paramétrage d'utilisateurs virtuels avec authentification PAM
Installez le paquet libdb3­util, qui contient un utilitaire nécessaire pour créer une base de données. 

Créez un fichier texte /etc/vsftpd.txt contenant un nom d'utilisateur sur une ligne et son mot de passe sur la suivante. 
Exemple :

oscar
toto 

Générez la base de données à partir du fichier texte en entrant :

db3_load ­T ­t hash ­f /etc/vsftpd.txt /etc/vsftpd.db

Attention : utilisez db3_load (du paquet libdb3­util) et non db_load (du paquet libdb2­util). Sinon, la base de données ne 
sera pas lisible et l'authentification échouera (erreur caractéristique : "pam_userdb[214]: user_lookup: could not open 
database `/etc/vsftpd'").

Sécurisez la base de données :

chmod 600 /etc/vsftpd.db

Placez les lignes suivantes dans le fichier /etc/pam.d/ftp (à créer s'il n'existe pas) :

auth required /lib/security/pam_userdb.so db=/etc/vsftpd
account required /lib/security/pam_userdb.so db=/etc/vsftpd

Pour authentifier des utilisateurs avec le fichier /etc/passwd et avec la base de données PAM, ajoutez les lignes suivantes 
juste avant les deux lignes ci­dessus :
auth sufficient pam_unix.so
account sufficient pam_unix.so

Créez le dossier qui sera accessible en écriture par FTP.

mkdir ­p /home/ftpsite/public

Créez un utilisateur ; les accès virtuels auront lieu sous son identité. Il ne doit pas avoir de droits d'écriture sur la racine 
de l'arborescence dans laquelle il est enfermé ; j'ai donc créé un sous­dossier dans lequel il pourra placer des fichiers.

adduser ­­home /home/ftpsite ­­disabled­login ­­no­create­home \
­­system ­­group ftpuser
chown root.ftpuser /home/ftpsite/public
chmod 775 /home/ftpsite/public

Ainsi, l'utilisateur ftpuser se retrouve confiné dans /home/ftpsite et peut placer des fichiers dans /home/ftpsite/public.

Dans le fichier /etc/vsftpd.conf, définissez les options suivantes :

local_enable=YES
chroot_local_user=YES
guest_enable=YES
guest_username=ftpuser

Dans vsftpd, les utilisateurs virtuels ont les mêmes privilèges que les utilisateurs anonymes. Pour qu'ils aient accès en 
écriture au dossier partagé, en plus de l'option

write_enable=YES

vous devez activer les options suivantes dans le fichier /etc/vsftpd.conf :

anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

Sécurité des processus
Section inspirée du document de Thomas Seyrat (HSC) sur vsftpd. Voir les références dans la rubrique Documentation.

Lorsqu'un client se connecte au serveur FTP, un processus vsftpd disposant des droits de root est lancé par xinetd. Ce 
processus active un processus secondaire non privilégié (exécuté sous l'identité de chrvsftp dans notre exemple et 
confiné dans un répertoire vide), qui assure l'authentification du client. Le processus fils communique avec le processus 
père par un socket (pour lui fournir les données d'authentification).

Lorsque le client a été authentifié, le processus principal lance un autre processus secondaire qui gère la session de 
l'utilisateur, est exécuté sous l'identité de ce dernier et est confiné dans son répertoire personnel. Ensuite, le processus 
principal abandonne ses droits de root et prend l'identité non privilégiée (chrvsftp). Ainsi, les processus conservent le 
moins longtemps possible des droits dangereux (root).