Virtual-Hosting-Howto mit Virtualmin auf CentOS 5.1
Version 1.0.1
Autor:Andrew Colin Kissa
Einführung
Dieses Tutorial zeigt, wie Sie einen CentOS 5.x-Server einrichten, um alle Dienste anzubieten, die von virtuellen Webhostern benötigt werden. Dazu gehören Webhosting, SMTP-Server mit (SMTP-AUTH und TLS, SPF, DKIM, Domainkeys), DNS, FTP, MySQL, POP3/IMAP, Firewall, Webalizer für Statistiken.
Ich werde die folgende Software verwenden:
- Datenbankserver:MySQL 5.0.22
- Mailserver:Postfix 2.3.3
- NS-Server:BIND9 9.3.3
- Webserver:Apache 2.2.3 /PHP 5.1.6
- FTP-Server:Vsftpd 2.0.5
- POP3/IMAP-Server:Dovecot 1.0
- Webalizer:für Website-Statistiken 2.01_10
- Virtualmin:Systemsteuerung
Installation des Betriebssystems
Anforderungen
Um das System zu installieren, benötigen Sie
- CentOS 5.1-Installationsmedien
- Eine gute Internetverbindung
Installieren Sie das Basissystem
HINWEIS Einige Phasen der Installation werden hier nicht beschrieben, um das Howto kurz zu halten. Die Phasen der Grub-Konfiguration werden zum Beispiel weggelassen.
- Vom DVD- oder CD-Medium booten und am Boot-Prompt linux text eingeben.
- Überspringen Sie den Medientest.
- Wählen Sie Ihre Sprache:
- Tastaturlayout auswählen:
- Konfigurieren Sie Ihr Netzwerk, ich werde DHCP verwenden, wenn Sie DHCP nicht haben, können Sie statische Einträge verwenden.
- Wählen Sie Ja, um Laufwerk zu initialisieren:
- Wählen Sie ein benutzerdefiniertes Layout für den Partitionierungstyp aus:
- Partitionen erstellen:
- Netzwerk konfigurieren:
IP-Adresse und Netzmaske einstellen:
Legen Sie Gateway- und DNS-Server fest:
Legen Sie den Hostnamen fest:
- Stellen Sie die Zeitzone ein:
- Legen Sie das Root-Passwort fest:
- Servergruppe auswählen und Softwareauswahl anpassen auswählen:
- Paketgruppen wählen Sie wie folgt aus:
- DNS-Nameserver
- bind-chroot
- DNS-Nameserver
- Editoren
- vim-erweitert
- FTP-Server
- Mailserver
- Taubenschlag
- Spamassassin
- Postfix
- Mysql-Datenbank
- mysql-server
- Webserver
- mod_ssl
- Webalizer
- php
- php-birne
- http-suexec
- php-mysql
Starten Sie die Installation:
Dateisystem ist formatiert:
Die Installation wird ausgeführt:
Starten Sie das System neu:
Virtual Hosting Howto mit Virtualmin auf CentOS 5.1 - Seite 2
Zu deaktivierende Dienste
Um die Sicherheit zu verbessern und Systemressourcen auf dem System freizugeben, müssen wir alle nicht benötigten Dienste deaktivieren. Sie können dieses Skript ausführen, um dies für Sie zu erledigen.
- acpid
- Anacron
- apmd
- autofs
- Bluetooth
- Tassen
- Erstboot
- gpm
- Haldaemon
- Nachrichtenbus
- mdmonitor
- versteckt
- ip6tables
- Kudzu
- lvm2-monitor
- netfs
- nfslock
- pcscd
- Portmap
- rpcgssd
- rpcidmapd
- Mail versenden
- smartd
- yum-updatesd
Grundlagen
Wir müssen einige Probleme beheben, um das System für die Konfiguration vorzubereiten.
- Updates installieren
Yum-Upgrade
- MTA auf Postfix umstellen
Alternativen --config mta
Es gibt 2 Programme, die 'mta' bereitstellen.
Auswahlbefehl
------------------------------ -----------------
1 /usr/sbin/sendmail.postfix
*+ 2 /usr/sbin/sendmail.sendmail
Enter um die aktuelle Auswahl beizubehalten[+], oder geben Sie die Auswahlnummer ein:1
- Installieren Sie die Caching-Nameserver-Konfiguration:
yum installiere den Caching-Nameserver
- Build-Tools installieren:
yum install gcc cpp gcc-c++ automake automake14 automake15 automake16 automake17 openssl-devel subversion ncurses-devel -y
Netzwerk-Alias konfigurieren
cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth0:1
Ändern Sie die Datei /etc/sysconfig/network-scripts/ifcfg-eth0:1 so, dass sie wie folgt aussieht: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
Webmin / Virtualmin installieren
- Webmin-PGP-Schlüssel importieren:
wget http://www.webmin.com/jcameron-key.asc
rpm --import jcameron-key.asc
- Laden Sie die RPM herunter:
wget http://prdownloads.sourceforge.net/webadmin/webmin-1.390-1.noarch.rpm
- Überprüfen Sie die Drehzahl (sollte OK heißen oder erneut herunterladen):
rpm --checksig webmin-1.390-1.noarch.rpm
- Installieren Sie das RPM:
rpm -Uvh webmin-1.390-1.noarch.rpm
Erste Webmin-Konfiguration
Wir müssen Webmin sichern, indem wir /etc/webmin/miniserv.conf bearbeiten und die folgenden Änderungen vornehmen:
- Nur SSL verwenden:
ssl=1
- Ändern Sie den Port auf 443 und binden Sie nur an die zweite Netzwerkkarte:
port=443 bind=192.168.1.6
- UDP-Broadcasts deaktivieren:
#listen=10000
- Ändern Sie die Host-Sperre bei Anmeldefehlern auf 3 :
blockhost_failures=3
- Erhöhen Sie das Timeout für die Host-Sperre auf 120:
blockhost_time=120
- Benutzersperre bei fehlgeschlagener Anmeldung auf 3 ändern:
blockuser_failures=3
- Zeitlimit für Benutzersperrung auf 120 ändern:
blockuser_time=120
- Ändern Sie den Bereich in etwas anderes:
realm=cpanel
- Anmeldungen auf utmp protokollieren:
utmp=1
Installieren Sie das Webmin-Tiger-Design:
- Melden Sie sich über https://192.168.1.5:10000 mit root und Ihrem Passwort bei Webmin an.
- Zu Webmin gehen? Aufbau ? Webmin-Designs.
- Wählen Sie From ftp or http URL und geben Sie http://www.stress-free.co.nz/files/theme-stressfree.tar.gz ein
- Klicken Sie auf Design installieren.
- Klicken Sie auf "Zurück zur Themenliste".
- Wählen Sie StressFree als aktuelles Thema und klicken Sie dann auf Ändern.
Installieren Sie das PHP-Pear-Modul:
- Zu Webmin gehen? Webmin-Konfiguration? Webmin-Module.
- Wählen Sie Drittanbietermodul aus und geben Sie http://www.webmin.com/download/modules/php-pear.wbm.gz ein.
- Klicken Sie auf Modul installieren.
Installieren Sie virtualmin:
- Zu Webmin gehen? Webmin-Konfiguration? Webmin-Module.
- Wählen Sie Installation von FTP- oder HTTP-URL und geben Sie http://download.webmin.com/download/virtualmin/virtual-server-3.51.gpl.wbm.gz ein
- Klicken Sie auf Modul installieren.
Unerwünschte Module entfernen Zu Webmin gehen? Webmin-Konfiguration? löschen und Folgendes auswählen:
- ADSL-Client
- Bacula-Backup-System
- CD-Brenner
- CVS-Server
- Cluster-Passwörter ändern
- Clusterkopiedateien
- Cluster-Cronjobs
- Cluster-Shell-Befehle
- Cluster-Softwarepakete
- Cluster-Usermin-Server
- Cluster-Benutzer und -Gruppen
- Cluster-Webmin-Server
- Befehlsshell
- Konfigurationsmaschine
- Benutzerdefinierte Befehle
- DHCP-Server
- Fetchmail-E-Mail-Abruf
- Dateimanager
- Frox-FTP-Proxy
- HTTP-Tunnel
- Herzschlagüberwachung
- IPsec-VPN
- Jabber-IM-Server
- LDAP-Server
- Logische Datenträgerverwaltung
- Majordomo-Listenmanager
- NFS-Exporte
- NIS-Client und -Server
- OpenSLP-Server
- PPP-Einwahlserver
- PPP-Einwahlclient
- PPTP-VPN-Server
- PPTP-VPN-Client
- Postgresql-Datenbankserver
- Druckerverwaltung
- ProFTPD-Server
- QMAIL-Mailserver
- SMART-Laufwerksstatus
- SSH-/Telnet-Anmeldung
- SSL-Tunnel
- SAMBA-Windows-Dateifreigabe
- Geplante Befehle
- Sendmail-Mailserver
- Küstenfirewall
- Generator für Squid-Analyseberichte
- Squid-Proxyserver
- Voicemail-Server
- WU-FTP-Server
- Idmapd-Server
Webmin neu starten:
service webmin restart
Rpmforge-Repository konfigurieren
rpm -Uhv http://packages.sw.be/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
HINWEIS:Wenn Sie eine andere Architektur verwenden, prüfen Sie auf https://rpmrepo.org/RPMforge/Using für die richtige RPM- Deaktivieren Sie das Repo (so dass Basispakete nicht überschrieben werden), bearbeiten Sie /etc/yum.d/rpmforge.repo und setzen Sie die folgende Option:
enabled = 0
Zusätzlich erforderliche Pakete installieren
- Clamav installieren:
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
- Sanesecurity-Signaturen installieren:
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
- Installieren Sie PHP eaccelerator:
yum --enablerepo=rpmforge installiere php-eaccelerator
- Neueres spamassassin-Paket von rpmforge installieren:
yum --enablerepo=rpmforge upgrade spamassassin
- Spamass-Milter installieren:
yum --enablerepo=rpmforge install spamass-milter
- Installieren Sie die von spamassassin benötigten Perl-Module:
perl -MCPAN -e 'Mail::SPF installieren'
perl -MCPAN -e 'Mail::SPF::Query installieren'
perl -MCPAN -e 'Net::Ident installieren'
perl -MCPAN -e 'installiere IP::Country::Fast'
perl -MCPAN -e 'installiere Mail::DomainKeys'
perl -MCPAN -e 'installiere Mail::DKIM'
- Installieren Sie 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 'Installationszeichenfolge::Approx'
perl -MCPAN -e 'Installationszeit::HiRes'
perl -MCPAN -e 'Installationsprotokoll::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
- Installieren Sie Razor:
yum --enablerepo=rpmforge installiere Razor-Agents -y
- Roundcube installieren:
yum installiere php-imap
rpm -Uvh http://www.topdog-software.com/oss/roundcube/roundcube-0.1-rc2.noarch.rpm
- Installieren Sie imapproxy:
wget http://imapproxy.org/downloads/up-imapproxy-1.2.6.tar.gz
rpmbuild -tb up-imapproxy-1.2.6.tar.gz
rpm -Uvh /usr/ src/redhat/RPMS/i386/up-imapproxy-1.2.6-1.i386.rpm
- Dienste aktivieren:
chkconfig --level 345 httpd auf
chkconfig --level 345 postfix auf
chkconfig --level 345 spamassassin auf
chkconfig --level 345 spamass-milter auf
chkconfig --level 345 clamav-milter auf
chkconfig --level 345 mysqld auf
chkconfig --level 345 benannt auf
chkconfig --level 345 vsftpd auf
chkconfig --level 345 dovecot auf
chkconfig --level 345 imapproxy on
Virtual Hosting Howto mit Virtualmin auf CentOS 5.1 - Seite 3
Konfiguration
Postfix-Setup
Einführung
Wir werden Postfix mit den folgenden Funktionen einrichten:
- Virtuelles Hosting
- UCE-Prävention
- Virenschutz
- SMTP-Authentifizierung
- TLS
- RBLs
- SPF
- Angriffsminderung
Das Hinzufügen von Konten und Domänen kann über virtualmin konfiguriert werden, kann aber auch manuell erfolgen. Das Setup ist ressourcenschonend konzipiert und sollte daher auf Computern ausgeführt werden können, die nicht überlastet sind, sodass die Ressourcen besser genutzt werden können. Um es ressourcenfreundlich zu gestalten, verwenden wir keine externen Datenbanken, um virtuelle Benutzerinformationen zu speichern, wie es die meisten anderen Anleitungen tun, und verwenden Milter für die Spam- und Virenprüfung, anstatt amavisd-new auszuführen.
Die Grundlagen
Zunächst konfigurieren wir die Grundlagen wie Hostname, Mail-Ursprung, Netzwerke, Hash-Maps-Spool-Verzeichnis. Alle diese Konfigurationsoptionen sollten zu /etc/postfix/main.cf hinzugefügt werden, sofern nicht anders angegeben. Beispielkonfigurationsdateien stehen am Ende dieser Seite zum Download bereit.
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
Mailverzeichnis
Wir werden das stark verbesserte maildir-Format im Gegensatz zum standardmäßigen mbox-Format verwenden:
home_mailbox = Maildir/
SASL
Um die SMTP-Authentifizierung durchzuführen, werden wir SASL verwenden, aber wir werden nicht Cyrus SASL verwenden, da dies erfordert, dass wir den saslauthd-Daemon ausführen, wir werden stattdessen dovecot sasl verwenden, da wir dovecot für IMAP und POP3 ausführen werden, wodurch wir zwei Fliegen mit einem töten Stein.
smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth smtpd_sasl_auth_enable = yes
TLS
Wir benötigen TLS, um sicherzustellen, dass die Klartext-Passwörter während der SMTP-Authentifizierung nicht über das Kabel übertragen werden. Server, die TLS unterstützen, können auch über eine gesicherte Verbindung mit diesem Server kommunizieren.
Anweisungen zum Erstellen Ihres von cacert.org signierten Serverzertifikats finden Sie hier.
- Zufällige TLS-Quelle festlegen:
tls_random_source = dev:/dev/urandom
- Server-TLS aktivieren:
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
- Client-TLS aktivieren:
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
Spam-Schutz
- Erfordert ein gültiges EHLO / HELO:
smtpd_helo_required = yes
- Verhindern Sie Angriffe zum Sammeln von E-Mail-Adressen:
disable_vrfy_command = yes
- Ablehnungscodes in dauerhaft ändern (standardmäßig gibt Postfix 4xx-Fehlercodes aus, was einen vorübergehenden Fehler impliziert, wir benötigen 5xx für dauerhafte Fehler):
unverified_recipient_reject_code = 550 unverified_sender_reject_code = 550 unknown_local_recipient_reject_code = 550
- Verifizierung der Absenderadresse einrichten:
address_verify_map = btree:/var/spool/postfix/verify smtpd_sender_restrictions = hash:/etc/postfix/sender_access
- Erstellen Sie /etc/postfix/sender_access und fügen Sie hinzu:
#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
- Reduzieren Sie Angriffe von Zombies und defekten Clients:
smtpd_error_sleep_time = 5s smtpd_soft_error_limit = 10 smtpd_hard_error_limit = 20
- Pipeline nur von authentifizierten Clients zulassen:
smtpd_data_restrictions = reject_unauth_pipelining
- Installieren Sie postfix-policyd-spf-perl und aktivieren Sie die SPF-Unterstützung:
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/
Fügen Sie dies zu /etc/postfix/master.cf hinzu:
spfpolicy unix - n n - - spawn user=nobody argv=/usr/bin/perl /etc/postfix/postfix-policyd-spf-perl
- DKIM-Unterstützung hinzufügen:
Anweisungen zum Hinzufügen von DKIM-Unterstützung finden Sie hier.
- Domänenschlüssel-Unterstützung hinzufügen:
Anweisungen zum Hinzufügen von Unterstützung für Domänenschlüssel finden Sie hier.
- Dass alles funktioniert, hängt von der Option smtpd_recipient_restrictions ab, also legen wir sie unten fest:
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]
Für Ihre Spam-Klassifizierung mit spamassassin und die Virenprüfung mit clamav verwenden wir die Milter-Schnittstelle von Postfix, anstatt den ressourcenintensiven amavisd-new-Daemon zu verwenden. Dies ist eine sehr effiziente Methode, da wir nicht einmal clam ausführen müssen, da der clamav milter das Scannen selbst durchführt.
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
DB-Dateien erstellen
postmap /etc/postfix/canonical
postmap /etc/postfix/access
postmap /etc/postfix/virtual
postmap /etc/postfix/sender_access
Beispielkonfigurationsdateien
- main.cf
- master.cf
- kanonisch
- virtuell
Virtual Hosting Howto mit Virtualmin auf CentOS 5.1 - Seite 4
Dovecot-Setup
Einführung
Dadurch wird dovecot als unser IMAP/POP3-Server eingerichtet.
Basiskonfiguration
Wir werden dovecot für IMAP und POP3 einrichten und SSL deaktivieren.
protocols = imap pop3 listen = * ssl_listen = * ssl_disable = yes
Mailverzeichnis
Wir werden das maildir-Format im Gegensatz zum Standard-mbox-Format verwenden.
mail_location = maildir:~/Maildir
Authentifizierung &SASL
Konfigurieren Sie dovecot so, dass LOGIN und PLAIN als Authentifizierungsmechanismen verwendet werden, da viele MS-Clients keine verschlüsselten Authentifizierungsmechanismen verwenden können. Wir richten auch den SASL-Socket ein, damit Postfix SMTP-Verbindungen mit dovecot authentifizieren kann.
auth default { mechanisms = plain login passdb pam { } userdb passwd { } socket listen { client { path = /var/spool/postfix/private/auth mode = 0660 user = postfix group = postfix } } }
Kundenprobleme
Einige MS-imap-Clients in der Outlook-Familie haben Probleme mit ihren IMAP- und POP3-Implementierungen, daher müssen wir sie berücksichtigen, indem wir diese Problemumgehungen einrichten:
protocol imap { imap_client_workarounds = outlook-idle delay-newmail } protocol pop3 { pop3_client_workarounds = outlook-no-nuls oe-ns-eoh }
IMAP hinter Proxy ausführen
Der Imap-Server ist so konfiguriert, dass er auf Port 10143 läuft, sodass Port 143 vom Imap-Proxy-Server verwaltet wird, der die Leistung für Ihre Webmail verbessert, indem Verbindungen zum Imap-Server zwischengespeichert werden. Die Listen-Option unter Protokoll richtet dies ein.
protocol imap { imap_client_workarounds = outlook-idle delay-newmail listen = 127.0.0.1:10143 }
Beispieldateien
- dovecot.conf
Imap-Proxy einrichten
Einführung
imapproxy wurde geschrieben, um Webmail-Clients zu kompensieren, die keine dauerhaften Verbindungen zu einem IMAP-Server aufrechterhalten können. Die meisten Webmail-Clients müssen sich für fast jede einzelne Transaktion bei einem IMAP-Server anmelden. Dieses Verhalten kann zu schwerwiegenden Leistungsproblemen auf dem IMAP-Server führen. imapproxy versucht, mit diesem Problem umzugehen, indem Serververbindungen für kurze Zeit geöffnet bleiben, nachdem sich ein Webmail-Client abgemeldet hat. Wenn der Webmail-Client erneut eine Verbindung herstellt, ermittelt imapproxy, ob eine zwischengespeicherte Verbindung verfügbar ist, und verwendet sie nach Möglichkeit wieder. - laut der imapproxy-Website.
Konfiguration
Nehmen Sie die folgenden Änderungen in der Datei /etc/imapproxy.conf vor:
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
Beispieldateien
- imapproxy.conf
Bindungs-Setup
Einführung
Bind wird chrooted eingerichtet, um die Sicherheit zu verbessern. Wir werden auch Views verwenden, um Missbrauch des DNS-Servers zu verhindern.
Basiskonfiguration
Die Grundkonfiguration deaktiviert standardmäßig rekursive Abfragen und Zonentransfers. Wir verschleiern auch die Version von BIND, die wir ausführen, damit wir nicht von Zero-Day-Schwachstellen von Skript-Kiddies getroffen werden.
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"; }; };
Protokollierung
Die Protokollierung ist angepasst, um die lästigen "lame-server"- und Aktualisierungsfehler zu entfernen, die in den Protokollen erscheinen:
logging { category update { null; }; category update-security { null; }; category lame-servers{ null; }; };
Chroot
Stellen Sie sicher, dass dies in der Datei /etc/sysconfig/named festgelegt ist (normalerweise wird es vom bind-chroot-Paket festgelegt):
ROOTDIR=/var/named/chroot
Punktserver
Lassen Sie die Maschine diesen Server für die DNS-Auflösung verwenden, bearbeiten Sie /etc/resolv.conf und stellen Sie Folgendes voran:
nameserver 127.0.0.1
Beispieldateien
- named.conf
- /etc/sysconfig/named
Vsftpd-Setup
Einführung
Wir werden vsftpd als FTP-Server verwenden. Dies hat im Gegensatz zu den proftpd- und wuftpd-Servern eine bessere Erfolgsbilanz.
Grundeinstellung
Unsere grundlegende Einrichtung deaktiviert anonyme Benutzer und ermöglicht lokalen Systembenutzern, sich mit dem FTP-Server zu verbinden.
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
Chroot
Alle Benutzer werden in ihre Heimatverzeichnisse chrooted (außer Benutzernamen in der Datei /etc/vsftpd/chroot_list), was bedeutet, dass sie nicht ausbrechen und die Dateien anderer Benutzer sehen können.
chroot_list_enable=YES chroot_local_user=YES chroot_list_file=/etc/vsftpd/chroot_list
Gesperrte Benutzer
Benutzer, die der Datei /etc/vsftpd/user_list hinzugefügt wurden, dürfen sich nicht anmelden:
userlist_enable=YES
Beispieldateien
- vsftpd.conf
- Benutzerliste
- chroot_list
Virtual Hosting Howto mit Virtualmin auf CentOS 5.1 - Seite 5
Clamav-Milter-Setup
- Bearbeiten Sie /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"
- Init-Datei patchen, um Socket-Berechtigungen zu korrigieren:
wget http://www.topdog-software.com/files/clamav-milter.patch
service mysqld start
mysqladmin -p create bayes
mysql -p bayes
mysql -p
Wir werden die Bild-Hashes in einer MySQL-Datenbank speichern, um die Leistung zu verbessern, sodass Bilder, die wir bereits gescannt haben, nicht erneut gescannt werden, da OCR eine ressourcenintensive Aktivität ist.
mysql -p
mysqladmin -u fuzzyocr -p fuzzyocr Passwort
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 MySQL-Setup
Basiskonfiguration
bind-address = 127.0.0.1
Root-Passwort festlegen
mysqladmin -u Root-Passwort NEWPASSWORDSpamAssassin-Setup
Basiskonfiguration
required_hits 5
report_safe 0
rewrite_header Subject [SPAM]
Mysql-Datenbank erstellen
mysql> GRANT ALL ON bayes.* TO [email protected] IDENTIFIED BY 'password';Zur Verwendung von DB konfigurieren
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
FuzzyOCR konfigurieren
Mysql-Datenbank erstellen
Grundeinstellungen
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
Lassen Sie FuzzyOCR die Datenbank verwenden
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
SARE-Regelaktualisierungen
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,