secure_optimize_apache

secure_optimize_apache(){
    clear
    f_banner
    echo -e "\e[34m---------------------------------------------------------------------------------------------------------\e[00m"
    echo -e "\e[93m[+]\e[00m Optimizing Apache"
    echo -e "\e[34m---------------------------------------------------------------------------------------------------------\e[00m"
    echo ""
    cp templates/apache /etc/apache2/apache2.conf
    echo " -- Enabling ModRewrite"
    spinner
    a2enmod rewrite
    service apache2 restart
    say_done
}

La función secure_optimize_apache reemplaza la configuración por defecto de apache por una configuración mas segura haciendo uso de la plantilla que se encuentra en templates/apache, veamos que contiene el archivo:

Mutex file:${APACHE_LOCK_DIR} default
PidFile ${APACHE_PID_FILE}
Timeout 300
KeepAlive On
MaxKeepAliveRequests 1000
KeepAliveTimeout 2

<IfModule mpm_prefork_module>
    StartServers 1
    MinSpareServers 3
    MaxSpareServers 6
    MaxClients 24
    MaxRequestsPerChild 3000
</IfModule>

<IfModule mpm_worker_module>
    StartServers 2
    MinSpareThreads 25
    MaxSpareThreads 75
    ThreadLimit 64
    ThreadsPerChild 25
    MaxClients 150
    MaxRequestsPerChild 0
</IfModule>

<IfModule mpm_event_module>
    StartServers 2
    MinSpareThreads 25
    MaxSpareThreads 75
    ThreadLimit 64
    ThreadsPerChild 25
    MaxClients 150
    MaxRequestsPerChild 0
</IfModule>

User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}
AccessFileName .htaccess
<Files ~ "^\.ht">
    Order allow,deny
    Deny from all
    Satisfy all
</Files>

<Directory />
    Options -Indexes -Includes -ExecCGI
    <LimitExcept GET POST HEAD>
       deny from all
    </LimitExcept>
</Directory>

HostnameLookups Off
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn

# Include module configuration:
Include mods-enabled/*.load
Include mods-enabled/*.conf

# Include ports listing
Include ports.conf

LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer

<IfModule security2_module>
    Include /usr/share/modsecurity-crs/*.conf
    Include /usr/share/modsecurity-crs/base_rules/*.conf
</IfModule>

LogFormat "%{User-agent}i" agent

IncludeOptional conf-enabled/*.conf
IncludeOptional sites-enabled/*.conf

ServerSignature Off
ServerTokens Prod

ErrorDocument 404 "Archivo no encontrado"
ErrorDocument 500 "Tareas de mantenimiento en curso. Disculpe las molestias"


FileETag None
Header unset ETag
TraceEnable off

Aquí optimizamos algunos valores, cargamos las reglas de ModSecurity y agregamos algunas directivas de seguridad. Para mencionar algunas:

ServerSignature Off
ServerTokens Prod

Con estas directivas protegemos de divulgar informaciones sensibles del servidor apache que luego pueden ser utilizadas para crear un vector de ataque.

<Files ~ "^\.ht">
    Order allow,deny
    Deny from all
    Satisfy all
</Files>

Aquí protegemos nuestro arhivo .htaccess en caso de que estemos utilizando alguno.


    Options -Indexes -Includes -ExecCGI
    
       deny from all
    

Con esta sección controlamos que se pueden hacer desde el directorio raíz y limitamos los accesos exclusivamente a GET, POST y HEAD.

FileETag None
Header unset ETag
TraceEnable off

Estas directivas protegen con ataques para conseguir información sensible o ataques para robar información de cookies.