Mostrando entradas con la etiqueta Apache. Mostrar todas las entradas
Mostrando entradas con la etiqueta Apache. Mostrar todas las entradas

Apache: Redirección a HTTPS y usar Autenticación Digest

Supongamos que tenemos un directorio privado al que queremos forzar que sea siempre por https y además en vez de usar autenticación basic (que va en claro) y queremos usar digest (que usa MD5). Hacemos lo siguientes

A) Para la redirección:

A.1) Editamos el archivo .htaccess en el directorio. En este caso /home/dieguz2/public_html/privado/.htaccess
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://localhost/~dieguz2/privado/ [R=301,L]


B) Para la autenticación con Digest:

B.1) Editamos el archivo .htaccess en el directorio. En este caso /home/dieguz2/public_html/privado/.htaccess y añadimos lo siguiente

AuthType Digest
AuthName "cosaprivada"
AuthDigestDomain "/privado/" "https://localhost/~dieguz2/privado/"

AuthDigestProvider file
AuthUserFile /home/dieguz2/public_html/privado/.htpasswd
Require valid-user

B.2) generamos el archivo con usuarios
sintaxis para la generación de los usuarios y contraseñas
htdigest [ -c ] passwdfile realm username

En nuestro caso
El el "realm" debe ser igual al AuthName (en este caso "cosaprivada")

htdigest -c /home/dieguz2/public_html/privado/.htpasswd cosaprivada nombreusuario

Apache : calcular tamaño memoria por proceso de apache y optimizar el valor de Maxclients

Para calcular el tamaño que está ocupando en memoria apache y sus procesos podemos usar el siguiente script en bash:

 ps -ylC httpd | awk '{x += $8;y += 1} END  { print "Apache uso de memoria (MB): "x/1024;  print "Tamaño medio del proceso (MB): "x/((y-1)*1024);   print "Procesos apache: "y-1;   }'

Ejemplo de salida
Apache uso de memoria (MB): 1396.54
Tamaño medio del proceso (MB): 16.8257
Procesos apache: 83

Estos valores son útiles para optimizar el parámetro MaxClients en el fichero /etc/httpd/conf.d/mpm_prefork.conf ( Centos 7 ) .

Para calcular el Valor:

MaxClients = (Total RAM en el sistema - RAM reserva para el resto del sistema) /  Tamaño medio del proceso

Por ejemplo si tenemos una máquina con 16 GB, y queremos dedicar al apache el 80% de la memoria (3,2 GB) y el tamaño del proceso es de 17MB.

MaxClients = (16GB - 3.2 GB) * 1024 / 17MB =771,0118
o equivalentemente
MaxClients = ((16×1024) × 0,8) ÷ 17 = 771
SI queremos fijar la cantidad de memoria a un valor fijo (ej: 4GB) se hacen las mismas cuentas
MaxClients = (4×1024) ÷ 17 = 240

Apache: Mostrar los accesos de access_log en formato tabular

Con el siguiente comando en bash mostraremos 3 campos del archivo access_log de apache(/var/log/apache2/access_log). En dicho archivo se almacenan los accesos (peticiones) a nuestro servidor apache.

Se mostrarán 3 campos : ip, día (en fommato dd/mm/yyyy) y la hora. Al ser en formato tabular será facil de editar con cualquier hoja de cálculo. El comando es el siguiente:
cat access_log | cut -d ' ' -f 1,4 | perl -pi -e 's/((\d+\.\d+\.\d+\.\d+)|(::1)) \[(\d+\/.{3}\/\d{4}):/$1\t$4\t$5/' | sort -u

La salida será algo así:
::1 11/Feb/2011 12:35:26
::1 11/Feb/2011 12:35:27
192.168.1.2 11/Feb/2011 12:35:23
192.168.1.45 11/Feb/2011 12:35:24
192.168.1.57 11/Feb/2011 12:35:22
192.168.1.124 11/Feb/2011 12:35:26

Instalar Extension PDO_OCI en Suse Linux

En los siguientes pasos instalaremos el módulo php_pdo_oci en una maquina SLES 11 de 64 bits, que tiene instalado el instant client 11.2 Dicha máquina ya tenía instalado varias elementos necesarios para que este módulo funcione.

Sobre la instalación del instant client de Oracle, y el módulo oci8 hay más información en el siguiente post:

- Instalación del Oracle Instant Client y configuración de Oci8 en php y apache en Suse


Nos centraremos exclusivamente en la instalación del PDO_OCI, ejecutaremos los siguientes pasos como root:

1- Obtener extensión y descomprimir
wget http://pecl.php.net/get/PDO_OCI
tar zxvf PDO_OCI
cd PDO_OCI-1.0/
phpize

2- Fijar el directorio del home de oracle ( en el caso de que no esté definido)
export ORACLE_HOME=/usr/lib/oracle/11.2/client64

3-Creamos unos enlaces (el configure da problemas si no están) para la versión de 64 bits

ln -s /usr/lib/oracle/11.2/client64 /usr/lib/oracle/11.2/client
ln -s /usr/include/oracle/11.2/client64 /usr/lib/oracle/11.2/client/include
4-Parcheamos para la versión 11.2 los archivos añadiendo en secciones similares las siguientes líneas (el número de linea es orientativo). De forma alternativa podemos sustituir la cadena de texto 10.2 por 11.2 Esto soluciona el error :
Configure: error: Unsupported Oracle version! 11.2

Archivo config.m4:
Línea 10
elif test -f $PDO_OCI_DIR/lib/libclntsh.$SHLIB_SUFFIX_NAME.11.2; then
PDO_OCI_VERSION=11.2

Línea 125
11.2)
PHP_ADD_LIBRARY(clntsh, 1, PDO_OCI_SHARED_LIBADD)
;;

Archivo configure:
Línea 5492:
11.2)


case clntsh in
c|c_r|pthread*) ;;
*)
if test "$ext_shared" = "yes"; then
PDO_OCI_SHARED_LIBADD="$PDO_OCI_SHARED_LIBADD -lclntsh"
else


case clntsh in
c|c_r|pthread*) ;;
*)
LIBS="$LIBS -lclntsh"
;;
esac


fi
;;
esac


;;

5- Para Solucionar el errores:
Cannot find php_pdo_driver.h
Ejecutaremos lo siguiente:
mkdir include
ln -s /usr/include/php5/ include/php
Para el error
pdo_oci.c:34:1: error: unknown type name 'function_entry'
Editamos el archivo pdo_oci.c y cambiamos el function_entry por zend_function_entry


6- Ejecutamos el configure, compilamos e instalamos ( no debería salir mensaje de error)
./configure --with-pdo-oci=instantclient,/usr,11.2
make && make install
7- Añadimos el módulo a php
echo extension=pdo_oci.so > /etc/php5/conf.d/pdo_oci.ini
8- Reiniciamos apache
rcapache2 restart

9- Verificamos que se ha cargado correctamente con alguno de los siguientes comandos para listar los módulos cargados:
php -m | grep -i PDO
php -r "phpinfo();" | grep -i PDO_OCI
o directamente un phpinfo desde el navegador:

Apache: quitar el server signature ( firma)

Para elimiar el server signature en Suse editamos el archivo /etc/sysconfig/apache2 y cambiamos dos variables a los valores siguientes:
APACHE_SERVERTOKENS="Prod"
APACHE_SERVERSIGNATURE="off"

De este modo en las páginas (por ejemplo las 403 cuando no encuentra un archivo html) aparecerá en la parte inferior :
Server: Apache

Y no una descripcion de la versión del servidor web o del sistema operativo del servidor.Cuanto menos información se proporciona a un posible atacante mejor.

Al realizar estos cambios en sysconfig y al reiniciar el server ( /etc/init.d/apache2 restart ) los cambios se reflejarán en /etc/apache2/sysconfig.d/global.conf

Para otros valores :
http://httpd.apache.org/docs/2.0/mod/core.html#servertokens