Publicado el

Instalar Jailkit en Linux

instalar-jailkit

Jailkit solo es necesario si se quiere hacer chroot a usuarios SSH. Advertencia: En el caso de ser usado DEBE instalarse ANTES que el ISPConfig o de lo contrario fallará. Puede instalarse con lo siguiente:

cd /tmp
wget http://olivier.sessink.nl/jailkit/jailkit-2.19.tar.gz
tar xvfz jailkit-2.19.tar.gz
cd jailkit-2.19
./configure
make
make install
cd ..
rm -rf jailkit-2.19*
Publicado el

Instalar Webalizer, y AWStats en Linux

Instalar-Webalizer-y-AWStats

Webalizer, y AWStats pueden instalarse con lo siguiente:

yum -y install webalizer awstats perl-DateTime-Format-HTTP perl-DateTime-Format-Builder

Edite el archivo /etc/httpd/conf.d/awstats.conf:

nano /etc/httpd/conf.d/awstats.conf

Y cambiar la línea:

Require local

a:

Require all granted

Y reiniciamos apache:

systemctl restart httpd.service
Publicado el

Instalar BIND en Linux

instalar-bind

BIND puede instalarse con lo siguiente:

yum -y install bind bind-utils haveged

Realice una copia de seguridad del archivo existente /etc/named.conf y cree uno nuevo de la siguiente manera:

cp /etc/named.conf /etc/named.conf_bak
cat /dev/null > /etc/named.conf
nano /etc/named.conf

El archivo debería quedar de la siguiente forma:

//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
options {
        listen-on port 53 { any; };
        listen-on-v6 port 53 { any; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        allow-query     { any; };
                allow-recursion {"none";};
        recursion no;
};
logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};
zone "." IN {
        type hint;
        file "named.ca";
};
include "/etc/named.conf.local";

Cree el archivo /etc/named.conf.local que se incluye al final de /etc/named.conf (/etc/named.conf.local posteriormente se rellenará con ISPConfig si crea zonas DNS en ISPConfig):

touch /etc/named.conf.local

Luego creamos los enlaces de inicio y arrancamos BIND:

systemctl enable named.service
systemctl start named.service
systemctl enable haveged.service
systemctl start haveged.service
Publicado el

Instalar PureFTP

instalar-pureftp

PureFTP puede instalarse con lo siguiente:

yum -y install pure-ftpd

Luego se deben agregar los enlaces para el arranque del sistema e iniciar PureFTP:

systemctl enable pure-ftpd.service
systemctl start pure-ftpd.service

Ahora debemos configurarlo para que acepte sesiones FTP y TLS. FTP es un protocolo muy inseguro porque sus usuarios y contraseñas se transmiten en texto plano. Al usar TLS la comunicación completa es cifrada haciéndolo más seguro.

OpenSSL se requiere para que funcione TLS por lo que para instalarlo ejecutamos:

yum install openssl

Ahora debemos activar TLS en PureFTP, para ello editamos su configuración y lo colocamos en 1:

nano /etc/pure-ftpd/pure-ftpd.conf

y nos aseguramos que TSL este en 1 de la siguiente forma:

[...]
# This option can accept three values :
# 0 : disable SSL/TLS encryption layer (default).
# 1 : accept both traditional and encrypted sessions.
# 2 : refuse connections that don't use SSL/TLS security mechanisms,
#     including anonymous sessions.
# Do _not_ uncomment this blindly. Be sure that :
# 1) Your server has been compiled with SSL/TLS support (--with-tls),
# 2) A valid certificate is in place,
# 3) Only compatible clients will log in.

TLS                      1
[...]

Para poder usar TLS debemos crear un certificado SSL con lo cual primero creamos el directorio:

mkdir /etc/ssl/private/

Ahora podemos crear el certificado SSL ejecutando:

openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem

Esto preguntará algunos parámetros a los cuales debemos responder lo siguiente:

 Country Name (2 letter code) [XX]: SIGLAS DEL PAIS
 State or Province Name (full name) []: NOMBRE DEL ESTADO
 Locality Name (eg, city) [Default City]: NOMBRE DE LA CIUDAD
 Organization Name (eg, company) [Default Company Ltd]: NOMBRE DE LA EMPRESA
 Organizational Unit Name (eg, section) []: NOMBRE DEL DEPARTAMENTO
 Common Name (eg, your name or your servers hostname) []: desarrollo1
 Email Address []: EMAIL DEL RESPONSABLE DEL SERVIDOR

Ahora debemos cambiar los permisos al certificado con:

chmod 600 /etc/ssl/private/pure-ftpd.pem

Y finalmente debemos reiniciar el PureFTP:

systemctl restart pure-ftpd.service

Eso es todo. Ahora puede intentar conectarse usando su cliente FTP; Sin embargo, debe configurar su cliente de FTP para que utilice TLS.

Publicado el

Instalar mod_python

instalar-mod-python

El módulo apache mod_python no está disponible como paquete RPM, por lo tanto lo compilaremos desde el origen. El primer paso es instalar los archivos de desarrollo de python y descargar la versión actual de mod_python como archivo tar.gz, para esto ejecutamos los siguientes comandos

yum -y install python-devel

cd /usr/local/src/
wget http://dist.modpython.org/dist/mod_python-3.5.0.tgz
tar xfz mod_python-3.5.0.tgz
cd mod_python-3.5.0

Y luego configurar y compilar el módulo.

./configure
make

Hay un error en el módulo compilado que hará que la instalación falle con el error “version =”fatal: Not a git repository (or any of the parent directories): .git”. Para arreglarlo, ejecute este comando sed en una sola línea.

sed -e 's/(git describe --always)/(git describe --always 2>\/dev\/null)/g' -e 's/`git describe --always`/`git describe --always 2>\/dev\/null`/g' -i $( find . -type f -name Makefile\* -o -name version.sh )

A continuación, instale el módulo con este comando.

make install

Y habilite el módulo en Apache:

echo 'LoadModule python_module modules/mod_python.so' > /etc/httpd/conf.modules.d/10-python.conf
systemctl restart httpd.service
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.