Publicado el

Instalar Apache con mod_php, mod_fcgi/PHP5 y PHP-FPM

instalar-apache-con-mod_php-mod_fcgi/PHP5-y-PHP-FPM

ISPConfig 3 permite configurar mod_php, mod_fcgi/PHP, cgi/PHP, y PHP-FPM por cada sitio web.

Se puede instalar Apache2 con mod_php5, mod_fcgid, y PHP con:

yum -y install php php-devel php-gd php-imap php-ldap php-mysql php-odbc php-pear php-xml php-xmlrpc php-pecl-apc 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 php-fpm wget

Luego abrimos /etc/php.ini para cambiar el error reporting, establecer la zona horaria y descomentar cgi.fix_pathinfo=1, ejecutando:

nano /etc/php.ini

Debe quedar como:

[...]
;error_reporting = E_ALL & ~E_DEPRECATED
error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT
[...]
; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI.  PHP''s
; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok
; what PATH_INFO is.  For more information on PAppp.tldTH_INFO, see the cgi specs.  Setting
; this to 1 will cause PHP CGI to fix its paths to conform to the spec.  A setting
; of zero causes PHP to behave as before.  Default is 1.  You should fix your scripts
; to use SCRIPT_FILENAME rather than PATH_TRANSLATED.
; http://www.php.net/manual/en/ini.core.php#ini.cgi.fix-pathinfo
cgi.fix_pathinfo=1
[...]
date.timezone = 'America/Caracas'
[...]

Habilite httpd y PHP-FPM para que comiencen en el arranque e inicie el servicio PHP-FPM.

systemctl start php-fpm.service
systemctl enable php-fpm.service
systemctl enable httpd.service

Finalmente, reiniciamos el Apache:

systemctl restart httpd.service

Ahora vamos a añadir soporte para Let’s encrypt.

mkdir /opt/certbot
cd /opt/certbot
wget https://dl.eff.org/certbot-auto
chmod a+x ./certbot-auto

Ahora ejecute el comando certbot-auto que descargará e instalará el software y sus dependencias.

./certbot-auto

El comando le dirá entonces que “no se encontraron nombres en los archivos de configuración” y le pregunta si continuará, por favor seleccione “c” para cancelar aquí ya que los certs serán creados por ispconfig.

Publicado el

Instalar Amavisd, Spamassassin, ClamAV, y Postgrey

instalar-amavisd-spamassassin-clamav-y-postgrey

Para instalar amavisd-new, SpamAssassin y ClamAV, ejecute el siguiente comando:

yum -y install amavisd-new spamassassin clamav-server clamav-data clamav-update clamav-filesystem clamav clamav-scanner-systemd clamav-devel clamav-lib clamav-server-systemd unzip bzip2 perl-DBD-mysql postgrey re2c

Editar el archivo de configuración freshclam /etc/freshclam.conf

nano /etc/freshclam.conf

Y comente la línea “Example”

[....]
# Example
[....]

Para habilitar las actualizaciones automáticas de firma de ClamAV con freshclam, edite el archivo /etc/sysconfig/freshclam:

nano /etc/sysconfig/freshclam

Y coloque un # delante de la última línea para que se vea así:

# FRESHCLAM_DELAY=disabled-warn # REMOVE ME

Ahora debemos arrancar freshclam, amavisd, and clamd.amavisd:

sa-update
freshclam
systemctl enable amavisd.service
systemctl start amavisd.service
systemctl start clamd@amavisd.service
systemctl enable postgrey.service
systemctl start postgrey.service
Publicado el

Crear la Contraseña de MySQL y Configurar phpMyAdmin

crear-la-contraseña-de-mysql-y-configurar-phpmyadmin

Para crear la contraseña del usuario root de MySQL ejecutamos:

mysql_secure_installation

Debemos responder a las preguntas con las acciones resaltadas en negrilla:

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we''ll need the current
password for the root user. If you''ve just installed MariaDB, and
you haven''t set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none):'presione ENTER'
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Set root password? [Y/n] 'presione ENTER'
New password: 'Coloque su clave de root de la base de datos y anótela, luego ENTER'
Re-enter new password: 'Coloque de nuevo su clave de root de la base de datos, luego ENTER'
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] 'presione ENTER'
 ... Success!

Normally, root should only be allowed to connect from ''localhost''.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] 'presione ENTER'
 ... Success!

By default, MariaDB comes with a database named ''test'' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] 'presione ENTER'
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] 'presione ENTER'
 ... Success!

Cleaning up...



All done! If you''ve completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB![root@desarrolloN tmp]#

Ahora debemos configurar phpMyAdmin para que acepte conexiones adicionales a localhost, comentando la sección <Directory “/usr/share/phpmyadmin”> en:

nano /etc/httpd/conf.d/phpMyAdmin.conf

Debe quedar como:

# phpMyAdmin - Web based MySQL browser written in php
#
# Allows only localhost by default
#
# But allowing phpMyAdmin to anyone other than localhost should be considered
# dangerous unless properly secured by SSL

Alias /phpMyAdmin /usr/share/phpMyAdmin
Alias /phpmyadmin /usr/share/phpMyAdmin

<Directory /usr/share/phpMyAdmin/>
   <IfModule mod_authz_core.c>
     # Apache 2.4
     <RequireAny>
     #  Require ip 127.0.0.1
     #  Require ip ::1
        Require all granted
     </RequireAny>
   </IfModule>
   <IfModule !mod_authz_core.c>
     # Apache 2.2
     Order Deny,Allow
     Deny from All
     Allow from 127.0.0.1
     Allow from ::1
   </IfModule>
</Directory>

Ahora cambiamos la autenticación de phpMyAdmin de cookie a http con:

nano /etc/phpMyAdmin/config.inc.php

Debe quedar como:

[...]
/* Authentication type */
$cfg['Servers'][$i]['auth_type'] = 'http';
[...]

Ahora se crean los enlaces de arranque del Apache y se inicia:

systemctl enable  httpd.service
systemctl restart  httpd.service

Ahora podemos usar un navegador para entrar por http://desarrolloN/phpmyadmin/ o por http://192.168.1.X/phpmyadmin/ (donde N es el número del servidor y X es el número de la IP asignada)e ingresar con el usuario root y la nueva contraseña del usuario root de MySQL que hemos creado.

Publicado el

Instalar Postfix en Linux

instalar-posfix

Para instalar Postfix usamos:

yum -y install postfix

Ahora debemos apagar Sendmail y arrancar Postfix y MariaDB (MySQL) ejecutando:

systemctl enable mariadb.service
systemctl start mariadb.service

systemctl stop sendmail.service
systemctl disable sendmail.service
systemctl enable postfix.service
systemctl restart postfix.service

Inhabilitamos a sendmail para asegurarnos de que no se inicie en caso de que esté instalado en su servidor. Por lo tanto, el mensaje de error “Error al emitir la llamada al método: Unit sendmail.service not loaded.” Puede ser ignorado.

Publicado el

Instalar el Servidor de Correos Dovecot en Linux

instalar-el-servidor-de-correos

Servidor de Correos Dovecot (para ISPConfig mayor a la versión 3.X)

Para instalar Dovecot como manejador de correos podemos ejecutar:

yum -y install dovecot dovecot-mysql dovecot-pigeonhole

Se debe crear un archivo vacio denominado dovecot-sql.conf y dos enlaces simbólicos ejecutando:

touch /etc/dovecot/dovecot-sql.conf
ln -s /etc/dovecot/dovecot-sql.conf /etc/dovecot-sql.conf
ln -s /etc/dovecot/dovecot.conf /etc/dovecot.conf

Ahora tenemos que crear los enlaces para el arranque del sistema e iniciar Dovecot, con:

systemctl enable dovecot
systemctl start dovecot
Publicado el

Instalar MySQL, Apache, PHP y NTP en un servidor linux

instalar-myslq-apache-php-y-ntp

Para instalar MySQL, Apache y PHP en una sola línea podemos ejecutar:

yum -y install ntp httpd mod_ssl mariadb-server php php-mysql php-mbstring phpmyadmin

Para garantizar que el servidor no pueda ser atacado a través de la vulnerabilidad HTTPOXY, desactivaremos el encabezado HTTP_PROXY en apache globalmente.

Agregue la regla deL encabezado de apache al final del archivo httpd.conf:

echo "RequestHeader unset Proxy early" >> /etc/httpd/conf/httpd.conf

Y reinicie httpd para aplicar el cambio de configuración.

service httpd restart
Publicado el

Instalar y Configurar el Manejo de Cuotas de Espacio en Disco

instalar-y-configurar-el-manejo-de-cuotas-de-espacio-en-disco

Las cuotas permiten especificar límites en el uso de disco que puede ocupar un usuario o un grupo. Obligan a los usuarios a mantenerse debajo de su límite de consumo de disco, quitándoles su habilidad de consumir espacio ilimitado de disco en un sistema.

Para instalar el sistema de cuotas de Linux debemos ejecutar:

yum -y install quota

Ahora comprobamos si la cuota ya está habilitada para el sistema de archivos donde se almacenan los sitios web (/var/www) y los datos de maildir (var/vmail). En este ejemplo de configuración, tenemos una gran partición raíz, así que buscamos ‘/’:

mount | grep ' / '

Esto deberá mostrar algo como:

[root@desarrolloN ~]# mount | grep ' / '
/dev/mapper/centos-root on / type xfs (rw,relatime,attr2,inode64,noquota)
[root@desarrolloN ~]#

Si tiene una partición /var diferente, utilice:

mount | grep ' /var '

Si la línea contiene la palabra “noquota”, proceda con los siguientes pasos para habilitar la cuota.

Habilitación de la cuota en la partición / (root)

Normalmente se habilitará la cuota en el archivo /etc/fstab, pero si el sistema de archivos es el sistema de archivos raíz “/”, entonces la cuota debe ser habilitada por un parámetro de arranque del kernel de Linux.
Edite el archivo de configuración de grub:

nano /etc/default/grub

Busque la línea que comienza con GRUB_CMDLINE_LINUX y agregue rootflags=uquota,gquota a los parámetros de la línea de comandos para que la línea resultante tenga este aspecto:

GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet rootflags=uquota,gquota"

Y aplique los cambios ejecutando el siguiente comando.

cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg_bak
grub2-mkconfig -o /boot/grub2/grub.cfg

Y reinicie el servidor.

reboot

Ahora compruebe si la cuota está habilitada:

mount | grep ' / '

Deberá mostrar algo como:

[root@desarrolloN ~]# mount | grep ' / '
/dev/mapper/centos-root on / type xfs (rw,relatime,attr2,inode64,usrquota,grpquota)
[root@desarrolloN ~]#

Cuando la cuota está activa, podemos ver “usrquota,grpquota” en la lista de opciones de montaje.

Habilitar la cuota en una partición /var separada

Si tiene una partición /var diferente, edite /etc/fstab y añada ,uquota,gquota a la partición / (/dev/mapper/centos-var):

nano /etc/fstab

Debería mostrar algo como:

#
# /etc/fstab
# Created by anaconda on Sun Sep 21 16:33:45 2014
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /                       xfs     defaults        1 1
/dev/mapper/centos-var /var                     xfs     defaults,uquota,gquota        1 2
UUID=9ac06939-7e43-4efd-957a-486775edd7b4 /boot                   xfs     defaults        1 3
/dev/mapper/centos-swap swap                    swap    defaults        0 0

Ahora, para habilitar la quota ejecute los siguientes comandos:

mount -o remount /var
quotacheck -avugm
quotaon -avug

Cuando aparezca un error de que no hay ninguna partición con la cuota activada, reinicie el servidor antes de continuar.

Publicado el

Habilitar Repositorios, Actualizar Paquetes Básicos de Yum e Instalar Adionales Requeridos

habilitar-repositorios-y-actualizar-paquetes-basicos-de-yum

Yum es una aplicación de CentOS que permite instalar / desinstalar otras aplicaciones para Linux que vienen empaquetadas bajo el formato RPM oriundo de Red Hat. Los paquetes RPM provienen de repositorios que deben estar predefinidos en el sistema. Yum obtiene automáticamente las dependencias entre paquetes y previene sobre lo que debe existir para poder instalar correctamente los paquetes. Esto permite hacer más fácil la actualización sin tener que manipular manualmente cada RPM que se utiliza.

Para actualizar los paquetes básicos de Yum primero debemos importar las llaves GPG para los paquetes de software, esto se hace con:

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*

A continuación, habilitamos el repositorio EPEL en nuestro sistema CentOS ya que muchos de los paquetes que vamos a instalar no están disponibles en los repositorios oficiales de CentOS 7:

yum -y install epel-release
yum -y install yum-priorities

Editar:

nano /etc/yum.repos.d/epel.repo

y a gregar la línea priority=10 a la sección [epel]:

[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch
failovermethod=priority
enabled=1
priority=10
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
[...]

Luego debemos actualizar los paquetes ya existentes en el sistema (tomará algunos minutos):

yum -y update

Después que Yum ha actualizado todo y nos permite continuar, debemos instalar varios paquetes adicionales que se requieren en el servidor.

Para instalar un paquete que no esté instalado ya, hay que usar la opción de yum “install”, de la forma:

yum install [nombre-del-paquete]

Empezamos con:

yum -y groupinstall 'Development Tools'

A su vez, para instalar varios paquetes simultáneamente es posible colocar los nombres de los mismos separados por espacios.

Otros comandos importantes de Yum son:

# yum remove [nombre-del-paquete]: Para quitar un paquete ya instalado

.# yum search [cualquier-nombre]: Para buscar un paquete por su nombre.
Publicado el

Deshabilitar SELinux

deshabilitar-selinux

SELinux es una extensión de seguridad de CentOS que debería proporcionar mayor seguridad. En realidad no se necesita para configurar un sistema seguro, y por lo general causa más problemas que ventajas. Por lo tanto podemos desactivarlo (esto es necesario para poder instalar ISPConfig más adelante).

Editar el archivo:

nano /etc/selinux/config

y colocar SELinux = disabled :

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.
SELINUXTYPE=targeted

Luego debemos guardar el archivo y reiniciar el servidor con el comando reboot