Servidor Perfecto · 9 min read · Feb 11, 2026

El Servidor Perfecto - Fedora 15 x86_64 [ISPConfig 3] - Página 5

15 Instalar Amavisd-new, SpamAssassin Y ClamAV

Para instalar amavisd-new, spamassassin y clamav, ejecuta el siguiente comando:

yum install amavisd-new spamassassin clamav clamav-data clamav-server clamav-update unzip bzip2 perl-DBD-mysql

Cuando instalamos ClamAV, se instaló un trabajo cron que intenta actualizar la base de datos de virus de ClamAV cada tres horas. Pero esto solo funciona si lo habilitamos en /etc/sysconfig/freshclam y /etc/freshclam.conf:

vi /etc/sysconfig/freshclam

Comenta la línea FRESHCLAM_DELAY al final:

| ## Al cambiar la periodicidad de las ejecuciones de freshclam en el crontab, ## este valor también debe ajustarse. Su valor es el intervalo entre ## dos ejecuciones sucesivas de freshclam en minutos. Por ejemplo, para el valor predeterminado ## ## | 0 */3 * * * ... ## ## la línea del crontab, el valor es 180 (minutos). # FRESHCLAM_MOD= ## Un valor predefinido para el retraso en segundos. Por defecto, el valor es ## calculado por el programa 'hostid'. Este valor predefinido garantiza ## intervalos constantes de 3 horas entre dos ejecuciones sucesivas de freshclam. ## ## Esta opción acepta dos valores especiales: ## 'disabled-warn' ... desactiva la actualización automática de freshclam y ## emite una advertencia ## 'disabled' ... desactiva la actualización automática de freshclam silenciosamente # FRESHCLAM_DELAY= ### !!!!! ¡ELIMÍNAME! !!!!! ### ELIMÍNAME: Por defecto, la actualización de freshclam está desactivada para evitar ### ELIMÍNAME: acceso a la red sin activación previa #FRESHCLAM_DELAY=disabled-warn # ELIMÍNAME |

vi /etc/freshclam.conf

Comenta la línea Example:

| [...] # Comenta o elimina la línea de abajo. #Example [...] |

Luego iniciamos freshclam, amavisd y clamd…

sa-update
chkconfig –levels 235 amavisd on
chkconfig –levels 235 clamd.amavisd on
/usr/bin/freshclam
/etc/init.d/amavisd start
/etc/init.d/clamd.amavisd start

A continuación, haz esto:

rm -f /var/spool/amavisd/clamd.sock
mkdir /var/run/clamav.amavisd /var/run/clamd.amavisd /var/run/amavisd
chown amavis /var/run/clamav.amavisd
chown amavis /var/run/clamd.amavisd
chown amavis /var/run/amavisd
ln -sf /var/spool/amavisd/clamd.sock /var/run/clamav.amavisd/clamd.sock
ln -sf /var/spool/amavisd/clamd.sock /var/run/clamd.amavisd/clamd.sock
/etc/init.d/clamd.amavisd restart

Fedora 15 tiene un directorio /run para almacenar datos en tiempo de ejecución. /run ahora es un tmpfs, y /var/run y /var/lock ahora están montados en /run y /run/lock desde tmpfs, y por lo tanto se vacían al reiniciar (ver https://docs.fedoraproject.org/en-US/Fedora/15/html/Release_Notes/sect-Release_Notes-Changes_for_SysAdmin.html para más detalles).

Esto significa que después de un reinicio, los directorios /var/run/clamav.amavisd, /var/run/clamd.amavisd y /var/run/amavisd que acabamos de crear ya no existirán, y por lo tanto clamd y amavisd no podrán iniciarse. Por lo tanto, creamos el archivo /etc/tmpfiles.d/amavisd.conf ahora que creará estos directorios al inicio del sistema (ver http://0pointer.de/public/systemd-man/tmpfiles.d.html para más detalles):

vi /etc/tmpfiles.d/amavisd.conf

| D /var/run/clamav.amavisd 0755 amavis root - D /var/run/clamd.amavisd 0755 amavis root - D /var/run/amavisd 0755 amavis root - |

16 Instalando mod_php, mod_fcgi/PHP5, Y suPHP

ISPConfig 3 te permite usar mod_php, mod_fcgi/PHP5, cgi/PHP5 y suPHP en una base por sitio web.

Podemos instalar Apache2 con mod_php5, mod_fcgid y PHP5 de la siguiente manera:

yum install php php-devel php-gd php-imap php-ldap php-mysql php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-mssql php-snmp php-soap php-tidy curl curl-devel perl-libwww-perl ImageMagick libxml2 libxml2-devel mod_fcgid php-cli httpd-devel

A continuación, abrimos /etc/php.ini…

vi /etc/php.ini

… y cambiamos la configuración de informes de errores (para que no se muestren más avisos) y descomentamos cgi.fix_pathinfo=1:

| [...] ;error_reporting = E_ALL & ~E_DEPRECATED error_reporting = E_ALL & ~E_NOTICE [...] ; cgi.fix_pathinfo proporciona soporte *real* para PATH_INFO/PATH_TRANSLATED para CGI. PHP's ; el comportamiento anterior era establecer PATH_TRANSLATED en SCRIPT_FILENAME, y no entender ; qué es PATH_INFO. Para más información sobre PATH_INFO, consulta las especificaciones de cgi. Establecer ; esto en 1 hará que PHP CGI corrija sus rutas para ajustarse a la especificación. Un ajuste ; de cero hace que PHP se comporte como antes. El valor predeterminado es 1. Debes corregir tus scripts ; para usar SCRIPT_FILENAME en lugar de PATH_TRANSLATED. ; http://www.php.net/manual/en/ini.core.php#ini.cgi.fix-pathinfo cgi.fix_pathinfo=1 [...] |

A continuación, instalamos suPHP:

cd /tmp
wget http://www.suphp.org/download/suphp-0.7.1.tar.gz
tar xvfz suphp-0.7.1.tar.gz
cd suphp-0.7.1/
./configure –prefix=/usr –sysconfdir=/etc –with-apr=/usr/bin/apr-1-config –with-apxs=/usr/sbin/apxs –with-apache-user=apache –with-setid-mode=owner –with-php=/usr/bin/php-cgi –with-logfile=/var/log/httpd/suphp_log –enable-SUPHP_USE_USERGROUP=yes
make
make install

Luego agregamos el módulo suPHP a nuestra configuración de Apache…

vi /etc/httpd/conf.d/suphp.conf

| LoadModule suphp_module modules/mod_suphp.so |

… y creamos el archivo /etc/suphp.conf de la siguiente manera:

vi /etc/suphp.conf

| [global] ;Ruta al archivo de registro logfile=/var/log/httpd/suphp.log ;Nivel de registro loglevel=info ;Usuario bajo el cual se ejecuta Apache webserver_user=apache ;Ruta en la que deben estar todos los scripts docroot=/ ;Ruta a chroot() antes de ejecutar el script ;chroot=/mychroot ; Opciones de seguridad allow_file_group_writeable=true allow_file_others_writeable=false allow_directory_group_writeable=true allow_directory_others_writeable=false ;Verificar si el script está dentro de DOCUMENT_ROOT check_vhost_docroot=true ;Enviar mensajes de error menores al navegador errors_to_browser=false ;Variable de entorno PATH env_path=/bin:/usr/bin ;Umask a establecer, especificar en notación octal umask=0077 ; UID mínimo min_uid=100 ; GID mínimo min_gid=100 [handlers] ;Manejador para scripts php x-httpd-suphp="php:/usr/bin/php-cgi" ;Manejador para scripts CGI x-suphp-cgi="execute:!self" |

Finalmente reiniciamos Apache:

/etc/init.d/httpd restart

16.1 Ruby

A partir de la versión 3.0.3, ISPConfig 3 tiene soporte integrado para Ruby. En lugar de usar CGI/FastCGI, ISPConfig depende de que mod_ruby esté disponible en el Apache del servidor.

Para Fedora 15, no hay un paquete mod_ruby disponible, por lo que debemos compilarlo nosotros mismos. Primero instalamos algunos requisitos previos:

yum install ruby ruby-devel

A continuación, descargamos e instalamos mod_ruby de la siguiente manera:

cd /tmp
wget http://modruby.net/archive/mod_ruby-1.3.0.tar.gz
tar zxvf mod_ruby-1.3.0.tar.gz
cd mod_ruby-1.3.0/
./configure.rb –with-apr-includes=/usr/include/apr-1
make
make install

Finalmente, debemos agregar el módulo mod_ruby a la configuración de Apache, por lo que creamos el archivo /etc/httpd/conf.d/ruby.conf…

vi /etc/httpd/conf.d/ruby.conf

| LoadModule ruby_module modules/mod_ruby.so RubyAddPath /1.8 |

… y reiniciamos Apache:

/etc/init.d/httpd restart

(Si omites la directiva RubyAddPath /1.8, verás errores como los siguientes en el registro de errores de Apache cuando llames a archivos Ruby:

[Thu May 26 02:05:05 2011] [error] modruby: ruby:0:in `require’: no such file to load – apache/ruby-run (LoadError)
[Thu May 26 02:05:05 2011] [error] mod_ruby: failed to require apache/ruby-run
[Thu May 26 02:05:05 2011] [error] mod_ruby: error in ruby ) #### 16.2 WebDAV WebDAV debería estar ya habilitado, pero para comprobarlo, abre /etc/httpd/conf/httpd.conf y asegúrate de que los siguientes tres módulos estén activos: vi /etc/httpd/conf/httpd.conf | [...] LoadModule auth_digest_module modules/mod_auth_digest.so [...] LoadModule dav_module modules/mod_dav.so [...] LoadModule dav_fs_module modules/mod_dav_fs.so [...] | Si tienes que modificar /etc/httpd/conf/httpd.conf, no olvides reiniciar Apache después: /etc/init.d/httpd restart ### 17 Instalar PureFTPd PureFTPd se puede instalar con el siguiente comando: yum install pure-ftpd Luego crea los enlaces de inicio del sistema y comienza PureFTPd: chkconfig –levels 235 pure-ftpd on
/etc/init.d/pure-ftpd start Ahora configuramos PureFTPd para permitir sesiones FTP y TLS. FTP es un protocolo muy inseguro porque todas las contraseñas y todos los datos se transfieren en texto claro. Al usar TLS, toda la comunicación puede ser cifrada, haciendo que FTP sea mucho más seguro. OpenSSL es necesario para TLS; para instalar OpenSSL, simplemente ejecutamos: yum install openssl Abre /etc/pure-ftpd/pure-ftpd.conf… vi /etc/pure-ftpd/pure-ftpd.conf Si deseas permitir sesiones FTP y TLS, establece TLS en 1: | ``` […] # Esta opción puede aceptar tres valores : # 0 : desactivar la capa de cifrado SSL/TLS (predeterminado). # 1 : aceptar tanto sesiones tradicionales como cifradas. # 2 : rechazar conexiones que no utilicen mecanismos de seguridad SSL/TLS, # incluidas las sesiones anónimas. # No _descomentes
esto a ciegas. Asegúrate de que : # 1) Tu servidor ha sido compilado con soporte SSL/TLS (–with-tls), # 2) Un certificado válido está en su lugar, # 3) Solo clientes compatibles iniciarán sesión. TLS 1 […] | Para usar TLS, debemos crear un certificado SSL. Lo creo en /etc/ssl/private/, por lo tanto, primero creo ese directorio: mkdir -p /etc/ssl/private/ Después, podemos generar el certificado SSL de la siguiente manera: openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem Nombre del país (código de 2 letras) [XX]: <-- Ingresa el nombre de tu país (por ejemplo, "DE"). Nombre del estado o provincia (nombre completo) []: <-- Ingresa el nombre de tu estado o provincia. Nombre de la localidad (por ejemplo, ciudad) [Ciudad Predeterminada]: <-- Ingresa tu ciudad. Nombre de la organización (por ejemplo, empresa) [Empresa Predeterminada Ltd]: <-- Ingresa el nombre de tu organización (por ejemplo, el nombre de tu empresa). Nombre de la unidad organizativa (por ejemplo, sección) []: <-- Ingresa el nombre de tu unidad organizativa (por ejemplo, "Departamento de TI"). Nombre común (por ejemplo, tu nombre o el nombre de host de tu servidor) []: <-- Ingresa el nombre de dominio completamente calificado del sistema (por ejemplo, "server1.example.com"). Dirección de correo electrónico []: <-- Ingresa tu dirección de correo electrónico. Cambia los permisos del certificado SSL: chmod 600 /etc/ssl/private/pure-ftpd.pem Finalmente reinicia PureFTPd: /etc/init.d/pure-ftpd restart Eso es todo. Ahora puedes intentar conectarte usando tu cliente FTP; sin embargo, debes configurar tu cliente FTP para usar TLS. ### 18 Instalar BIND Podemos instalar BIND de la siguiente manera: yum install bind bind-utils A continuación, abre /etc/sysconfig/named... vi /etc/sysconfig/named ... y comenta la línea ROOTDIR=/var/named/chroot: | # Opciones del proceso BIND named # ~~~~~~ # Actualmente, puedes usar las siguientes opciones: # # ROOTDIR=”/var/named/chroot” – ejecutará named en un entorno chroot. # debes configurar el entorno chroot # (instalar el paquete bind-chroot) antes # de hacer esto. # NOTA: # Estos directorios se montan automáticamente en chroot si están # vacíos en el directorio ROOTDIR. Esto simplificará el mantenimiento de tu # entorno chroot. # - /var/named # - /etc/pki/dnssec-keys # - /etc/named # - /usr/lib64/bind o /usr/lib/bind (dependiente de la arquitectura) # # Estos archivos también se montan si el archivo de destino no existe en # chroot. # - /etc/named.conf # - /etc/rndc.conf # - /etc/rndc.key # - /etc/named.rfc1912.zones # - /etc/named.dnssec.keys # - /etc/named.iscdlv.key # # No olvides agregar “$AddUnixListenSocket /var/named/chroot/dev/log” # línea a tu archivo /etc/rsyslog.conf. De lo contrario, tu registro se # romperá cuando se reinicie el demonio rsyslogd (debido a una actualización, por ejemplo). # # OPTIONS=”whatever” – Estas opciones adicionales se pasarán a named # al inicio. No agregues -t aquí, usa ROOTDIR en su lugar. # # KEYTAB_FILE=”/dir/file” – Especifica el archivo de clave del servicio named (para GSS-TSIG) # # DISABLE_ZONE_CHECKING – Por defecto, el script de inicio llama a named-checkzone # utilidad para cada zona para asegurar que todas las zonas son # válidas antes de que named comience. Si estableces esta opción # en ‘yes’, entonces el script de inicio no realiza esas # verificaciones. #ROOTDIR=/var/named/chroot | Luego creamos los enlaces de inicio: chkconfig –levels 235 named on No iniciamos BIND ahora porque debe ser configurado primero - esto será hecho automáticamente por el instalador de ISPConfig 3 más adelante. ### 19 Instalar Vlogger, Webalizer, Y AWStats Vlogger, webalizer y AWStats se pueden instalar de la siguiente manera: yum install webalizer awstats perl-DateTime-Format-HTTP perl-DateTime-Format-Builder cd /tmp wget http://n0rp.chemlab.org/vlogger/vlogger-1.3.tar.gz tar xvfz vlogger-1.3.tar.gz mv vlogger-1.3/vlogger /usr/sbin/ rm -rf vlogger* ### 20 Instalar Jailkit Jailkit es necesario solo si deseas chroot usuarios SSH. Se puede instalar de la siguiente manera (importante: Jailkit debe ser instalado antes de ISPConfig - no se puede instalar después!): cd /tmp wget http://olivier.sessink.nl/jailkit/jailkit-2.14.tar.gz tar xvfz jailkit-2.14.tar.gz cd jailkit-2.14 ./configure make make install cd .. rm -rf jailkit-2.14* ### 21 Instalar fail2ban Esto es opcional pero recomendado, porque el monitor de ISPConfig intenta mostrar el registro: yum install fail2ban chkconfig --levels 235 fail2ban on /etc/init.d/fail2ban start ### 22 Instalar rkhunter rkhunter se puede instalar de la siguiente manera: yum install rkhunter ```

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.