Guida all'hosting virtuale con Virtualmin su CentOS 5.1
Versione 1.0.1
Autore:Andrew Colin Kissa
Introduzione
Questo tutorial mostra come configurare un server CentOS 5.x per offrire tutti i servizi necessari agli hoster web virtuali. Questi includono web hosting, server SMTP con (SMTP-AUTH e TLS, SPF, DKIM, Domainkeys), DNS, FTP, MySQL, POP3/IMAP, Firewall, Webalizer per le statistiche.
Userò il seguente software:
- Server di database:MySQL 5.0.22
- Server di posta:Postfix 2.3.3
- Server NS:BIND9 9.3.3
- Server Web:Apache 2.2.3 /PHP 5.1.6
- Server FTP:Vsftpd 2.0.5
- Server POP3/IMAP:Dovecot 1.0
- Webalizer:per le statistiche del sito 2.01_10
- Virtualmin:Pannello di controllo
Installazione del sistema operativo
Requisiti
Per installare il sistema avrai bisogno
- CentOS 5.1 Installa supporto
- Una buona connessione a Internet
Installa il sistema di base
NOTA Alcune fasi dell'installazione non sono descritte qui nell'interesse di mantenere la procedura breve, ad esempio le fasi di configurazione di grub sono tralasciate.
- Avvia dal supporto DVD o CD e al prompt di avvio digita linux text.
- Salta il test multimediale.
- Seleziona la tua lingua:
- Seleziona il layout della tastiera:
- Configura la tua rete, userò dhcp se non hai dhcp puoi usare voci statiche.
- Seleziona Sì per inizializzare l'unità:
- Seleziona layout personalizzato per il tipo di partizionamento:
- Crea partizioni:
- Configura rete:
Imposta indirizzo IP e maschera di rete:
Imposta gateway e server DNS:
Imposta il nome host:
- Imposta il fuso orario:
- Imposta la password di root:
- Seleziona il gruppo di server e seleziona Personalizza la selezione del software:
- I gruppi di pacchetti selezionano come segue:
- Server dei nomi DNS
- bind-chroot
- Server dei nomi DNS
- Editori
- vim potenziato
- Server FTP
- Server di posta
- colombaia
- assassino di spam
- suffisso
- Database MySQL
- server mysql
- Server Web
- mod_ssl
- webalizzatore
- php
- php-pera
- http-suexec
- php-mysql
Avvia l'installazione:
Il file system è formattato:
L'installazione verrà eseguita:
Riavvia il sistema:
Guida all'hosting virtuale con Virtualmin su CentOS 5.1 - Pagina 2
Servizi da disabilitare
Per migliorare la sicurezza e liberare risorse di sistema sul sistema, dobbiamo disabilitare tutti i servizi che non sono richiesti. Puoi eseguire questo script per farlo per te.
- accedi
- anacron
- apmd
- autof
- Bluetooth
- tazze
- primo avvio
- gpm
- aldemone
- bus di messaggi
- mdmonitor
- nascosto
- ip6tables
- kudzu
- monitor lvm2
- netfs
- nfslock
- pcscd
- mappa delle porte
- rpcgssd
- rpcidmapd
- invia email
- smartd
- yum-aggiornamentid
Nozioni di base
Dobbiamo risolvere alcuni problemi per preparare il sistema alla configurazione.
- Installa aggiornamenti
yum aggiornamento
- Passa l'mta a postfix
alternative --config mta
Ci sono 2 programmi che forniscono 'mta'.
Comando di selezione
------------------------------ ------------------
1 /usr/sbin/sendmail.postfix
*+ 2 /usr/sbin/sendmail.sendmail
Invio per mantenere la selezione corrente[+], oppure digitare il numero di selezione:1
- Installa la configurazione del server dei nomi della cache:
yum installa cache-nameserver
- Installa strumenti di compilazione:
yum install gcc cpp gcc-c++ automake automake14 automake15 automake16 automake17 openssl-devel subversion ncurses-devel -y
Configura alias di rete
cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth0:1
Modifica il file /etc/sysconfig/network-scripts/ifcfg-eth0:1 in questo modo:DEVICE=eth0:1 BOOTPROTO=static BROADCAST=192.168.1.255 IPADDR=192.168.1.6 NETMASK=255.255.255.0 NETWORK=192.168.1.0 ONBOOT=yes
Installa Webmin / Virtualmin
- Importa chiave webmin pgp:
wget http://www.webmin.com/jcameron-key.asc
rpm --import jcameron-key.asc
- Scarica gli rpm:
wget http://prdownloads.sourceforge.net/webadmin/webmin-1.390-1.noarch.rpm
- Verifica il numero di giri (dovrebbe dire OK oppure scarica di nuovo):
rpm --checksig webmin-1.390-1.noarch.rpm
- Installa rpm:
rpm -Uvh webmin-1.390-1.noarch.rpm
Configurazione Webmin iniziale
Dobbiamo proteggere webmin modificando /etc/webmin/miniserv.conf e apportando le seguenti modifiche:
- Utilizzando solo SSL:
ssl=1
- Cambia la porta in 443 e collega solo alla seconda nic:
port=443 bind=192.168.1.6
- Disabilita trasmissioni UDP:
#listen=10000
- Modifica il blocco dell'host in caso di accesso non riuscito a 3 :
blockhost_failures=3
- Aumenta il timeout di blocco dell'host a 120:
blockhost_time=120
- Modifica il blocco utente in caso di accesso non riuscito a 3:
blockuser_failures=3
- Modifica il timeout di blocco dell'utente su 120:
blockuser_time=120
- Cambia il regno in qualcos'altro:
realm=cpanel
- Registra gli accessi a utmp:
utmp=1
Installa il tema Webmin Tiger:
- Accedi a webmin tramite https://192.168.1.5:10000 utilizzando root e la tua password.
- Vai a webmin? Configurazione? temi webmin.
- Seleziona Da ftp o URL http e inserisci http://www.stress-free.co.nz/files/theme-stressfree.tar.gz
- Fai clic su Installa tema.
- Fai clic su "torna all'elenco dei temi".
- Seleziona StressFree come Tema corrente, quindi fai clic su modifica.
Installa il modulo php-pear:
- Vai a webmin? configurazione webmin? moduli webmin.
- Seleziona Modulo di terze parti da e inserisci http://www.webmin.com/download/modules/php-pear.wbm.gz.
- Fai clic su Installa modulo.
Installa virtualmin:
- Vai a webmin? configurazione webmin? moduli webmin.
- Seleziona installazione da ftp o URL http e inserisci http://download.webmin.com/download/virtualmin/virtual-server-3.51.gpl.wbm.gz
- Fai clic su Installa modulo.
Rimuovere i moduli indesiderati Vai a webmin? configurazione webmin? elimina e seleziona quanto segue:
- Client ADSL
- Sistema di backup Bacula
- Masterizzatore CD
- Server CVS
- Cambia password cluster
- Copia file cluster
- Lavori di cron del cluster
- Comandi della shell del cluster
- Pacchetti software cluster
- Cluster server usermin
- Cluster utenti e gruppi
- Raggruppare i server webmin
- Shell di comando
- Motore di configurazione
- Comandi personalizzati
- Server DHCP
- Recupero della posta di Fetchmail
- Gestione file
- Proxy FTP Frox
- Tunnel HTTP
- Monitoraggio del battito cardiaco
- VPN IPsec
- Server di messaggistica istantanea Jabber
- Server LDAP
- Gestione del volume logico
- Gestione elenco Majordomo
- Esportazioni NFS
- Client e server NIS
- Server OpenSLP
- Server di chiamata PPP
- Client di accesso remoto PPP
- Server VPN PPTP
- Client VPN PPTP
- Server database Postgresql
- Amministratore stampante
- Server ProFTPD
- Server di posta QMAIL
- Stato dell'unità SMART
- Accesso SSH/Telnet
- Tunnel SSL
- Condivisione di file di Windows SAMBA
- Comandi programmati
- Invia server di posta elettronica
- Firewall costiero
- Generatore di rapporti sull'analisi dei calamari
- Server proxy Squid
- Server di posta vocale
- Server FTP WU
- Server Idmapd
Riavvia webmin:
service webmin restart
Configura repository Rpmforge
rpm -Uhv http://packages.sw.be/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
NOTA:se stai utilizzando un'architettura diversa, controlla su https://rpmrepo.org/RPMforge/Using per l'rpm corretto- Disabilita il repository (in modo tale che i pacchetti di base non vengano sovrascritti) modifica /etc/yum.d/rpmforge.repo e imposta la seguente opzione:
enabled = 0
Installa pacchetti extra richiesti
- Installa clamav:
yum --enablerepo=rpmforge install clamav clamav-db clamav-milter clamd -y
wget http://www.topdog-software.com/files/clamav-milter.patch
patch /etc/init .d/clamav-milter
freshclam
- Installa firme sanesecurity:
wget http://www.sanesecurity.co.uk/clamav/update_sanesecurity.txt -O /usr/local/bin/update_sanesecurity.sh
chmod +x /usr/local/bin/update_sanesecurity.sh
ln -s /usr/local/bin/update_sanesecurity.sh /etc/cron.hourly/
/usr/local/bin/update_sanesecurity.sh
- Installa l'acceleratore PHP:
yum --enablerepo=rpmforge installa php-eaccelerator
- Installa il pacchetto spamassassin più recente da rpmforge:
yum --enablerepo=rpmforge aggiorna lo spamassassin
- Installa spamass-milter:
yum --enablerepo=rpmforge installa spamass-milter
- Installa i moduli perl richiesti da spamassassin:
perl -MCPAN -e 'installa Mail::SPF'
perl -MCPAN -e 'installa Mail::SPF::Query'
perl -MCPAN -e 'installa Net::Ident'
perl -MCPAN -e 'installa IP::Paese::Fast'
perl -MCPAN -e 'installa Mail::DomainKeys'
perl -MCPAN -e 'installa Mail::DKIM'
- Installa fuzzyOCR:
yum --enablerepo=rpmforge install netpbm-progs ocrad gocr gifsicle giflib-utils giflib -y
svn co https://svn.own-hero.net/fuzzyocr/trunk/devel/
cd devel/
perl -MCPAN -e 'install String::Approx'
perl -MCPAN -e 'install Time::HiRes'
perl -MCPAN -e 'install Log::Agent'
/>
cp -rv {FuzzyOcr.cf,FuzzyOcr.scansets,FuzzyOcr.preps,FuzzyOcr.pm,FuzzyOcr.words,FuzzyOcr/} /etc/mail/spamassassin
chcon -R system_u:object_r:etc_mail_t /etc/mail/spamassassin/{FuzzyOcr.cf,FuzzyOcr.scansets,FuzzyOcr.preps,FuzzyOcr.pm,FuzzyOcr.words,FuzzyOcr/}
wget http://www.gbnetwork.co.uk/mailscanner /FuzzyOcr.words -O /etc/mail/spamassassin/FuzzyOcr.words
- Installa Razor:
yum --enablerepo=rpmforge install razor-agents -y
- Installa roundcube:
yum install php-imap
rpm -Uvh http://www.topdog-software.com/oss/roundcube/roundcube-0.1-rc2.noarch.rpm
- Installa imapprossima:
wget http://imapprossimay.org/downloads/up-imapprossimay-1.2.6.tar.gz
rpmbuild -tb up-imapprossimay-1.2.6.tar.gz
rpm -Uvh /usr/ src/redhat/RPMS/i386/up-imapprossimay-1.2.6-1.i386.rpm
- Attiva servizi:
chkconfig --level 345 httpd su
chkconfig --level 345 postfix su
chkconfig --level 345 spamassassin su
chkconfig --level 345 spamass-milter su
chkconfig --level 345 clamav-milter su
chkconfig --level 345 mysqld su
chkconfig --level 345 denominato su
chkconfig --level 345 vsftpd su
chkconfig --level 345 dovecot su
chkconfig --level 345 imapprossima su
Guida all'hosting virtuale con Virtualmin su CentOS 5.1 - Pagina 3
Configurazione
Impostazione Postfix
Introduzione
Imposteremo Postfix con le seguenti funzionalità:
- Hosting virtuale
- Prevenzione dell'UCE
- Antivirus
- Autenticazione SMTP
- TLS
- RBL
- SPF
- Mitigazione degli attacchi
L'aggiunta di account e domini può essere configurata tramite virtualmin sebbene possa essere eseguita anche manualmente. L'installazione è progettata per essere rispettosa delle risorse, quindi dovrebbe essere in grado di funzionare su macchine che non sono sovradimensionate, consentendo così un uso migliore delle risorse. Per semplificare le risorse, non utilizziamo database esterni per archiviare informazioni sugli utenti virtuali come fanno la maggior parte delle altre procedure, né utilizziamo milter per il controllo di spam e virus anziché eseguire amavisd-new.
Le basi
Per cominciare configureremo le basi come il nome host, l'origine della posta, le reti, la directory di spool delle mappe hash. Tutte queste opzioni di configurazione dovrebbero essere aggiunte a /etc/postfix/main.cf se non diversamente indicato. I file di configurazione di esempio sono disponibili per il download alla fine di questa pagina.
command_directory = /usr/sbin daemon_directory = /usr/libexec/postfix mydomain = example.com myorigin = $mydomain mynetworks = 127.0.0.0/8 alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases canonical_maps = hash:/etc/postfix/canonical sender_canonical_maps = hash:/etc/postfix/canonical recipient_canonical_maps = hash:/etc/postfix/canonical virtual_alias_maps = hash:/etc/postfix/virtual mail_spool_directory = /var/spool/mail
Maildir
Utilizzeremo il formato maildir molto migliorato rispetto al formato mbox predefinito:
home_mailbox = Maildir/
SASL
Per eseguire l'autenticazione SMTP utilizzeremo SASL, tuttavia non utilizzeremo Cyrus SASL in quanto ciò richiede di eseguire il demone saslauthd, utilizzeremo invece dovecot sasl poiché eseguiremo dovecot per IMAP e POP3 uccidendo così 2 uccelli con uno pietra.
smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth smtpd_sasl_auth_enable = yes
TLS
Abbiamo bisogno di TLS per garantire che le password in testo normale non vengano trasmesse via cavo durante l'autenticazione SMTP, i server che supportano TLS sono anche in grado di comunicare con questo server tramite una connessione protetta.
Le istruzioni sulla creazione del certificato del server firmato da cacert.org sono disponibili qui.
- Imposta sorgente casuale TLS:
tls_random_source = dev:/dev/urandom
- Abilita TLS server:
smtpd_use_tls = yes smtpd_tls_key_file = /etc/pki/postfix/key.pem smtpd_tls_cert_file = /etc/pki/postfix/server.pem smtpd_tls_CAfile = /etc/pki/postfix/root.crt smtpd_tls_loglevel = 1 smtpd_tls_received_header = yes smtpd_tls_session_cache_timeout = 3600s smtpd_tls_session_cache_database = btree:/var/spool/postfix/smtpd_tls_cache
- Abilita TLS client:
smtp_use_tls = yes smtp_tls_key_file = /etc/pki/postfix/key.pem smtp_tls_cert_file = /etc/pki/postfix/server.pem smtp_tls_CAfile = /etc/pki/postfix/root.crt smtp_tls_session_cache_database = btree:/var/spool/postfix/smtp_tls_cache smtp_tls_note_starttls_offer = yes
Prevenzione dello spam
- Richiedi un EHLO / HELO valido:
smtpd_helo_required = yes
- Prevenire gli attacchi di raccolta di indirizzi email:
disable_vrfy_command = yes
- Modifica i codici di rifiuto in permanenti (per impostazione predefinita, Postfix emette codici di errore 4xx che implicano un errore temporaneo, abbiamo bisogno di 5xx per errori permanenti):
unverified_recipient_reject_code = 550 unverified_sender_reject_code = 550 unknown_local_recipient_reject_code = 550
- Imposta la verifica dell'indirizzo del mittente:
address_verify_map = btree:/var/spool/postfix/verify smtpd_sender_restrictions = hash:/etc/postfix/sender_access
- Crea /etc/postfix/sender_access e aggiungi:
#sample /etc/postfix/sender_access contains frequently spoofed domains aol.com reject_unverified_sender hotmail.com reject_unverified_sender yahoo.com reject_unverified_sender gmail.com reject_unverified_sender bigfoot.com reject_unverified_sender
- Mitiga gli attacchi di zombi e client danneggiati:
smtpd_error_sleep_time = 5s smtpd_soft_error_limit = 10 smtpd_hard_error_limit = 20
- Consenti pipeline solo da client autenticati:
smtpd_data_restrictions = reject_unauth_pipelining
- Installa postfix-policyd-spf-perl e abilita il supporto SPF:
wget http://www.openspf.org/blobs/postfix-policyd-spf-perl-2.005.tar.gz
tar xzvf postfix-policyd-spf-perl-2.005.tar.gz
cd postfix-policyd-spf-perl-2.005
cp postfix-policyd-spf-perl /etc/postfix/
Aggiungilo a /etc/postfix/master.cf:
spfpolicy unix - n n - - spawn user=nobody argv=/usr/bin/perl /etc/postfix/postfix-policyd-spf-perl
- Aggiungi supporto DKIM:
Le istruzioni sull'aggiunta del supporto DKIM sono disponibili qui.
- Aggiungi supporto per le chiavi di dominio:
Le istruzioni sull'aggiunta del supporto per le chiavi di dominio sono disponibili qui.
- Far funzionare tutto dipende dall'opzione smtpd_recipient_restrictions, quindi la impostiamo di seguito:
smtpd_recipient_restrictions = permit_mynetworks permit_sasl_authenticated reject_unauth_destination check_recipient_access hash:/etc/postfix/access reject_unknown_recipient_domain reject_unknown_sender_domain reject_unverified_recipient reject_non_fqdn_recipient reject_non_fqdn_sender reject_invalid_hostname reject_rbl_client list.dsbl.org reject_rbl_client zen.spamhaus.org reject_rbl_client l1.spews.dnsbl.sorbs.net reject_rbl_client combined.njabl.org reject_rbl_client bl.spamcop.net reject_rhsbl_sender dsn.rfc-ignorant.org reject_rhsbl_sender bogusmx.rfc-ignorant.org reject_rhsbl_sender rhsbl.sorbs.net reject_rhsbl_client dsn.rfc-ignorant.org reject_rhsbl_client bogusmx.rfc-ignorant.org reject_rhsbl_client rhsbl.sorbs.net check_policy_service unix:private/spfpolicy
Milters [SpamAssassin &ClamAV]
Per la classificazione dello spam tramite spamassassin e la scansione dei virus tramite clamav, utilizzeremo l'interfaccia milter di Postfix invece di utilizzare il demone amavisd-new, ad alta intensità di risorse. Questo è un modo molto efficiente per farlo in quanto non dobbiamo nemmeno correre a ridosso del clamav milter esegue la scansione stessa.
smtpd_milters = unix:/var/clamav/clmilter.socket unix:/var/run/spamass.sock non_smtpd_milters = unix:/var/clamav/clmilter.socket unix:/var/run/spamass.sock
Crea file DB
postmap /etc/postfix/canonical
postmap /etc/postfix/access
postmap /etc/postfix/virtual
postmap /etc/postfix/sender_access
File di configurazione di esempio
- main.cf
- master.cf
- canonico
- virtuale
Guida all'hosting virtuale con Virtualmin su CentOS 5.1 - Pagina 4
Impostazione Dovecot
Introduzione
Questo configurerà dovecot come nostro server IMAP/POP3.
Configurazione di base
Imposteremo dovecot per IMAP e POP3 e disabiliteremo SSL.
protocols = imap pop3 listen = * ssl_listen = * ssl_disable = yes
Maildir
Useremo il formato maildir invece del formato mbox predefinito.
mail_location = maildir:~/Maildir
Autenticazione e SASL
Configura dovecot per utilizzare LOGIN e PLAIN come meccanismi di autenticazione poiché molti client MS non sono in grado di utilizzare meccanismi di autenticazione crittografati. Abbiamo anche impostato il socket SASL per consentire a Postfix di autenticare le connessioni SMTP utilizzando dovecot.
auth default { mechanisms = plain login passdb pam { } userdb passwd { } socket listen { client { path = /var/spool/postfix/private/auth mode = 0660 user = postfix group = postfix } } }
Problemi con i clienti
Alcuni client MS imap della famiglia Outlook hanno problemi con le implementazioni IMAP e POP3, quindi dobbiamo accontentarli impostando queste soluzioni alternative:
protocol imap { imap_client_workarounds = outlook-idle delay-newmail } protocol pop3 { pop3_client_workarounds = outlook-no-nuls oe-ns-eoh }
Esegui IMAP dietro proxy
Il server imap è configurato per funzionare sulla porta 10143 in modo tale che la porta 143 sia gestita dal server proxy imap che migliorerà le prestazioni della tua webmail memorizzando nella cache le connessioni al server imap. L'opzione di ascolto nel protocollo lo configura.
protocol imap { imap_client_workarounds = outlook-idle delay-newmail listen = 127.0.0.1:10143 }
File di esempio
- dovecot.conf
Imposta proxy Imap
Introduzione
imapprossimay è stato scritto per compensare i client webmail che non sono in grado di mantenere connessioni persistenti a un server IMAP. La maggior parte dei client webmail deve accedere a un server IMAP per quasi ogni singola transazione. Questo comportamento può causare tragici problemi di prestazioni sul server IMAP. imapprossimay cerca di affrontare questo problema lasciando aperte le connessioni del server per un breve periodo dopo che un client webmail si è disconnesso. Quando il client webmail si connette di nuovo, imapprossima determinerà se è disponibile una connessione memorizzata nella cache e la riutilizzerà se possibile. - secondo il sito web di imapprossimay.
Configurazione
Apporta le seguenti modifiche nel file /etc/imapprossimay.conf:
server_hostname 127.0.0.1 cache_size 3072 listen_port 143 server_port 10143 cache_expiration_time 900 proc_username nobody proc_groupname nobody stat_filename /var/run/pimpstats protocol_log_filename /var/log/imapproxy_protocol.log syslog_facility LOG_MAIL send_tcp_keepalives no enable_select_cache yes foreground_mode no force_tls no enable_admin_commands no
File di esempio
- imapprossimay.conf
Impostazione rilegatura
Introduzione
Il collegamento verrà impostato in chroot per migliorare la sicurezza, utilizzeremo anche le visualizzazioni per prevenire l'abuso del server DNS.
Configurazione di base
La configurazione di base disabilita per impostazione predefinita le query ricorsive e i trasferimenti di zona. Oscuriamo anche la versione di BIND che stiamo eseguendo in modo da non essere colpiti dalle vulnerabilità zero-day degli script kiddies.
options { directory "/var/named"; pid-file "/var/run/named/named.pid"; listen-on { 127.0.0.1; 192.168.1.5; }; version "just guess"; allow-recursion { "localhost"; }; allow-transfer { "none"; }; };
Registrazione
La registrazione è personalizzata per rimuovere il fastidioso "server lame" e aggiornare gli errori che compaiono nei log:
logging { category update { null; }; category update-security { null; }; category lame-servers{ null; }; };
Croot
Assicurati che questo sia impostato nel file /etc/sysconfig/named (di solito è impostato dal pacchetto bind-chroot):
ROOTDIR=/var/named/chroot
Server di punta
Lascia che la macchina usi questo server per la risoluzione DNS, modifica /etc/resolv.conf e anteponi:
nameserver 127.0.0.1
File di esempio
- named.conf
- /etc/sysconfig/named
Impostazione Vsftpd
Introduzione
Useremo vsftpd come nostro server ftp. Questo ha un track record migliore rispetto ai server proftpd e wuftpd.
Impostazioni di base
La nostra configurazione di base disabilita gli utenti anonimi e consente agli utenti del sistema locale di connettersi al server ftp.
anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 anon_upload_enable=NO anon_mkdir_write_enable=NO dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_file=/var/log/vsftpd.log xferlog_std_format=YES ftpd_banner=Welcome to example.com server pam_service_name=vsftpd tcp_wrappers=YES
Croot
Tutti gli utenti verranno chroot nelle loro directory home (tranne i nomi utente nel file /etc/vsftpd/chroot_list), il che significa che non possono uscire e vedere i file degli altri utenti.
chroot_list_enable=YES chroot_local_user=YES chroot_list_file=/etc/vsftpd/chroot_list
Utenti esclusi
Gli utenti aggiunti al file /etc/vsftpd/user_list non potranno accedere:
userlist_enable=YES
File di esempio
- vsftpd.conf
- elenco_utenti
- chroot_list
Guida all'hosting virtuale con Virtualmin su CentOS 5.1 - Pagina 5
Impostazione Milter Clamav
- Modifica /etc/sysconfig/clamav-milter:
CLAMAV_FLAGS=" --config-file=/etc/clamd.conf --force-scan --local --max-children=5 --sendmail-cf= --outgoing --quiet " SOCKET_ADDRESS="local:/var/clamav/clmilter.socket"
- Patch il file init per correggere i permessi del socket:
wget http://www.topdog-software.com/files/clamav-milter.patch
servizio mysqld start
mysqladmin -p crea baie
mysql -p bayes
mysql -p
Archivieremo gli hash delle immagini in un database MySQL per migliorare le prestazioni in modo tale che le immagini che abbiamo già scansionato non vengano scansionate di nuovo poiché l'OCR è un'attività ad alta intensità di risorse.
mysql -p
mysqladmin -u fuzzyocr -p password fuzzyocr
mkdir /etc/mail/spamassassin/sa-update-keys/
chmod +x /usr/local/bin/update-sa
We need to patch the init file to fix the permissions of the socket created such that postfix is able to use the socket.
wget http://www.topdog-software.com/files/spamass-milter.patch
We will disable some modules that we are not using thus freeing up memory and also improving security.
Apache has to be configured to listed to one address for port 443 as webmin will be using the same port. Edit /etc/httpd/conf.d/ssl:
We setup gzip compression via the mod_deflate module to improve web server performance and to cut down on bandwidth usage by compressing responses to the client.
Set up logging for the deflate module:
Edit the file /etc/php.ini and set the following:
This needs to be the first virtual host, it will be the default on the server the equivalent of the server with out virtual hosting.
mysqladmin -p create roundcube
mysql -u roundcube -p roundcube
As we will be providing webmail for all domains that are created on the system we need to setup a catch all virtualhost that can display roundcube when ever a user accesses http://webmail.domainname. Edit /etc/httpd/conf/httpd.conf and append:
This is a basic firewall it may not suit your needs, firewalling is an art so i recommend to read into it to improve on this basic one.
Add these rules in your configuration file /etc/sysconfig/iptables:
Virtualmin is a powerful and flexible hosting control panel that integrates with webmin. We will be using it to provide the virtual hosting functions such as creation of domains, accounts and maintaining configurations on the system.
You need to start up services that are required to be able to configure virtualmin. Start the following services:
service named start
Webmin needs to be able to communicate with mysql since we have set a password for mysql we need to set that up in webmin, go to servers ? mysql and enter this information:
You need to enable the features and plugins that we want to use. On login this is the screen that you will see.
Server template are used to customize the services and to create packages for different hosting account types.
You can make changes to the way apache virtual hosts are created by editing this template, The defaults however will do for purposes of this howto.
This template is used to configure various server limits such as number of mailboxes,aliases,databases,virtual servers and other options like bandwidth limits, admin abilities. For this howto we will use the default values.
This template allows you to set a skel directory to hold setting for new users for this howto we will use the defaults.
This template lets you set the quota for the virtual server and the admin user for this howto we will use the default quota 1GB.
This template sets various mail related options, we will modify the email message sent on server creation to have the content below:
We will leave the other options as the defaults.
This template is used to customize the zones that will be created by virtualmin. The changes to be made are adding a spf record, add the following records to auto generated text box (replace ns1.home.topdog-software.com. with your slave server):
In the directives text box add the following with the IP address of your slave server such that the slave is allowed to do zone transfers.
Contains options on creation of databases by virtualmin, for the howto we will use the defaults.
Contains option on creation of new users by virtualmin, for the howto we will use the defaults.
Finally we have a working virtual server system, lets create our first virtual server. Go to servers ? virtualmin virtual servers and click add new virtual server, owned by new user.
Fill in the require fields and click create.
Add a mail user to the domain. click on the domain name, then click edit mail and FTP users, then add user and fill in the information.
telnet 192.168.1.5 25
telnet 192.168.1.5 25
Send a mail to [email protected]
Send a mail to [email protected]
telnet 192.168.1.5 110
telnet 192.168.1.5 143
dig example.com @127.0.0.1
We are using the test virus from www.eicar.org.
telnet 192.168.1.5 25
Take a lot at your /var/log/maillog you should see something like this:
We are using the test message from http://spamassassin.apache.org/gtube/.
telnet 192.168.1.5 25
You will see this in your log files:
patch /etc/init.d/clamav-milter Configurazione MySQL
Configurazione di base
bind-address = 127.0.0.1
Imposta password radice
mysqladmin -u password di root NEWPASSWORDImpostazione SpamAssassin
Configurazione di base
required_hits 5
report_safe 0
rewrite_header Subject [SPAM]
Crea database MySQL
mysql> CONCEDERE TUTTO SU bayes.* A [email protected] IDENTIFICATO DA 'password';Configura per utilizzare DB
bayes_store_module Mail::SpamAssassin::BayesStore::MySQL
bayes_sql_dsn DBI:mysql:bayes:localhost
bayes_sql_override_username bayes
bayes_sql_username bayes
bayes_sql_password password
Configura FuzzyOCR
Crea database MySQL
Impostazioni di base
focr_path_bin /usr/bin:/usr/local/bin
focr_minimal_scanset 1
focr_autosort_scanset 1
focr_enable_image_hashing 3
focr_logfile /tmp/FuzzyOcr.log
Fai in modo che FuzzyOCR utilizzi il database
focr_mysql_db FuzzyOcr
focr_mysql_hash Hash
focr_mysql_safe Safe
focr_mysql_user fuzzyocr
focr_mysql_pass password
focr_mysql_host localhost
focr_mysql_port 3306
focr_mysql_socket /var/lib/mysql/mysql.sock
Aggiornamenti delle regole SARE
chmod 700 /etc/mail/spamassassin/sa-update-keys/
wget http://daryl.dostech.ca/sa- update/sare/GPG.KEY
sa-update --import GPG.KEY
updates.spamassassin.org
72_sare_redirect_post3.0.0.cf.sare.sa-update.dostech.net
70_sare_evilnum0.cf.sare.sa-update.dostech.net
70_sare_bayes_poison_nxm.cf.sare.sa-update.dostech.net
70_sare_html0.cf.sare.sa-update.dostech.net
70_sare_html_eng.cf.sare.sa-update.dostech.net
70_sare_header0.cf.sare.sa-update.dostech.net
70_sare_header_eng.cf.sare.sa-update.dostech.net
70_sare_specific.cf.sare.sa-update.dostech.net
70_sare_adult.cf.sare.sa-update.dostech.net
72_sare_bml_post25x.cf.sare.sa-update.dostech.net
99_sare_fraud_post25x.cf.sare.sa-update.dostech.net
70_sare_spoof.cf.sare.sa-update.dostech.net
70_sare_random.cf.sare.sa-update.dostech.net
70_sare_oem.cf.sare.sa-update.dostech.net
70_sare_genlsubj0.cf.sare.sa-update.dostech.net
70_sare_genlsubj_eng.cf.sare.sa-update.dostech.net
70_sare_unsub.cf.sare.sa-update.dostech.net
70_sare_uri0.cf.sare.sa-update.dostech.net
70_sare_obfu0.cf.sare.sa-update.dostech.net
70_sare_stocks.cf.sare.sa-update.dostech.net
#!/bin/bash
#
#
sa-update -D --channelfile /etc/mail/spamassassin/sare-sa-update-channels.txt --gpgkey 856AA88A &>/var/log/sa-updates.log
ln -s /usr/local/bin/update-sa /etc/cron.daily/
ln -s /usr/local/bin /update-sa /etc/cron.hourly/Spamass-milter Setup
Basic Configuration
SOCKET=/var/run/spamass.sock
EXTRA_FLAGS="-m -r 8"
Patch
patch /etc/rc.d/init.d/spamass-milter Apache Setup
Disable Modules
#LoadModule ldap_module modules/mod_ldap.so
#LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
#LoadModule dav_module modules/mod_dav.so
#LoadModule status_module modules/mod_status.so
#LoadModule dav_fs_module modules/mod_dav_fs.so
#LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
#LoadModule proxy_http_module modules/mod_proxy_http.so
#LoadModule proxy_connect_module modules/mod_proxy_connect.so
#LoadModule cache_module modules/mod_cache.so
#LoadModule disk_cache_module modules/mod_disk_cache.so
#LoadModule file_cache_module modules/mod_file_cache.so
#LoadModule mem_cache_module modules/mod_mem_cache.so
#LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
Listen To One IP For HTTPS
Listen 192,168.1.6:443
Enable Gzip Compression
SetOutputFilter DEFLATE
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
SetEnvIfNoCase Request_URI \
\.(?:gif|jpe?g|png)$ no-gzip dont-vary
Header append Vary User-Agent env=!dont-vary
DeflateFilterNote deflate_ratio
LogFormat "%v %h %l %u %t \"%r\" %>s %b mod_deflate: %{deflate_ratio}n pct." vhost_with_deflate_info
CustomLog logs/deflate_access_log vhost_with_deflate_info
Increase PHP Max Memory
memory_limit = 64M
Enable Virtual Hosting
NameVirtualHost *:80
Create Default Virtual Host
<VirtualHost *:80>
Servername localhost.localdomain
Serveradmin [email protected]
</Virtualhost>
Roundcube Webmail Setup
Create Database
mysql -p
mysql> GRANT ALL ON roundcube.* TO [email protected] IDENTIFIED BY 'password';
Basic Config
$rcmail_config['db_dsnw'] = 'mysql://roundcube:[email protected]/roundcube';
$rcmail_config['default_host'] = 'localhost';
$rcmail_config['default_port'] = 143;
$rcmail_config['virtuser_file'] = '/etc/postfix/virtual';
$rcmail_config['smtp_server'] = 'localhost';
$rcmail_config['smtp_port'] = 25;
$rcmail_config['smtp_helo_host'] = 'localhost';
Set Up Catch All Virtualhost
<VirtualHost *:80>
ServerName webmail.example.com
ServerAlias webmail.*
DocumentRoot /var/www/roundcube
<Directory /var/www/roundcube>
Options -Indexes IncludesNOEXEC FollowSymLinks
allow from all
</Directory>
</VirtualHost>
Firewall Setup
Introduction
Basic Config
*raw
:PREROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
COMMIT
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
COMMIT
*mangle
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
COMMIT
*filter
:FORWARD DROP [0:0]
:INPUT DROP [0:0]
:OUTPUT DROP [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m multiport -j ACCEPT --dports 80,443,25,110,143,53
-A INPUT -p udp -m udp --dport 53 -j ACCEPT
-A INPUT -p icmp -m icmp -m limit --icmp-type 8 --limit 5/min -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -s 127.0.0.1 -j ACCEPT
-A OUTPUT -s 192.168.1.5 -j ACCEPT
-A OUTPUT -s 192.168.1.6 -j ACCEPT
COMMIT
Activate Config
service iptables restart
Virtual Hosting Howto With Virtualmin On CentOS 5.1 - Page 6
Configure Virtualmin
Introduction
Start Services
service spamassassin start
service spamass-milter start
service clamav-milter start
service postfix start
service dovecot start
service imapproxy start
service httpd startInitial Settings
MySQL
Configure Features
Configure Server Templates
Apache Template
Domain Owner Template
Home Directory Template
Administration User
Mail For Domain Template
The following virtual server has been set up successfully :
Domain name: ${DOM}
Hosting server: ${HOSTNAME}
${IF-VIRT}
Virtual IP address: ${IP}
${ENDIF-VIRT}
Administration login: ${USER}
Administration password: ${PASS}
${IF-WEBMIN}
Administration URL: ${WEBMIN_PROTO}://www.${DOM}:${WEBMIN_PORT}/
${ENDIF-WEBMIN}
${IF-WEB}
Website: http://www.${DOM}/
${IF-WEBALIZER}
Webalizer log reporting: Enabled
${ELSE-WEBALIZER}
Webalizer log reporting: Disabled
${ENDIF-WEBALIZER}
${ENDIF-WEB}
${IF-MAIL}
Email domain: ${DOM}
SMTP server: mail.${DOM}
POP3 server: mail.${DOM}
Webmail: webmail.${DOM}
${ENDIF-MAIL}
${IF-DNS}
DNS domain: ${DOM}
Nameserver: ${HOSTNAME}
${ENDIF-DNS}
${IF-MYSQL}
MySQL database: ${DB}
MySQL login: ${MYSQL_USER}
MySQL password: ${PASS}
${ENDIF-MYSQL}
${IF-POSTGRES}
PostgreSQL database: ${DB}
PostgreSQL login: ${USER}
PostgreSQL password: ${PASS}
${ENDIF-POSTGRES}
BIND DNS Domain Template
@ IN NS ns1.home.topdog-software.com. ;slave
admin IN A 192.168.1.6 ;virtualmin
webmail IN A 192.168.1.5 ;webmail
allow-transfer { 192.168.1.2; };
MySQL Database Template
Webmin Login Template
Create Virtual Server
Testing
Postfix
Test SMTP
Connected to localhost.
Escape character is '^]'.
220 tds mail cluster
helo me
250 hosting1
mail from:[email protected]
250 2.1.0 Ok
rcpt:[email protected]
250 2.1.0 Ok
DATA
354 End data with
From:[email protected]
To:[email protected]
Subject:This is a test
Hi
This is a test
.
250 2.0.0 Ok:queued as 4ACCC7C5A6
Trying 192.168.1.5...
Connected to localhost.
Escape character is '^]'.
220 tds mail cluster
ehlo me
250-hosting1
250-PIPELINING
250-SIZE 10240000
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSNTest dkim
Test domainkeys
Dovecot
Test POP3
+OK Dovecot ready.
user andrew.example
+OK
pass password
+OK Logged in.
quit
+OK Logging out.Test IMAP
* OK Dovecot ready.
01 login andrew.example password
01 OK User logged in
01 list "" "*"
* LIST (\HasNoChildren) "." "Trash"
* LIST (\HasNoChildren) "." "Drafts"
* LIST (\HasNoChildren) "." "Junk"
* LIST (\HasNoChildren) "." "Sent"
* LIST (\HasNoChildren) "." "INBOX"
01 OK List completed.
01 logout
* BYE LOGOUT received
01 OK CompletedBIND
Clamav-milter
Connected to localhost.
Escape character is '^]'.
220 tds mail cluster
helo me
250 hosting1
mail from:[email protected]
250 2.1.0 Ok
rcpt:[email protected]
250 2.1.0 Ok
DATA
354 End data with
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
.
550 5.7.1 virus Eicar-Test-Signature detected by ClamAV - http://www.clamav.net
quit
221 2.0.0 Bye73BC87C4E4: milter-reject: END-OF-MESSAGE from localhost[127.0.0.1]:
5.7.1 virus Eicar-Test-Signature detected by ClamAV - http://www.clamav.net;
from=<[email protected]> to=<[email protected]> proto=SMTP helo=<me>
Spamass-milter
Connected to localhost.
Escape character is '^]'.
220 tds mail cluster
helo me
250 hosting1
mail from:[email protected]
250 2.1.0 Ok
rcpt:[email protected]
250 2.1.0 Ok
DATA
354 End data with
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
.
550 5.7.1 Blocked by SpamAssassin
quit
221 2.0.0 Byespamd: result: Y 1002 - AWL,GTUBE,MISSING_SUBJECT,TVD_SPACE_RATIO,UNPARSEABLE_RELAY scantime=0.5,size=723,user=root,uid=99,required_score=5.0,