Cómo hacer alojamiento virtual con Virtualmin en CentOS 5.1
Versión 1.0.1
Autor:Andrew Colin Kissa
Introducción
Este tutorial muestra cómo configurar un servidor CentOS 5.x para ofrecer todos los servicios que necesitan los servidores web virtuales. Estos incluyen alojamiento web, servidor smtp con (SMTP-AUTH y TLS, SPF, DKIM, claves de dominio), DNS, FTP, MySQL, POP3/IMAP, cortafuegos, Webalizer para estadísticas.
Usaré el siguiente software:
- Servidor de base de datos:MySQL 5.0.22
- Servidor de correo:Postfix 2.3.3
- Servidor NS:BIND9 9.3.3
- Servidor web:Apache 2.2.3/PHP 5.1.6
- Servidor FTP:Vsftpd 2.0.5
- Servidor POP3/IMAP:Dovecot 1.0
- Webalizer:para estadísticas del sitio 2.01_10
- Virtualmin:Panel de control
Instalación del sistema operativo
Requisitos
Para instalar el sistema necesitará
- Medios de instalación de CentOS 5.1
- Una buena conexión a Internet
Instalar el sistema base
NOTA Algunas etapas de la instalación no se describen aquí para acortar el procedimiento. Las etapas de configuración de grub se omiten, por ejemplo.
- Inicie desde el medio de DVD o CD y, en el indicador de inicio, escriba el texto de linux.
- Omita la prueba de medios.
- Seleccione su idioma:
- Seleccione el diseño del teclado:
- Configure su red, usaré dhcp si no tiene dhcp, puede usar entradas estáticas.
- Seleccione Sí para inicializar la unidad:
- Seleccione un diseño personalizado para el tipo de partición:
- Crear particiones:
- Configurar redes:
Establecer dirección IP y máscara de red:
Establecer puerta de enlace y servidores dns:
Establezca el nombre de host:
- Establecer la zona horaria:
- Establezca la contraseña raíz:
- Seleccione el grupo de servidores y seleccione personalizar la selección de software:
- Los grupos de paquetes se seleccionan de la siguiente manera:
- Servidor de nombres DNS
- enlace-chroot
- Servidor de nombres DNS
- Editores
- mejorado con vim
- servidor FTP
- Servidor de correo
- palomar
- asesino de spa
- sufijo
- Base de datos Mysql
- servidor mysql
- Servidor web
- mod_ssl
- webalizador
- php
- php-pera
- http-suexec
- php-mysql
Inicie la instalación:
El sistema de archivos está formateado:
La instalación se ejecutará:
Reinicie el sistema:
Cómo hacer alojamiento virtual con Virtualmin en CentOS 5.1 - Página 2
Servicios para deshabilitar
Para mejorar la seguridad y liberar recursos del sistema en el sistema, debemos deshabilitar cualquier servicio que no sea necesario. Puede ejecutar este script para que lo haga por usted.
- acpido
- anacron
- apmd
- autofs
- Bluetooth
- tazas
- primer arranque
- gpm
- haldaemon
- bus de mensajes
- mdmonitor
- oculto
- tablas ip6
- kudzu
- monitor lvm2
- netfs
- nfslock
- pccd
- mapa de puerto
- rpcgssd
- rpcidmapd
- enviar correo
- inteligente
- yum-actualizacionesd
Básicos
Necesitamos solucionar algunos problemas para preparar el sistema para la configuración.
- Instalar actualizaciones
mejora yum
- Cambie el mta a sufijo
alternativas --config mta
Hay 2 programas que proporcionan 'mta'.
Comando de selección
------------------------------ -----------------
1 /usr/sbin/sendmail.postfix
*+ 2 /usr/sbin/sendmail.sendmail
Introducir para mantener la selección actual[+], o escriba el número de selección:1
- Instalar la configuración del servidor de nombres de almacenamiento en caché:
yum install cache-nameserver
- Instalar herramientas de compilación:
yum install gcc cpp gcc-c++ automake automake14 automake15 automake16 automake17 openssl-devel subversion ncurses-devel -y
Configurar alias de red
cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth0:1
Modifique el archivo /etc/sysconfig/network-scripts/ifcfg-eth0:1 para que tenga este aspecto: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
Instalar Webmin / Virtualmin
- Importar clave webmin pgp:
wget http://www.webmin.com/jcameron-key.asc
rpm --importar jcameron-key.asc
- Descargue las rpm:
wget http://prdownloads.sourceforge.net/webadmin/webmin-1.390-1.noarch.rpm
- Verifique las rpm (debería decir OK o descargar de nuevo):
rpm --checksig webmin-1.390-1.noarch.rpm
- Instalar el rpm:
rpm -Uvh webmin-1.390-1.noarch.rpm
Configuración inicial de Webmin
Necesitamos asegurar webmin editando /etc/webmin/miniserv.conf y hacer los siguientes cambios:
- Solo usando SSL:
ssl=1
- Cambie el puerto a 443 y vincule solo al segundo NIC:
port=443 bind=192.168.1.6
- Deshabilitar transmisiones UDP:
#listen=10000
- Cambiar el bloqueo del host en fallas de inicio de sesión a 3:
blockhost_failures=3
- Aumentar el tiempo de espera de bloqueo del host a 120:
blockhost_time=120
- Cambiar el bloqueo de usuario en fallas de inicio de sesión a 3:
blockuser_failures=3
- Cambiar el tiempo de espera de bloqueo de usuario a 120:
blockuser_time=120
- Cambiar el reino a otra cosa:
realm=cpanel
- Iniciar sesión en utmp:
utmp=1
Instala el tema tigre de webmin:
- Inicie sesión en webmin a través de https://192.168.1.5:10000 utilizando la raíz y su contraseña.
- ¿Ir a webmin? ¿Configuración? temas webmin.
- Seleccione Desde ftp o http URL e ingrese http://www.stress-free.co.nz/files/theme-stressfree.tar.gz
- Haga clic en instalar tema.
- Haga clic en "volver a la lista de temas".
- Seleccione StressFree como tema actual y luego haga clic en cambiar.
Instale el módulo php-pear:
- ¿Ir a webmin? configuración webmin? módulos webmin.
- Seleccione Módulo de terceros e ingrese http://www.webmin.com/download/modules/php-pear.wbm.gz.
- Haga clic en instalar módulo.
Instalar virtualmin:
- ¿Ir a webmin? configuración webmin? módulos webmin.
- Seleccione instalar desde ftp o http URL e ingrese http://download.webmin.com/download/virtualmin/virtual-server-3.51.gpl.wbm.gz
- Haga clic en instalar módulo.
Eliminar módulos no deseados ¿Ir a webmin? configuración webmin? elimine y seleccione lo siguiente:
- Cliente ADSL
- Sistema de respaldo Bacula
- Grabador de CD
- Servidor CVS
- Contraseñas de cambio de clúster
- Archivos de copia de clúster
- Trabajos cron de clúster
- Comandos de shell de clúster
- Paquetes de software de clúster
- Cluster de servidores usermin
- Usuarios y grupos del clúster
- Cluster de servidores webmin
- Construcción de comandos
- Motor de configuración
- Comandos personalizados
- servidor DHCP
- Recuperación de correo Fetchmail
- Administrador de archivos
- Proxy ftp de Fox
- Túnel HTTP
- Monitor de latidos del corazón
- VPN IPsec
- Servidor de mensajería instantánea Jabber
- servidor LDAP
- Gestión de volumen lógico
- Administrador de listas de Majordomo
- Exportaciones NFS
- Cliente y servidor NIS
- Servidor OpenSLP
- Servidor de marcación PPP
- Cliente de acceso telefónico PPP
- servidor VPN PPTP
- Cliente VPN PPTP
- Servidor de base de datos Postgresql
- Administrador de impresoras
- Servidor ProFTPD
- servidor de correo QMAIL
- Estado de la unidad SMART
- Inicio de sesión SSH/Telnet
- Túneles SSL
- Compartir archivos de Windows SAMBA
- Comandos programados
- Servidor de correo Sendmail
- Cortafuegos costero
- Generador de informes de análisis de calamares
- Servidor proxy Squid
- Servidor de correo de voz
- servidor WU-FTP
- servidor Idmapd
Reiniciar webmin:
service webmin restart
Configurar Rpmforge Repo
rpm -Uhv http://packages.sw.be/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
NOTA:si está utilizando una arquitectura diferente, consulte https://rpmrepo.org/RPMforge/Using para obtener el rpm correcto- Desactive el repositorio (de modo que los paquetes base no se sobrescriban), edite /etc/yum.d/rpmforge.repo y establezca la siguiente opción:
enabled = 0
Instalar paquetes adicionales requeridos
- Instalar clamav:
yum --enablerepo=rpmforge install clamav clamav-db clamav-milter clamd -y
wget http://www.topdog-software.com/files/clamav-milter.patch
parche /etc/init .d/clamav-milter
freshclam
- Instalar firmas de 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
- Instalar el acelerador de PHP:
yum --enablerepo=rpmforge instalar php-eaccelerator
- Instalar el paquete spamassassin más nuevo de rpmforge:
yum --enablerepo=rpmforge actualizar spamassassin
- Instalar spamass-milter:
yum --enablerepo=rpmforge instalar spamass-milter
- Instalar módulos perl requeridos por spamassassin:
perl -MCPAN -e 'instalar Correo::SPF'
perl -MCPAN -e 'instalar Correo::SPF::Consulta'
perl -MCPAN -e 'instalar Red::Ident'
perl -MCPAN -e 'instalar IP::País::Rápido'
perl -MCPAN -e 'instalar Correo::DomainKeys'
perl -MCPAN -e 'instalar Correo::DKIM'
- Instalar 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 'Cadena de instalación::Aproximada'
perl -MCPAN -e 'Tiempo de instalación::HiRes'
perl -MCPAN -e 'Registro de instalación::Agente'
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.palabras -O /etc/mail/spamassassin/FuzzyOcr.palabras
- Instalar Razor:
yum --enablerepo=rpmforge instalar razor-agents -y
- Instalar cubo redondo:
yum instalar php-imap
rpm -Uvh http://www.topdog-software.com/oss/roundcube/roundcube-0.1-rc2.noarch.rpm
- Instalar 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
- Activar servicios:
chkconfig --level 345 httpd en
chkconfig --level 345 postfix en
chkconfig --level 345 spamassassin en
chkconfig --level 345 spamass-milter en
chkconfig --level 345 clamav-milter en
chkconfig --level 345 mysqld en
chkconfig --level 345 named en
chkconfig --level 345 vsftpd en
chkconfig --level 345 dovecot en
chkconfig --level 345 imapproxy activado
Cómo hacer alojamiento virtual con Virtualmin en CentOS 5.1 - Página 3
Configuración
Configuración de Postfix
Introducción
Estaremos configurando postfix con las siguientes características:
- Alojamiento virtual
- Prevención de UCE
- Antivirus
- Autenticación SMTP
- TLS
- RBL
- FPS
- Mitigación de ataques
La adición de cuentas y dominios se configurará a través de virtualmin aunque también se puede realizar de forma manual. La configuración está diseñada para ser amigable con los recursos, por lo que debería poder ejecutarse en máquinas que no tengan especificaciones excesivas, lo que permite que los recursos se utilicen mejor. Para que sea amigable con los recursos, no usamos bases de datos externas para almacenar información de usuarios virtuales como lo hacen la mayoría de los procedimientos, ni usamos milters para la verificación de spam y virus en lugar de ejecutar amavisd-new.
Los Básicos
Para empezar, configuraremos lo básico, como el nombre de host, el origen del correo, las redes, el directorio de colas de mapas hash. Todas estas opciones de configuración deben agregarse a /etc/postfix/main.cf a menos que se indique lo contrario. Los archivos de configuración de muestra están disponibles para descargar al final de esta página.
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
Usaremos el formato maildir muy mejorado en lugar del formato mbox predeterminado:
home_mailbox = Maildir/
SASL
Para realizar la autenticación SMTP, usaremos SASL, sin embargo, no usaremos Cyrus SASL ya que eso requiere que ejecutemos el demonio saslauthd, en su lugar usaremos dovecot sasl ya que ejecutaremos dovecot para IMAP y POP3, matando así 2 pájaros con uno piedra.
smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth smtpd_sasl_auth_enable = yes
TLS
Necesitamos TLS para garantizar que las contraseñas de texto sin formato no se transmitan por cable durante la autenticación SMTP; los servidores que admiten TLS también pueden comunicarse con este servidor a través de una conexión segura.
Las instrucciones para crear su certificado de servidor firmado por cacert.org se pueden encontrar aquí.
- Establecer fuente aleatoria de TLS:
tls_random_source = dev:/dev/urandom
- Habilitar servidor TLS:
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
- Habilitar TLS de cliente:
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
Prevención de spam
- Requerir un EHLO/HELO válido:
smtpd_helo_required = yes
- Evitar ataques de recopilación de direcciones de correo electrónico:
disable_vrfy_command = yes
- Cambie los códigos de rechazo a permanentes (por defecto, Postfix emite códigos de error 4xx, lo que implica una falla temporal, necesitamos 5xx para errores permanentes):
unverified_recipient_reject_code = 550 unverified_sender_reject_code = 550 unknown_local_recipient_reject_code = 550
- Configurar la verificación de la dirección del remitente:
address_verify_map = btree:/var/spool/postfix/verify smtpd_sender_restrictions = hash:/etc/postfix/sender_access
- Cree /etc/postfix/sender_access y agregue:
#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
- Mitigar ataques de zombis y clientes rotos:
smtpd_error_sleep_time = 5s smtpd_soft_error_limit = 10 smtpd_hard_error_limit = 20
- Permitir canalización solo de clientes autenticados:
smtpd_data_restrictions = reject_unauth_pipelining
- Instalar postfix-policyd-spf-perl y habilitar la compatibilidad con 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/
Agregue esto a /etc/postfix/master.cf:
spfpolicy unix - n n - - spawn user=nobody argv=/usr/bin/perl /etc/postfix/postfix-policyd-spf-perl
- Añadir compatibilidad con DKIM:
Puede encontrar instrucciones sobre cómo agregar compatibilidad con DKIM aquí.
- Añadir compatibilidad con claves de dominio:
Las instrucciones sobre cómo agregar compatibilidad con claves de dominio se pueden encontrar aquí.
- Hacer que todo funcione depende de la opción smtpd_recipient_restrictions, por lo que la configuramos a continuación:
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 y ClamAV]
Para su clasificación de spam usando spamassassin y escaneo de virus usando clamav, usaremos la interfaz milter de postfix en lugar de usar el demonio amavisd-new, que requiere muchos recursos. Esta es una forma muy eficiente de hacerlo, ya que ni siquiera tenemos que ejecutar clamd, clamav milter hace el escaneo por sí mismo.
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
Crear archivos de base de datos
postmap /etc/postfix/canonical
postmap /etc/postfix/access
postmap /etc/postfix/virtual
postmap /etc/postfix/sender_access
Archivos de configuración de muestra
- principal.cf
- maestro.cf
- canónico
- virtuales
Cómo hacer alojamiento virtual con Virtualmin en CentOS 5.1 - Página 4
Configuración de palomar
Introducción
Esto configurará dovecot como nuestro servidor IMAP/POP3.
Configuración básica
Configuraremos Dovecot para IMAP y POP3 y deshabilitaremos SSL.
protocols = imap pop3 listen = * ssl_listen = * ssl_disable = yes
Maildir
Usaremos el formato maildir en lugar del formato mbox predeterminado.
mail_location = maildir:~/Maildir
Autenticación y SASL
Configure dovecot para usar LOGIN y PLAIN como mecanismos de autenticación, ya que muchos clientes de MS no pueden usar mecanismos de autenticación encriptados. También configuramos el socket SASL para permitir que postfix autentique las conexiones SMTP usando 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 } } }
Problemas del cliente
Algunos clientes de MS imap en la familia de Outlook tienen problemas con sus implementaciones de IMAP y POP3, por lo que debemos acomodarlos configurando estas soluciones alternativas:
protocol imap { imap_client_workarounds = outlook-idle delay-newmail } protocol pop3 { pop3_client_workarounds = outlook-no-nuls oe-ns-eoh }
Ejecutar IMAP detrás de proxy
El servidor imap está configurado para ejecutarse en el puerto 10143, de modo que el puerto 143 es manejado por el servidor proxy imap que mejorará el rendimiento de su correo web al almacenar en caché las conexiones al servidor imap. La opción de escucha en el protocolo configura esto.
protocol imap { imap_client_workarounds = outlook-idle delay-newmail listen = 127.0.0.1:10143 }
Archivos de muestra
- dovecot.conf
Configurar proxy Imap
Introducción
imapproxy se escribió para compensar a los clientes de correo web que no pueden mantener conexiones persistentes con un servidor IMAP. La mayoría de los clientes de correo web necesitan iniciar sesión en un servidor IMAP para casi todas las transacciones. Este comportamiento puede causar problemas de rendimiento trágicos en el servidor IMAP. imapproxy intenta solucionar este problema dejando abiertas las conexiones del servidor durante un breve período de tiempo después de que un cliente de correo web cierra la sesión. Cuando el cliente de correo web se vuelva a conectar, imapproxy determinará si hay una conexión en caché disponible y la reutilizará si es posible. - según el sitio web imapproxy.
Configuración
Realice los siguientes cambios en el archivo /etc/imapproxy.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
Archivos de muestra
- imapproxy.conf
Configuración de enlace
Introducción
Bind se configurará en chroot para mejorar la seguridad. También usaremos vistas para evitar el abuso del servidor dns.
Configuración básica
La configuración básica deshabilita por defecto las consultas recursivas y las transferencias de zona. También oscurecemos la versión de BIND que estamos ejecutando para que no nos afecten las vulnerabilidades de día cero de 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"; }; };
Registro
El registro se personaliza para eliminar el molesto "servidor cojo" y actualizar los errores que aparecen en los registros:
logging { category update { null; }; category update-security { null; }; category lame-servers{ null; }; };
Chroot
Asegúrese de que esté configurado en el archivo /etc/sysconfig/named (normalmente lo configura el paquete bind-chroot):
ROOTDIR=/var/named/chroot
Servidor de puntos
Deje que la máquina use este servidor para la resolución de dns edite /etc/resolv.conf y anteponga:
nameserver 127.0.0.1
Archivos de muestra
- nombrado.conf
- /etc/sysconfig/nombrado
Configuración de Vsftpd
Introducción
Usaremos vsftpd como nuestro servidor ftp. Esto tiene un mejor historial en comparación con los servidores proftpd y wuftpd.
Configuración básica
Nuestra configuración básica deshabilita a los usuarios anónimos y permite que los usuarios del sistema local se conecten al servidor 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
Chroot
Todos los usuarios serán chrooteados a sus directorios de inicio (excepto los nombres de usuario en el archivo /etc/vsftpd/chroot_list), lo que significa que no pueden salir y ver los archivos de otros usuarios.
chroot_list_enable=YES chroot_local_user=YES chroot_list_file=/etc/vsftpd/chroot_list
Usuarios prohibidos
Los usuarios agregados al archivo /etc/vsftpd/user_list no podrán iniciar sesión:
userlist_enable=YES
Archivos de muestra
- vsftpd.conf
- lista_de_usuarios
- lista_chroot
Cómo hacer alojamiento virtual con Virtualmin en CentOS 5.1 - Página 5
Configuración de Clamav Milter
- Editar /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"
- Revise el archivo de inicio para corregir los permisos de socket:
wget http://www.topdog-software.com/files/clamav-milter.patch
servicio mysqld start
mysqladmin -p crear bayes
mysql -p bayes
mysql -p
Almacenaremos los hashes de la imagen en una base de datos mysql para mejorar el rendimiento, de modo que las imágenes que ya hemos escaneado no se vuelvan a escanear, ya que OCR es una actividad que requiere muchos recursos.
mysql -p
mysqladmin -u fuzzyocr -p fuzzyocr contraseña
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:
parche /etc/init.d/clamav-milter Configuración de MySQL
Configuración básica
bind-address = 127.0.0.1
Establecer contraseña raíz
mysqladmin -u contraseña raíz NUEVA CONTRASEÑAConfiguración de SpamAssassin
Configuración básica
required_hits 5
report_safe 0
rewrite_header Subject [SPAM]
Crear base de datos MySQL
mysql> OTORGAR TODO EN bayes.* A [email protected] IDENTIFICADO POR 'contraseña';Configurar para usar 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
Configurar FuzzyOCR
Crear base de datos MySQL
Configuración básica
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
Haga que FuzzyOCR use la base de datos
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
Actualizaciones de la regla SARE
chmod 700 /etc/mail/spamassassin/sa-update-keys/
wget http://daryl.dostech.ca/sa- actualizar/sare/GPG.KEY
sa-update --importar 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/Configuración de Spamass-milter
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,