GNU/Linux >> Tutoriels Linux >  >> Debian

La configuration parfaite - Debian Woody (3.0)

Ceci est un "copier-coller" Comment ! La façon la plus simple de suivre ce tutoriel est d'utiliser un client en ligne de commande/client SSH (comme PuTTY pour Windows) et de simplement copier et coller les commandes (sauf si vous devez fournir vos propres informations comme les adresses IP, les noms d'hôte, les mots de passe,... ). Cela permet d'éviter les fautes de frappe.

La configuration parfaite - Debian Woody (3.0)

Version 1.6
Auteur :Falko Timme

Ceci est une description détaillée des étapes à suivre pour configurer Debian basé sur un serveur (Debian Woody alias Debian 3.0) qui offre tous les services nécessaires aux FAI et aux hébergeurs (serveur Web (compatible SSL), serveur de messagerie (avec SMTP-AUTH et TLS !), serveur DNS, serveur FTP, serveur MySQL, POP3/IMAP, quota, pare-feu, etc.).

J'utiliserai les logiciels suivants :

  • Serveur Web :Apache 1.3.x
  • Serveur de messagerie :Postfix (plus facile à configurer que sendmail ; a un historique de failles de sécurité plus court que sendmail)
  • Serveur DNS :BIND9
  • Serveur FTP :proftpd (vous pouvez également utiliser vsftpd)
  • POP3/IMAP :dans cet exemple, vous pouvez choisir entre le format de boîte aux lettres UNIX traditionnel (nous utilisons alors qpopper/uw-imapd) ou le Format Maildir (dans ce cas nous utiliserons Courier-POP3/Courier-IMAP).
  • Webalizer pour les statistiques de sites Web

En fin de compte, vous devriez avoir un système qui fonctionne de manière fiable et qui est prêt pour le panneau de contrôle d'hébergement Web gratuit ISPConfig (c'est-à-dire que ISPConfig s'exécute dessus à partir du boîte).

Je veux d'abord dire que ce n'est pas la seule façon de mettre en place un tel système. Il existe de nombreuses façons d'atteindre cet objectif, mais c'est la voie que je prends. Je n'émets aucune garantie que cela fonctionnera pour vous !

Exigences

Pour installer un tel système, vous aurez besoin des éléments suivants :

  • CD 1 de la version Debian Woody (Debian 3.0) (disponible sur http://www.debian.org)
  • CD 1 de la dernière version de Mandrake Linux (9.2 au moment de la rédaction de cet article) (disponible sur http://www.mandrake -linux.com)(vous n'en avez pas besoin si vous n'avez pas besoin de créer des partitions sur votre disque dur)
  • une connexion internet puisque je vais décrire une installation réseau dans ce document

1 Système TheBase

Si vous avez un disque dur inutilisé, vous devrez d'abord créer des partitions dessus (vous pouvez ignorer cette étape si vous avez déjà des partitions sur votre disque dur ). Vous pouvez utiliser l'installateur Debian pour le faire mais je pense qu'il est difficile à utiliser (surtout pour les débutants). C'est là que je triche un peu :j'insère le CD Mandrake dans mon CD-ROM et lance l'installateur Mandrake (juste jusqu'à ce que mon des partitions ont été créées avec l'outil de partitionnement de Mandrake qui, à mon avis, est le meilleur du monde Linux).

Je crée deux partitions :/dev/hda1 (avec /boot comme point de montage) et /dev/hda6 (avec / comme point de montage). De plus, je crée une partition de swap (généralement sur /dev/hda5 ).Je pense que 50 Mo à 100 Mo est une bonne taille pour /dev/hda1;500 Mo devraient suffire pour la partition swap; le reste est pour /dev/hda6 (où se trouveront les sites Web des utilisateurs, etc.).

Une fois les partitions créées, j'arrête l'installation de Mandrake, insère mon CD Debian et redémarre le système.

À l'invite de démarrage, saisissez bf24 pour installer Debian avec un noyau Linux 2.4 :

Sélectionnez ensuite votre langue :

Ensuite, vous entrerez dans le menu principal de l'installateur Debian. Configurez votre clavier :

Initialiser et activer une partition swap :

Lorsqu'on lui a demandé Scanfor Bad Blocks ? , choisissez Non .

Ensuite, initialisez une partition Linux :

Sélectionnez le système de fichiers souhaité. Je prends ext3 ici.

Sélectionnez /dev/hda1 comme partition à initialiser :

Lorsqu'on lui a demandé Scanfor Bad Blocks ? , saisissez Non .

Sélectionnez /boot comme point de montage pour /dev/hda1 :

Vous devez maintenant initialiser votre deuxième partition Linux :

Sélectionnez votre système de fichiers préféré (encore une fois, je prends ext3 ici). Sélectionnez ensuite /dev/hda6 comme partition à initialiser :

Lorsqu'on lui a demandé Scanfor Bad Blocks ? , saisissez Non .

Sélectionnez / comme point de montage pour /dev/hda6 :

Une fois vos partitions formatées et initialisées, sélectionnez Installer les modules Kernel et Driver depuis le menu principal. Je pense que cela n'a pas besoin d'explications supplémentaires.

Configurer les modules DeviceDriver :

Assurez-vous d'installer le pilote de votre carte réseau (si vous ne connaissez pas le bon, vous pouvez installer plusieurs pilotes en toute sécurité) :

Assurez-vous maintenant d'inclure le support d'iptables (pare-feu !) dans votre noyau :

Après avoir quitté le menu des modules du pilote, vous devez configurer votre réseau :

Pour le nom d'hôte, je recommande fortement un sous-domaine qui ne sera pas utilisé pour un site virtuel sur ce serveur plus tard. Quelque chose comme server1 ,serveur2 , ... serait très pratique car cela vous permet de distinguer vos serveurs si vous en exécutez plusieurs. Donc, si votre domaine est example.com (un vrai domaine est recommandé !) vous pouvez accéder au serveur sous server1.example.com (n'oubliez pas de mettre à jour l'enregistrement DNS pour example.com !).

Lorsque vous êtes invité à Configuration automatique du réseau ,sélectionnez Non .

Entrez ensuite l'adresse IP principale du système, son masque réseau, l'adresse de la passerelle et le domaine du système (ici :example.com ).

Spécifiez les serveurs DNS que le système doit utiliser (par exemple 193.174.32.18 et 145.253.2.11 ).

Installez le système de base :

Rendez le système amorçable :

Sélectionnez InstallLILO dans le MBR :

Puis redémarrez le système. Assurez-vous de retirer le CD Debian de votre CD-ROM :

Après le redémarrage, configurez votre fuseau horaire :

Ne pas activer md5passwords :

Activer les mots de passe masqués :

Définissez ensuite le rootpassword , créez l'utilisateur supplémentaire admin et entrer son mot de passe.

Si vous n'avez pas besoin de packages pcmcia, supprimez-les.

N'utilisez pas de connexion PPP pour installer le système (un serveur doit avoir une connexion permanente à Internet) :

Je veux faire une installation réseau (c'est pourquoi je n'ai besoin que du disque 1 des sept CD-ROM Debian). Je choisis donc http comme méthode d'accès à l'archive Debian sous AptConfiguration :

Sélectionnez un miroir près de chez vous :

Normalement, vous n'utilisez pas de proxy, alors laissez le champ vide :

Lorsqu'on lui a demandé Utiliser les mises à jour de sécurité de security.debian.org ? répondez Oui .

Important : Depuis juin 2005, Debian Sarge (3.1) est la version stable de Debian. Comme nous voulons installer Debian Woody (3.0) ici au lieu de Sarge, nous devons modifier le fichier /etc/apt/sources.list maintenant avant de continuer ! L'installateur de Woody pense toujours que Woody est la version stable. Appuyez sur Ctrl + Alt + F2 sur votre clavier. Vous êtes maintenant sur le shell. Connectez-vous en tant que root . Modifiez ensuite /etc/apt/sources.list avec un éditeur de texte (par exemple vi )et remplacez stable avec boisé où qu'il apparaisse.Exécutez ensuite

apt-getupdate

et appuyez sur Ctrl+ Alt + F1 pour revenir à l'écran d'installation.

Ensuite, exécutez tasksel :

Je veux avoir un système minimal au début donc je ne sélectionne que serveur de messagerie et C et C++ (afin que je puisse compiler les sources si j'en ai besoin). Les autres logiciels seront installés ultérieurement.

Ne pas exécuter dselect (n'y pensez même pas, vous serez perdu !):

Pour les étapes suivantes, vous pouvez accepter les valeurs par défaut.

Configurez ensuite vos paramètres régionaux. Choisissez au moins en_USISO-8859-1 :

Comme paramètre régional par défaut, je sélectionne en_US :

Configurez ensuite votre serveur ssh :

L'installation commence. À la fin, il vous sera demandé si vous souhaitez supprimer les fichiers.deb précédemment téléchargés. Vous pouvez répondre O ici.

Lorsque l'installateur veut configurer exim entrez 5 (pas de configuration) car nous utiliserons postfix comme serveur de messagerie.

Maintenant, le système de base est prêt :

2 Installation et configuration du reste du système

Configurer des adresses IP supplémentaires

Si vous avez plusieurs adresses IP, vous pouvez ajouter vos adresses IP supplémentaires en modifiant /etc/network/interfaces .Il ressemblera à ceci :

# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)

# The loopback interface
auto lo
iface lo inet loopback

# The first network card - this entry was created during the Debian installation
# (network, broadcast and gateway are optional)
auto eth0
iface eth0 inet static
address 192.168.0.100
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.1

Si vous souhaitez ajouter l'adresse IP 192.168.0.101 à l'interface eth0 vous devez modifier le fichier pour qu'il ressemble à ceci :

# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)

# The loopback interface
auto lo
iface lo inet loopback

# The first network card - this entry was created during the Debian installation
# (network, broadcast and gateway are optional)
auto eth0
iface eth0 inet static
address 192.168.0.100
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.1

auto eth0:0
iface eth0:0 inet static
address 192.168.0.101
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.1

Puis redémarrez votre réseau :

/etc/init.d/networkingrestart


Définition du nom d'hôte

echo server1.example.com> /etc/hostname
/bin/hostname -F /etc/hostname


Installer/supprimer des logiciels

Ajouter

deb http://backports.debian.skynet.be woody cyrus-sasl2

à /etc/apt/sources.list et lancez

apt-getupdate
apt-get install wgetbzip2 rdate fetchmail libdb3++-dev unzip zip ncftp xlispstat libarchive-zip-perlzlib1g-dev libpopt -dev nmap ouvressl (1line !)
apt-get remove lpr nfs-commonportmap pidentd pcmcia-cs pppoe pppoeconf ppp pppconfig

update-rc.d -f exim remove
update-inetd --removedaytime
update-inetd --remove telnet
update-inetd - -remove time
update-inetd --remove finger
update-inetd --remove talk
update-inetd --remove ntalk
update-inetd --remove ftp
update-inetd --remove rejet
<- Oui [y]

/etc/init.d/inetd reload


Quota

apt-get install quota quotatool

Modifier /etc/fstab pour ressembler à ceci (j'ai ajouté ,usrquota,grpquota pour partitionner /dev/hda6 ):

# /etc/fstab: static file system information.
#
# <file system> <mount point> <type> <options> <dump> <pass>
/dev/hda1 /boot ext3 errors=remount-ro 0 1
/dev/hda5 none swap sw 0 0
proc /proc proc defaults 0 0
/dev/fd0 /floppy auto user,noauto 0 0
/dev/cdrom /cdrom iso9660 ro,user,noauto 0 0
/dev/hda6 / ext3 defaults,usrquota,grpquota 0 2

Ensuite, exécutez :

appuyez sur /quota.user /quota.group
chmod 600 /quota.*
mount -o remount /
quotacheck -avugm

quotaon -avug


Serveur DNS

apt-getinstall bind9

Pour des raisons de sécurité, nous souhaitons exécuter BIND chrooté, nous devons donc suivre les étapes suivantes :

/etc/init.d/bind9 stop

Modifier le script de démarrage /etc/init.d/bind9 pour que le démon s'exécute en tant qu'utilisateur non privilégié 'nobody ', chrooté sur /var/lib/named .Modifiez la ligne :OPTS="" pour qu'il lise OPTS="-u personne-t /var/lib/named" :

#!/bin/sh

PATH=/sbin:/bin:/usr/sbin:/usr/bin

# for a chrooted server: "-u nobody -t /var/lib/named"
OPTS="-u nobody -t /var/lib/named"

test -x /usr/sbin/named || exit 0

case "$1" in
start)
echo -n "Starting domain name service: named"
start-stop-daemon --start --quiet \
--pidfile /var/run/named.pid --exec /usr/sbin/named -- $OPTS
echo "."
;;

stop)
echo -n "Stopping domain name service: named"
/usr/sbin/rndc stop
echo "."
;;

reload)
/usr/sbin/rndc reload
;;

restart|force-reload)
$0 stop
sleep 2
$0 start
;;

*)
echo "Usage: /etc/init.d/bind {start|stop|reload|restart|force-reload}" >&2
exit 1
;;
esac

exit 0

Créez les répertoires nécessaires sous /var/lib :

mkdir -p /var/lib/named/etc
mkdir /var/lib/named/dev
mkdir -p /var/lib/named/var/cache/bind
mkdir /var/lib/named/var/run

Ensuite, déplacez le répertoire de configuration de /etc à /var/lib/named/etc  :

mv /etc/bind /var/lib/named/etc

Créez un lien symbolique vers le nouveau répertoire de configuration à partir de l'ancien emplacement (pour éviter les problèmes lors de la mise à jour future de bindis) :

ln -s /var/lib/named/etc/bind/etc/bind

Rendez les périphériques nuls et aléatoires, et corrigez les autorisations des répertoires :

mknod /var/lib/named/dev/nullc 1 3
mknod /var/lib/named/dev /random c 1 8
chmod 666 /var/lib/named/dev/null /var/lib/named/dev/random
chown -R persons:nogroup /var/lib/named/var/ *
chown -R persons:nogroup /var/lib/named/etc/bind

Nous devons modifier le script de démarrage /etc/init.d/ sysklogd de sysklogd afin que nous puissions toujours obtenir des messages importants enregistrés dans les journaux système. Modifiez la ligne : SYSLOGD="" de sorte qu'il indique :SYSLOGD="-a/var/lib/named/dev/log" :

#! /bin/sh
# /etc/init.d/sysklogd: start the system log daemon.

PATH=/bin:/usr/bin:/sbin:/usr/sbin

pidfile=/var/run/syslogd.pid
binpath=/sbin/syslogd

test -x $binpath || exit 0

# Options for start/restart the daemons
# For remote UDP logging use SYSLOGD="-r"
#
SYSLOGD="-a /var/lib/named/dev/log"

create_xconsole()
{
if [ ! -e /dev/xconsole ]; then
mknod -m 640 /dev/xconsole p
else
chmod 0640 /dev/xconsole
fi
chown root.adm /dev/xconsole
}

running()
{
# No pidfile, probably no daemon present
#
if [ ! -f $pidfile ]
then
return 1
fi

pid=`cat $pidfile`

# No pid, probably no daemon present
#
if [ -z "$pid" ]
then
return 1
fi

cmd=`cat /proc/$pid/cmdline | tr "\000" "\n"|head -1`

# No syslogd?
#
if [ "$cmd" != "$binpath" ]
then
return 1
fi

return 0
}

case "$1" in
start)
echo -n "Starting system log daemon: syslogd"
create_xconsole
start-stop-daemon --start --quiet --exec $binpath -- $SYSLOGD
echo "."
;;
stop)
echo -n "Stopping system log daemon: syslogd"
start-stop-daemon --stop --quiet --exec $binpath --pidfile $pidfile
echo "."
;;
reload|force-reload)
start-stop-daemon --stop --quiet --signal 1 --exec $binpath --pidfile $pidfile
;;
restart)
echo -n "Stopping system log daemon: syslogd"
start-stop-daemon --stop --quiet --exec $binpath --pidfile $pidfile
echo "."
sleep 1
echo -n "Starting system log daemon: syslogd"
start-stop-daemon --start --quiet --exec $binpath -- $SYSLOGD
echo "."
;;
reload-or-restart)
if running
then
start-stop-daemon --stop --quiet --signal 1 --exec $binpath --pidfile $pidfile
else
start-stop-daemon --start --quiet --exec $binpath -- $SYSLOGD
fi
;;
*)
echo "Usage: /etc/init.d/sysklogd {start|stop|reload|restart|force-reload|reload-or-restart}"
exit 1
esac

exit 0

Redémarrez le démon de journalisation :

/etc/init.d/sysklogd restart

Démarrez BIND et vérifiez /var/log/syslog pour toute erreur :

/etc/init.d/bind9 start

MySQL

apt-getinstall mysql-server mysql-client libmysqlclient10-dev
<- Non
<- Oui

mysqladmin -u root passwordyourrootsqlpassword
mysqladmin -h server1.example.com -u root password votrerootsqlpassword

Dans /etc/mysql/my.cnf commentez la ligne suivante :

ignorer le réseau

Il devrait maintenant ressembler à ceci :

# You can copy this to one of:
# /etc/mysql/my.cnf to set global options,
# mysql-data-dir/my.cnf to set server-specific options (in this
# installation this directory is /var/lib/mysql) or
# ~/.my.cnf to set user-specific options.
#
# One can use all long options that the program supports.
# Run the program with --help to get a list of available options

# This will be passed to all mysql clients
[client]
#password = my_password
port = 3306
socket = /var/run/mysqld/mysqld.sock

# Here is entries for some specific programs
# The following values assume you have at least 32M ram

[safe_mysqld]
err-log = /var/log/mysql/mysql.err

[mysqld]
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
#
# You can also put it into /var/log/mysql/mysql.log but I leave it in /var/log
# for backward compatibility. Both location gets rotated by the cronjob.
#log = /var/log/mysql/mysql.log
log = /var/log/mysql.log
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
language = /usr/share/mysql/english
skip-locking
#
# The skip-networkin option will no longer be set via debconf menu.
# You have to manually change it if you want networking i.e. the server
# listening on port 3306. The default is "disable" - for security reasons.
#skip-networking
set-variable = key_buffer=16M
set-variable = max_allowed_packet=1M
set-variable = thread_stack=128K
#
# Here you can see queries with especially long duration
#log-slow-queries = /var/log/mysql/mysql-slow.log
#
# The following can be used as easy to replay backup logs or for replication
#server-id = 1
#log-bin = /var/log/mysql/mysql-bin.log
#binlog-do-db = include_database_name
#binlog-ignore-db = include_database_name
#
# Read the manual if you want to enable InnoDB!
skip-innodb

[mysqldump]
quick
set-variable = max_allowed_packet=1M

[mysql]
#no-auto-rehash # faster start of mysql but no tab completition

[isamchk]
set-variable = key_buffer=16M

Redémarrez MySQL :

/etc/init.d/mysqlrestart

afin que MySQL soit accessible sur le port 3306 (vous pouvez vérifier cela avec netstat-tap ).

Suffixe/Qpopper

addgroup sasl
apt-get install postfix-tlsqpopper sasl-bin libsasl-modules-plain libsasl2 libsasl-gssapi-mit libsasl -digestmd5-dessasl2-bin libsasl2-modules (1line!)

<- Kerberos:acceptdefault value (I don't want to use Kerberos so I don't really care about it)
<- Internetsite
<- Domainname
<- No
<- accept default values
<- Kerberos:accept default value
<- NONE

cd /etc/init.d/
wget http://hanselan.de/postfix/pwcheck

In case you cannotaccess http://hanselan.de/postfix/pwcheck here's the pwcheck script:

#! /bin/sh
#
# pwcheck Startet pwcheck für SMTP-Auth mit Postfix
#

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/sbin/pwcheck
NAME=pwcheck
DESC="pwcheck daemon"

test -x $DAEMON || exit 0

set -e

case "$1" in
start)
echo -n "Starting $DESC: $NAME"
ln -s /var/spool/postfix/var/run/pwcheck /var/run/pwcheck
$DAEMON
echo "."
;;
stop)
echo -n "Stopping $DESC: $NAME "
rm /var/run/pwcheck
/usr/bin/killall -KILL $NAME
echo "."
;;
*)
N=/etc/init.d/$NAME
echo "Usage: $N {start|stop}" >&2
exit 1
;;
esac

exit 0


chmod 755 /etc/init.d/pwcheck
update-rc.d pwcheck defaults
mkdir -p /var/spool/postfix/var/run/pwcheck
chown postfix.root /var/spool/postfix/var/run/pwcheck/
chmod 700 /var/spool/postfix/var/run/pwcheck/
ln -s /var/spool/postfix/var/run/pwcheck /var/run/pwcheck

postconf -e 'smtpd_sasl_local_domain=$myhostname'
postconf -e 'smtpd_sasl_auth_enable =yes'
postconf -e 'smtpd_sasl_security_options =noanonymous'
postconf -e 'broken_sasl_auth_clients =yes'
postconf -e 'smtpd_recipient_restrictions =permit_sasl_authenticated,permit_mynetworks,check_relay_domains'
postconf -e 'inet_interfaces =all'
echo 'pwcheck_method:pwcheck'>> /etc/postfix/sasl/smtpd.conf

mkdir /etc/postfix/ssl
cd /etc/postfix/ssl/
openssl genrsa - des3 -rand /etc/hosts -out smtpd.key 1024
chmod 600 smtpd.key
openssl req -new -key smtpd.key -out smtpd.csr
openssl x509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out smtpd.crt
openssl rsa -in smtpd.key -out smtpd.key.unencrypted
mv -f smtpd.key.unencrypted smtpd.key
openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days3650

postconf -e 'smtpd_tls_auth_only=no'
postconf -e 'smtp_use_tls =yes'
postconf -e 'smtpd_use_tls =yes'
postconf -e 'smtp_tls_note_starttls_offer =yes'
postconf -e 'smtpd_tls_key_file =/etc/postfix/ssl/smtpd.key'
postconf -e 'smtpd_tls_cert_file =/etc/postfix/ssl/smtpd.crt'
postconf -e 'smtpd_tls_CAfile =/etc/postfix/ssl/cacert.pem'
postconf -e 'smtpd_tls_loglevel =1'
postconf -e 'smtpd_tls_received_header =yes'
postconf -e 'smtpd_tls_session_cache_timeout =3600s'
postconf -e 'tls_random_source =dev:/dev/urandom'

Le fichier /etc/postfix/main.cf devrait maintenant ressembler à ceci :

# see /usr/share/postfix/main.cf.dist for a commented, fuller
# version of this file.

# Do not change these directory settings - they are critical to Postfix
# operation.
command_directory = /usr/sbin
daemon_directory = /usr/lib/postfix
program_directory = /usr/lib/postfix

smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
setgid_group = postdrop
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no
myhostname = server1.example.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = server1.example.com, localhost.example.com, localhost
relayhost =
mynetworks = 127.0.0.0/8
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,check_relay_domains
inet_interfaces = all
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

/etc/init.d/pwcheckstart
/etc/init.d/postfix restart

To see if SMTP-AUTHand TLS work properly now run the following command:

telnetlocalhost 25

After you haveestablished the connection to your postfix mail server type

ehlolocalhost

If you see thelines

250-STARTTLS

and

250-AUTH

everything is fine.

Type

quit

to return to thesystem's shell.

Courier-IMAP/Courier-POP3

If you want touse a POP3/IMAP daemon that has Maildir support (if you do not want to use thetraditional Unix mailbox format) you can install Courier-IMAP and Courier-POP3.Otherwise you can proceed with the Apache configuration.

apt-get install courier-imapcourier-pop

qpopper and UW-IMAPwill then be replaced.

Then configurePostfix to deliver emails to a user's Maildir*:

postconf -e 'home_mailbox=Maildir/'
postconf -e 'mailbox_command ='

/etc/init.d/postfix restart

*Please note:Youdo not have to do this if you intend to use ISPConfigon your system as ISPConfig does the necessary configuration using procmailrecipes. But please go sure to enable Maildir under Management -> Settings ->EMail in the ISPConfig web interface.

Apache

Add

deb http://packages.dotdeb.org ./

to /etc/apt/sources.list and run

apt-getupdate

apt-getinstall apache apache-doc libapache-mod-ssl libapache-mod-ssl-doc
apt-get install libapache-mod-php4php4 php4-cli php4-common php4-curl php4-dev php4-domxml php4-gd php4-gmp php4-imapphp4-ldap php4-mcal php4-mcrypt php4-mhash php4-ming php4-mysql php4-odbc php4-pearphp4-xslt curl libwww-perl imagemagick (1 line!)

Edit /etc/apache/httpd.conf .Under LoadModules add:

LoadModulephp4_module /usr/lib/apache/1.3/libphp4.so
LoadModule ssl_module /usr/lib/apache/1.3/mod_ssl.so

Under Listen add:

Listen80
Listen 443

Under "Addtypeapplication" insert:


AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl .crl

Before "Section3 :Virtual Hosts" add:


SSLCACertificateFile /etc/apache/ssl.crt/ca-bundle.crt
SSLPassPhraseDialog builtin
SSLSessionCache dbm:/var/run/ssl_scache
SSLSessionCacheTimeout 300
SSLMutex file:/var/run/ssl_mutex
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin

Change

DirectoryIndexindex.html index.htm index.shtml index.cgi

à

DirectoryIndexindex.html index.htm index.shtml index.cgi index.php index.php3 index.pl

Save /etc/apache/httpd.conf and run

/etc/init.d/apacherestart

Proftpd

apt-getinstall proftpd

<- No

For security reasonsyou can add the following lines to /etc/proftpd.conf (thanks to Reinaldo Carvalho; more information can be found here:http://proftpd.linux.co.uk/localsite/Userguide/linked/userguide.html):

DefaultRoot ~
IdentLookups off
ServerIdent on "FTP Server ready."

and restart Proftpd:

/etc/init.d/proftpd restart

Webalizer

apt-getinstall webalizer

<- accept default values

Synchronizethe System Clock

If you want tohave the system clock synchronized with an NTP server you can add the followinglines to /var/spool/cron/crontabs/root (if the file does not exist, create it by running

touch/var/spool/cron/crontabs/root ):

#update time with ntp server
0 3,9,15,21 * * * /usr/sbin/rdate time.nist.gov | logger -t NTP

Then run

chmod600 /var/spool/cron/crontabs/root
/etc/init.d/cronrestart

Install somePerl Modules needed by SpamAssassin (comes with ISPConfig)

Installationusing the Perl Shell

Login to your commandline as root and run the following command to start the Perl shell:

perl -MCPAN -e shell

If you run thePerl shell for the first time you will be asked some questions. In most casesthe default answers are ok.

Please note:Ifyou run a firewall on your system you might have to turn it off while workingon the Perl shell in order for the Perl shell to be able to fetch the neededmodules without a big delay. You can switch it on afterwards.

The big advantageof the Perl shell compared to the two other methods described here is that itcares about dependencies when installing new modules. I.e., if it turns outthat a prerequisite Perl module is missing when you install another module thePerl shell asks you if it should install the prerequisite module for you. Youshould answer that question with "Yes".

Run the followingcommands to install the modules needed by SpamAssassin:

install HTML::Parser
install DB_File
install Net::DNS
(when prompted to enable tests, choose no)
install Digest::SHA1
q
(to leave the Perl shell)

If a module isalready installed on your system you will get a message similar to this one:

HTML::Parseris up to date.

Successful installationof a module looks like this:

/usr/bin/makeinstall -- OK

Compile a CustomKernel

If you need tocompile a new kernel for some reason (e.g. because you want to use the latestbleeding-edge kernel or need a feature that the standard Debian kernel doesnot offer), you can find more information here:Debian-Kernel-Compile-Howto.


The End

The configurationof the server is now finished, and if you wish you can now install ISPConfigon it.

A Note On SuExec

If you want torun CGI scripts under suExec, you should specify /var/www as the home directory for websites created by ISPConfig as Debian's suExec iscompiled with /var/www as Doc_Root .Run /usr/lib/apache/suexec -V ,and the output should look like this:

To select /var/www as the home directory for websites during the installation of ISPConfig do thefollowing:When you are asked for the installation mode, select the expertmode .

Later during theinstallation you are asked if the default directory /home/www should be the directory where ISPConfig will create websites in. Answer n and enter /var/www asthe home directory for websites.

Links

  • http://www.debian.org
  • http://www.debianplanet.org
  • http://www.debianforum.de(German)
  • http://www.debianhowto.de(German/English)
  • http://www.ispconfig.org

Debian
  1. Comment configurer le serveur Rsyslog sur Debian 11 (Bullseye)

  2. Comment configurer le serveur Rsyslog sur Debian 11

  3. Mettre à jour le serveur ISPConfig Perfect de Debian 10 à Debian 11

  4. La configuration parfaite - Debian Sarge (3.1)

  5. Comment mettre à niveau un serveur Ubuntu 7.10 ("The Perfect Setup" + ISPConfig) vers Ubuntu 8.04 LTS

La configuration parfaite - Fedora Core 4

La configuration parfaite - SUSE 9.2

La configuration parfaite - SUSE 9.3

Configuration initiale du serveur avec Debian 11

Comment configurer le serveur OpenLDAP sur Debian 10

Configurer Nginx + php-FPM + apc + MariaDB sur Debian 7 – Le serveur LEMP parfait