Jueves Octubre 17 , 2019
Text Size
   

Reduce tus ataques DDOS en apache http

manuales - Linux

Muchas veces montamos un servidor, ya sea web o de aplicaciones, y no somos conscientes de que está expuesto a la red; con los problemas de seguridad que eso conlleva. No lo somos, hasta que se nos cae el servicio sin saber muy bien por qué o instalamos una herramienta como logwatch, fail2ban o mod_evasive y somos conscientes de los ataques constantes que realiza nuestro server.

Pues bien, en éste artículo, vamos a configurar el módulo de apache httpd ModEvasive para que nos ayude a reducir las consecuencias de esos ataques en nuestras máquinas.

1) Verificamos que estamos al día con nuestros paquetes

 # apt-get update -y 
 # apt-get upgrade -y

2) Instalaremos mod_evasive

# apt-get install libapache2-mod-evasive

verificando que está instalado

# apachectl -M | grep evasive

Si todo está bien, recibiremos este resultado

evasive20_module (shared)

3) Configuraremos el módulo

# vi /etc/apache2/mods-enabled/evasive.conf

y lo rellenaremos como el ejemplo de a continuación, siempre, ajustándolo a nuestras necesidades

 
     DOSHashTableSize 3097 
     DOSPageCount 2 
     DOSSiteCount 50 
     DOSPageInterval 1 
     DOSSiteInterval 1 
     DOSBlockingPeriod 10 
     DOSEmailNotify Esta dirección electrónica esta protegida contra spam bots. Necesita activar JavaScript para visualizarla  
     DOSSystemCommand "su - someuser -c '/sbin/... %s ...'" 
     DOSLogDir "/var/log/mod_evasive" 

4) Unos últimos retoques

 # mkdir /var/log/mod_evasive 
 # chown -R www-data:www-data /var/log/mod_evasive

5) Y el toque personal de la casa, reiniciar apache sin tirar conexiones

 # systemctl restart apache2

Listo! ya habéis dado un paso mas en la securización de vuestro server ;)


** Anotaciones:

DOSHashTableSize: Tamaño de la tabla hash que almacenará las IPs (nodos). Por defecto el valor es de 3097. A más tamaño, más memoria consumida.

DOSPageCount / DOSPageInterval: Umbral máximo que se debe alcanzar para ser incluído en la lista de bloqueados de una página concreta en segundos.

DOSSiteCount / DOSSiteInterval: Umbral máximo que se debe alcanzar para ser incluído en la lista de bloqueados de cualquier objeto (imagenes, css...) en segundos.

DOSBlockingPeriod: Tiempo en segundos que permanecerá bloqueada la IP de la lista. Dentro de este periodo, los accesos desde dicha IP obtendrán un error HTTP 403 (prohibido). En el caso de que la IP intente acceder dentro del periodo de bloqueo, el contador vuelve a ponerse en su valor inicial y tendrá que volver a transcurrir el número de segundos desde el principio de nuevo.

DOSEmailNotify: Opcional. Dirección de email a la que serán enviadas (mediante el comando mail) notificaciones cuando se bloqueen IPs. Incorpora sistema lock para no repetir varios emails y notificar una sola vez.

DOSSystemCommand: Opcional. Comando que será ejecutado cada vez que se añada una IP a la lista. Se reemplazará %s por la IP. De este modo, una buena técnica es hacer lo siguiente:  "/sbin/iptables -I INPUT -p tcp --dport 80 -s %s -j DROP" Lo que hará que se ejecute el firewall de Linux (iptables) y bloquee todas las peticiones entrantes por el puerto TCP/80 (web).

DOSLogDir: Opcional. Selecciona una carpeta como directorio temporal para los logs. Por defecto, si no es especificado, tiene el valor /tmp.

DOSWhitelist: Opcional. Incluye una lista blanca para IPs que no tendremos en cuenta para bloquear. Ideal para añadir por ejemplo, el rango de IPs de los bots de Google (rango CIDR 66.249.64.0/19): DOSWhitelist 66.249.73.*
Puedes usar varias directivas DOSWhitelist y comodin de rangos de hasta los 3 últimos octetos.

 

Linux: establecer zona horaria desde linea de comandos

manuales - Linux

A menudo al configurar un servidor nuevo, y sobre todo si lo hacemos en un entorno VCenter o ESXi, éste coge la hora de dónde no debe y sin darnos cuenta, la máquina tiene una hora y fechas incorrectas.

Para solucionarlo, lo haremos como siempre, de forma sencilla y en pocos pasos:

1) Listaremos las zonas horarias para encontrar la nuestra (en nuestro caso [zone] = America, Europe...)

$ timedatectl list-timezones | grep -i [zone] 

2) Desharemos el link simbólico de /etc/localtime dado que éste apunta a la zona horaria

$ sudo unlink /etc/localtime

3) Realizaremos el link correcto a nuestra zona horaria

$ sudo ln -s /usr/share/zoneinfo/[Zone/TimeZone] /etc/localtime
pe. para Madrid > sudo ln -s /usr/share/zoneinfo/Europe/Madrid /etc/localtime

4) Ejecutaremos la comprobación

$ timedatectl

Y ya esta!!! listo ;)

   

Cron: Dejar de enviar mails de un job en concreto

manuales - Linux

Si has configurado la cuenta de root como sysadmin de tu sistema para recibir todos los correos importantes de tu servidor; sabrás que recibes una cantidad ingente de correos al día que poco a poco se hacen ingestionables.

Por tanto, necesitamos una solución sencilla para que todos aquellos correos que recibimos de ejecución de tareas repetitivas, nos dejen de llegar.

Ya sea en /etc/crontab /etc/cronta.d/anacron o cuando realizas un crontab -e, en cualquiera de las tareas que se incluyen en esos diferentes crontab, debemos de añadir al final de la sentencia de ejecución:

>/dev/null 2>&1

Así por ejemplo:

00 07 * * * root if test -x /usr/sbin/apticron; then /usr/sbin/apticron --cron; else true; fi >/dev/null 2>&1

Y para comprobar que funciona (en este caso particular, en otro cambiar la ruta de /etc/cronXX):

run-parts /etc/cron.d/

Y con éstos sencillos pasos y un poco de paciencia, dejaremos de recibir tediosos mensajes diarios para centrarnos en los importantes ;)

   

Wordpress https to http ProxyPass

manuales - Linux

Ya tengas tu Wordpres en docker sólo con el puerto http publicado o una máquina tras un ProxyPass de Apache (de un frontal web); con ésta sencilla guía, podrás configurar el acceso https sin ningún esfuerzo

1) Habilitamos en nuestro sistema el mod_header de apache httpd

  # a2enmod headers

2) Editamos el virtualhost (ya sea .conf en sites-available o tu conf general de apache) y nos aseguramos que contenga éstas líneas


    ServerName xxx.gnserver.org
    Redirect / https://xxx.gnserver.org/


    ServerName xxx.gnserver.org
    SSLCertificateFile /etc/letsencrypt/live/xxx.gnserver.org/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/xxx.gnserver.org/privkey.pem
    Include /etc/letsencrypt/options-ssl-apache.conf
## las siguientes líneas son específicas para wordpress y requieren del modulo mod_header
ProxyPreserveHost On
RequestHeader set X-Forwarded-Proto "https"

ProxyPass http://IP_INTERNA_DE_MAQUINA_WORDPRESS:PUERTO/
ProxyPassReverse http://xxxx.gnserver.org/

    ErrorLog /opt/logs/httpd/xxx.gnserver.org-error_log
    CustomLog /opt/logs/httpd/xxx.gnserver.org-access_log common

3) Nos aseguramos que en nuestro wp-config.php de wordpress se encuentren los siguientes ajustes

define( 'WP_HOME', 'https://studios.gnserver.org/' );
define( 'WP_SITEURL', 'https://studios.gnserver.org/' );
// éstas líneas de arriba, de las primeras del archivo
$_SERVER['HTTPS'] = 'on';

Y listo! en 3 sencillos pasos tendrás funcionando tu site por https ;)

 

   

Certbot con proxypass (y sin el)

manuales - Linux

Está claro que cada vez más, es imprescindible tener un certificado firmado (y no autofirmado) sobre todo para dar servicio, fuera de nuestras pruebas internas.

letsencrypt una autoridad de certificación, nos ayuda con esta labor y nos proporciona éste servicio de forma gratuita.

Cerbot, será el software encargado de gestionar los certificados de nuestra máquina; ya sea de forma local (sin ser frontal de apache) o siendo un proxy de las peticiones http.

En Debian/Ubuntu haremos lo siguiente:

1) Prepararemos el sistema para instalar Certbot

 $ sudo apt-get update
 $ sudo apt-get install software-properties-common
 $ sudo add-apt-repository universe
 $ sudo add-apt-repository ppa:certbot/certbot
 $ sudo apt-get update

2) Realizaremos la instalación

 $ sudo apt-get install certbot python-certbot-apache

3) En principio con el siguiente comando, Certbot incluiría en todos vuestros hosts o virtualhosts de apache los certificados firmados sin que tuvierais que hacer nada más, aunque en mi caso y usando proxypass, fue necesario, usar el comando del paso 4)

 $ sudo certbot --apache

4) Comando, que tuve que usar en mi frontal de apache, para dar de alta un site con el certificado firmado por letsencrypt

 $ sudo letsencrypt --apache -d webservice.acabey.xyz

5) Aunque Certbot modificará una línea (probablemente /etc/cron.d/certbot) para realizar la comprobación de caducidad de los certificados; con éste comando, podréis verificarlo a mano

 $ sudo certbot renew --dry-run
   

QNAP 251+ RAM UPGRADE 8GB

manuales - Server



Aunque la cantidad de RAM que viene con tu NAS es más que suficiente para gestionar su sistema operativo basado en Linux, si quieres aprovechar sus cualidades como servidor, puedes aumentar su RAM hasta los 8GB y dedicarlo a tareas más pesadas, que seguro sus 4 núcleos están dispuestos a aceptar //// Although the amount of RAM that comes with your NAS is more than enough to manage your Linux-based operating system, if you want to take advantage of its qualities as a server, you can increase your RAM up to 8GB and dedicate it to heavier tasks
   

Página 1 de 29




who

Tenemos 126 invitados conectado(s)