Creación de directorios ServerRoot
Esta directiva indica el directorio en el cual vive su instalación de Apache. Por defecto, se encuentra ubicada en etc/apache2
o etc/httpd
. En condiciones normales, Apache es iniciado por el usuario root y cambia al usuario definido en la directiva User
. Si usted ha de cambiar la ubicación del ServerRoot, entonces tendrá que cambiar los permisos correspondientes a este directorio para que solo root pueda hacer cambios.
- Digamos que decide ubicar su directorio ServerRoot en
/usr/local/apache
, este directorio contendrá los subdirectoriosbin
,conf
ylogs
. - Se recomienda que cree dichos directorios como root usando comandos similares a los siguientes:
mkdir /usr/local/apache cd /usr/local/apache mkdir bin conf logs chown 0 . bin conf logs chgrp 0 . bin conf logs chmod 755 . bin conf logs
- Se asume que
/
,/usr
y/usr/local
son modificables únicamente por el usuario root. Cuando usted instala el ejecutablehttpd
, debe asegurarse de que también esté protegido:cp httpd /usr/local/apache/bin chown 0 /usr/local/apache/bin/httpd chgrp 0 /usr/local/apache/bin/httpd chmod 511 /usr/local/apache/bin/httpd
Asegurar tu servidor Web Apache con ModSecurity
1 Instalación
1.1 Debian
mod_security está disponible como un paquete Debian en los repositorios Debian por defecto, por lo tanto la instalación es tan simple como esto:
apt-get install libapache2-mod-security
a2enmod mod-security
/etc/init.d/apache2 force-reload
1.2 Ubuntu
La instalación es exactamente la misma que en Debian Sarge:
apt-get install libapache2-mod-security
a2enmod mod-security
/etc/init.d/apache2 force-reload
1.3 Fedora
En Fedora, puede instalar y activar mod_security de la siguiente manera:
yum install mod_security
/etc/init.d/httpd restart
Ahora debe encontrar el archivo /etc/httpd/conf.d/mod_security.conf que ya contiene una configuración básica de mod_security:
vi /etc/httpd/conf.d/mod_security.conf
# Example configuration file for the mod_security Apache module LoadModule security_module modules/mod_security.so <IfModule mod_security.c> # Turn the filtering engine On or Off SecFilterEngine On # The audit engine works independently and # can be turned On of Off on the per-server or # on the per-directory basis SecAuditEngine RelevantOnly # Make sure that URL encoding is valid SecFilterCheckURLEncoding On # Unicode encoding check SecFilterCheckUnicodeEncoding On # Only allow bytes from this range SecFilterForceByteRange 1 255 # Cookie format checks. SecFilterCheckCookieFormat On # The name of the audit log file SecAuditLog logs/audit_log # Should mod_security inspect POST payloads SecFilterScanPOST On # Default action set SecFilterDefaultAction «deny,log,status:406» # Simple example filter # SecFilter 111 # Prevent path traversal (..) attacks # SecFilter «\.\./» # Weaker XSS protection but allows common HTML tags # SecFilter «<( |\n)*script» # Prevent XSS atacks (HTML/Javascript injection) # SecFilter «<(.|\n)+>» # Very crude filters to prevent SQL injection attacks # SecFilter «delete[[:space:]]+from» # SecFilter «insert[[:space:]]+into» # SecFilter «select.+from» # Require HTTP_USER_AGENT and HTTP_HOST headers SecFilterSelective «HTTP_USER_AGENT|HTTP_HOST» «^$» # Only accept request encodings we know how to handle # we exclude GET requests from this because some (automated) # clients supply «text/html» as Content-Type SecFilterSelective REQUEST_METHOD «!^GET$» chain SecFilterSelective HTTP_Content-Type «!(^$|^application/x-www-form-urlencoded$|^multipart/form-data)» # Require Content-Length to be provided with # every POST request SecFilterSelective REQUEST_METHOD «^POST$» chain SecFilterSelective HTTP_Content-Length «^$» # Don’t accept transfer encodings we know we don’t handle # (and you don’t need it anyway) SecFilterSelective HTTP_Transfer-Encoding «!^$» # Some common application-related rules from # http://modsecrules.monkeydev.org/rules.php?safety=safe #Nuke Bookmarks XSS SecFilterSelective THE_REQUEST «/modules\.php\?name=Bookmarks\&file=(del_cat\&catname|del_mark\&markname|edit_cat\&catname|edit_cat\&catcomment|marks\&catname|uploadbookmarks\&category)=(<[[:space:]]*script|(http|https|ftp)\:/)» #Nuke Bookmarks Marks.php SQL Injection Vulnerability SecFilterSelective THE_REQUEST «modules\.php\?name=Bookmarks\&file=marks\&catname=.*\&category=.*/\*\*/(union|select|delete|insert)» #PHPNuke general XSS attempt #/modules.php?name=News&file=article&sid=1&optionbox= SecFilterSelective THE_REQUEST «/modules\.php\?*name=<[[:space:]]*script» # PHPNuke SQL injection attempt SecFilterSelective THE_REQUEST «/modules\.php\?*name=Search*instory=» #phpnuke sql insertion SecFilterSelective THE_REQUEST «/modules\.php*name=Forums.*file=viewtopic*/forum=.*\’/» # WEB-PHP phpbb quick-reply.php arbitrary command attempt SecFilterSelective THE_REQUEST «/quick-reply\.php» chain SecFilter «phpbb_root_path=» #Topic Calendar Mod for phpBB Cross-Site Scripting Attack SecFilterSelective THE_REQUEST «/calendar_scheduler\.php\?start=(<[[:space:]]*script|(http|https|ftp)\:/)» # phpMyAdmin: Safe #phpMyAdmin Export.PHP File Disclosure Vulnerability SecFilterSelective SCRIPT_FILENAME «export\.php$» chain SecFilterSelective ARG_what «\.\.» #phpMyAdmin path vln SecFilterSelective REQUEST_URI «/css/phpmyadmin\.css\.php\?GLOBALS\[cfg\]\[ThemePath\]=/etc» </IfModule> |
Des pues reiniciar el servidor apache