Hardening Sistema Linux (CentOS) #Parte2

Continuando con la plantilla de aseguramiento de Servidores con sistema CentOS
Leer la #Parte1

6             Hardening de Sysctl.conf


Con el siguiente comando, Se podrá observar un listado con las variables asignadas y su valor.

sysctl -a

En la actualidad existe vulnerabilidad en todos los kernel centos/redhat 6 también hay varios exploit que hacen uso de esta vulnerabilidad hasta el momento no hay un kernel que incluye el parche para esta vulnerabilidad.

Es posible prevenir el exploit con el siguiente comando.

sysctl -w kernel.perf_event_paranoid=2

Ó bien

echo "kernel.perf_event_paranoid=2" >> /etc/sysctl.conf

Se puede encontrar información acerca esta vulnerabilidad en:

Evitar ataques Smurf:

Para evitar este tipo de ataques se agrega/modifica la siguiente línea:
net.ipv4.icmp_echo_ignore_broadcasts = 1

Evitar ataques SYN Flood

Para evitar este tipo de ataques se agrega/modifica la siguiente línea:
net.ipv4.tcp_syncookies = 1

Si no se va hacer uso de IPV6 Deshabilitarla:

Agregar al final del archivo
net.ipv6.conf.all.disable_ipv6=1

7             Hardening de Apache

Los servidores de Apache son unos de los elementos o servicios que primero realizan análisis de vulnerabilidades los atacantes.
Debido a esto se deben tomar medidas de aseguramiento para la configuración de este.

1. Primero que todo debemos cambiar algunas configuraciones por defecto.
Abrir /etc/httpd/conf/httpd.conf y cambiar lo siguiente:
ServerSignature Off 
(Oculta su versión de apache en las páginas de error)
ServerTokens Prod
(Detiene la inclusión de información en el encabezado HTTP que da las versiones de Apache).

Añadiremos una configuración personalizada. 
Agregaremos lo siguiente a /etc/httpd/config/httpd.conf. Explicado que hace en los comentarios.
# Utilice esto para evitar el método TRACE http el cual sirve
# Para recabar (gathering path information) información de proxy o servidores (cache servers)

deny from all

# El ‘-’ deshabilita las siguientes funciones
# FollowSymLinks – puede ser utilizado para buscar carpetas fuera del árbol del directorio
#
# Includes – maneja a .shtml; previene incluir archivos del servidor, local file include
#
# AllowOverride None – previene a los desarrolladores cambiar opciones con el
# .htaccess

Options -FollowSymLinks -Includes -Indexes -MultiViews
AllowOverride None
Order allow,deny
Allow from all
Además, de añadir lo anterior, para prevenir acceso al root de su directorio, añadiremos lo siguiente:


Order deny,allow
deny from all


Cambiemos algunos permisos.
La carpeta public html (por default es /var/www/html) debería ser escribible solo por el usuario root. Y solo puede ser leída por todo el mundo por ente se configurara así:
chown -R root /var/www 
chmod -R 775 /var/www


Actualizar el servidor APACHE a la última versión estable.
Desactivar las opciones para explorar directorios, esto se puede hacer con las opciones de directiva dentro de la etiqueta ; tiene dos posibles valores: none o indexes.

Options -Indexes
Disminuir el valor máximo de tiempo de espera, por defecto, el tiempo de espera es 60 a 300 segundos dependiendo de la versión de Apache. Este se puede disminuir por seguridad (para mejorar la resistencia a ataques de denegación de servicio) así:
Timeout 45

Deshabilitar el método TRACE
A partir de la versión 2 de apache podemos deshabilitar el método TRACE fácilmente con una variable.
TraceEnable off
Esta debe ingresarse en el archivo de configuración principal de apache.

Para configurar Apache para enviar el encabezado X-Frame-Options para todas las páginas, añadir lo siguiente a la configuración
Header always append X-Frame-Options SAMEORIGIN

Como plus.. ya que mas adelante pretendo compartir plantilla de aseguramiento para los CMS Joomla y WordPress añadiremos una configuracion segura de Apache para estos CMS si hacen uso de ellos en el servidor.

7.1             Hardening de Apache para uso de CMS Joomla - WordPress


Denegar vulnerabilidades típicas y otros escaneos

Las siguientes configuraciones deben agregarse al archivo de configuración de apache /etc /httpd/conf/httpd.conf.
#Poner fuera a los  Script Kiddies
RewriteCond %{HTTP_USER_AGENT} ^()$ [NC,OR] # void of UserAgent
RewriteCond %{HTTP_USER_AGENT} ^(java|curl|wget).* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*(libwww-perl|curl|wget|python|nikto|wkito|pykto|pikto|scan|acunetix|qualys|fuck|kiss|ass|Morfeus|0wn|hack|h4x|h4x0r).* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*(winhttp|HTTrack|clshttp|archiver|loader|email|harvest|extract|grab|miner).* [NC,OR]

# Sondeo la versiòn de PHP
RewriteCond %{QUERY_STRING} (?=PHP).* [NC,OR]

# Sondeo XSS
RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR]

# Sondeo inyecciòn SQL
RewriteCond %{QUERY_STRING} ^.*(OR%201=1|/select/|/union/|/insert/|/update/|/delete/).* [NC,OR]

# Archivos de inlusion Remoto/Local
RewriteCond %{QUERY_STRING} (http://)*(?)$ [NC,OR]

# Bloqueo los ataques comunes de cadenas
RewriteCond %{QUERY_STRING} ^.*(/\*|\*/).* [NC,OR]

# Permirir solo GET y POST 
RewriteCond %{REQUEST_METHOD} !^(GET|POST)$ [NC,OR]

# Peticiones en las variables PHP
RewriteCond %{QUERY_STRING} _REQUEST(=|[|%[0-9A-Z]{0,2})

# Acceso denegado
RewriteRule ^(.*)$ index.php [F,L]

Reiniciamos el servicio de apache service httpd restart

Continuar leyendo
#Parte3

Written by

0 comentarios :

Comentarios en GooglePlus

Reacciones en G+