Guide d'hébergement virtuel avec Virtualmin sur CentOS 5.1
Version 1.0.1
Auteur :Andrew Colin Kissa
Introduction
Ce tutoriel montre comment configurer un serveur CentOS 5.x pour offrir tous les services nécessaires aux hébergeurs Web virtuels. Ceux-ci incluent l'hébergement Web, le serveur SMTP avec (SMTP-AUTH et TLS, SPF, DKIM, Domainkeys), DNS, FTP, MySQL, POP3/IMAP, pare-feu, Webalizer pour les statistiques.
J'utiliserai le logiciel suivant :
- Serveur de base de données :MySQL 5.0.22
- Serveur de messagerie :Postfix 2.3.3
- Serveur NS :BIND9 9.3.3
- Serveur Web :Apache 2.2.3/PHP 5.1.6
- Serveur FTP :Vsftpd 2.0.5
- Serveur POP3/IMAP :Dovecot 1.0
- Webalizer :pour les statistiques du site 2.01_10
- Virtualmin :Panneau de configuration
Installation du système d'exploitation
Exigences
Pour installer le système, vous aurez besoin
- Média d'installation de CentOS 5.1
- Une bonne connexion Internet
Installer le système de base
REMARQUE Certaines étapes de l'installation ne sont pas décrites ici dans l'intérêt de garder le howto court, les étapes de configuration de grub sont omises par exemple.
- Démarrez à partir du support DVD ou CD et à l'invite de démarrage, saisissez le texte linux.
- Ignorer le test multimédia.
- Sélectionnez votre langue :
- Sélectionner la disposition du clavier :
- Configurez votre réseau, j'utiliserai dhcp si vous n'avez pas dhcp, vous pouvez utiliser des entrées statiques.
- Sélectionnez Oui pour initialiser le lecteur :
- Sélectionnez une disposition personnalisée pour le type de partition :
- Créer des partitions :
- Configurer la mise en réseau :
Définir l'adresse IP et le masque de réseau :
Définissez la passerelle et les serveurs DNS :
Définissez le nom d'hôte :
- Définissez le fuseau horaire :
- Définissez le mot de passe root :
- Sélectionnez le groupe de serveurs et sélectionnez Personnaliser la sélection de logiciels :
- Les groupes de packages sont sélectionnés comme suit :
- Serveur de noms DNS
- lier chroot
- Serveur de noms DNS
- Éditeurs
- amélioré par vim
- Serveur FTP
- Serveur de messagerie
- pigeonnier
- tueur de spams
- suffixe
- Base de données MySQL
- mysql-server
- Serveur Web
- mod_ssl
- webaliseur
- php
- php-poire
- http-suexec
- php-mysql
Démarrez l'installation :
Le système de fichiers est formaté :
L'installation s'exécutera :
Redémarrez le système :
Guide d'hébergement virtuel avec Virtualmin sur CentOS 5.1 - Page 2
Services à désactiver
Pour améliorer la sécurité et libérer les ressources système sur le système, nous devons désactiver tous les services qui ne sont pas nécessaires. Vous pouvez exécuter ce script pour le faire pour vous.
- acide
- anacron
- apmd
- autofs
- Bluetooth
- tasses
- premier démarrage
- gpm
- haldémon
- bus de messages
- mdmonitor
- caché
- ip6tables
- kudzu
- lvm2-moniteur
- netfs
- nfslock
- pcscd
- portmap
- rpcgssd
- rpcidmapd
- envoyer un e-mail
- smartd
- yum-updatesd
Les bases
Nous devons résoudre quelques problèmes pour préparer le système à la configuration.
- Installer les mises à jour
miam mise à jour
- Basculer le mta vers postfix
alternative --config mta
Il existe 2 programmes qui fournissent 'mta'.
Commande de sélection
------------------------------ -----------------
1 /usr/sbin/sendmail.postfix
*+ 2 /usr/sbin/sendmail.sendmail
Entrez pour conserver la sélection courante[+], ou tapez le numéro de la sélection :1
- Installez la configuration du serveur de noms de cache :
yum install caching-nameserver
- Installez les outils de compilation :
yum install gcc cpp gcc-c++ automake automake14 automake15 automake16 automake17 openssl-devel subversion ncurses-devel -y
Configurer l'alias réseau
cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth0:1
Modifiez le fichier /etc/sysconfig/network-scripts/ifcfg-eth0:1 pour qu'il ressemble à ceci :DEVICE=eth0:1BOOTPROTO=staticBROADCAST=192.168.1.255IPADDR=192.168.1.6NETMASK=255.255.255.0NETWORK=192.168. 1.0ONBOOT=oui
Installer Webmin / Virtualmin
- Importer la clé pgp Webmin :
wget http://www.webmin.com/jcameron-key.asc
rpm --import jcameron-key.asc
- Téléchargez le RPM :
wget http://prdownloads.sourceforge.net/webadmin/webmin-1.390-1.noarch.rpm
- Vérifiez le rpm (devrait indiquer OK ou bien télécharger à nouveau) :
rpm --checksig webmin-1.390-1.noarch.rpm
- Installez le RPM :
rpm -Uvh webmin-1.390-1.noarch.rpm
Configuration Webmin initiale
Nous devons sécuriser Webmin en éditant /etc/webmin/miniserv.conf et apporter les modifications suivantes :
- En utilisant SSL uniquement :
ssl=1
- Changez le port en 443 et liez-vous au deuxième NIC uniquement :
port=443bind=192.168.1.6
- Désactiver les diffusions UDP :
#listen=10000
- Modifier le verrouillage de l'hôte en cas d'échec de connexion à 3 :
blockhost_failures=3
- Augmentez le délai de verrouillage de l'hôte à 120 :
blockhost_time=120
- Définissez le verrouillage de l'utilisateur en cas d'échec de connexion sur 3 :
blockuser_failures=3
- Définissez le délai de verrouillage de l'utilisateur sur 120 :
blockuser_time=120
- Remplacez le domaine par autre chose :
domaine=cpanel
- Connecter les connexions à utmp :
utmp=1
Installez le thème Webmin Tiger :
- Connectez-vous à webmin via https://192.168.1.5:10000 en utilisant root et votre mot de passe.
- Aller sur Webmin ? Configuration ? thèmes Webmin.
- Sélectionnez Depuis l'URL ftp ou http et entrez http://www.stress-free.co.nz/files/theme-stressfree.tar.gz
- Cliquez sur Installer le thème.
- Cliquez sur "Revenir à la liste des thèmes".
- Sélectionnez StressFree comme thème actuel, puis cliquez sur Modifier.
Installez le module php-pear :
- Aller sur Webmin ? configuration webmin ? modules webmin.
- Sélectionnez le module tiers dans et entrez http://www.webmin.com/download/modules/php-pear.wbm.gz.
- Cliquez sur installer le module.
Installer virtualmin :
- Aller sur Webmin ? configuration webmin ? modules webmin.
- Sélectionnez installer à partir d'une URL ftp ou http et entrez http://download.webmin.com/download/virtualmin/virtual-server-3.51.gpl.wbm.gz
- Cliquez sur installer le module.
Supprimer les modules indésirables Aller sur webmin ? configuration webmin ? supprimez et sélectionnez ce qui suit :
- Client ADSL
- Système de sauvegarde Bacula
- Graveur de CD
- Serveur CVS
- Changer les mots de passe du cluster
- Fichiers de copie de cluster
- Tâches cron de cluster
- Commandes shell du cluster
- Progiciels de cluster
- Cluster les serveurs usermin
- Cluster les utilisateurs et les groupes
- Serveurs Webmin en cluster
- Interface de commande
- Moteur de configuration
- Commandes personnalisées
- Serveur DHCP
- Récupération des e-mails Fetchmail
- Gestionnaire de fichiers
- Proxy ftp Frox
- Tunnels HTTP
- Moniteur de rythme cardiaque
- VPN IPsec
- Serveur de messagerie instantanée Jabber
- Serveur LDAP
- Gestion des volumes logiques
- Gestionnaire de liste Majordomo
- Exportations NFS
- Client et serveur NIS
- Serveur OpenSLP
- Serveur de connexion PPP
- Client PPP commuté
- Serveur VPN PPTP
- Client VPN PPTP
- Serveur de base de données Postgresql
- Administrateur de l'imprimante
- Serveur ProFTPD
- Serveur de messagerie QMAIL
- État du lecteur SMART
- Connexion SSH/Telnet
- Tunnels SSL
- Partage de fichiers Windows SAMBA
- Commandes planifiées
- Serveur de messagerie Sendmail
- Pare-feu Shoreline
- Générateur de rapports d'analyse de calmars
- Serveur proxy Squid
- Serveur de messagerie vocale
- Serveur WU-FTP
- Serveur Idmapd
Redémarrez Webmin :
redémarrage du service webmin
Configurer le référentiel Rpmforge
rpm -Uhv http://packages.sw.be/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
REMARQUE :Si vous utilisez une architecture différente, vérifiez sur https://rpmrepo.org/RPMforge/Using le bon RPM- Désactivez le référentiel (de sorte que les packages de base ne soient pas écrasés) modifiez /etc/yum.d/rpmforge.repo et définissez l'option suivante :
activé =0
Installer les packages supplémentaires requis
- Installer 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
- Installez les signatures 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
- Installez l'accélérateur PHP :
miam --enablerepo=rpmforge install php-eaccelerator
- Installez le nouveau package spamassassin de rpmforge :
miam --enablerepo=rpmforge mettre à jour le spamassassin
- Installez spamass-milter :
miam --enablerepo=rpmforge installer spamass-milter
- Installez les modules perl requis par spamassassin :
perl -MCPAN -e 'install Mail::SPF'
perl -MCPAN -e 'install Mail::SPF::Query'
perl -MCPAN -e 'install Net::Ident'
perl -MCPAN -e 'install IP::Country::Fast'
perl -MCPAN -e 'install Mail::DomainKeys'
perl -MCPAN -e 'install Mail::DKIM'
- Installez 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
- Installer Razor :
yum --enablerepo=rpmforge install razor-agents -y
- Installer le cube rond :
yum install php-imap
rpm -Uvh http://www.topdog-software.com/oss/roundcube/roundcube-0.1-rc2.noarch.rpm
- Installer 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
- Activer les services :
chkconfig --level 345 httpd sur
chkconfig --level 345 postfix sur
chkconfig --level 345 spamassassin sur
chkconfig --level 345 spamass-milter sur
chkconfig --level 345 clamav-milter sur
chkconfig --level 345 mysqld sur
chkconfig --level 345 named sur
chkconfig --level 345 vsftpd sur
chkconfig --level 345 dovecot sur
chkconfig --level 345 imapproxy on
Guide d'hébergement virtuel avec Virtualmin sur CentOS 5.1 - Page 3
Configuration
Configuration de Postfix
Introduction
Nous allons configurer postfix avec les fonctionnalités suivantes :
- Hébergement virtuel
- Prévention UCE
- Anti-virus
- Authentification SMTP
- TLS
- RBL
- FPS
- Atténuation des attaques
L'ajout de comptes et de domaines doit être configuré via virtualmin bien que cela puisse également être fait manuellement. La configuration est conçue pour être respectueuse des ressources et devrait donc pouvoir fonctionner sur des machines qui ne sont pas surspécifiées, ce qui permet de mieux utiliser les ressources. Pour le rendre convivial pour les ressources, nous n'utilisons pas de bases de données externes pour stocker les informations des utilisateurs virtuels comme la plupart des autres procédures, ainsi que l'utilisation de milters pour la vérification des spams et des virus au lieu d'exécuter amavisd-new.
Les bases
Pour commencer, nous allons configurer les bases telles que le nom d'hôte, l'origine du courrier, les réseaux, le répertoire spool des cartes de hachage. Toutes ces options de configuration doivent être ajoutées à /etc/postfix/main.cf sauf indication contraire. Des exemples de fichiers de configuration sont disponibles en téléchargement à la fin de cette page.
command_directory =/usr/sbindaemon_directory =/usr/libexec/postfixmydomain =example.commyorigin =$mydomainmynetworks =127.0.0.0/8alias_maps =hash:/etc/aliasesalias_database =hash:/etc/aliasescanonical_maps =hash:/etc/postfix /canonicalsender_canonical_maps =hash:/etc/postfix/canonicalrecipient_canonical_maps =hash:/etc/postfix/canonicalvirtual_alias_maps =hash:/etc/postfix/virtualmail_spool_directory =/var/spool/mail
Maildir
Nous utiliserons le format maildir bien amélioré par opposition au format mbox par défaut :
home_mailbox =Maildir/
SASL
Pour effectuer l'authentification SMTP, nous utiliserons SASL, mais nous n'utiliserons pas Cyrus SASL car cela nous oblige à exécuter le démon saslauthd, nous utiliserons à la place dovecot sasl puisque nous exécuterons dovecot pour IMAP et POP3 tuant ainsi 2 oiseaux avec un pierre.
smtpd_sasl_type =dovecotsmtpd_sasl_path =privé/authsmtpd_sasl_auth_enable =oui
TLS
Nous avons besoin de TLS pour nous assurer que les mots de passe en texte brut ne sont pas transmis sur le réseau lors de l'authentification SMTP. Les serveurs prenant en charge TLS sont également capables de communiquer avec ce serveur via une connexion sécurisée.
Les instructions sur la création de votre certificat de serveur signé par cacert.org sont disponibles ici.
- Définir la source aléatoire TLS :
tls_random_source =dev :/dev/urandom
- Activer le serveur TLS :
smtpd_use_tls =yessmtpd_tls_key_file =/etc/pki/postfix/key.pemsmtpd_tls_cert_file =/etc/pki/postfix/server.pemsmtpd_tls_CAfile =/etc/pki/postfix/root.crtsmtpd_tls_loglevel =1smtpd_tls_received_header =yessmtpd_tls_session_cache_timeout =3600ssmtpd_tls_session_cache_database =btree:/var /spool/postfix/smtpd_tls_cache
- Activer TLS client :
smtp_use_tls =yessmtp_tls_key_file =/etc/pki/postfix/key.pemsmtp_tls_cert_file =/etc/pki/postfix/server.pemsmtp_tls_CAfile =/etc/pki/postfix/root.crtsmtp_tls_session_cache_database =btree:/var/spool/postfix/smtp_tls_cachesmtp_tls_note_starttls_offer =oui
Prévention des spams
- Exiger un EHLO/HELO valide :
smtpd_helo_required =oui
- Éviter les attaques de collecte d'adresses e-mail :
disable_vrfy_command =oui
- Changez les codes de rejet en permanents (par défaut, postfix émet des codes d'erreur 4xx, ce qui implique une défaillance temporaire, nous avons besoin de 5xx pour les erreurs permanentes) :
unverified_recipient_reject_code =550unverified_sender_reject_code =550unknown_local_recipient_reject_code =550
- Configurer la vérification de l'adresse de l'expéditeur :
address_verify_map =btree :/var/spool/postfix/verifysmtpd_sender_restrictions =hash :/etc/postfix/sender_access
- Créez /etc/postfix/sender_access et ajoutez :
#sample /etc/postfix/sender_access contient fréquemment usurpé domainsaol.com.
- Atténuez les attaques de zombies et de clients défectueux :
smtpd_error_sleep_time =5ssmtpd_soft_error_limit =10smtpd_hard_error_limit =20
- Autoriser uniquement le pipelining à partir de clients authentifiés :
smtpd_data_restrictions=reject_unauth_pipelining
- Installez postfix-policyd-spf-perl et activez la prise en charge 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/
Ajoutez ceci à /etc/postfix/master.cf :
spfpolicy unix - n n - - spawn user=nobody argv=/usr/bin/perl /etc/postfix/postfix-policyd-spf-perl
- Ajouter la prise en charge de DKIM :
Des instructions sur l'ajout de la prise en charge de DKIM sont disponibles ici.
- Ajouter la prise en charge des clés de domaine :
Des instructions sur l'ajout de la prise en charge des clés de domaine sont disponibles ici.
- Le fonctionnement de tout dépend de l'option smtpd_recipient_restrictions, nous la définissons donc ci-dessous :
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 rejet_rbl_client bl.spamcop.net rejet_rhsbl_sender dsn.rfc-ignorant.org rejet_rhsbl_sender bogusmx.rfc-ignorant.org rejet_rhsbl_sender rhsbl.sorbs.net rejet_rhsbl_client dsn.rfc-ignorant.org rejet_rhsbl_client bogusmx.rfc-ignorant.org rejet_rhsbl_client net check_policy_service unix:private/spfpolicy
Milters [SpamAssassin &ClamAV]
Pour votre classification de spam à l'aide de spamassassin et l'analyse de virus à l'aide de clamav, nous utiliserons l'interface milter de postfix au lieu d'utiliser le démon amavisd-new gourmand en ressources. C'est une façon très efficace de le faire car nous n'avons même pas besoin d'exécuter clamd le clamav milter effectue le scan lui-même.
smtpd_milters =unix :/var/clamav/clmilter.socket unix :/var/run/spamass.socknon_smtpd_milters =unix :/var/clamav/clmilter.socket unix :/var/run/spamass.sock
Créer des fichiers de base de données
postmap /etc/postfix/canonical
postmap /etc/postfix/access
postmap /etc/postfix/virtual
postmap /etc/postfix/sender_access
Exemples de fichiers de configuration
- main.cf
- master.cf
- canonique
- virtuel
Guide d'hébergement virtuel avec Virtualmin sur CentOS 5.1 - Page 4
Configuration du pigeonnier
Introduction
Cela configurera dovecot comme notre serveur IMAP/POP3.
Configuration de base
Nous allons configurer dovecot pour IMAP et POP3 et désactiver SSL.
protocoles =imap pop3listen =*ssl_listen =*ssl_disable =yes
Maildir
Nous utiliserons le format maildir par opposition au format mbox par défaut.
mail_location =maildir :~/Maildir
Authentification &SASL
Configurez dovecot pour utiliser LOGIN et PLAIN comme mécanismes d'authentification car de nombreux clients MS ne peuvent pas utiliser les mécanismes d'authentification cryptés. Nous avons également configuré le socket SASL pour permettre à postfix d'authentifier les connexions SMTP à l'aide de dovecot.
auth default { mecanismes =plain login passdb pam { } userdb passwd { } socket listen { client { path =/var/spool/postfix/private/auth mode =0660 user =postfix group =postfix } }}
Problèmes clients
Certains clients MS imap de la famille Outlook ont des problèmes avec leurs implémentations IMAP et POP3, nous devons donc les prendre en compte en configurant ces solutions :
protocole imap { imap_client_workarounds =outlook-idle delay-newmail}protocole pop3 { pop3_client_workarounds =outlook-no-nuls oe-ns-eoh}
Exécuter IMAP derrière le proxy
Le serveur imap est configuré pour s'exécuter sur le port 10143 de sorte que le port 143 est géré par le serveur proxy imap qui améliorera les performances de votre messagerie Web en mettant en cache les connexions au serveur imap. L'option d'écoute sous protocole configure cela.
protocol imap { imap_client_workarounds =outlook-idle delay-newmail listen =127.0.0.1:10143}
Exemples de fichiers
- dovecot.conf
Configurer le proxy Imap
Présentation
imapproxy a été écrit pour compenser les clients de messagerie Web incapables de maintenir des connexions persistantes à un serveur IMAP. La plupart des clients de messagerie Web doivent se connecter à un serveur IMAP pour presque chaque transaction. Ce comportement peut entraîner des problèmes de performances tragiques sur le serveur IMAP. imapproxy essaie de résoudre ce problème en laissant les connexions au serveur ouvertes pendant une courte période après la déconnexion d'un client de messagerie Web. Lorsque le client de messagerie Web se reconnectera, imapproxy déterminera s'il existe une connexion en cache disponible et la réutilisera si possible. - selon le site imapproxy.
Configuration
Effectuez les modifications suivantes dans le fichier /etc/imapproxy.conf :
server_hostname 127.0.0.1cache_size 3072listen_port 143server_port 10143cache_expiration_time 900proc_username nobodyproc_groupname nobodystat_filename /var/run/pimpstatsprotocol_log_filename /var/log/imapproxy_protocol.logsyslog_facility LOG_MAILsend_tcp_keepalives noenable_select_cache yesforeground_mode noforce_tls noenable_admin_commands no
Exemples de fichiers
- imapproxy.conf
Configuration de la liaison
Présentation
Bind sera configuré chrooté pour améliorer la sécurité, nous utiliserons également des vues pour éviter les abus du serveur DNS.
Configuration de base
La configuration de base désactive par défaut, les requêtes récursives et les transferts de zone. Nous obscurcissons également la version de BIND que nous exécutons afin de ne pas être touchés par les vulnérabilités du jour zéro des script kiddies.
options { répertoire "/var/named" ; fichier pid "/var/run/named/named.pid" ; écoute { 127.0.0.1; 192.168.1.5 ; } ; version "juste deviner" ; allow-recursion { "localhost" ; } ; allow-transfer { "aucun" ; };};
Journalisation
La journalisation est personnalisée pour supprimer les erreurs "lame-server" ennuyeuses et mettre à jour les erreurs qui apparaissent dans les journaux :
journalisation { mise à jour de la catégorie { null ; } ; catégorie mise à jour-sécurité { null ; } ; catégorie serveurs boiteux { null ; };};
Chrooter
Assurez-vous que ceci est défini dans le fichier /etc/sysconfig/named (il est généralement défini par le package bind-chroot) :
ROOTDIR=/var/named/chroot
Serveur ponctuel
Laissez la machine utiliser ce serveur pour la résolution DNS, modifiez /etc/resolv.conf et ajoutez :
serveur de noms 127.0.0.1
Exemples de fichiers
- named.conf
- /etc/sysconfig/named
Configuration Vsftpd
Présentation
Nous utiliserons vsftpd comme serveur ftp. Cela a un meilleur bilan que les serveurs proftpd et wuftpd.
Paramètre de base
Notre configuration de base désactive les utilisateurs anonymes et permet aux utilisateurs du système local de se connecter au serveur ftp.
anonymous_enable=NOlocal_enable=YESwrite_enable=YESlocal_umask=022anon_upload_enable=NOanon_mkdir_write_enable=NOdirmessage_enable=YESxferlog_enable=YESconnect_from_port_20=YESxferlog_file=/var/log/vsftpd.logxferlog_std_format=YESftpd_banner=Welcome to example.com serverpam_service_name=vsftpdtcp_wrappers=YES
Chrooter
Tous les utilisateurs seront chrootés dans leurs répertoires personnels (à l'exception des noms d'utilisateur dans le fichier /etc/vsftpd/chroot_list), ce qui signifie qu'ils ne peuvent pas sortir et voir les fichiers des autres utilisateurs.
chroot_list_enable=OUIchroot_local_user=OUIchroot_list_file=/etc/vsftpd/chroot_list
Utilisateurs bannis
Les utilisateurs ajoutés au fichier /etc/vsftpd/user_list ne seront pas autorisés à se connecter :
userlist_enable=OUI
Exemples de fichiers
- vsftpd.conf
- liste_utilisateurs
- chroot_list
Guide d'hébergement virtuel avec Virtualmin sur CentOS 5.1 - Page 5
Configuration Clamav Milter
- Modifiez /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"
- Corrigez le fichier init pour corriger les autorisations de socket :
wget http://www.topdog-software.com/files/clamav-milter.patch
service mysqld start
mysqladmin -p créer des baies
mysql -p bayes
mysql -p
Nous stockerons les hachages d'images dans une base de données mysql pour améliorer les performances de sorte que les images que nous avons déjà numérisées ne soient pas numérisées à nouveau car l'OCR est une activité gourmande en ressources.
mysql -p
mysqladmin -u fuzzyocr -p mot de passe 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 Configuration MySQL
Configuration de base
bind-address =127.0.0.1
Définir le mot de passe racine
mysqladmin -u root password NEWPASSWORDConfiguration de SpamAssassin
Configuration de base
required_hits 5report_safe 0rewrite_header Sujet [SPAM]
Créer une base de données MySQL
mysql> GRANT ALL ON bayes.* TO [email protected] IDENTIFIED BY 'password';Configurer pour utiliser la base de données
bayes_store_module Mail::SpamAssassin::BayesStore::MySQLbayes_sql_dsn DBI:mysql:bayes:localhostbayes_sql_override_username bayesbayes_sql_username bayesbayes_sql_password mot de passe
Configurer FuzzyOCR
Créer une base de données MySQL
Paramètres de base
focr_path_bin /usr/bin:/usr/local/binfocr_minimal_scanset 1focr_autosort_scanset 1focr_enable_image_hashing 3focr_logfile /tmp/FuzzyOcr.log
Faire en sorte que FuzzyOCR utilise la base de données
focr_mysql_db FuzzyOcrfocr_mysql_hash Hashfocr_mysql_safe Safefocr_mysql_user fuzzyocrfocr_mysql_pass mot de passefocr_mysql_host localhostfocr_mysql_port 3306focr_mysql_socket /var/lib/mysql/mysql.sock
Mises à jour des règles 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.org72_sare_redirect_post3.0.0.cf.sare.sa-update.dostech.net70_sare_evilnum0.cf.sare.sa-update.dostech.net70_sare_bayes_poison_nxm.cf.sare.sa-update.dostech.net70_sare_html0.cf.sare .sa-update.dostech.net70_sare_html_eng.cf.sare.sa-update.dostech.net70_sare_header0.cf.sare.sa-update.dostech.net70_sare_header_eng.cf.sare.sa-update.dostech.net70_sare_specific.cf.sare.sa -update.dostech.net70_sare_adult.cf.sare.sa-update.dostech.net72_sare_bml_post25x.cf.sare.sa-update.dostech.net99_sare_fraud_post25x.cf.sare.sa-update.dostech.net70_sare_spoof.cf.sare.sa-update .dostech.net70_sare_random.cf.sare.sa-update.dostech.net70_sare_oem.cf.sare.sa-update.dostech.net70_sare_genlsubj0.cf.sare.sa-update.dostech.net70_sare_genlsubj_eng.cf.sare.sa-update.dostech .net70_sare_unsub.cf.sare.sa-update.dostech.net70_sare_uri0.cf.sare.sa-update.dostech.net70_sare_obfu0.cf.sare.sa-update.dostech.net70_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. journal
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.sockEXTRA_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 DEFLATEBrowserMatch ^Mozilla/4 gzip-only-text/htmlBrowserMatch ^Mozilla/4\.0[678] no-gzipBrowserMatch \bMSIE !no-gzip !gzip-only-text/htmlSetEnvIfNoCase Request_URI \\.(?:gif|jpe?g|png)$ no-gzip dont-varyHeader append Vary User-Agent env=!dont-vary
DeflateFilterNote deflate_ratioLogFormat "%v %h %l %u %t \"%r\" %>s %b mod_deflate:%{deflate_ratio}n pct." vhost_with_deflate_infoCustomLog logs/deflate_access_log vhost_with_deflate_info
Increase PHP Max Memory
memory_limit =64M
Enable Virtual Hosting
NameVirtualHost *:80
Create Default Virtual Host
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
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 ACCEPTCOMMIT
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.;slaveadmin IN A 192.168.1.6;virtualminwebmail 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=
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,