==================================
ModSecurity 2 en CentOS4/RHEL4
==================================
[1] Desde binarios
[2] Desde fuentes
========================
Instalando ModSecurity 2
[1] Desde binarios
========================
Dependencias:
rpm -Uvh apr-devel-0.9.4-24.1.i386.rpm
rpm -Uvh apr-util-devel-0.9.4-17.i386.rpm
rpm -Uvh pcre-devel-4.5-3.i386.rpm
rpm -Uvh httpd-devel-2.0.52-9.ent.i386.rpm
1) ModSecurity 2.x solo funciona con Apache 2.0.x o superior.
2)Nos aseguramos que mod_unique_id esté instalado.
# vi /etc/httpd/conf/httpd.conf
…LoadModule unique_id_module modules/mod_unique_id.so…
3) Descargamos modsecurity:
#wget http://www.modsecurity.org/download/modsecurity-apache_2.0.4.tar.gz #wget http://www.modsecurity.org/download/modsecurity-core-rules_2.0-1.1.1.zip#md5sum modsecurity-apache_2.0.4.tar.gz
4) (Optional) Install the latest version of libxml2, if it isn't already installed on the server.
5) Unpack the ModSecurity archive
# mkdir /instaladores/modsecurity2# tar zxvf modsecurity-apache_2.0.4.tar.gz
6) Editamos Makefile para configurar el path de Apache HTTPD
(for example: top_dir = /usr/local/apache2).
Nota: Necesitamos tener instalado "httpd-devel"
Nota: libxml2 es opcional, podemos comentarlo si no lo usamos
# vi /instaladores/modsecurity/modsecurity-apache_2.0.4/apache2/Makefile
builddir = .#top_dir = /usr/share/apache2#top_dir = /home/ivanr/apache22top_dir = /usr/lib/httpdtop_srcdir = ${top_dir}top_builddir = ${top_dir}include ${top_builddir}/build/special.mkAPXS = apxsAPACHECTL = apachectlINCLUDES = -I /usr/include/libxml2#DEFS = -DWITH_LIBXML2#LIBS = -Lmy/lib/dir -lmylibCFLAGS = -O2 -g -Wuninitialized -Wall -Wmissing-prototypes -Wshadow -Wunused-variable -Wunused-value -Wchar-subscripts -Wsign-compareall: local-shared-buildclean: -rm -f *.o *.lo *.slo *.la *~ .libs
7) Compilamos
#make
8) Paramos Apache
#service httpd stop
9) Instalamos
#make install
10)(Optional) Add one line to your configuration to load libxml2:
#vi /etc/httpd/conf/httpd.conf
…LoadFile /usr/lib/libxml2.so…
11)Add one line to your configuration to load ModSecurity:
#vi /etc/httpd/conf/httpd.conf
…LoadModule security2_module modules/mod_security2.so…
12)Configure ModSecurity
#mkdir /etc/httpd/conf/modsecurity/conf#cd /etc/httpd/conf/modsecurity/conf#unzip modsecurity-core-rules_2.0-1.1.1.zip <- unzip the rules in
13)Agregamos los .conf de modsecurity a Apache
#vi /etc/httpd/conf/httpd.conf
…Include conf/modsecurity/*.conf…
14)Modificamos */etc/httpd/conf/modsecurity/conf/modsecurity_crs_10_config.conf*
#vi /etc/httpd/conf/modsecurity/conf/modsecurity_crs_10_config.conf
…SecDefaultAction log,auditlog,deny,status:403,phase:2,\ t:lowercase,t:replaceNulls,t:compressWhitespace…
15)Start Apache
#service httpd start
16) Listo!. Ahora atacamos para probarlo =)
Bloqueando RFI, HTTP Post Relay, etc.
# vi modsecurity_crs_20_protocol_violations.conf
#SecDefaultAction "log,pass,phase:1"SecDefaultAction "log,deny,phase:1"…# Proxy access attemptSecRule REQUEST_URI ^http:/ "deny,log,id:60014,severity:2,msg:'Proxy access attempt'"
Y podemos modificar la respuesta HTTP 500
# vi /etc/httpd/conf/httpd.conf
ErrorDocument 500 "Suspicious error. Your IP has been logged."#ErrorDocument 404 /missing.html#ErrorDocument 404 "/cgi-bin/missing_handler.pl"#ErrorDocument 402 http://www.example.com/subscription_info.html
========================
Instalando ModSecurity 2
[2] Desde fuentes
========================
Instalamos Apache2
#tar zxvf httpd-2.2.3.tar.gz#cd httpd-2.2.3#./configure --prefix=/web/apache2 --enable-so --enable-module=unique_id#make#make install
Editar httpd.conf al gusto:
#vi /web/apache2/conf/httpd.conf
Si no instalamos algún módulo lo instalamos luego así:
#/web/apache2/bin/apxs -cia /instaladores/apache-2_2_3/httpd-2.2.3/modules/metadata/mod_unique_id.c
2)Nos aseguramos que mod_unique_id esté instalado.
# vi /web/apache2/conf/httpd.conf
…LoadModule unique_id_module modules/mod_unique_id.so…
3) Descargamos modsecurity:
#wget http://www.modsecurity.org/download/modsecurity-apache_2.0.4.tar.gz #wget http://www.modsecurity.org/download/modsecurity-core-rules_2.0-1.1.1.zip#md5sum modsecurity-apache_2.0.4.tar.gz
4) (Opcional) Instalamos la última version de libxml2.
5) Desempaquetamos modsecurity
# mkdir /instaladores/modsecurity2# tar zxvf modsecurity-apache_2.0.4.tar.gz
6) Editamos Makefile para configurar el path de Apache HTTPD
(for example: top_dir = /usr/local/apache2).
Nota: Necesitamos tener instalado "httpd-devel"
Nota: libxml2 es opcional, podemos comentarlo si no lo usamos
# vi /instaladores/modsecurity2/modsecurity-apache_2.0.4/apache2/Makefile
builddir = .#top_dir = /usr/share/apache2#top_dir = /usr/lib/httpdtop_dir = /instaladores/apache-2_2_3/httpd-2.2.3/top_srcdir = ${top_dir}top_builddir = ${top_dir}include ${top_builddir}/build/special.mkAPXS = apxsAPACHECTL = apachectlINCLUDES = -I /usr/include/libxml2#DEFS = -DWITH_LIBXML2#LIBS = -Lmy/lib/dir -lmylibCFLAGS = -O2 -g -Wuninitialized -Wall -Wmissing-prototypes -Wshadow -Wunused-variable -Wunused-value -Wchar-subscripts -Wsign-compareall: local-shared-buildclean: -rm -f *.o *.lo *.slo *.la *~ .libs
7) Compilamos
#make
8) Paramos Apache
#/web/apache2/bin/apachectl stop
9) Instalamos
#make install
10)(Optional) Add one line to your configuration to load libxml2:
# vi /web/apache2/conf/httpd.conf
…LoadFile /usr/lib/libxml2.so…
11)Add one line to your configuration to load ModSecurity:
# vi /web/apache2/conf/httpd.conf
…LoadModule security2_module modules/mod_security2.so…
12)Configure ModSecurity
# mkdir /web/apache2/modsecurity/conf#cd /web/apache2/modsecurity/conf#unzip modsecurity-core-rules_2.0-1.1.1.zip <- unzip the rules in
13)Agregamos los .conf de modsecurity a Apache
# vi /web/apache2/conf/httpd.conf
…Include conf/modsecurity/*.conf…
14)Modificamos */etc/httpd/conf/modsecurity/conf/modsecurity_crs_10_config.conf*
# vi /web/apache2/modsecurity/conf /modsecurity_crs_10_config.conf
…SecDefaultAction log,auditlog,deny,status:403,phase:2,\ t:lowercase,t:replaceNulls,t:compressWhitespace…
15)Start Apache
#/web/apache2/bin/apachectl start
16) Listo!. Ahora atacamos para probarlo =)
http://www.web.com/../../etc/passwd/../../p?=http://google.com/../../p=>/form?login= 101 OR 1=1/form?login= ' or 'a'='a&pass= ' or 'a'='a/form?login=admin&pass= 101 AND (asc( mid((SELECT first_name FROM user_data WHERE userid=15613) , 2 , 1) ) > 109 );/form?login=&pass=
===========================================================================
por Hugo Martin, SCNP 2006 (cc) www.hackcraft.com