Instalar apache 2.4 en Centos 6

A tener en cuenta, es necesaria la instalación de algunas dependencias que no tenemos por defecto en un entorno centos 6 “virgen”
wget http://www.trieuvan.com/apache//apr/apr-1.4.6.tar.bz2
rpmbuild -ts apr-1.4.6.tar.bz2
su -c "yum-builddep rpmbuild/SRPMS/apr-1.4.6-1.src.rpm -y"
rpmbuild --rebuild --target `uname -m` ~/rpmbuild/SRPMS/apr-1.4.6-1.src.rpm
su -c "yum localinstall rpmbuild/RPMS/i686/apr*"

Continuar leyendo “Instalar apache 2.4 en Centos 6”

Configuración y Seguridad en PHP.INI

Lo primero es definir las funciones a no utilizar o no permitir su ejecución en nuestros servidores, mi recomendación es ser conservadores, no excederse ni limitar a los usuarios, pero si controlar la ejecución de las que consideramos potencialmente peligrosas o que simplemente no quermos mostrar, las siguientes sin mi recomendación:
disable_functions = popen,exec,system,passthru,proc_open,shell_exec,phpinfo,
disk_free_space,diskfreespace,leak,set_time_limit,
show_source,pclose,proc_nice,proc_terminate,
proc_get_status,proc_close,pfsockopen

También está evitar la carga dinámica de módulos (más información: http://www.gonullyourself.org/ezines/phrack/62/p62-0x0a_Attacking_Apache_Modules.txt ) con:
enable_dl = Off
Luego, apagar register_globals y no permitir la creación de variables al vuelo entre otras cosas con:
register_globals = Off
Otras funciones un tanto incomodas o innecesarias como expose_php (ej ?=PHPE9568F34-D428-11d2-A769-00AA001ACF42 )
expose_php = Off
Setear open_basedir para minimizar el acceso al sistema de ficheros, si usas apache con vhost como es mi caso, el setear open_basedir en php.ini no será de tanta utilidad como se esperaría, falta hacerlo en cada vhost, una ayuda sería esta:
<VirtualHost 127.0.0.1:80>
ServerAdmin webmaster@dominio.com
DocumentRoot "/www/htdocs"
ServerName midominio.com
ServerAlias www.midominio.com
...
<Directory "/www/htdocs">
Options -Indexes FollowSymLinks -ExecCGI
AllowOverride All
DirectoryIndex index.php index.html
Order allow,deny
Allow from all
<IfModule mod_php5.c>
php_admin_value open_basedir "/www/htdocs:/tmp"
</IfModule>
</Directory>
</VirtualHost>

o simplemente:
open_basedir = /www/htdocs:/tmp
Definitivamente desactivar allow_url_fopen, puede parecer una buena idea en principio, pero no todos controlarán lo que pasa por sus urls (ejem: http://midominio.com/?configile.php=http://dominio-hack.ru/config-spam.php)
El resto parece carpintería, pero a tener en cuenta, apagar
magic_quotes_gpc = Off
output_buffering = Off

Y por último pero no menos importante, setear variables como:
max_execution_time =
max_input_time =
memory_limit =
post_max_size =
upload_max_filesize =

MicroOptimizaciones Apache en CentOS

Lectura recomendada: http://httpd.apache.org/docs/trunk/mod/core.html#rlimitcpu
Luego de eso agregar a tu archivo httpd ( /etc/httpd/conf/httpd.conf)
#Limitando el tiempo de CPU
RLimitCPU 15 20
#Limitando la memoria- de 50 a 82MB
RLimitMEM 52428800 85983232
#Limitando el numero de procesos
RLimitNPROC 8 12

Apache KeepAlive
La funcionalidad de Apache KeepAlive permite (presisamente lo que dice su nombre) mantener abierta la conexión TCP entre un cliente y el servidor, lo que lleva a que se den múltiples peticiones en la misma conexión. Esto puede reducir los tiempos de carga de una página en particular en las páginas web con gran cantidad de imágenes, ya que elimina la sobrecarga de tener varias conexiones abiertas. En tu archivo de configuración de httpd busca las entradas de KeepAlive, y asegurarse de que están habilitados, lo siguiente es adaptarlo a tus necesidades, ej.:
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 8

lo siguiente sería deshabilitar el HTTP TRACE method (por temas de seguridad) más info en: http://publib.boulder.ibm.com/httpserv/ihsdiag/http_trace.html
RewriteEngine on
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
RewriteRule .* - [F]

La idea es no limitarnos solo a apache, sino optimizar además algunos detalles de php, en nuestro php.ini setear correctamente los valores (según requerimientos) estos tiempos han funcionado bien para mi:
max_execution_time = 60     ; Maximum execution time of each script, in seconds
max_input_time = 120    ; Maximum amount of time each script may spend parsing request data
memory_limit = 80M      ; Maximum amount of memory a script may consume

Apache ITK en Centos 5

A continuación una guía para la instalación de mpm-itk en CentOS 5.
Apache es aún el servior Web de mayor uso en línea, sirve miles de aplicaciones y todas ellas con diversas configuraciones y requerimientos, además es utilizado en una inmenza mayoría de servidores compartidos o hosting y a pesar de las excelentes caracteristicas de apache como servidor Web, en condiciones de su uso compartido (siendo hosting el caso más popular) plantea diversos problemas, el principal es relaiconado a los permisos de acceso a ficheros, es decir de seguridad y es justamente donde itk entra a jugar.
ITK es un módulo de multiprocesamiento más para apache que agrega una nueva caracteristicas, la posibilidad de ejecutar apache con el userid de un usuario diferente por cada virtualhost, además permite cambiar el valor nice del proceso que corresponde a dicho vhost.
Continuar leyendo “Apache ITK en Centos 5”

Instalando un servidor de pruebas (apache2)

Para completar un entorno de pruebas y desarrollo sobre nuestra openSUSE 11 es “recomendable” contar con un servidor Web de pruebas, en un artículo anterior había mencionado (entre uno de los pasos) como montar apache2, php5 y mysql, en esta ocasión pretendo profundizar un poco, lo suficiente como para tener un sistema listo tara realizar pruebas en nuestro PC.
Continuar leyendo “Instalando un servidor de pruebas (apache2)”