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 et dans les pages officielles (en) https://ubuntu.com/server/docs.
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.
Voici les fichiers et répertoires de configuration à sauvegarder :
N'oubliez pas de jeter un coup d'oeil dans votre /home
.
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.
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
).
/boot
/
/home
N'installez aucun autre logiciel, nous le ferons ensuite. Redémarrez le serveur.
Après le redémarrage, ifconfig
montre que vous n'avez qu'une seule interface configurée.
Rajoutez un #
devant la ligne commençant par deb cdrom
. Cela vous permettra d'installer directement à partir d'Internet.
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
sudo apt-get update sudo apt-get upgrade
sudo apt-get install w3m vimhelp-fr vim
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.
sudo ap install isc-dhcp-server
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
NB 18/06/2010 : Le fichier de paramètrage actif est sshd_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 https://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.*
/etc/init.d/ssh restart
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
sudo apt-get install bind9
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; };
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 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.
/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
.
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
Remplacez START_FIREHOL=NO
par START_FIREHOL=YES
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
/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é : https://www.auditmypc.com/firewall-test.asp
sudo apt-get install tinyproxy
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
/etc/init.d/tinyproxy restart
Modifier les options de votre navigateur pour utiliser comme proxy 192.168.0.1
, avec comme port : 3128
.
sudo apt-get install dansguardian
Supprimez la ligne commençant par UNCONFIGURED
.
Changez les lignes suivantes :
virusscan = off language = 'french' filterip = proxyport = 3128
naughtynesslimit = XXX
/etc/dansguardian/bannedextensionlist
/etc/dansguardian/exceptionsitelist
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 "{}" ';'
.Include</etc/dansguardian/blacklists/blog/domains> .Include</etc/dansguardian/blacklists/tricheur/domains> .Include</etc/dansguardian/blacklists/adult/domains> .Include</etc/dansguardian/blacklists/redirector/domains> .Include</etc/dansguardian/blacklists/games/domains> .Include</etc/dansguardian/blacklists/shopping/domains> .Include</etc/dansguardian/blacklists/radio/domains> .Include</etc/dansguardian/blacklists/warez/domains> .Include</etc/dansguardian/blacklists/agressif/domains> .Include</etc/dansguardian/blacklists/marketingware/domains> .Include</etc/dansguardian/blacklists/phishing/domains> .Include</etc/dansguardian/blacklists/financial/domains> .Include</etc/dansguardian/blacklists/sexual_education/domains> .Include</etc/dansguardian/blacklists/strict_redirector/domains> .Include</etc/dansguardian/blacklists/dating/domains> .Include</etc/dansguardian/blacklists/drogue/domains> .Include</etc/dansguardian/blacklists/forums/domains> .Include</etc/dansguardian/blacklists/verisign/domains> .Include</etc/dansguardian/blacklists/hacking/domains> .Include</etc/dansguardian/blacklists/filehosting/domains> .Include</etc/dansguardian/blacklists/astrology/domains> .Include</etc/dansguardian/blacklists/strong_redirector/domains> .Include</etc/dansguardian/blacklists/mobile-phone/domains> .Include</etc/dansguardian/blacklists/publicite/domains> .Include</etc/dansguardian/blacklists/reaffected/domains> .Include</etc/dansguardian/blacklists/webmail/domains> .Include</etc/dansguardian/blacklists/gambling/domains> .Include</etc/dansguardian/blacklists/dangerous_material/domains> .Include</etc/dansguardian/blacklists/mixed_adult/domains> .Include</etc/dansguardian/blacklists/cleaning/domains> .Include</etc/dansguardian/blacklists/audio-video/domains>
.Include</etc/dansguardian/blacklists/blog/urls> .Include</etc/dansguardian/blacklists/tricheur/urls> .Include</etc/dansguardian/blacklists/adult/urls> .Include</etc/dansguardian/blacklists/drugs/urls> .Include</etc/dansguardian/blacklists/redirector/urls> .Include</etc/dansguardian/blacklists/games/urls> .Include</etc/dansguardian/blacklists/shopping/urls> .Include</etc/dansguardian/blacklists/radio/urls> .Include</etc/dansguardian/blacklists/warez/urls> .Include</etc/dansguardian/blacklists/agressif/urls> .Include</etc/dansguardian/blacklists/marketingware/urls> .Include</etc/dansguardian/blacklists/phishing/urls> .Include</etc/dansguardian/blacklists/sexual_education/urls> .Include</etc/dansguardian/blacklists/strict_redirector/urls> .Include</etc/dansguardian/blacklists/dating/urls> .Include</etc/dansguardian/blacklists/drogue/urls> .Include</etc/dansguardian/blacklists/forums/urls> .Include</etc/dansguardian/blacklists/hacking/urls> .Include</etc/dansguardian/blacklists/filehosting/urls> .Include</etc/dansguardian/blacklists/astrology/urls> .Include</etc/dansguardian/blacklists/strong_redirector/urls> .Include</etc/dansguardian/blacklists/mobile-phone/urls> .Include</etc/dansguardian/blacklists/publicite/urls> .Include</etc/dansguardian/blacklists/reaffected/urls> .Include</etc/dansguardian/blacklists/webmail/urls> .Include</etc/dansguardian/blacklists/gambling/urls> .Include</etc/dansguardian/blacklists/dangerous_material/urls> .Include</etc/dansguardian/blacklists/mixed_adult/urls> .Include</etc/dansguardian/blacklists/cleaning/urls> .Include</etc/dansguardian/blacklists/audio-video/urls>
/etc/init.d/dansguardian restart
Allez prendre un café
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"
sudo apt-get install apache2 libapache2-mod-php5 phpmyadmin libapache2-mod-python mysql-server apache2-utils
Modifiez la première ligne :
NameVirtualHost *:80
Et les lignes suivantes :
<VirtualHost _default_:80> ServerName d3in.org ServerAdmin webmaster@d3in.org
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.
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
Consultez la documentation de Django pour plus d'information.
<VirtualHost *:80> 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 <Location "/media/"> SetHandler None </Location> ErrorLog /var/log/apache2/error.log LogLevel warn CustomLog /var/log/apache2/access.log combined </VirtualHost>
N'oubliez pas de tester votre installation !
sudo apt-get install hpijs-ppds linuxprinting.org-ppds hpijs cups
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... <Location /admin> Order allow,deny Allow localhost Allow @LOCAL </Location>
Note : Et aussi pour "location /" si on veut avoir une belle page de cups :)
/etc/init.d/cupsys restart
Puis rendez vous à l'adresse suivante : http://192.168.0.1:631/
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".
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
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 existe déjà, il est nécessaire de le copier dans votre home
.
cp /etc/skel/.procmailrc ~/ cp -R /etc/skel/Maildir ~/
Rajoutez si vous le souhaitez des alias. N'oubliez pas de faire la commande suivante :
postalias /etc/aliases
/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.
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.
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"
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 !
sudo apt-get install fwanalog logwatch
Vous n'avez rien d'autre à faire, vous recevrez automatiquement des rapports concernant vos logs.
sudo apt-get install chkrootkit
Attention aux « faux positifs ».
sudo apt-get install tiger
sudo apt-get install unzip build-essential
Contributeurs : Charles-Axel Dein.