Nazvite názov hostu.V tom priklade, my systém sa volá server1.example.com tak napíšem server1:
Preklady tutoriálov zo stránky: http://www.howtoforge.com/perfect-server-ubuntu8.04-lts
<!-- @page { margin: 2cm } A:link { so-language: zxx } -->
Version 1.0
Author: Falko Timme <ft [at]
falkotimme [dot] com>
Last edited 10/30/2008
Tento tutoriál vám ukáže ako nastaviť Ubuntu Intrepid Ibex (Ubuntu 8.10) server, ktorý ponúka všetky služby potrebné pre ISP a hostiteteľ: Apache web server(SSL-spôsobilý),Postfix mail server s SMTP-AUTH a TLS,BIND DNS server,Proftpd FTP server,MySQL server, Courier POP3/IMAP, Quota Firewal, atď.
Budem použivať nasledovný software:
Web Server: Apache 2.2 with PHP 5.2.6, Python a Ruby
Databázový Server: MySQL 5.0
Mail Server: Postfix
DNS Server: BIND9
FTP Server: proftpd
POP3/IMAP: Budem použivať formát Maildir format a preto potrebujem nainštalovať Courier-POP3/Courier-IMAP.
Webalizer pre štatisticku web stránok
Na konci by váš systém mal spoľahlivo pracovať, a ak bude chcieť môžte nainštalovať webhosting zadarmo ovladací panel ISPConfig(ISPConfig funguje bez...runs on it out of the box )
Na začiatok chcem povedať , že toto nieje jediná možnosť ako nastaviť systém. Existuje niekoľko možnosti, ale ja som to spravil touto cestou. Neslubujem vám, že vám to pojde.
Na nainštalovanie takéhoto systému budete potrebovať:
Ubuntu 8.10 server CD, k dispozícií tu: ftp://releases.ubuntu.com/releases/8.10/ubuntu-8.10-server-i386.iso (i386) alebo ftp://releases.ubuntu.com/releases/8.10/ubuntu-8.10-server-amd64.iso (x86_64)
rýchle internetové pripojenie.
V tomto tutoriále budem použvať názov hostu server1.example.com s IP adresou 192.168.0.100 a branou 192.168.0.1. Tieto nastavenie sa môžu od vaších líšiť, preto ich vymeňte kde to bude treba.
Vložte vaše Ubuntu inštalačné CD do váško počítača a nabootujte ho z tadial.Vyberete si jazyk:
Potom si vyberte Install Ubuntu Server.
Vyberte si svoj jazyk(znovu) (?):
Potom si vyberte svoju lokáciu:
Vyberete si klávesnicové rozhranie(budete požiadaný stlačit niekoľko tlačidiel a inštalatór sa pokúsi detekovať vaše rozhranie na základe klávesou,ktoré ste stlačili):
Inštalátor preskúša inštalačné CD, váš hardware a nastaví sieť s DHCP ak je na sieti DHCP server.
Teraz musíte rozdeliť disk na partície. Pre jednoduchosť ukážky vytvorím jednú veľkú particiu( s mount bodom /) a malú swap partíciu, tak si vyberiem Guided –use entire disk(samozrejme particiovanieje uplne na vás – ak budete chcieť môžete vytvoriť viacej ako jednu veľkú partíciu a taktiež môžete použiť LVM):
Vyberte disk ktorý chceteto partition:
Keď ste skončili, na otázku Write the changes to disks? Stlačte Yes:
Potom , vaša nová partícia sa vytvorí a naformatuje.
Teraz sa váš base system(zakladný systém) nainštaluje:
Vytvorte uživateľa, napríklad uživateľ Administrátor s uživateľským menom administrator( nepoužívajte uživateľské meno admin, pretože tento uživateľ je už rezervovaný):
Ako ďalšie sa nakonfigureje package manager(správca balíkov). Nechajte voľlný riadok pri HTTP proxy pokiaľ nepouživate proxy server k pripajanii sa na internet.
Potrebujeme DNS, mail a LAMP server , ale napriek tomu teraz nenastavím ani jeden z nich, pretože chcem mať plnú kontrolu nad tým čo inštalujem. Neskôr budeme inštalovať potrebné balíky manuálne. Jediné čo teraz vyberiem je OpenSSH server, aby som sa po ukončení inštalácie hneď sa mohol pripojiť k systému s SSH klientom ako napríklad PuTTY.
Inštalácia pokračuje:
GRUB boot loader sa nainštaluje:
Inštalácia zakladného sysému je teraz ukončená. Vyberte inštalačné CD z CD mechaniky a stlačte Continue na reštartovanie systému.
Ďalšim krokom...
4 Sprístupnenie rootovského účtuPo reštarte sa môžete prihlásiť s vaším predchadzajúco vytvoreným učtom(pr. Administrator). Pretože musíme spúštať všetky kroky z tohto tutoriálu ako root uživateľ, musíme teraz spristupniť root účet spustte
sudo passwd root
a nastavte heslo pre
root. Potom sa staneme rootom spustením su 5 Nainštalovanie SSH servru(voliteľné)Ak ste nenainštalovali OpenSSH server počas systemovej inštalácie, môžete to urobiť teraz:
apt-get install ssh openssh-server
Odteraz môžete používať SSH klient ako napríklad PuTTY a pripojiť sa z vašej pracovnej stanice k vášmu Ubuntu 8.04 LTS servru a pokračovať nasledovné kroky v tomto tutoriálu.
|
Budem použivať vi ako môj textový editor v tomto tutoriali
(Nebudete to musieť robiť pokiaľ budete používať iný textový editor ako napríklad joe alebo nano)
Pretože inštalátor Ubuntu nastavil nastavenie našej siete cez DHCP, musíme to zmeniť, pretože server môže mať statickú IP adresu. Editujte /etc/network/interfaces a prispôsobte k vaším potrebám(v tomto prípade použijem IP adresu 192.168.0.100)
vi /etc/network/interfaces
# This file describes the network interfaces available on your system
|
Potom reštartujte vašu sieť:
/etc/init.d/networking restart
Potom editujte /etc/hosts. Nech to vyzerá približne takto:
vi /etc/hosts
127.0.0.1 localhost.localdomain localhost
|
Teraz spusťe
echo server1.example.com >
/etc/hostname
/etc/init.d/hostname.sh start
Potom spusťte
hostname
hostname -f
Ibidva teraz ukážu server1.example.com
Editujte /etc/apt/sources.list. Odkomentujte alebo vymažte inštalačne CD so súboru a ujasnite si, že universe a multiverse záložiska su aktivované. Malo by to vyzerať takto:
vi /etc/apt/sources.list
#
|
Potom spusťte
apt-get update
aktualizuje sa apt databáza balíčkov
apt-get upgrade
na nainštalovanie posledných aktualizácií (ak sú nejaké).
/bin/sh je symbolický link k /bin/dash, ale my potrebujeme /bin/bash, nie /bin/dash. Preto urobíme toto:
ln -sf /bin/bash /bin/sh
Ak to neurobíme, ISPConfig inštalácia spadne.
AppArmor je ochranné rozšírenie(podobne k SELinux), ktoré ponúka väčšiu ochranu.Podľa mňa to nepotrebujete na to aby ste nakonfigurovali bezpečný systém a väčšinou to prináša viacej problémov ako výhod(pomyslite na to keď máte problem nejaký ten týžden, pretože určité služby nejdu a nakoniec zistite, že všetko bolo v poriadku a práve AppArmor spôsoboval problém). Preto som ho vypol(toto musite urobiť ak chcete neskôr inštalovať ISPConfig)
Vypnúť ho môžeme takto:
/etc/init.d/apparmor stop
update-rc.d -f apparmor
remove
Till mi povedal, že taktiež musel urobiť tento krok(ktorý nebol potrebný pre moju inštaláciu), tak ak si chcete byť istý, urobte to taktiež na svojom systéme:
apt-get remove apparmor apparmor-utils
<!-- @page { margin: 2cm } A:link { so-language: zxx } -->
Teraz nainštalujeme niekoľko balíkov, ktoré budú neskôr potrebné. Spusťte:
apt-get install binutils cpp fetchmail flex gcc
libarchive-zip-perl libc6-dev libcompress-zlib-perl libdb4.3-dev
libpcre3 libpopt-dev lynx m4 make ncftp nmap openssl perl
perl-modules unzip zip zlib1g-dev autoconf automake1.9 libtool bison
autotools-dev g++ build-essential
(Tento príkaz musí byť v jednom riadku!)
(Ak ste si vybrali inú možnosť particiovania ako som mal ja, musíte prispôsobiť túto kapitolu tak aby ste priloženu kvotu zadavali na partície kde to je potrebné)
# |
# <file system> <mount point> <type> <options> <dump> <pass> |
proc /proc proc defaults 0 0 |
# /dev/sda1 |
UUID=6af53069-0d51-49be-b275-aeaea8d780c5 / ext3 relatime,errors=remount-ro,usrquota,grpquota 0 1 |
# /dev/sda5 |
UUID=d8e1f66c-1442-423e-b442-8ae66eded9d7 none swap sw 0 0 |
/dev/scd0 /media/cdrom0 udf,iso9660 user,noauto,exec,utf8 0 0 |
/dev/fd0 /media/floppy0 auto rw,user,noauto,exec,utf8 0 0 |
Pre nainštalovanie kvóty, spusťte:
apt-get install quota
Editujte /etc/fstab. Moje vyzeralo takto (Pridal som ,usrquota,grpquota k particiam s moutovým bodom /):
vi /etc/fstab
Na zapnutie kvóty, spusťte tieto príkazy:
touch /quota.user /quota.group
chmod 600 /quota.*
mount -o
remount /
quotacheck -avugm
quotaon -avug
Spusťte:
apt-get install bind9
Pre bezpečnosť potrebujeme spusťit BIND chrooted, preto musíme urobiť nasledujúce kroky:
/etc/init.d/bind9 stop
Editujeme súbor /etc/default/bind9 tak aby deamon šiel ako neprivilegovaný uživateľský bind, chrootovaný(chrooted) do /var/lib/named. Zmeníme riadok: OPTIONS="-u bind" so that it reads OPTIONS="-u bind -t /var/lib/named":
vi /etc/default/bind9
OPTIONS="-u bind -t /var/lib/named" |
Vytvoríme potrebné priečinky pod /var/lib:
mkdir -p /var/lib/named/etc
mkdir /var/lib/named/dev
mkdir
-p /var/lib/named/var/cache/bind
mkdir -p
/var/lib/named/var/run/bind/run
Potom premiestníme konfiguračný adresár z /etc do /var/lib/named/etc:
mv /etc/bind /var/lib/named/etc
Vytvorte symbolický link k novému konfiguračnému priečinku zo starej lokácie( na to aby sme sa vyhli problémom keď sa bude bind v budúcnosti updatovať)
ln -s /var/lib/named/etc/bind /etc/bind
Vytvorte null a náhodné zariadenia a fixnite povolenie priečinkov:
mknod /var/lib/named/dev/null c 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 bind:bind
/var/lib/named/var/*
chown -R bind:bind /var/lib/named/etc/bind
Potrebujeme modifikovať /etc/default/syslogd tak aby sme obdržali dôležité správy pripojené k system logs. Modifikujem riadok SYSLOGD="" so that it reads: SYSLOGD="-a /var/lib/named/dev/log":
vi /etc/default/syslogd
# |
Reštartneme logovací daemon:
/etc/init.d/sysklogd restart
Spustíme BIND, a skontrolujeme /var/log/syslog kvôli chybám:
/etc/init.d/bind9 start
Na to aby sme nainštalovali MySQL, spustime
apt-get install mysql-server mysql-client libmysqlclient15-dev
Budete požiadaný napísať heslo k MySQL root uživateľa – toto heslo je validné pre uživateľa root@localhost taktiež ako root@server1.example.com, tak nebude potrebné špecifikovať MySQL root heslo neskôr(ako to bolo v minuelej verzii Ubuntu)
New password for the MySQL "root" user: <--
vaserootsqlheslo
Repeat password for the MySQL "root"
user: <-- vaserootsqlheslo
Chceme aby MySQL počuvalo na všetkých pripojeniach, nie len na localhoste, preto editujeme /etc/mysql/my.cnf a odkomentujeme riadok bind-adresy = 127.0.0.1:
vi /etc/mysql/my.cnf
[...] |
Potom reštartujeme MySQL:
/etc/init.d/mysql restart
Teraz skontrolujeme či je sieť prístupná. Spustíme:
netstat -tap | grep mysql
Výstup by mal vyzerať tak nejak:
root@server1:~# netstat -tap |
grep mysql
tcp 0 0 *:mysql *:*
LISTEN 5869/mysqld
root@server1:~#
<!-- @page { margin: 2cm } A:link { so-language: zxx } -->
Na to aby sme nainštalovali Postfix s SMTP-AUTH a TLS musíme urobiť nasledujúce kroky:
apt-get install postfix libsasl2-2 sasl2-bin libsasl2-modules
procmail
Budú vám položené dve otázky.Odpovedajte takto:
General type of mail configuration: <-- Internet Site
System
mail name: <-- server1.example.com
Potom spusťte:
dpkg-reconfigure postfix
Znovu vám budú položené ďalšie otázky:
General type of mail configuration: <-- Internet Site
System
mail name: <-- server1.example.com
Root and postmaster mail
recipient: <-- [blank]
Other destinations to accept mail for
(blank for none): <-- server1.example.com, localhost.example.com,
localhost.localdomain, localhost
Force synchronous updates on mail
queue? <-- No
Local networks: <-- 127.0.0.0/8
Use
procmail for local delivery? <-- Yes
Mailbox size limit
(bytes): <-- 0
Local address extension character: <--
+
Internet protocols to use: <-- all
Ďalej, urobte toto:
postconf -e 'smtpd_sasl_local_domain ='
postconf -e
'smtpd_sasl_auth_enable = yes'
postconf -e
'smtpd_sasl_security_options = noanonymous'
postconf -e
'broken_sasl_auth_clients = yes'
postconf -e
'smtpd_sasl_authenticated_header = yes'
postconf -e
'smtpd_recipient_restrictions =
permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination'
postconf
-e 'inet_interfaces = all'
echo 'pwcheck_method: saslauthd' >>
/etc/postfix/sasl/smtpd.conf
echo 'mech_list: plain login' >>
/etc/postfix/sasl/smtpd.conf
Potom vytvoríme certifikáty pre TLS:
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 -days 3650
Ako ďalšie nakonfigurujeme Postfix pre TLS(uistite sa, že používate správné hostname pre myhostname):
postconf -e 'myhostname = server1.example.com' 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'
Súbor /etc/postfix/main.cf by mal vyzerať takto:
cat /etc/postfix/main.cf
# See /usr/share/postfix/main.cf.dist for a commented, more complete version |
Autetifikácia sa vykoná pomocou saslauthd. Musíme zmeniť niekoľko vecí aby to pracovalo v poriadku. Pretože Postfix beží „chrooted“ v /var/spool/postfix musíme urobiť nasledovne kroky:
mkdir -p /var/spool/postfix/var/run/saslauthd
Teraz musíme editovať /etc/default/saslauthd aby sme aktivovali saslauthd. Nastavíme START na „yes“ a zmeníme riadok OPTIONS="-c -m /var/run/saslauthd" na OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r"
vi /etc/default/saslauthd
# |
Teraz pridáme postfix uživateľa k „sasl“ skupine(budeme si istý že Postfix nám pridá povolenie k prístupu na „saslauthd“:
adduser postfix sasl
Teraz reštartujeme Postfix a spustíme „saslauthd“:
/etc/init.d/postfix restart
/etc/init.d/saslauthd start
Na to aby sme videli či SMTP-AUTH a TLS pracuje správne spustíme nasledujúci prikaz:
telnet localhost 25
Potom ako sme stanovili pripojenie k vášmu Postfix mail servru napíšeme:
ehlo localhost
Uvidíte riadky
250-STARTTLS
a
250-AUTH LOGIN PLAIN
všetko je v poriadku
Výstup na mojom počitáči vyzeral takto:
root@server1:/etc/postfix/ssl# telnet localhost 25
Trying
127.0.0.1...
Connected to localhost.localdomain.
Escape
character is '^]'.
220 server1.example.com ESMTP Postfix
(Ubuntu)
ehlo
localhost
250-server1.example.com
250-PIPELINING
250-SIZE
10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH LOGIN
PLAIN
250-AUTH=LOGIN
PLAIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
quit
221
2.0.0 Bye
Connection closed by foreign
host.
root@server1:/etc/postfix/ssl#
Napíšte
quit
aby sme sa vrátili k systemovemu shellu..
Aby sme to spustili nainštalujeme Courier-IMAP/Courier-IMAP-SSL (pre IMAPs na porte 993) a Courier-POP3/Courier-POP3-SSL (pre POP3s na porte 995):
apt-get install courier-authdaemon courier-base courier-imap
courier-imap-ssl courier-pop courier-pop-ssl courier-ssl gamin
libgamin0 libglib2.0-0
Budú vám položené dve otázky:
Create directories for web-based administration? <-- No
SSL
certificate required <-- Ok
Ak nechcete použivať ISPConfig, nastavte Postfix na donášanie emailov k uživateľovmu Maildir*:
postconf -e 'home_mailbox = Maildir/'
postconf -e
'mailbox_command ='
/etc/init.d/postfix restart
*Upozornenie: Nemusíte to robiť pokiaľ zamyšľate nad používaním ISPConfig vo vašom systéme pretože ISPConfig vykonáva všetky dôležité konfigurácie použitím „procmail“. Ale prosim uistite sa či máte aktivovaný Maildir v ISPConfig web rozhraní.(Management -> Server -> Settings -> EMail)
<!-- @page { margin: 2cm } A:link { so-language: zxx } -->
Teraz nainštalujeme Apache:
apt-get install apache2 apache2-doc apache2-mpm-prefork
apache2-utils libexpat1 ssl-cert
Ďalej nainštalujeme PHP5 a Ruby(obidvoje su Apachovske moduly):
apt-get install libapache2-mod-php5 libapache2-mod-ruby php5
php5-common php5-curl php5-dev php5-gd php5-idn php-pear
php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash
php5-ming php5-mysql php5-pspell php5-recode php5-snmp php5-sqlite
php5-tidy php5-xmlrpc php5-xsl
Teraz editujeme /etc/apache2/mods-available/dir.conf:
vi /etc/apache2/mods-available/dir.conf
a zmeníme riadok DirectoryIndex :
<IfModule mod_dir.c> |
Teraz musíme povoliť niektoré Apache moduly(SSL,rewrite,suexec a include):
a2enmod ssl
a2enmod rewrite
a2enmod suexec
a2enmod
include
Reloadneme Apache konfiguráciu:
/etc/init.d/apache2 force-reload
V nasledujúcej kapitole (17.1) vypneme PHP(je to potrebné pokiaľ chcete nainštalovať ISPConfig na vašom servri). Narozdiel od PHP, Ruby je automaticky vypnuté, preto to nemusíme robiť.
(Ak nechcete nainštalovať ISPConfig na tento server, prosím preskočte túto sekciu!)
V ISPConfig-u nastavíte PHP pre základy stránok,napr. môžete špecifikovať ktoré stránky môžu spustiť PHP skripty a ktoré nie. To môže isť len vtedy pokiaľ PHP je vypnuté globálne, pretoža inakšie by všetky stránky mohli spúšťať PHP skriptá, bez ohľadu čo ste nastavovali v ISPConfig-u.
K vypnutiu PHP globálne potrebujeme editovať edit /etc/mime.types a odkomentovať application/x-httpd-php riadky:
vi /etc/mime.types
[...] |
Editujeme /etc/apache2/mods-enabled/php5.conf a odkomentujeme nasledujúce riadky:
vi /etc/apache2/mods-enabled/php5.conf
<IfModule mod_php5.c> |
Potom reštartneme Apache:
/etc/init.d/apache2 restart
Na to aby sme nainštalovali Proftpd, spustime:
apt-get install proftpd ucf
Bude vám položená otázka:
Run proftpd: <-- standalone
Pre bezpečnostné dôvody pridajte nasledujúce riadky k /etc/proftpd/proftpd.conf( ďakujem Reinaldo Carvalho ; viacej informácií môžete najsť tu: http://proftpd.org/localsite/Userguide/linked/userguide.html):
vi /etc/proftpd/proftpd.conf
[...] |
ISPConfig očakáva konfigurácie v /etc/proftpd.conf namiesto /etc/proftpd/proftpd.conf, preto musíme vytvoriť symbolický link(môžete vynechať tento krok pokiaľ nechcete inštalovať ISPConfig):
ln -s /etc/proftpd/proftpd.conf /etc/proftpd.conf
Teraz reštartujeme Proftpd:
/etc/init.d/proftpd restart
<!-- @page { margin: 2cm } A:link { so-language: zxx } -->
Aby sme nainštalovali jednoducho spustíme:
apt-get install webalizer
Je dobrý nápad synchronizovať systemové hodiny s NTP(network time protocol) serverom cez internet. Jednoducho spusťte:
apt-get install ntp ntpdate
a váš systém bude stále sosynchronizovaný.
Spustime
apt-get install libhtml-parser-perl libdb-file-lock-perl
libnet-dns-perl
Konfigurácia serveru je teraz hotová. Teraz si možete nainštalovať ISPConfig .Pozrite si ISPConfig inštalačný manuál: http://www.ispconfig.org/manual_installation.htm
Ak chcete spúšťať CGI skriptá pod suExec, mali by ste špecifikovať /var/www ako váš domáci adresár pre stránky vytvorené ISPConfigom pretože Ubuntu suExec je skompilovaný s /var/www ako Doc_Root.
Spusťte
/usr/lib/apache2/suexec -V
výstup by mal vyzerať takto:
root@server1:~# /usr/lib/apache2/suexec -V
-D AP_DOC_ROOT="/var/www"
-D AP_GID_MIN=100
-D AP_HTTPD_USER="www-data"
-D AP_LOG_EXEC="/var/log/apache2/suexec.log"
-D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
-D AP_UID_MIN=100
-D AP_USERDIR_SUFFIX="public_html"
root@server1:~#
Ak chcete používať suExec s ISPConfigom, nemeňte prednastavený web root(ktorý je /var/www) keď používaťe expertný mód počas ISPConfig inštalácie(v štandardnom móde aj tak nemôžete meniť web root a preto môžete používať suExec bezproblémov)