Apache2 + ubuntu – configurar un subdominio

Resgitradora

Primero en tu registradora edita el ns record de tu domino para apuntarlo al IP del nuevo servidor.

subdominio type A ip 100.100.100.100

Ubuntu

Ingresar por el terminal al directorio del servidor Apache

#ingresar al directorio
cd /etc/apache2/sites-available/

#editar el archivo 000-deafult.conf
sudo nano 000-default.conf

Agregar al archivo el siguiente código

<VirtualHost *:80>
    DocumentRoot /var/www/subdominio
    ServerName subdominio.dominio.com
<Directory />
        Options FollowSymLinks
        AllowOverride All
        Require all granted
</Directory>
<Directory /var/www/subdominio>
	Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Require all granted
	Order allow,deny	
	allow from all
</Directory>
 
    ErrorLog ${APACHE_LOG_DIR}/subdominio.error.log
    CustomLog ${APACHE_LOG_DIR}/subdominio.access.log combined
</VirtualHost>

Reiniciar el servidor Apache

sudo service apache2 restart

Configuración de seguridad de WordPress en Apache 2

///etc/apache2/conf-enabled/security.conf

ServerTokens Prod
Set ServerSignature Off

#bloquear directorio git
<DirectoryMatch "/\.git">
    Require all denied
</DirectoryMatch>
#proteger el acceso directo a los archivos
<FilesMatch "^(wp-config\.php|php\.ini|php5\.ini|install\.php|php\.info|readme\.md|README\.md|readme\.html|bb-config\.php|\.htaccess|\.htpasswd|readme\.txt|timthumb\.php|error_log|error\.log|PHP_errors\.log|\.svn)">
    Require all denied
</FilesMatch>

#prevenir el acceso a los archivos JSON de configuración 
<FilesMatch "\.(json)$">
    Require all denied
</FilesMatch>

#prevenir el acceso a los archivos SQL 
<FilesMatch "\.(sql)$">
    Require all denied
</FilesMatch>

#prevenir el acceso a los xmlrpc
<FilesMatch "^(xmlrpc\.php)">
  Require all denied
</FilesMatch>Activar los headers en Apache2//ejecutar ene l terminal
sudo a2enmod headersAgregar la siguiente configuración#apache2.conf
Header set X-Content-Type-Options: NOSNIFF
Header set X-Frame-Options: SAMEORIGINPara prevenir la navegación por los directorios aplicar la siguiente configuración#apache2.conf
<Directory /var/www/>
        Options -Indexes
        Options FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

¿Cómo configurar la seguridad en Apache 2?

Primero no te olvides activar los headers para apache

//en terminal linux
sudo a2enmod headers

Agregar las siguientes lineas a la configuración del apache

//etc/apache2/apache2.conf
<IfModule mod_headers.c>
  <Directory /directorio/de/mi/folder>
    Header always set X-XSS-Protection "1; mode=block"
    Header always set x-Frame-Options "SAMEORIGIN"
    Header always set X-Content-Type-Options "nosniff"
    Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
    Header always set Content-Security-Policy "default-src 'self'; font-src *;img-src * data:; script-src *; style-src *;"
    Header always set Referrer-Policy "strict-origin"
  </Directory>
</IfModule>

##para ser mas flexible en las políticas de seguridad aplique
Header always set Content-Security-Policy "default-src 'self'; connect-src *; font-src * data:; frame-src *; img-src * data:; media-src *; object-src *; script-src * 'unsafe-inline' 'unsafe-eval'; style-src * 'unsafe-inline';"

Verificar en 1 de las siguientes páginas

https://securityheaders.com/

https://tools.geekflare.com/header-security-test

https://tools.geekflare.com/header-security-test