Guía para montar un servidor VPS WEB HTTPS basado en ubuntu, ligeramente seguro

Los hosting compartidos o gratis no son la mejor solución para usted, ¡monte su maquina personalizada!, la nube hoy oferta mucho más.

1)Instalar Linux como servidor

Dependiendo si tenemos como proveedor Amazon-AWS,Heroku,RackSpace,Digital Ocean o una solución interna, el primer paso siempre es montar un servidor Ubuntu.

El paso que personalmente recomiendo es una vez que comenzamos a securizar un servicio, es actualizar a una versión que el fabricante recomienda como la necesaria.

sudo apt update && sudo apt upgrade

2) Procedemos a instalar Apache

sudo apt install apache2

3) Configuramos el virtual host, para esto copiamos la configuración por defecto a un “MIDOMINIO.ALGO.conf”

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/midominio.algo.conf
sudo nano /etc/apache2/sites-available/midominio.algo.conf

4) Configuración correcta de virtualhost

<VirtualHost *:80>
    ServerAdmin admin@midominio.algo
    ServerName midominio.algo
    ServerAlias midominio.algo
    DocumentRoot /var/www/midominio.algo/public_html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

5) Creamos la carpeta de logs

sudo mkdir -p /var/www/html/midominio.algo/{public_html,logs}

6) Agregamos la configuración para activar el sitio

cd /etc/apache2/sites-available/
sudo a2ensite midominio.algo.conf

7) Reiniciamos servicio Web Apache

sudo systemctl reload apache2

8) Instalamos MYSQL SERVER y PHPmyAdmin

sudo apt install mysql-server
sudo apt-get install phpmyadmin php-mbstring php-gettext
sudo apt-get install php libapache2-mod-php php-mcrypt php-mysql
sudo apt-get install php-cli
sudo ln -s /usr/share/phpmyadmin/ /var/www/phpmyadmin

9) Reiniciar

sudo service apache2 restart

10) Apliquemos Seguridad

mysql_secure_installation
sudo apt-get install ufw
sudo ufw enable 
sudo ufw allow 22 
sudo ufw allow 443 
sudo systemctl stop dovecot.service
sudo systemctl disable dovecot.service sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

11) Editamos Fail2Ban

sudo nano /etc/fail2ban/jail.local

[sshd]
enabled  = true
port     = ssh
filter   = sshd
logpath  = /var/log/auth.log
maxretry = 5
bantime = 600

12) Reiniciamos el servicio FAIL2BAN

sudo systemctl restart fail2ban.service

13) Activamos las cabeceras de seguridad

sudo a2enmod headers
 service apache2 restart

14) Instalamos ModSecure

sudo apt-get install libapache2-modsecurity
sudo a2enmod security2
sudo mv /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf

15) Editar Modsecurity

sudo nano  /etc/modsecurity/modsecurity.conf
SecRuleEngine On
SecResponseBodyAccess Off
SecRequestBodyLimit 8388608
SecRequestBodyNoFilesLimit 131072
SecRequestBodyInMemoryLimit 262144

16) Instalar OWASP modesecurityConf

sudo rm -rf /usr/share/modsecurity-crs
sudo git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git /usr/share/modsecurity-crs
cd /usr/share/modsecurity-crs
sudo mv crs-setup.conf.example crs-setup.conf

17) Ultima edición del modsecurity

sudo nano  /etc/apache2/mods-enabled/security2.conf

SecDataDir /var/cache/modsecurity
IncludeOptional /etc/modsecurity/*.conf
IncludeOptional "/usr/share/modsecurity-crs/*.conf"
IncludeOptional "/usr/share/modsecurity-crs/rules/*.conf


sudo systemctl restart apache2.service

18) Instalar y activar mod_evasive

sudo apt-get install libapache2-mod-evasive

sudo nano /etc/apache2/mods-enabled/evasive.conf
DOSPageCount        5
DOSSiteCount        50
DOSPageInterval     1
DOSSiteInterval     1
DOSBlockingPeriod   600
DOSLogDir           "/var/log/mod_evasive"


sudo mkdir /var/log/mod_evasive
sudo chown -R www-data: /var/log/mod_evasive
sudo systemctl restart apache2.service

19) Asignamos los permisos correspondientes para el servicio web

sudo chown -R www-data /var/www/html/dominio.algo/public_html
sudo chmod 0775  /var/www/html/dominio.algo
sudo chown -R www-data /var/www/html/dominio.algo/
umask 0002 /var/www/html/dominio.algo/ -R
usermod -a -G www-data web
sudo chmod 777 -R /var/www

20) Complementos de php necesarios

apt-get install php-curl
sudo /etc/init.d/apache2 restart
sudo apt-get install php-zip
sudo apt-get install php-soap
sudo apt-get install php-curl php-gd php-mbstring php-mcrypt php-xml php-xmlrpc
sudo apt-get install php-intl

21) Procedemos a instalar certificado para tener HTTPS

Agregamos el repositorio

sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install python-certbot-apache
sudo certbot --apache -d dominio.algo
sudo certbot --apache -d dominio.algo -d www.dominio.algo

22) Verificar que quedo bien

https://www.ssllabs.com/ssltest/analyze.html?d=dominio.algo&latest
sudo certbot renew –dry-run

Eso a si todo amigos, en la próxima guía continuamos con Hardening de WordPress

Responder

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios .

WordPress.com.

Subir ↑

A %d blogueros les gusta esto: