Suse 9.2: Il setup perfetto!

Mar, 12/04/2005 - 22:04

Suse 9.2: Il setup perfetto!

Inviato da Stefano 1 commento
SUSE 9.2 - Il Setup Perfetto

Version 1.0
Author: Falko Timme
Last edited: 03/24/2005

Traduzione italiana: Cristina Franzolini

Questa è una dettagliata descrizione dei passi da seguire per il setup di un server basato sulla SUSE 9.2 che offre tutti i servizi necessari per ISPs e hoster (web server (SSL abilitato), mail server (con SMTP-AUTH e TLS!), DNS server, FTP server, MySQL server, POP3/IMAP, Quota, Firewall, etc.). In aggiunta a questo mostrerò come usare i pacchetti manager apt di Debian su un sistema basato su rpm in modo da gestire i pacchetti delle dipendenze automaticamente al fine di evitare problemi (nell'installazione ndr).

Userò il seguente software:

  • Web Server: Apache 2.0.x
  • Mail Server: Postfix (più facile da configurare di sendmail; ha una storia più corta di buchi rispetto a sendmail)
  • DNS Server: BIND9
  • FTP Server: proftpd (42go ISP-Manager non lavorerà con vsftpd sulla SUSE 9.2)
  • POP3/IMAP: userò il formato Maildir e poi installerò
  • Courier-POP3/Courier-IMAP.
  • Webalizer per le statistiche web del sito

Alla fine dovresti avere un sistema che lavora in modo affidabile e pronto per il 42go ISP-Manager (es., 42go ISP-Manager continua senza sosta fuori dal box).

Voglio precisare che non è il solo modo di preparare un sistema del genere. Ci sono molti modi di raggiungere questo traguardo ma questo è quello che io ho utilizzato. Non do' nessuna garanzia che questo metodo funzionerà per te!

Requisiti

Per installare un sistema di questo genere avrai bisogno di:

  • SUSE 9.2. Io ho scaricato l'immagine iso del DVD e l'ho masterizzato su un DVD: ftp://sunsite.informatik.rwth-aachen.de/pub/Linux/suse/i386/9.2/iso/SUSE-Linux-9.2-FTP-DVD.iso
  • una connessione internet...
  • [pagebreak]

    Il sistema di base

    Fai il Boot dal tuo SUSE 9.2-DVD e seleziona Installation[i] dalla schermata di boot .

    L'installer della SUSE (che si chiama [i]YaST - Yet another Setup Tool) parte. Normalmente continua in modalità grafica, ma io uso la modalità testo, così i miei screenshot (schermate ndr) saranno un po' differenti dalla modalità grafica, ma la funzionalità sarà esattamente la stessa.

    Seleziona la tua lingua.

    L'installer analizza il tuo sistema e propone alcune installazioni automatiche che elenca nella schermata. Tu puoi cambiare ognuna di queste installazioni proposte navigando (spostandoti) sull'appropriato titolo (usando il tasto [freccia giù] ). Per esempio, potresti cambiare le partizioni proposte da YaST:



    Al fine di agevolarti ho deciso di utilizzare un'unica grande /-partizione e una partizione di swap.

    Puoi anche scegliere il software che vuoi installare, sempre che tu sappia cosa stai facendo. In questo esempio, lascerò invariata la scelta dei pacchetti proposta da YaST. Installerò il software di cui ho bisogno facendo partire manualmente un server web/email/ftp dopo che sarà finita l'installazione di base.

    Aggiusta il tuo fuso orario:

    L'installazione dei pacchetti parte:

    Inserisci la tua password di root:

    Ora faremo la configurazione della rete. Ricordati di abilitare SSH:


    Non voglio ottenere un indirizzo IP da un server DHCP perché un server dovrebbe avere indirizzi statici di IP così cambio questo settaggio:


    Sotto Host name and name server inserisco il mio hostname server1.example.com e inserisco 3 DNS servers (es. 145.253.2.75 e 193.174.32.18):

    Sotto Routing digito il mio gateway:

    Sotto Advanced... puoi settare ulteriori indirizzi IP.

    Voglio creare una scheda di rete virtuale eth0:0 con l'indirizzo IP 192.168.0.101 (il mio principale è 192.168.0.100 in questo esempio) poi seleziono Add:

    Inserisco un Alias Name (0), il mio ulteriore indirizzo IP (192.168.0.101) e la mia netmask (255.255.255.0):


    Una visione d'insieme delle mie schede di rete:

    Torno alla schermata principale Network Configuration , e seleziono Next:

    Ora la connessione internet del sistema verrà testata:

    Se vuoi, gli ultimi update possono essere da scaricati da un mirror della SUSE e installati:



    L'update è in corso:

    Quando ti viene chiesto come gli utenti dovrebbero autenticarsi, scegli Local[/n] (/etc/passwd):

    Crea un altro utente diverso da root (e.g. admin):

    Alla fine YaST esegue un check sull'hardware (scheda grafica, stampanti, scheda audio, scheda TV e Bluetooth). Puoi accettare il risultato di questo check in quanto questo hardware non è importante per un server.

    Congratulazioni! La tua installazione base è completa.

    Andiamo al prossimo passo.

    [pagebreak]

    Installazione e configurazione del resto del sistema

    [b]Configurare un'ulteriore indirizzo IP

    Se vuoi aggiungere un ulteriore indirizzo IP al tuo sistema, semplicemente esegui:

    yast2

    Il Control Center di YaST si aprirà. Vai al Network Devices -> Network Card. I passi successivi sono gli stessi che abbiamo eseguito nel setup della rete durante l'installazione .

    Settare l'Hostname

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

    Installare apt per la SUSE

    apt è un sistema di pacchetti usato sulla Debian. Siccome esso si preoccupa di più dei pacchetti delle dipendenze rispetto agli rpm dovrebbe essere carino poterli usare sul nostro nuovo sistema SUSE . Questo ci risparmierebbe un sacco di scocciature. Fortunatamente, apt è stato girato a molte distribuzioni basate su rpm, ed è anche disponibile per la SUSE 9.2 (ti piacerà... Laughing.

    rpm -ivh ftp://ftp.gwdg.de/pub/linux/suse/apt/SuSE/9.2-i386/RPMS.suser-rbos/ ->
    apt-libs-0.5.15cnc6-rb.suse092.6.i586.rpm
    rpm -ivh ftp://ftp.gwdg.de/pub/linux/suse/apt/SuSE/9.2-i386/RPMS.suser-rbos/ ->
    apt-0.5.15cnc6-rb.suse092.6.i586.rpm

    Edita /etc/apt/sources.list. Dovrebbe contenere la seguente linea:

    rpm ftp://ftp.gwdg.de/pub/linux/suse/apt/ SuSE/9.2-i386 base update security

    Esegui:

    apt-get update

    Installare alcuni Software e disattivare il Firewall della SUSE

    apt-get install findutils-locate lynx ncftp compat-readline4 gcc glibc-devel

/etc/init.d/SuSEfirewall2_setup stop
chkconfig --del SuSEfirewall2_final
chkconfig --del SuSEfirewall2_setup
chkconfig --del SuSEfirewall2_init

Quota

apt-get install quota

Edita /etc/fstab che deve assomigliare a questo (ho aggiunto ,usrquota,grpquota alla partizione /dev/sda2 (punto di mount /; il tuo nome della device potrebbe essere /dev/hda2 or similar)):

/dev/sda2 / reiserfs acl,user_xattr,usrquota,grpquota 1 1
/dev/sda1 swap swap pri=42 0 0
devpts /dev/pts devpts mode=0620,gid=5 0 0
proc /proc proc defaults 0 0
usbfs /proc/bus/usb usbfs noauto 0 0
sysfs /sys sysfs noauto 0 0
/dev/cdrecorder /media/cdrecorder subfs fs=cdfss,ro,procuid,nosuid,nodev,exec,iocharset=utf8 0 0
/dev/fd0 /media/floppy subfs fs=floppyfss,procuid,nodev,nosuid,sync 0 0

Allora esegui:

touch /quota.user /quota.group
chmod 600 /quota.*
mount -o remount /
quotacheck -avugm
quotaon -avug

DNS-Server

apt-get install bind bind-chrootenv bind-devel
bind-utils

chkconfig --add named
/etc/init.d/named start

Bind si arresterà all'interno di una gabbia chroot sotto /var/lib/named.

MySQL

apt-get install mysql mysql-client mysql-shared perl-DBD-mysql perl-DBI perl-Data-ShowTable

chkconfig --add mysql
/etc/init.d/mysql start

Ora verifichiamo che la rete sia abilitata. Esegui:

netstat -tap

Dovrebbe mostrare una linea come questa:

tcp 0 0 *:mysql *:* LISTEN 6621/mysqld

Se così non è, edita /etc/my.cnf[/], commenta (metti # davanti alla scritta ndr) l'opzione skip-networking:

# Don't listen on a TCP/IP port at all. This can be a security enhancement,
# if all processes that need to connect to mysqld run on the same host.
# All interaction with mysqld must be made via Unix sockets or named pipes.
# Note that using this option without enabling named pipes on Windows
# (via the "enable-named-pipe" option) will render mysqld useless!
#
#skip-networking

E fai ripartire il tuo server MySQL:

/etc/init.d/mysql restart

Digita:

mysqladmin -u root password yourrootsqlpassword
per creare una password per l'utente root (altrimenti chiunque potrebbe accedere al tuo MySQL database!).

Postfix con SMTP-AUTH e TLS

apt-get install cyrus-sasl cyrus-sasl-crammd5 cyrus-sasl-devel cyrus-sasl-digestmd5 cyrus-sasl-gssapi cyrus-sasl-otp cyrus-sasl-plain cyrus-sasl-saslauthd

chkconfig --add saslauthd
/etc/init.d/saslauthd start

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

postconf -e 'mydomain = example.com'
postconf -e 'myhostname = server1.$mydomain'
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_recipient_restrictions =
permit_sasl_authenticated,permit_mynetworks,check_relay_domains'
postconf -e 'inet_interfaces = all'
postconf -e 'alias_maps = hash:/etc/aliases'
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'

Ora fai ripartire Postfix:

/etc/init.d/postfix restart

Per vedere se SMTP-AUTH e TLS lavorano correttamente, ora esegui il seguente comando:

telnet localhost 25

Dopo aver stabilito la connessione con il tuo postfix mail server digita:

ehlo localhost

Se vedi le linee

250-STARTTLS

e

250-AUTH

ogni cosa è corretta.

Digita:

quit

per ritornare alla shell di sistema.

Postfix con SMTP-AUTH e TLS

Voglio usare un demone POP3/IMAP che ha il supporto Maildir. Questo è il motivo per cui uso Courier-IMAP e Courier-POP3.

apt-get install courier-imap

/etc/init.d/courier-authdaemon start
/etc/init.d/courier-imap start
/etc/init.d/courier-imap-ssl start
/etc/init.d/courier-pop3 start
/etc/init.d/courier-pop3-ssl start
chkconfig --add courier-authdaemon
chkconfig --add courier-imap
chkconfig --add courier-imap-ssl
chkconfig --add courier-pop3
chkconfig --add courier-pop3-ssl

Allora configuro Postfix per spedire email all'utente di Maildir*:

postconf -e 'home_mailbox = Maildir/'
postconf -e 'mailbox_command ='
/etc/init.d/postfix restart
*Per favore, nota: Non devi farlo se intendi usare il 42go ISP-Manager sul tuo sistema dal momento che il 42go ISP-Manager fa' la necessaria configurazione usando procmail recipes. Ma per favore assicurati di aver abilitato Maildir sotto Management -> Settings -> EMail nell'interfaccia web 42go.

Apache

apt-get install apache2 apache2-devel apache2-mod_perl apache2-mod_php4 apache2-prefork libapr0 perl-HTML-Parser perl-HTML-Tagset perl-Tie-IxHash perl-URI
perl-libwww-perl php4

apt-get install php4-bcmath php4-zlib php4-yp php4-xslt php4-wddx php4-unixODBC php4-sysvshm php4-sysvsem php4-swf php4-sockets php4-snmp php4-shmop php4-session php4-servlet php4-qtdom php4-pgsql php4-pear php4-mysql php4-mime_magic php4-mhash php4-mcrypt php4-mcal php4-mbstring php4-ldap php4-imap php4-iconv php4-gmp php4-gettext php4-gd php4-ftp php4-filepro php4-fastcgi php4-exif php4-domxml php4-devel php4-dbx php4-dbase php4-curl php4-ctype php4-calendar php4-bz2 ImageMagick curl (1 line!)

chkconfig --add apache2

Apri [i]/etc/mime.types. Commenta le seguenti 2 linee:

# application/x-httpd-php phtml pht php
# application/x-perl pl pm

Apri /etc/apache2/httpd.conf e cambia da:

DirectoryIndex index.html index.html.var

a

DirectoryIndex index.html index.htm index.shtml index.cgi index.php index.php3 index.pl index.html.var

Salva /etc/apache2/httpd.conf ed esegui:
/etc/init.d/apache2 start

Proftpd

Voglio usare Proftpd invece di vsftpd che è l'FTP server di default della SUSE perché il pannello di controllo del software che ho intenzione d'installare su questo server (url=http://www.projektfarm.com/en]42go ISP-Manager[/url]) richiede Proftpd sulla SUSE 9.2 (su altre distribuzioni questo è differente). Siccome non ci sono pacchetti della SUSE per Proftpd, devo compilarlo manualmente:[

cd /tmp/
wget --passive-ftp ftp://ftp.proftpd.org/distrib/source/proftpd-1.2.10.tar.gz

tar xvfz proftpd-1.2.10.tar.gz
cd proftpd-1.2.10/
./configure --sysconfdir=/etc
make
make install

cd ../
rm -fr proftpd-1.2.10*

Ora creo il file /etc/init.d/proftpd:

#! /bin/sh
# Copyright (c) 2000-2001 SuSE GmbH Nuernberg, Germany.
# All rights reserved.
#
# Original author: Marius Tomaschewski
#
# Slightly modified in 2003 for use with SuSE Linux 8.1,
# by http://www.learnlinux.co.uk/
#
# Slightly modified in 2003 for use with SuSE Linux 9.2,
# by Falko Timme
#
# /etc/init.d/proftpd
#
### BEGIN INIT INFO
# Provides: proftpd
# Required-Start: $network $remote_fs $syslog $named
# Required-Stop:
# Default-Start: 3 5
# Default-Stop: 0 1 2 6
# Description: Starts ProFTPD server
### END INIT INFO

# Determine the base and follow a runlevel link name.
base=${0##*/}
link=${base#*[SK][0-9][0-9]}

# Force execution if not called by a runlevel directory.
test $link = $base && START_PROFTPD=yes # Modified by learnlinux.co.uk
test "$START_PROFTPD" = yes || exit 0 # Modified by learnlinux.co.uk

# Return values acc. to LSB for all commands but
# status (see below):
#
# 0 - success
# 1 - generic or unspecified error
# 2 - invalid or excess argument(s)
# 3 - unimplemented feature (e.g. "reload")
# 4 - insufficient privilege
# 5 - program is not installed
# 6 - program is not configured
# 7 - program is not running

proftpd_cfg="/etc/proftpd.conf"
proftpd_bin="/usr/local/sbin/proftpd"
proftpd_pid="/var/run/proftpd.pid"

[ -r $proftpd_cfg ] || exit 6
[ -x $proftpd_bin ] || exit 5

# Source status functions
. /etc/rc.status

# First reset status of this service
rc_reset

case "$1" in
start)
echo -n "Starting ProFTPD Server: "
test -f /etc/shutmsg && rm -f /etc/shutmsg
/sbin/startproc $proftpd_bin
rc_status -v
;;

stop)
echo -n "Shutting down ProFTPD Server: "
test -x /usr/local/sbin/ftpshut && /usr/local/sbin/ftpshut now && sleep 1
/sbin/killproc -TERM $proftpd_bin
test -f /etc/shutmsg && rm -f /etc/shutmsg
rc_status -v
;;

restart)
## If first returns OK call the second, if first or
## second command fails, set echo return value.
$0 stop
$0 start
rc_status
;;

try-restart)
## Stop the service and if this succeeds (i.e. the
## service was running before), start it again.
## Note: not (yet) part of LSB (as of 0.7.5)
$0 status >/dev/null && $0 restart
rc_status
;;

reload|force-reload)
## Exclusive possibility: Some services must be stopped
## and started to force a new load of the configuration.
echo -n "Reload ProFTPD Server: "
/sbin/killproc -HUP $proftpd_bin
rc_status -v
;;

status)
# Status has a slightly different for the status command:
# 0 - service running
# 1 - service dead, but /var/run/ pid file exists
# 2 - service dead, but /var/lock/ lock file exists
# 3 - service not running
echo -n "Checking for ProFTPD Server: "
checkproc $proftpd_bin
rc_status -v
;;

probe)
## Optional: Probe for the necessity of a reload,
## give out the argument which is required for a reload.
[ $proftpd_cfg -nt $proftpd_pid ] && echo reload
;;

*)
echo "Usage: $0 {start|stop|status|restart|reload|try-restart|probe}"
exit 1
;;
esac

# Set an exit status.
rc_exit

Andando avanti:

chmod 755 /etc/init.d/proftpd
chkconfig --add proftpd

/etc/init.d/proftpd start

Per ragioni di sicurezza puoi aggiungere la seguente linea a /etc/proftpd.conf:

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

Abbi cura di commentare le seguenti linee in modo da abilitare gli utenti ftp al CHMOD:

Bar use of SITE CHMOD by default
#
# DenyAll
#

E fai un restart di Proftpd:
/etc/init.d/proftpd restart

Webalizer

apt-get install webalizer

Sincronizzare l'orologio di Sistema

Se vuoi avere l'orologio di sistema sincronizzato con un server NTP fai ciò che segue:

apt-get install netdate
netdate tcp 128.2.136.71

Crea /var/spool/cron/tabs/root:

# update time with ntp server
0 3,9,15,21 * * * /usr/sbin/netdate 128.2.136.71

Allora esegui:

chmod 600 /var/spool/cron/tabs/root
/etc/init.d/cron restart

Installare alcuni Moduli Perl necessari per SpamAssassin (fornito con 42go ISP-Manager)

Installazione usando la Shell Perl
Loggati, come linea di comando, come root ed esegui i seguenti comandi per far partire la shell di Perl:

perl -MCPAN -e shell

Se esegui la shell di Perl per la prima volta, ti verranno poste alcune domande. Nella maggior parte dei casi le risposte di default sono ok.

Se esegui un firewall sul tuo sistema, potresti doverlo disattivare mentre stai lavorando sulla shell di Perl in modo che questa sia in grado di andare a prendere i moduli necessari senza un grande ritardo. Potrai riattivarlo in seguito.

Il grande vantaggio della shell di Perl, comparata agli altri due metodi descritti qui, è che essa si preoccupa delle dipendenze quando installa nuovi moduli. Per esempio, se risulta che un modulo indispensabile di Perl è mancante, quando installi un altro modulo, la shell di Perl ti chiederà se dovrà installare il modulo indispensabile per te. A questa domanda dovrai rispondere "Yes".

Esegui i seguenti comandi per installare i moduli necessari per SpamAssassin:

install HTML::Parser
install Net::DNS (quando viene suggerito di abilitare i test, scegli no)
install Digest::SHA1
q (per uscire dalla shell di Perl)

Se un modulo è già installato sul tuo sistema, otterrai un messaggio simile a questo:

HTML::Parser is up to date.

L'installazione corretta di un modulo appare come questa:

/usr/bin/make install -- OK

Il lavoro a questo punto è finito.

Se vogliamo adesso la nostra macchina è pronta per installare 42go ISP-Manager

[pagebreak]

Una nota su SuExec

Se vuoi eseguire gli script CGI sotto suExec, dovrai specificare /srv/www/htdocs come directory di home per i website creati da 42goISP sia che suExec di SUSE è stata compilata con /srv/www/htdocs come Doc_Root. Esagui /usr/sbin/suexec2 -V, e l'output dovrebbe essere come questo:

Per selezionare /srv/www/htdocs come directory di home per i website durante l'installazione di 42goISP fai ciò che segue: Quando ti viene chiesta la modalità d'installazione, seleziona expert mode.

Dopo durante l'installazione ti viene chiesto se la directory di default /home/www dovrebbe essere la directory dove 42goISP creerà al suo interno gli website. Rispondi n e digita /srv/www/htdocs come directory di home per gli website.

Links Utili

(n.d.w: Ringrazio personalmente Kirara per l'aiuto fornitoci e per l'impeccabile traduzione. Stefano)


In:



Commenti

Ritratto di Mukko
#1

Inviato da Mukko il Mer, 20/04/2005 - 08:01.

Debug

Vi e' un errore di trascrizione rispetto l'originale riguardo il commento del file proftpd.conf.
nella traduzione italiana

Bar use of SITE CHMOD by default
#
# DenyAll
#

Mentre per funzionare inserire le seguenti linee
in pratica manca il # di commento, quindi BAR genera errore.

# Bar use of SITE CHMOD by default
# <Limit SITE_CHMOD>
# DenyAll
# </Limit>

buon lavoro Big Grin