{{tag>serveur tutoriel BROUILLON}} ---- ====== Installer un serveur de façon rapide ====== Le but de ce document est d'installer un serveur de façon rapide. La plupart des étapes ne sont pas développées. Si vous souhaitez plus d'informations, il est possible de se référer aux pages correspondantes dans la documentation de wiki. Il est fascinant de découvrir la puissance de certains logiciels fournis par la distribution Ubuntu. L'installation d'un serveur n'a jamais été aussi simple, rapide et puissante, la configuration par défaut est la plupart du temps suffisante. Ce document devrait vous permettre de découvrir la puissance de la distribution **Ubuntu** dans la configuration d'un serveur. Il est destiné à éveiller votre curiosité dans ce domaine. Si vous avez le moindre problème dans la configuration d'un logiciel, n'hésitez pas à vous référer à la page correspondante sur ce wiki. ===== Pré-requis ===== * Bases de l'utilisation de Linux (ligne de commande) * Connaître les bases de l'administration d'un réseau * Avoir déjà utilisé et configuré les logiciels installés * Avoir déjà configuré un serveur * Préparez matériellement votre serveur : je vous conseille de le mettre dans sa configuration normale (c'est-à-dire avec les deux cartes réseaux) car la détection automatique de l'installateur vous sera très utile. ===== Préparation de l'installation ===== - Téléchargez la version serveur de Ubuntu correspondant à votre architecture - Gravez-la - Démarrez l'installation - puis let's go ! ==== Sauvegarde d'un ancien serveur ==== Voici les fichiers et répertoires de configuration à sauvegarder : - /etc/dhcpd.conf - /etc/bind/named.conf - /var/cache/bind/ - /etc/firehol/firehol.conf - /etc/apache2/sites-available/ N'oubliez pas de jeter un coup d'oeil dans votre ''/home''. ===== Installation ===== - Suivez les instructions, les points importants sont détaillés ci-après. === Cartes réseaux === Connectez l'une de ces cartes à votre modem ADSL Choisissez l'une des cartes (eth0 ou eth1 la plupart du temps), si la configuration automatique avec DHCP échoue, revenez en arrière et choisissez l'autre carte. === Partitionnement === Choisissez le partitionnement manuel. En effet, il vaut mieux utiliser plusieurs partitions pour sécuriser votre système : la plus utilisée (''/home'') ne doit pas compromettre la plus importante (''/boot''). == Swap == * Taille : deux fois la taille de votre RAM si elle est strictement inférieure à 1 Go * Type : primaire * Emplacement : début * Utiliser comme : espace d'échange (swap) == ''/boot'' == * Taille : 100 MB FIXME Ne semble plus approprié avec les nouvelles versions, il y a souvent des mises à jour de noyau et cela va devenir vite insuffisant. **300 à 500 Mo sont recommandés pour être tranquille**. [[http://serverfault.com/a/334665/336843|Source : serverfault.com]] * Type : primaire * Utiliser comme : ext2 (nous utilisons ce système de fichier car de cette façon nous sommes certains que cette partition sera lisible avec la plupart des noyaux) * Point de montage : ''/boot'' * marquer la partition comme bootable (Indicateur d'amorçage = présent) == ''/'' (root) == * 8 Go minimum * Type : primaire * Point de montage : ''/'' == ''/home'' == * Type : primaire * Point de montage : ''/home'' === Mot de passe === Choisissez un mot de passe très simple lors de l'installation (trois fois la même lettre par exemple), et changez-le **dès le redémarrage**. En effet, il se peut que vous vous soyez trompé dans le choix du clavier... === Fin de l'installation === N'installez aucun autre logiciel, nous le ferons ensuite. Redémarrez le serveur. ===== Configuration ===== Après le redémarrage, ''ifconfig'' montre que vous n'avez qu'une seule interface configurée. Si vous avez choisi lors de l'installation un mot de passe trop simple, changez-le maintenant ! === Fichier ''/etc/apt/sources.list'' === Rajoutez un ''#'' devant la ligne commençant par ''deb cdrom''. Cela vous permettra d'installer directement à partir d'Internet. === Fichier ''/etc/network/interfaces'' === Rajoutez ceci pour créer l'adresse sur le réseau. Il est possible que ce soit la carte eth1. Attention, ces valeurs peuvent changer suivant votre configuration réseau. auto eth0 iface eth0 inet static name LAN address 192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255 network 192.168.0.0 gateway 192.168.0.1 __NOTE__ : la gateway est l'adresse de votre box ou de votre routeur elle est indispensable si vous voulez faire les mises à jour === Mise à jour des listes et des paquets installés === sudo apt-get update sudo apt-get upgrade === Éditeur de texte === sudo apt-get install w3m vimhelp-fr vim === Configuration de l'éditeur de texte VI === Activez la coloration syntaxique dans ''vim'' en éditant le fichier ''/etc/vim/vimrc'' et jetez un coup d'oeil aux autres options qui peuvent vous intéresser. ==== Serveur Dhcpd3 ==== sudo apt-get install dhcp3-server voir doc http://doc.ubuntu-fr.org/dhcp3-server ==== Serveur ssh ==== Le temps est venu d'installer le serveur ssh, en effet la taille des fichiers de configuration est plus importante à partir de maintenant, et une installation à partir d'un autre ordinateur est plus efficace. Un petit redémarrage semble utile ici (de plus, cela permet de régler en amont certains problèmes qui peuvent apparaître). sudo apt-get install openssh-server === Fichier /etc/ssh/sshd_config === NB 18/06/2010 : Le fichier de paramètrage actif est ssh**d**_config et non ssh_config Les lignes suivantes ne sont pas dans l'ordre. Modifiez les lignes correspondantes du fichier. Si on ne veut pas utiliser le port 22, il faut en choisir un qui soit libre. Pour cela, respecter le document http://www.iana.org/assignments/port-numbers qui précise qu'il est autorisé d'utiliser librement les ports dont les numéros vont de 49152 à 65535, vérifier aussi votre fichier /etc/services. La liste des ports habituellement utilisés est sur http://fr.wikipedia.org/wiki/Liste_des_ports_logiciels Prendre, par exemple, le port 50022. Nota: J'avais accédé à SSH par le port 22 mais ayant changé le port comme indiqué ci-dessus ça ne marchait plus. J'ai cherché coté firewall, etc ... alors que la cause du problème était la suivante: fichiers /root/.ssh/known_hosts ou ~/.ssh/known_hosts périmés. Solution : les renommer ou carrément les détruire ! # Nous n'utiliserons pas le port 22 Port XXXXX # Temps réduit pour se logger LoginGraceTime 30 # Le root n'est pas autorisé à se logger PermitRootLogin no X11Forwarding no # La première partie de la ligne limite l'accès externe à un seul utilisateur # La seconde partie accorde l'accès à tous les autres utilisateurs en local AllowUsers VOTRE_UTILISATEUR@* *@192.168.0.* === Test de la configuration === /etc/init.d/ssh restart N'oubliez pas que désormais le port n'est plus 22 ! Préferez la commande suivante pour pour redémarrer le service ssh: service ssh restart ssh votre_adresse_ip -p XXXX Rajoutez ceci dans /etc/bash.bashrc : alias ssh_VOTRE_NOM_DHOTE='ssh 192.168.0.1 -p XXXX' Une solution plus "propre" est de bien configurer son fichier de configuration personnel ssh : ~/.ssh/config Saisissez ceci : host NomCourt Hostname domaine.reel.com Port XXXX L'accès ssh au domaine domaine.reel.com port XXXX se fait comme suit: ssh NomCourt ==== Serveur DNS (bind) ==== sudo apt-get install bind9 === Fichier ''/etc/bind/named.conf.options'' === Si vous souhaitez faire de votre serveur un forwarder DNS pour tout votre réseau (vous trouverez les adresses IP des serveurs DNS de votre FAI dans le fichier ''/etc/resolv.conf'') : forwarders { XXX.XXX.XXX.XXX; XXX.XXX.XXX.XXX; }; === Fichier ''/etc/bind/named.conf.local'' === Rajoutez les options correspondant à votre zone : zone "d3in.org" { type master; file "d3in.org.zone"; allow-transfer { // twisted4life 202.157.182.142; // gandi 217.70.177.40; }; }; === Fichier ''/var/cache/bind/d3in.org.zone'' === ; Fichier de zone "type" pour le domaine "d3in.org" ; Formation Debian GNU/Linux par Alexis de Lattre ; http://www.via.ecp.fr/~alexis/formation-linux/ ; Utiliser la commande ; "named-checkzone d3in.org /var/cache/bind/d3in.org.zone" ; pour vérifier la validité du fichier de zone. ; Utiliser la commande "named-checkconf" pour vérifier la validité du fichier ; de configuration /etc/bind/named.conf ; ATTENTION : ne pas oublier de mettre à jour le "serial" à chaque ; modification des enregistrements de ce fichier. ; ATTENTION : dans les fichiers de zone, les noms DNS complets doivent se ; terminer par des points (par exemple "master.d3in.org.") $TTL 3D @ IN SOA www.d3in.org. root.ns.d3in.org. ( 2007060101 ; serial (aaaammddrr) 8H 2H 4W 1D ) d3in.org. IN TXT "v=spf1 a mx include:free.fr ~all" www.d3in.org. IN TXT "v=spf1 a -all" d3in.org. IN NS www.d3in.org. d3in.org. IN NS ns6.gandi.net. d3in.org. IN MX 1 www.d3in.org. d3in.org. IN MX 10 mail.rollernet.us. d3in.org. IN MX 10 mail2.rollernet.us. @ IN A 82.235.70.120 www IN A 82.235.70.120 imap CNAME d3in.org. smtp CNAME d3in.org. ca CNAME d3in.org. * N'oubliez pas de changer le serial **après chaque modification** (c'est un numéro qui permet aux autres serveurs de savoir si vous avez changé les définitions de noms - 2007060101 dans notre exemple. Reportez-vous à la documentation de Bind pour de plus amples informations.) ! * Les noms de domaines doivent terminer par un point ! === Test === /etc/init.d/bind9 restart Utilisez la commande ''named-checkzone d3in.org /var/cache/bind/d3in.org.zone'' pour vérifier la validité du fichier de zone. Utilisez la commande ''named-checkconf'' pour vérifier la validité du fichier de configuration ''/etc/bind/named.conf''. ==== Firewall (firehol) ==== sudo apt-get install firehol Si jamais à ce stade vous avez besoin d'Internet : echo 1 > /proc/sys/net/ipv4/ip_forward && iptables -A POSTROUTING -t nat -o eth1 -j MASQUERADE === ''/etc/default/firehol'' === Remplacez ''START_FIREHOL=NO'' par ''START_FIREHOL=YES'' === ''/etc/firehol/firehol.conf'' === version 5 # Mettez ici le port utilisé pour SSHD server_ssh1_ports="tcp/XXXXX" client_ssh1_ports="default" interface eth0 home policy accept interface eth1 internet protection strong # Serveurs auxquels on peut acceder depuis Internet server "imap imaps smtp http ftp ssh1 dns" accept # Sorties autorisees a partir du serveur client "squid http https ftp smtp smtps ssh dns ping rsync ntp" accept router home2internet inface eth0 outface eth1 route "ftp jabber telnet rtsp time cups ping pop3 pop3s dhcp dns http https rsync rtp icmp imap imaps nntp ntp smtp smtps ssh squid sip" accept masquerade === Test === /etc/init.d/firehol restart Trouvez un ''zonecheck'' sur Internet et vérifiez que votre serveur DNS est accessible de l'extérieur. Téléchargez vos mails, envoyez un mail, naviguez sur Internet pour vérifier que tout fonctionne. Allez sur l'un de ces sites pour vérifier que votre réseau est bien sécurisé : http://www.auditmypc.com/firewall-test.asp ==== Proxy (tinyproxy) ==== sudo apt-get install tinyproxy === ''/etc/tinyproxy/tinyproxy.conf '' === Au début du fichier : # # Port to listen on. # Port 3128 # # If you have multiple interfaces this allows you to bind to only one. If # this is commented out, tinyproxy will bind to all interfaces present. # #Listen 192.168.0.1 === Test du proxy http === /etc/init.d/tinyproxy restart Modifier les options de votre navigateur pour utiliser comme proxy ''192.168.0.1'', avec comme port : ''3128''. ==== Filtrage (dansguardian) ==== sudo apt-get install dansguardian === ''/etc/dansguardian/dansguardian.conf'' === Supprimez la ligne commençant par ''UNCONFIGURED''. Changez les lignes suivantes : virusscan = off language = 'french' filterip = proxyport = 3128 === ''/etc/dansguardian/dansguardianf1.conf'' === naughtynesslimit = XXX === Autres fichiers === * ''/etc/dansguardian/bannedextensionlist'' * '' /etc/dansguardian/exceptionsitelist'' === Installation des blacklists === cd /etc/dansguardian/ wget ftp://ftp.univ-tlse1.fr/pub/reseau/cache/squidguard_contrib/blacklists.tar.gz tar xzf blacklists.tar.gz cd blacklists Nous supprimons tous les liens : find ./ -type l -exec rm -i "{}" ';' === ''bannedsitelist'' === .Include .Include .Include .Include .Include .Include .Include .Include .Include .Include .Include .Include .Include .Include .Include .Include .Include .Include .Include .Include .Include .Include .Include .Include .Include .Include .Include .Include .Include .Include .Include === ''bannedurllist'' === .Include .Include .Include .Include .Include .Include .Include .Include .Include .Include .Include .Include .Include .Include .Include .Include .Include .Include .Include .Include .Include .Include .Include .Include .Include .Include .Include .Include .Include .Include === Test === /etc/init.d/dansguardian restart Allez prendre un café ;-) === Proxy transparent === Pour l'instant, dansguardian n'est pas utilisé parce que les connections sont directes (sauf si vous précisez le contraire dans la configuration de votre navigateur en utilisant ''192.168.0.1'' comme proxy, avec comme port ''8080''). D'autre part, il est possible de passer directement par Squid, de cette manière on outrepasse la protection (en modifiant la configuration du navigateur pour utiliser le port ''3128'', utilisé par Squid). Rajoutez les lignes suivantes dans votre ''/etc/firehol/firehol.conf'' : iptables -t filter -I OUTPUT -d 127.0.0.1 -p tcp --dport 3128 -m owner ! --uid-owner dansguardian -j DROP transparent_squid 8080 "nobody root" ==== Serveur Web (Apache) - Mysql (dernière version) - Php - Mod_python ==== sudo apt-get install apache2 libapache2-mod-php5 phpmyadmin libapache2-mod-python mysql-server apache2-utils === ''/etc/apache2/sites-available/default'' === Modifiez la première ligne : NameVirtualHost *:80 Et les lignes suivantes : ServerName d3in.org ServerAdmin webmaster@d3in.org === Test === N'oubliez pas de créer votre mot de passe pour le root mysql (différent du root système) : sudo mysqladmin -u root password "votre_mot_de_passe_root_mysql" /etc/init.d/apache2 restart Rendez-vous sur votre serveur. Vous devriez voir une liste de fichier. Cliquez sur phpmyadmin. Si php a été correctement installé, vous ne verrez aucune erreur. === Installation de Django === Django est un framework python : http://www.djangoproject.com/ et [[http://www.django-fr.org/]] sudo apt-get install python-pysqlite2 python-mysqldb subversion cd mkdir src && cd src svn co http://code.djangoproject.com/svn/django/trunk/ cd trunk sudo python setup.py install == ''/etc/apache2/sites-available/VOTRE_NOM_DE_DOMAINE'' == Consultez la documentation de Django pour plus d'information. ServerName NOM_DE_DOMAINE ServerAlias AUTRE_NOM SetHandler mod_python PythonInterpreter VOTRE_INTERPRETER PythonHandler django.core.handlers.modpython PythonPath "['/var/django'] + sys.path" SetEnv DJANGO_SETTINGS_MODULE ca.settings PythonDebug Off Alias /media /var/django/ca/media SetHandler None ErrorLog /var/log/apache2/error.log LogLevel warn CustomLog /var/log/apache2/access.log combined N'oubliez pas de tester votre installation ! ==== Serveur d'impression (Cups) ==== N'oubliez pas d'allumer votre imprimante et de la brancher au serveur... sudo apt-get install hpijs-ppds linuxprinting.org-ppds hpijs cups === '' /etc/cups/cupsd.conf'' == Modifiez les lignes suivantes : # Only listen for connections from the local machine. # Listen localhost:631 Port 631 # Show shared printers on the local network. Browsing On # Restrict access to the admin pages... Order allow,deny Allow localhost Allow @LOCAL __Note__ : Et aussi pour "location /" si on veut avoir une belle page de cups :) === Test === /etc/init.d/cupsys restart Puis rendez vous à l'adresse suivante : http://192.168.0.1:631/ ==== Serveur Mail ==== La partie la plus compliquée... sudo apt-get install postfix courier-imap-ssl courier-imap spamassassin procmail mailutils Lorsque la question vous sera posée, choisissez l'option "NE RIEN CONFIGURER". === Serveur Smtp (postfix) === == ''/etc/postfix/main.cf'' == Créez un fichier ''/etc/mailname'' contenant le nom du réseau (exemple : d3in.org). # See /usr/share/postfix/main.cf.dist for a commented, mor complete version # Debian specific: Specifying a file name will cause the first # line of that file to be used as the name. The Debian default # is /etc/mailname. myorigin = /etc/mailname smtpd_banner = $myhostname ESMTP $mail_name biff = no # appending .domain is the MUA's job. append_dot_mydomain = no # Uncomment the next line to generate "delayed mail" warnings #delay_warning_time = 4h mydestination = www.d3in.org, d3in.org, localhost # Si vous avez un fournisseur d'accès : # relayhost = smtp.votrefai.tld relayhost = mynetworks = www.d3in.org, d3in.org, 127.0.0.0/8 myhostname = www.d3in.org mydomain = d3in.org masquerade_domains = d3in.org # Tres important #home_mailbox = Maildir/ #maibox_command = maildrop mailbox_command = procmail -a "$EXTENSION" unkown_local_recipient_reject_code = 550 alias_maps = hash:/etc/aliases mailbox_size_limit = 0 recipient_delimiter = + inet_interfaces = all inet_protocols = ipv4 smtpd_sasl_local_domain = smtpd_sasl_auth_enable = yes smtpd_sasl_security_options = noanonymous broken_sasl_auth_clients = yes smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination smtpd_tls_auth_only = no smtp_use_tls = yes smtpd_use_tls = yes smtp_tls_note_starttls_offer = yes smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem smtpd_tls_loglevel = 1 smtpd_tls_received_header = yes smtpd_tls_session_cache_timeout = 3600s tls_random_source = dev:/dev/urandom === MDA (Procmail) === Créez le fichier ''/etc/skel/.procmailrc'' avec ce contenu : MAILDIR=$HOME/Maildir DEFAULT=$MAILDIR/ :0: $DEFAULT Il faut ensuite créer l'architecture du dossier ''Maildir'' : cd /etc/skel maildirmake.courier Maildir && maildirmake.courier Maildir/.Sent && maildirmake.courier Maildir/.Trash && maildirmake.courier Maildir/.Drafts && maildirmake.courier Maildir/.Lists chmod a+xr -R Maildir Le dossier ''/etc/skel'' est un dossier qui sera la base des ''/home'' des utilisateurs que vous créerez. Par conséquent, si vous créez d'autres comptes, le contenu de ce dossier sera copié dans le ''home''. Cependant, étant donné que votre FIXME existe déjà, il est nécessaire de le copier dans votre ''home''. cp /etc/skel/.procmailrc ~/ cp -R /etc/skel/Maildir ~/ == ''/etc/aliases'' == Rajoutez si vous le souhaitez des alias. N'oubliez pas de faire la commande suivante : postalias /etc/aliases === Test de la configuration Mail === /etc/init.d/postfix restart /etc/init.d/courier-imap restart Envoyez-vous un mail : ca@www:/etc/skel$ mail ca Cc: Subject: Test Ceci est un test a partir de la console. . Connectez-vous au serveur Imap en utilisant votre lecteur de mail préféré. Normalement cela devrait fonctionner. Envoyez un mail vers cette adresse à partir d'une adresse externe ou d'un autre webmail pour vérifier que tout fonctionne. ==== Sauvegarde (backup-manager) ==== sudo apt-get install backup-manager Ce programme est très utile, puissant et intuitif. Répondez "ok" et laissez les valeurs par défaut, nous nous attaquerons directement au fichier de configuration. === "/etc/backup-manager.conf" === Voici les lignes à modifier : # Si vous souhaitez sauvegarder votre base mysql : export BM_ARCHIVE_METHOD="tarball mysql" # Il vaut mieux enregistrer sur un autre disque dur. export BM_REPOSITORY_ROOT="/var/archives" # Pour que cela prenne moins de place export BM_TARBALL_FILETYPE="tar.bz2" # Liste des fichiers à sauvegarder export BM_TARBALL_DIRECTORIES="/etc /home /var/cache/bind/ " # Fichiers à exclure # On exclut les listes noires de danguardian parce qu'elles prennent # beaucoup de place et qu'elle ne sont pas très utiles export BM_TARBALL_BLACKLIST="/var/archives /etc/dansguardian/blacklists" # Mot de passe du root mysql export BM_MYSQL_ADMINPASS="" # Ensuite allez à la section "BM_UPLOAD_SSH" si vous # souhaitez utiliser la méthode d'upload par ssh # Renseignez notamment l'endroit où se trouve votre clé : export BM_UPLOAD_SSH_KEY="/home/ca/.ssh/id_dsa" ==== Finalisation de l'installation ==== === Installer des clés SSH ============= Il peut être utile, notamment si vous utilisez Backup-Manager via SSH, ou si vous souhaitez vous connecter sans taper de mot de passe, d'utiliser les clés. Pour ce faire, générez une clé : ssh-keygen -t dsa Vous pouvez entrer un mot de passe pour protéger la clé. Celui-ci vous sera demandé à chaque utilisation du fichier. Puis faites : ssh-copy-id -i ~/.ssh/id_dsa.pub login@nom_DNS_du_serveur Ensuite il suffira de taper cette commande dans tout nouveau shell : ca $ ssh-agent screen ca $ # Appuyer sur "espace" ca $ ssh-add ca $ # entrez si nécessaire le(s) mot(s) de passe de votre (vos) clés Vous pouvez vous connecter sans taper de mot de passe, tout en utilisant une connexion sécurisée ! === Recevoir des rapports === sudo apt-get install fwanalog logwatch Vous n'avez rien d'autre à faire, vous recevrez automatiquement des rapports concernant vos logs. === Vérifier la sécurité de votre système === sudo apt-get install chkrootkit Attention aux « faux positifs ». sudo apt-get install tiger N'oubliez pas de redémarrer pour vérifier que tout fonctionne ! sudo apt-get install unzip build-essential ---- //Contributeurs : [[:utilisateurs:Charles-Axel Dein et sa bite]].//