Toto je "kopírovat a vložit" Jak na to! Nejjednodušší způsob, jak postupovat podle tohoto návodu, je použít klienta příkazového řádku/SSH klienta (jako je PuTTY pro Windows) a jednoduše zkopírovat a vložit příkazy (kromě případů, kdy musíte poskytnout vlastní informace, jako jsou IP adresy, názvy hostitelů, hesla,... ). To pomáhá vyhnout se překlepům.
The PerfectSetup – Debian Woody (3.0)
Verze 1.6
Autor:Falko Timme
Toto je podrobný popis kroků, které je třeba podniknout k nastavení Debianu založený server (Debian Woody alias Debian 3.0), který nabízí všechny služby potřebné pro ISP a hostitele (webový server (s podporou SSL), poštovní server (s SMTP-AUTH a TLS!), DNS server, FTP server, MySQL server, POP3/IMAP, Kvóta, brána firewall atd.).
Budu používat následující software:
- Webový server:Apache 1.3.x
- Poštovní server:Postfix (snáze se konfiguruje než sendmail; má kratší historii bezpečnostních děr než sendmail)
- Server DNS:BIND9
- FTP Server:proftpd (můžete také použít vsftpd)
- POP3/IMAP:v tomto příkladu si můžete vybrat mezi tradičním formátem poštovní schránky UNIX (pokud použijete qpopper/uw-imapd) nebo Formát Maildir (v tomto případě použijemeCourier-POP3/Courier-IMAP).
- Statistiky webových stránek Webalizer
Nakonec byste měli mít systém, který funguje spolehlivě a je připraven na bezplatný webhostingovládací panel ISPConfig (tj. ISPConfig na něm běží mimo box).
Chci nejprve říci, že to není jediný způsob, jak takový systém nastavit. Existuje mnoho způsobů, jak tohoto cíle dosáhnout, ale já volím tento způsob. Nezaručuji, že to pro vás bude fungovat!
Požadavky
K instalaci takového systému budete potřebovat následující:
- CD 1 z vydání Debian Woody (Debian 3.0) (dostupné na http://www.debian.org)
- CD 1 s nejnovější verzí Mandrake Linuxu (9.2 v době psaní tohoto článku) (dostupné na http://www.mandrake -linux.com)(nepotřebujete jej, pokud nepotřebujete vytvářet oddíly na pevném disku)
- připojení k internetu, protože v tomto dokumentu popíšu síťovou instalaci
1 TheBase System
Pokud máte nepoužívaný pevný disk, musíte na něm nejprve vytvořit oddíly (pokud již oddíly na pevném disku máte, můžete tento krok přeskočit ). Můžete k tomu použít instalační program Debianu, ale myslím si, že je obtížné jej používat (zejména pro nováčky). Zde trochu podvádím:Vložím CD Mandrake do svého CD-ROM a spustím instalační program Mandrake (až po oddíly byly vytvořeny pomocí rozdělovacího nástroje Mandrake, který je podle mě nejlepší ve světě Linuxu).
Vytvářím dva oddíly:/dev/hda1 (s /boot jako přípojný bod) a /dev/hda6 (s / jako přípojný bod). Navíc vytvořím swapovací oddíl (obvykle na /dev/hda5 ).Myslím, že 50 MB -100 MB je dobrá velikost pro /dev/hda1;500 MB by mělo stačit pro swapovací oddíl; zbytek je pro /dev/hda6 (kde budou webové stránky uživatelů atd.).
Po vytvoření oddílu zastavím instalaci Mandrake, vložím CD s Debianem a restartuji systém.
Na spouštěcí výzvě zadejte bf24 k instalaci Debianu s linuxovým jádrem 2.4:
Potom vyberte svůj jazyk:
Poté vstoupíte do hlavní nabídky instalačního programu Debianu. Nakonfigurujte si klávesnici:
Inicializujte a aktivujte odkládací oddíl:
Na dotaz Skenovat špatné bloky? , zvolte Ne .
Potom inicializujte oddíl Linux:
Vyberte požadovaný souborový systém. Beru ext3 zde.
Vyberte /dev/hda1 jako oddíl, který má být inicializován:
Na dotaz Skenovat špatné bloky? , zadejte Ne .
Vyberte /boot jako přípojný bod pro /dev/hda1 :
Nyní musíte inicializovat svůj druhý linuxový oddíl:
Vyberte preferovaný systém souborů (opět beru ext3 tady). Poté vyberte /dev/hda6 jako oddíl, který má být inicializován:
Na dotaz Skenovat špatné bloky? , zadejte Ne .
Vyberte / jako přípojný bod pro /dev/hda6 :
Po zformátování a inicializaci oddílů vyberte Instalovat jádro a moduly ovladačů z hlavní nabídky. Myslím, že to nepotřebuje další vysvětlení.
Konfigurace modulů DeviceDriver:
Ujistěte se, že jste nainstalovali ovladač pro vaši síťovou kartu (pokud neznáte ten správný, je bezpečné nainstalovat více ovladačů):
Nyní se ujistěte, že do jádra zahrnete podporu iptables (Firewall!):
Poté, co opustíte nabídku modulů ovladače, musíte nakonfigurovat síť:
Pro název hostitele vřele doporučuji subdoménu, která nebude později použita pro virtuální web na tomto serveru. Něco jako server1 ,server2 , ... by bylo docela užitečné, protože vám umožňuje rozlišit vaše servery, pokud jich provozujete více. Pokud je tedy vaše doména example.com (doporučujeme skutečnou doménu!) na server se můžete dostat pod server1.example.com (nezapomeňte aktualizovat DNS záznam pro example.com !).
Když se zobrazí výzva kAutomatická konfigurace sítě ,vyberte Ne .
Poté zadejte hlavní IP adresu systému, jeho síťovou masku, adresu brány a doménu systému (zde:example.com ).
Uveďte servery DNS, které má systém používat (např. 193.174.32.18 a 145.253.2.11 ).
Instalujte základní systém:
Umožněte spustit systém:
Vyberte Install LILO v MBR :
Potom restartujte systém. Ujistěte se, že jste z CD-ROM odstranili CD Debian:
Po restartu nakonfigurujte své časové pásmo:
Nepovolovat md5passwords:
Povolit stínová hesla:
Potom nastavte heslo uživatele root , vytvořte dalšího uživatele admin a zadejte jeho heslo.
Pokud nepotřebujete balíčky pcmcia, odeberte je.
Nepoužívejte k instalaci systému připojení PPP (server by měl mít trvalé připojení k internetu):
Chci provést síťovou instalaci (proto potřebuji pouze disk 1 ze sedmi CD-ROM Debianu). Vyberu tedy http jako metoda pro přístup k archivu Debianu pod AptConfiguration :
Vyberte zrcadlo, které je vám blízké:
Normálně nepoužíváte proxy, takže pole nechte prázdné:
Na dotaz Používáte aktualizace zabezpečení z security.debian.org?
odpovězte Ano .
Důležité: Od června 2005 je Debian Sarge (3.1) stabilní verzí Debianu. Protože zde chceme nainstalovat Debian Woody (3.0) místo Sarge, musíme změnit soubor /etc/apt/sources.list teď, než budeme pokračovat! Instalátor Woody si stále myslí, že Woody je stabilní vydání. Stiskněte Ctrl + Alt + F2 na vaší klávesnici. Nyní jste na skořápce. Přihlaste se jako root . Poté upravte /etc/apt/sources.list pomocí textového editoru (např. vi )a nahradit stabilní s woody kdekoli se objeví.Poté běže
apt-getupdate
a stiskněte Ctrl+ Alt + F1 pro návrat na instalační obrazovku.
Potom spusťte úkol :
Chci mít na začátku minimální systém, takže vyberu pouze poštovní server a C a C++ (abych mohl zkompilovat zdroje, pokud budu potřebovat). Ostatní software bude nainstalován později.
Nespouštět dselect (ani na to nemysli, budeš ztracen!):
Pro další kroky můžete přijmout výchozí hodnoty.
Potom nakonfigurujte svá národní prostředí. Vyberte alespoň en_USISO-8859-1 :
Jako výchozí místní nastavení vyberu cs_US :
Potom si nastavte server ssh:
Instalace začíná. Na konci budete dotázáni, zda si přejete smazat dříve stažené soubory.deb. Můžete odpovědět Y zde.
Když chce instalační technik nakonfigurovat exim zadejte 5 (bez konfigurace), protože budeme používat postfix jako náš poštovní server.
Nyní je základní systém připraven:
2 Instalace a konfigurace zbytku systému
Konfigurovat další adresy IP
Pokud máte více než jednu IP adresu, můžete přidat další IP adresy úpravou /etc/network/interfaces .Bude to vypadat podobně:
# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8) |
Pokud chcete přidat IP adresu 192.168.0.101 do rozhraní eth0 měli byste změnit soubor, aby vypadal takto:
# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8) |
Potom restartujte síť:
/etc/init.d/networkingrestart
Nastavení názvu hostitele
echo server1.example.com> /etc/hostname
/bin/hostname -F /etc/hostname
Instalovat/odebrat software
Přidat
deb http://backports.debian.skynet.be woody cyrus-sasl2
na /etc/apt/sources.list a spustit
apt-getupdate
apt-get install wgetbzip2 rdate fetchmail libdb3++-dev unzip zip ncftp xlispstat libarchive-zip-perlzlib1g-dev libpopt -dev nmap openssl (1 řádek!)
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 discard
<- Ano [y]
/etc/init.d/inetd reload
Kvóta
apt-get instalační kvóta
Upravit /etc/fstab vypadat takto (přidal jsem ,usrquota,grpquota k rozdělení /dev/hda6 ):
# /etc/fstab: static file system information. |
Potom spusťte:
dotkněte se /quota.user /quota.group
chmod 600 /kvóta.*
mount -o remount /
quotacheck -avugm
quotaon -avug
Server DNS
apt-getinstall bind9
Z bezpečnostních důvodů chceme spouštět BIND chrooted, takže musíme provést následující kroky:
/etc/init.d/bind9 stop
Upravit spouštěcí skript /etc/init.d/bind9 takže démon poběží jako neprivilegovaný uživatel 'nikdo ',chrooted to /var/lib/named .Upravte řádek:OPTS="" tak, aby znělo OPTS="-u Nobody-t /var/lib/named" :
#!/bin/sh |
Vytvořte potřebné adresáře pod /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
Then move the configdirectory from /etc to /var/lib/named/etc :
mv /etc/bind /var/lib/named/etc
Create a symlinkto the new config directory from the old location (to avoid problems when bindis upgraded in the future):
ln -s /var/lib/named/etc/bind/etc/bind
Make null and randomdevices, and fix permissions of the directories:
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 nobody:nogroup /var/lib/named/var/*
chown -R nobody:nogroup /var/lib/named/etc/bind
We need to modifythe startup script /etc/init.d/sysklogd of sysklogd so that wecan still get important messages logged to the system logs. Modify the line: SYSLOGD="" so that it reads:SYSLOGD="-a/var/lib/named/dev/log" :
#! /bin/sh |
Restart the loggingdaemon:
/etc/init.d/sysklogd restart
Start up BIND,and check /var/log/syslog for any errors:
/etc/init.d/bind9 start
MySQL
apt-getinstall mysql-server mysql-client libmysqlclient10-dev
<- No
<- Yes
mysqladmin -u root passwordyourrootsqlpassword
mysqladmin -h server1.example.com -u root password yourrootsqlpassword
In /etc/mysql/my.cnf comment out the following line:
skip-networking
It should now looksimilar to this:
# You can copy this to one of: |
Restart MySQL:
/etc/init.d/mysqlrestart
so that MySQL isaccessible on port 3306 (you can check that with netstat-tap ).
Postfix/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 |
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'
The file /etc/postfix/main.cf should now look like this:
# see /usr/share/postfix/main.cf.dist for a commented, fuller |
/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
to
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