Agcapa

programador web

Categoría: Apache (página 1 de 2)

How To Install nginx on CentOS 6 with yum

EPEL stands for Extra Packages for Enterprise Linux. Because yum as a package manager does not include the latest version of nginx in its default repository, installing EPEL will make sure that nginx on CentOS stays up to date.

To install EPEL, open terminal and type in:

sudo yum install epel-release

Step Two—Install nginx

To install nginx, open terminal and type in:

sudo yum install nginx

After you answer yes to the prompt twice (the first time relates to importing the EPEL gpg-key), nginx will finish installing on your virtual private server.

Step Three—Start nginx

nginx does not start on its own. To get nginx running, type:

sudo /etc/init.d/nginx start

You can confirm that nginx has installed on your VPS by directing your browser to your IP address.

You can run the following command to reveal your server’s IP address.

ifconfig eth0 | grep inet | awk '{ print $2 }'


Configure nginx

Open up the nginx configuration.

sudo nano /etc/nginx/sites-available/example

The following configuration will set you up to use nginx as the front end server. It is very similar to the default set up, and the details are under the configuration.

server {
        listen   80; 

        root /var/www/; 
        index index.php index.html index.htm;

        server_name example.com; 

        location / {
        try_files $uri $uri/ /index.php;
        }

        location ~ \.php$ {
        
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $host;
        proxy_pass http://127.0.0.1:8080;

         }

         location ~ /\.ht {
                deny all;
        }
}

The following changes were implemented in the configuration:

  • The root was set to the correct web directory
  • index.php was added on the index line
  • try_files attempts to serve whatever page the visitor requests. If nginx is unable, then the file is passed to the proxy
  • proxy_pass lets nginx the address of the proxied server
  • Finally the “location ~ /\.ht {” location block denies access to .htaccess files, if Apache’s document root concurs with nginx’s one

This configuration sets up a system where all extensions with a php ending are rerouted to the apache backend which will run on port 8080.

Activate the virtual host.

sudo ln -s /etc/nginx/sites-available/example /etc/nginx/sites-enabled/example

Additionally, delete the default nginx server block.

sudo rm /etc/nginx/sites-enabled/default

The next step is to install and configure apache.

Install Apache

With nginx taken care of, it’s time to install our backend, apache.

sudo apt-get install apache2

Since nginx is still not turned on, Apache will start running on port 80.

Configure Apache

We need to configure apache to take over the backend, which as we told nginx, will be running on port 8080. Open up the apache ports file to start setting apache on the correct port:

sudo nano /etc/apache2/ports.conf

Find and change the following lines to have apache running on port 8080, accessible only from the localhost:

NameVirtualHost 127.0.0.1:8080
Listen 127.0.0.1:8080

Save and Exit.

Subsequently, open up a new virtual host file, copying the layout from the default apache file:

sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/example
sudo nano /etc/apache2/sites-available/example

The main issue that needs to be addressed here is that the virtual host needs to be, once again, running on port 8080 (instead of the default 80 given to nginx).

The line should look like this:

<VirtualHost 127.0.0.1:8080>

Make sure your Document Root is correct. Save and exit the file and activate that virtual host:

sudo a2ensite example

Before we start testing anything out, we need to equip apache with php. Go ahead and install it now:

 sudo apt-get install php5

Restart both servers to make the changes effective:

sudo service apache2 restart
sudo service nginx restart

Finish Up

We have set up the VPS with nginx running on the front end of our site and apache processing php on the back end. Loading our domain will take us to our site’s default page.

We can check that information is being routed to apache is working by running a common php script.

Go ahead and create the php.info file:

sudo nano /var/www/info.php

Paste the following lines into that file:

<?
phpinfo( );
?>

Save and exit.

Visiting your domain/info.php should show you php info screen, and you’ll be able to see that this was handled by apache. (screenshot here)

Finally, you can see which ports are open and which application is on each one by typing in this command.

sudo netstat -plunt

Cómo optimizar Apache para usar menos memoria RAM

ApacheBuddy, que es muy similar a MySQLTuner, revisa tu configuración de Apache, y te hace sugerencias basadas en la cantidad de memoria que consume cada proceso Apache de tu servidor y la memoria RAM total que tengas.

Aunque es un programa bastante básico, ya que se centra solo en la directiva “MaxClients”, ApacheBuddy es útil, y se puede instalar y ejecutar de manera sencilla en el servidor teniendo acceso root mediante SSH.

“MaxClients” indica el numero máximo de peticiones que se pueden servir al mismo tiempo por el servidor, cualquier número que vaya más allá del límite se pone en cola. Si es demasiado bajo, las conexiones enviadas a la cola pueden agotar el tiempo de espera; Si es demasiado alto puedes tener problemas de memoria y empezar a usar la memoria SWAP del servidor. En Linode.com tenéis una buena explicación de todos los parámetros.

Cómo instalar y usar Apachebuddy para optimizar Apache

1.-Descargamos ApacheBuddy:

wget https://raw.github.com/gusmaskowitz/apachebuddy.pl/master/apachebuddy.pl

2.-Le damos permisos de ejecución:

chmod +x apachebuddy.pl

y ejecutamos el script para que revise nuestra configuración de Apache:

./apachebuddy.pl

3.-Y lo que vamos a obtener es algo como esto:

apachebuddy

 

donde podemos ver unas cuantas cosas importantes:

  1. Cuanta memoria RAM usa cada proceso de Apache en nuestro servidor (máximo, mínimo y media): 28,13MB, 20,21MB, 26.45MB
  2. Cuanta memoria RAM puede usar potencialmente Apache (máxima y media): 529MB y 562.61MB de RAM (alrededor de un 20% de la memoria RAM total del servidor)

En el archivo /etc/httpd/conf/httpd.conf, que es donde se encuentra la configuración de Apache en CENTOS, podemos cambiar el parámetro MaxClients en función de la recomendación del programa. En este caso, al tener “20” y alcanzar solo el 21% de la memoria RAM total del sistema, ApacheBuddy ha considerado que el ajuste es correcto.

Un problema muy común de las configuraciones por defecto de Apache es que suelen dejar MaxClients=150, y eso no hay servidor con 2GB de RAM que lo soporte en un pico de visitas. Tened en cuenta que además de Apache, el servidor tiene que manejar MYSQL (digamos que usa el 50% o 60% de la memoria RAM del servidor) y tu panel de control (cPanel/WHM puede llevar a consumir 512MB mínimo -otro 20%- y Virtualmin unos 100MB), así que no podemos dejar que en un pico de visitas Apache use toda la memoria RAM. Sí dejas MaxClients en 150, cuando tengas muchas visitas el servidor no lo va a aguantar… mejor que esperen en la cola…

Arranque automático de Apache con clave privada cifrada con contraseña

Arranque automático de Apache con clave privada cifrada con contraseña

Cuando el servidor web se inicia trata de abrir la clave privada configurada. Si la llave privada está protegida con contraseña el servidor pide la contraseña por consola. Este proceso obliga a que haya una persona física arrancando el servidor e introduciendo la contraseña solicitada. Para que el servidor arranque sin solicitar la contraseña se debe configurar para que la obtenga por otros medios según se detalla a continuación:

  1. Editar el archivo de configuración de Apache (httpd.conf).
  2. Sustituir
    SSLPassPhraseDialog builtin

    por

    SSLPassPhraseDialog exec:<ServerRoot>/bin/clave.sh
  3. Crear el shell-script <ServerRoot>/bin/clave.sh que deberá contener:
    #!/bin/sh
    echo "PASSWORD"

    (Se puede generar el script en un solo comando:
    echo -e '#!/bin/sh\necho "PASSWORD"' > <ServerRoot>/bin/clave.sh)

Instalar mod_evasive en Apache para dificultar ataques DoS

Describiremos a continuación los pasos para la instalación y configuración de mod_evasive, un módulo para Apache desarrollado por Nuclear Elephant para prevenir ataques DoS. Antes que nada es preciso advertir que no se trata de una solución definitiva y que, incluso, bajo ataques importantes, no sirve de mucho. Pero es una buena forma de evitar ataques pequeños y mantener la salud de nuestro servidor.

¿Cómo funciona?

Básicamente lo que hace es mantener una tabla dinámica con las URIs accedidas por las distintas IPs de los clientes del Apache, y permite ejecutar algunas acciones cuando una misma IP solicita un mismo recurso (una misma URI o elementos de un mismo sitio) más de n veces en m segundos. La acción por default que ejecuta el mod_evasive es, una vez superado el máximo de requests por segundo permitidos, bloquear durante una cantidad de segundos al cliente (la IP) devolviendo un error 403 (Forbidden) a la petición HTTP. Pero lo interesante es que también permite ejecutar un comando de sistema al registrarse un intento de ataque, con lo cual se puede agregar una regla al iptables para bloquear la IP del cliente.

Instalación

La instalación es muy sencilla. Basta con descargar el tar, descomprimirlo, compilarlo con apxs y habilitarlo en el httpd.conf.

# cd /usr/src
# wget http://www.zdziarski.com/projects/mod_evasive/mod_evasive_1.10.1.tar.gz
# tar zxvf mod_evasive_1.10.1.tar.gz
# cd mod_evasive
# apxs -cia mod_evasive20.c # para Apache 1.3 el comando sería apxs -cia mod_evasive.c
# vi /etc/httpd/conf/httpd.conf # editamos la configuracion
# service httpd restart # reiniciamos el Apache

En el httpd.conf habría que agregar las siguientes líneas.

<IfModule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 300
</IfModule>

Opciones de configuración

A continuación transcribo la descripción de las distintas opciones de configuración tomada de esta excelente guía de Xombra Team.

  • DOSHashTableSize <valor> – Establece el número de nodos a almacenar para cada proceso de peticiones de la tabla hash (contenedor asociativo de recuperación de peticiones por medio de claves que agiliza las respuestas del servidor). Si aplicamos un número alto a este parámetro obtendremos un rendimiento mayor, ya que las iteraciones necesarias para obtener un registro de la tabla son menores. Por contra, y de forma evidente, aumenta el consumo de memoria necesario para el almacenamiento de una tabla mayor. Se hace necesario incrementar este parámetro si el servidor atiende un número abultado de peticiones, aunque puede no servir de nada si la memoria de la máquina es escasa.
  • DOSPageCount <valor> – Indica el valor del umbral para el número de peticiones de una misma página (o URI) dentro del intervalo definido en DOSPageInterval. Cuando el valor del parámetro es excedido, la IP del cliente se añade a la lista de bloqueos.
  • DOSSiteCount <valor> – Cuenta cuántas peticiones de cualquier tipo puede hacer un cliente dentro del intervalo definido en DOSSiteInterval. Si se excede dicho valor, el cliente queda añadido a la lista de bloqueos.
  • DOSPageInterval <valor> – El intervalo, en segundos, para el umbral de petición de páginas.
  • DOSSiteInterval <valor> – El intervalo, en segundos, para el umbral de petición de objetos de cualquier tipo.
  • DOSBlockingPeriod <valor> – Establece el tiempo, en segundos, que un cliente queda bloqueado una vez que ha sido añadido a la lista de bloqueos. Como ya se indicó unas líneas atrás, todo cliente bloqueado recibirá una respuesta del tipo 403 (Forbidden) a cualquier petición que realice durante este periodo.
  • DOSEmailNotify <e-mail> – Un e-mail será enviado a la dirección especificada cuando una dirección IP quede bloqueada. La configuración del proceso de envío se establece en el fichero mod_evasive.c de la forma /bin/mail -t %s, siendo %s el parámetro que queda configurado en este parámetro. Será necesario cambiar el proceso si usamos un método diferente de envío de e-mails y volver a compilar el módulo con apxs (por ejemplo, la opción t ha quedado obsoleta en las últimas versiones del comando).
  • DOSSystemCommand <comando> – El comando reflejado se ejecutará cuando una dirección IP quede bloqueada. Se hace muy útil en llamadas a herramientas de filtrado o firewalls. Usaremos %s para especificar la dirección IP implicada. Por ejemplo, podemos establecer su uso con iptables de la forma siguiente:
    DOSSystemCommand “/sbin/iptables –I INPUT –p tcp –dport 80 –s %s –j DROP”
  • DOSLogDir <ruta> – Establece una ruta para el directorio temporal. Por defecto, dicha ruta queda establecida en /tmp, lo cual puede originar algunos agujeros de seguridad si el sistema resulta violado.
  • DOSWhitelist <IP> – La dirección IP indicada como valor del parámetro no será tenida en cuenta por el módulo en ningún caso. Para cada dirección IP a excluir ha de añadirse una nueva línea con el parámetro. Por ejemplo, dejaremos fuera del chequeo del módulo a un posible bot que use los siguientes rangos de direcciones:
    DOSWhitelist 66.249.65.*
    DOSWhitelist 66.249.66.*

Probarlo

¿Y cómo sé si está funcionando? mod_evasive viene con un pequeño script en perl para probar el funcionamiento del módulo. Para eso vamos al directorio de mod_evasive y ejecutamos el script test.pl:

# cd /usr/src/mod_evasive
# perl test.pl
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden

Y si pusimos la directiva para bloquear la IP por iptables podemos verlo con:

# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP tcp --  anywhere tcp dpt:http

suhosin download

If you are running Gentoo Linux or FreeBSD Suhosin is already within your ports system. Users of OpenSuSE Linux, Mandriva Linux or Debian Linux will find Suhosin packages in the distribution. You can install it by following the instructions in the installation manual.

If you are using suhosin to protect your PHP servers please consider donating a small amount of money to help with hosting and future development. You can donate here.

Suhosin Extension 0.9.33

suhosin development source at github
suhosin source – 0ce498a02a8281e4274ea8e390c2b487 – sig

Suhosin Patch 0.9.10

suhosin-patch-5.3.9 – c099b3d7eac95018ababd41ded7f3066 – sig
suhosin-patch-5.3.7 – 08582e502fed8221c6577042ca45ddb8 – sig
suhosin-patch-5.3.4 – 69683b97f1e8d8c7ad01eebcbb8a56fa – sig
suhosin-patch-5.3.3 – b66b27c43b1332400ef8982944c3b95b – sig

Suhosin Patch 0.9.9.1

suhosin-patch-5.3.2 – 4647b05330862d6a1fc4469245cc6ade – sig

Suhosin Patch 0.9.8

suhosin-patch-5.3.1 – bf75fe3a9bda8c7a041d86197d6da09a – sig
suhosin-patch-5.3.1 RC1 – c3ff0cb5fa728420d56f8ed139446647 – sig
suhosin-patch-5.3.0 – a23a3d54e177ac0ad30f78d928ba8177 – sig

Suhosin Patch 0.9.7

suhosin-patch-5.2.16 – d815fc99a0c25c21f5df28551fcbb001 – sig
suhosin-patch-5.2.14 – 84cf0142b8a3637b8784b5ee1e6cbc07 – sig
suhosin-patch-5.2.13 – 8188e119ce7abce98b8f004de46fbac5 – sig
suhosin-patch-5.2.12 – 40be1b05ad893a01778d7fb323dd8872 – sig
suhosin-patch-5.2.11 – 8f9de4d97fae6eba163cf3699509a260 – sig
suhosin-patch-5.2.10 – 41b475a469eef0eb0e7aa10a820f12b2 – sig
suhosin-patch-5.2.9 – f80dbcd2773a98da1dab0c73c3654895 – sig

Suhosin Patch 0.9.6

suhosin-patch-5.2.8 – d455c3dd5b652046dbac2951a58f64fa – sig
suhosin-patch-5.2.7 – d455c3dd5b652046dbac2951a58f64fa – sig
suhosin-patch-5.2.6 – f2ec986341a314c271259dbe4d940858 – sig
suhosin-patch-5.2.5 – a43f1a0ee9e7c41c4cb6890174f1f9d8 – sig
suhosin-patch-5.2.4 – 58b18d0db00bc52b004fc749190a958f – sig
suhosin-patch-5.2.3 – f217d04f9513222e48cea6588ac65b89 – sig
suhosin-patch-5.2.2 – 081fe08d584820a6ece1fe2e8629711f – sig
suhosin-patch-5.2.1 – 98cae8ee994df74e3ea1b25c955310e8 – sig
suhosin-patch-5.2.0 – 621ec57f10345cc58b29b189d89aecce – sig
suhosin-patch-5.1.6 – 40533ea76767dacbcc8e67522db8ef50 – sig
suhosin-patch-5.1.5 – c8cec5e765a0ada36c16aa7b32ea3c1e – sig
suhosin-patch-5.1.4 – c731f931faac5d5ee8a68c6172561ce0 – sig
suhosin-patch-5.0.5 – 21458573377820f081e7d050be05b1b6 – sig
suhosin-patch-4.4.9 – c4e88782b1572e0aee26e6b2124e6257 – sig
suhosin-patch-4.4.8 – 094162a3cc48bec95b29e02df4930a43 – sig
suhosin-patch-4.4.7 – 6aa5d3d240a568a21d671952e7d6be2c – sig
suhosin-patch-4.4.6 – da1c4d309b191bac78767cbf697d6c8d – sig
suhosin-patch-4.4.5 – acaa585bbc0117910e214d333ce448df – sig
suhosin-patch-4.4.4 – 26b7a0ad744e374aa43f1e0d56561ac5 – sig
suhosin-patch-4.4.3 – e9bb4be14b472fcbb14c65fdf81a3940 – sig
suhosin-patch-4.4.2 – f79cd1cf9c8f60112c45639c932496af – sig
suhosin-patch-4.3.11 – 15c103a6ec8dc8eea5cddcfd41a11cc8 – sig

Apache Tips: Disable the HTTP TRACE Method

Applies: apache 1.3.x / apache 2.0.x Required apache module: – Scope: global server configuration Type: security

Description: How to disable the HTTP TRACE method on recent apache versions.

Most vulnerability scanners (like the popular nessus, but commercial ones also) will complain (normally as a low thread or warning level) about TRACE method being enabled on the web server tested.

Normally you will have this enabled by default, but if you want to test if it is really enabled on your server you just have to telnet on the port your web server is running and request for ”TRACE / HTTP/1.0” if you get a positive reply it means TRACE is enabled on your system. The output of a server with TRACE enabled will look like:

telnet 127.0.0.1 80
Trying 127.0.0.1…
Connected to 127.0.0.1.
Escape character is ‘^]’.
TRACE / HTTP/1.0
Host: foo
Any text entered here will be echoed back in the response <- ENTER twice to finish HTTP/1.1 200 OK Date: Sat, 20 Oct 2007 20:39:36 GMT Server: Apache/2.2.6 (Debian) PHP/4.4.4-9 mod_ruby/1.2.6 Ruby/1.8.6(2007-06-07) Connection: close Content-Type: message/http TRACE / HTTP/1.0 Host: foo Any text entered here will be echoed back in the response Connection closed by foreign host. Traditionally experts will suggest to disable this using some rewrite rules like: RewriteEngine On RewriteCond %{REQUEST_METHOD} ^TRACE RewriteRule .* - [F] (this needs to be added somewhere in your main apache config file outside of any vhost or directory config). Still this has the disadvantage that you need to have mod_rewrite enabled on the server just to mention one. But for apache versions newer than 1.3.34 for the legacy branch, and 2.0.55 (or newer) for apache2 this can be done very easily because there is a new apache variable that controls if TRACE method is enabled or not: TraceEnable off

This needs to be added in the main server config and the default is enabled (on). TraceEnable off causes apache to return a 403 FORBIDDEN error to the client.

After setting this and reloading the apache config the same server as above shows:

telnet 127.0.0.1 80
Trying 127.0.0.1…
Connected to 127.0.0.1.
Escape character is ‘^]’.
TRACE / HTTP/1.0
Host: foo
testing… <- ENTER twice HTTP/1.1 403 Forbidden Date: Sat, 20 Oct 2007 20:38:31 GMT Server: Apache/2.2.6 (Debian) PHP/4.4.4-9 mod_ruby/1.2.6 Ruby/1.8.6(2007-06-07) Content-Length: 320 Connection: close Content-Type: text/html; charset=iso-8859-1

403 Forbidden

Forbidden

You don’t have permission to access /
on this server.


Apache/2.2.6 (Debian) PHP/4.4.4-9 mod_ruby/1.2.6 Ruby/1.8.6(2007-06-07) Server at foo Port 80


Connection closed by foreign host.

Instalación de las AWStats en Linux con Apache

AWStats es un programa que genera estadísticas gráficas para servidores web. Lo que hace es mostrar el contenido del archivo de log del servidor web de forma gráfica. AWStats se puede usar por medio de CGI o bien desde la propia línea de comandos. Entre las cosas que muestra están el número de visitas, navegadores usados, sistemas operativos … Para poder usarlo es necesario tener acceso de lectura al fichero de log del servidor y poder ejecutar scripts hechos en Perl desde la línea de comandos o bien como CGI.

Bajar AWStats

El programa se puede bajar de la dirección http://awstats.sourceforge.net

Instalación

Para realizar la instalación hay que ponerse como root. Una vez bajado AWStats hay que copiar el archivo bajado a /usr/local y descomprimirlo:

cp awstats-6.4.tgz /usr/local
cd /usr/local
tar xzvf awstats-6.4.tgz
Ahora hay que renombrar la carpeta awstats-6.4 a awstats:

mv awstats-6.4 awstats
Una vez hecho esto hay que entrar en la carpeta y acceder al directorio tools. Dentro de la carpeta hay que ejecutar el archivo “awstats_configure.pl”. Al ejecutarlo realiza una serie de preguntas para instalar y configurar AWStats. Las preguntas que realiza son:

Indicar donde se encuentra el archivo de configuracion del Apache. En mi caso se encuentr en /etc/apache/httpd.conf

Pregunta si se quiere crear un nuevo perfil. Si es la primera vez hay que darle que si y si tenemos ya uno creado y queremos que lo use pues no

Luego hay que ponerle un nombre al perfil, por ejemplo localhost.
ahora hay que ponerle el path que le indique donde queremos que se deje el fichero de configuracion. Por defecto es /etc/awstats, si le damos al intro sin mas nos lo creara en el lugar por defecto

Lo siguiente que pone es que este script no puede añadir lineas al cron y nos pone la manera de hacerlo. La línea que pone que habría que añadir al cron es la siguiente:
/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=localhost
Esa línea es para un solo perfil pero si tuviesemos más de uno habría que poner:
/usr/local/awstats/tools/awstats_updateall.pl now

Por último pone que ha creado el archivo de configuración /etc/awstats/awstats.localhost.conf y que se puede editar para configurarlo a nuestro gusto. En esta última pantalla pone también que para actualizar las estadisticas manualmente hay que poner:
perl awstats.pl -update -config=localhost
También pone que para ver las estadísticas hay que poner en el navegador lo siguiente:
http://localhost/awstats/awstats.pl?config=localhost

Esta configuración esta hecha para mi servidor local.

Ahora hay que configurar algunas cosas de forma manual en el archivo de configuracion de awstats. Para ello vamos al directorio en el que le hemos dicho que guarde el archivo de configuración y lo editamos. En mi caso sería vi /etc/awstats/awstats.localhost.conf y habría que mirar las siguientes líneas:

LogFile ___ Aquí hay que ponerle donde se encuentra el archivo de log del Apache. En mi caso sería /var/log/apache/access.log.

LogType ___ Hay que indicarle que queremos que analiza: W — para servidores web S — para un servidor de streaming M — para un servidor de correo F — para un servidor de ftp Para este caso que queremos analizar el log de un servidor web hay que poner W.

LogFormat ___ Para esta opción hay que poner el formato va a tener el log que se va a analizar. Para este caso 1 ya que se trata de un servidor Apache. También se le puede poner un log con formato personlizado.

SiteDomain __ Hay que ponerle el nombre del dominio para el que se quiere hacer el analisis. En mi caso sería localhost.

CreateDirDataIfNotExits ___ Esta directiva lo que hace es crear el directorio donde se van a guardar las estadísticas de awstats si no existe. Si se le pone un 1 lo creo y si esta a 0 no. Yo le he puesto un 1 para que lo cree porque si no a la hora de generara las estadísticas la primera vez no encuentra el directorio y da error. Si se le indica un directorio que existe no hace falta ponerle de valor 1. El directorio donde se guardan se indica en la directiva DirData.

Una vez hechos los cambios se guardan y se sale del editor y se ejecuta la siguiente orden:

/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -config=localhost update

Esto actualiza las estadísticas del servidor web. Antes de ver las estadísticas en el navegador hay que ver que permisos tiene la carpeta donde se guardan los logs.

ls -ld /var/lib/awstats

En mi caso los permisos son drwxr–r– Con estos permisos cualquier otro usuario que no sea root tendrá problemas para acceder al directorio así que decido cambiarlos de la siguiente forma:

chmod 755 /var/lib/awstats

Ahora voy a mi navegador y pongo la siguiente url en el navegador para ver si se muestran las estadísticas:

http://localhost/awstats/awstats.pl?config=localhost

Si todo a sido correcto se verá una página con las estadísticas : )

Ahora si queremos que se actualizen las estadísticas cada hora usando en crontab habría que editar el archivo crontab y ponerle lo siguiente:

0 * * * * root /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=localhost

Con esto a cada hora se actualizarían las estadísticas.

AWStats tiene muchas directivas para configurar por lo que es interesante ver la documentación que viene con el programa en el directorio docs para ajustarlo a nuestras necesidades.

AWStats y VirtualHosts en Apache 1.3

Si se tiene Apache con VirtualHosts y queremos tener las estaísticas para los varios dominios que se tienen habría que seguir los pasos de instalación uno por cada dominio.

Habría que tener en cuenta que el formato del log ha de ser “combined”. Este formato es un formato que viene definido dentro del fichero de configuración del Apache. La directiva que tiene esto es la que se llama LogFormat y encontraremos una línea por cada formato. Por defecto viene varias aunque se le pueden definir las que se quieran. El formato se define entre comillas y al final se pone el nombre que se le asigna a ese formato de log. AWStats entiende los logs que tienen el formato combined. En el caso de mi Apache vienen las siguientes definiciones:

LogFormat “%h %l %u %t \”%r\” %>s %b \”%{Referer}i\” \”%{User-Agent}i\” \”%{forensic-id}n\” %T %v” full
LogFormat “%h %l %u %t \”%r\” %>s %b \”%{Referer}i\” \”%{User-Agent}i\” \”%{forensic-id}n\” %P %T” debug
LogFormat “%h %l %u %t \”%r\” %>s %b \”%{Referer}i\” \”%{User-Agent}i\” \”%{forensic-id}n\”” combined
LogFormat “%h %l %u %t \”%r\” %>s %b \”%{forensic-id}n\”” forensic
LogFormat “%h %l %u %t \”%r\” %>s %b” common
LogFormat “%{Referer}i -> %U” referer
LogFormat “%{User-agent}i” agent
Si el log que le indiquemos al AWStats a la hora de configurarlo no tiene este formato pone un mensaje de error indicando que necesita logs con dicho formato.

Si resulta que el fichero de log no tiene ese formato entonces lo que hay que hacer es salvar el viejo y modificar el httpd.conf y en la sección de cada dominio virtual poner combined al fichero de log que se quiere que analize AWStats. En mi caso ha quedado de la siguiente forma:


ServerAdmin webmaster@host.some_domain.com
DocumentRoot /var/www/lostscene
ServerName www.lostscene.com
ErrorLog /var/log/apache/www.lostscene.com-error.log
CustomLog /var/log/apache/www.lostscene.com-access.log combined


ServerAdmin webmaster@host.some_domain.com
DocumentRoot /var/www/localhost
ServerName localhost
ErrorLog /var/log/apache/localhost-error.log
CustomLog /var/log/apache/localhost-access.log combined

Ahora para actualizar las estadísticas se podrían hacer para cada dominio de la siguiente forma:

/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=localhost -> Para las estadísticas del dominio localhost
/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=lostscene -> Para las estadísticas del dominio lostscene
O bien se podrían actualizar todas las estadísticas de golpe poniendo:

/usr/local/awstats/tools/awstats_updateall.pl now
Ahora para ver las estadísticas de cada dominio virtual se pondría en el navegador:

http://localhost/awstats/awstats.pl?config=localhost -> Para locahost
http://localhost/awstats/awstats.pl?config=lostscene -> Para www.lostscene.com

Installing Monit On Linux CentOS Server

monit is an open source software that monitor services on your server. It can restart if any of the service go down.

Download latest version of file from

http://mmonit.com/monit/download/

cd /usr/local/src
wget http://mmonit.com/monit/dist/monit-5.0.3.tar.gz
tar -zxvf monit-5.0.3.tar.gz
cd monit-5.0.3
./configure
make
make install

Copy control file to /etc

cp monitrc /etc/

Edit /etc/monitrc

vi /etc/monitrc

At the end of the file add or uncomment

include /etc/monit.d/*

Now to monitor Apache, create a file /etc/monit.d/apache

vi /etc/monit.d/apache

Add following content

check process httpd with pidfile /var/run/httpd.pid
group apache
start program = "/etc/init.d/httpd start"
stop program = "/etc/init.d/httpd stop"
if failed host 127.0.0.1 port 80 protocol http
   and request "/phpinfo.php"
   then restart
if 5 restarts within 5 cycles then timeout

You can change

and request "/phpinfo.php"

To any file on your web server. I do have a phpinfo file on my server, so i used it.

Some says phpinfo.php is a security risk, to me it is only a security risk if you run vlunerable application on your web server. If you use update software on your server, some one seeing your phpinfo is not a security issue.

To run monit, edit /etc/rc.local

vi /etc/rc.local

Add

/usr/local/bin/monit -d 60 -v -c /etc/monitrc  -p /var/run/monit.pid -

mod_evasive

How to install mod_evasive?

mod_evasive and mod_security modules are used to secure Apache Web Server from DDoS and brute force attacks by implementing web application firewall. For mod_security installation procedure, please use mod_security howto article.

The mod_evasive authoring site (zdziarski.com) states that mod_evasive is an evasive maneuvers module for Apache to provide evasive action in the event of an HTTP DoS or DDoS attack or brute force attack. It is also designed to be a detection and network management tool, and can be easily configured to talk to ipchains, firewalls, routers, and etcetera..

*Note: mod_evasive module has been known to cause problems with frontpage server extensions. If you use frontpage server extension, you should thoroughly test your mod_evasive installation before deploying a production server.

1a. Apache 1.3.x

# Download latest stable version of mod_evasive from zdziarski.com website
# See wget command below: the current version number is mod_evasive_1.10.1.tar.gz.

bash# cd /usr/src
bash# wget http://www.zdziarski.com/projects/mod_evasive/mod_evasive_1.10.1.tar.gz
bash# tar xfz mod_evasive_1.10.1.tar.gz
bash# cd mod_evasive

# Find the location of Apache Extension Tool (apxs) binary and perform the following.
bash# type apxs
# OR
bash# find / -type f -name apxs -print
bash# $APACHE_ROOT/bin/apxs -cia mod_evasive.c

1b. Apache 2.0.x

bash# up2date -i httpd-devel
bash# cd /usr/src

# Download latest stable version of mod_evasive from zdziarski.com website
# See wget command below: the current version number is mod_evasive_1.10.1.tar.gz.
bash# wget http://www.zdziarski.com/projects/mod_evasive/mod_evasive_1.10.1.tar.gz
bash# tar xfz mod_evasive_1.10.1.tar.gz
bash# cd mod_evasive
bash# $APACHE_ROOT/bin/apxs -cia mod_evasive20.c

2a. Configure mod_evasive for Apache 1.3.x. Find a location of httpd.conf, and edit with the following contents. Please follow mod_evasive documentation for configuration options. For this exercise, we’ll block the offending IP for 5 minutes before granting access again.

<IfModule mod_evasive.c>
DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 300
</IfModule>

2b. Configure mod_evasive for Apache 2.0.x. Find a location of httpd.conf, and edit with the following contents. Please follow mod_evasive documentation for configuration options. For this exercise, we’ll block the offending IP for 5 minutes before granting access again.

<IfModule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 300
</IfModule>

If you wish to enable mod_evasive mailing feature, you may enable it by adding “DOSEmailNotify” option in the IfModule section of the httpd.conf. Please consult documentation for details.

3. Restart apache server

bash# service httpd restart

bloquear un directorio

<Directory /www/doc/joomla/administrator>

Order Deny,Allow
Deny from All
# empresa
Allow from 217.126.228.230 217.126.228.232

# Red de localhost
Allow from 193.144.25.0/255.255.255.0
Allow from 193.144.30.0/255.255.255.0

# arturo g
Allow from 193.53.3.60

# Red Satec
Allow from 213.164.32.0/255.255.252.0

</Directory>

Antiguas entradas

© 2018 Agcapa

Tema por Anders NorenArriba ↑

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies