Publicado el

Habilitar las Tareas Cron a Ejecutar en las Madrugadas (OBSOLETO) en Linux

habilitar-las-tareas-cron-a-ejecutar-en-las-madrugadas-obsoleto-en-linux

OBSOLETO: Es preferible no instalar el webmin en los servidores de producción y lo indicado aquí puede hacerse directamente con crontab -e (ver lo explicado en el punto del RKHunter).

Con la finalidad de que todas las madrugadas se ejecuten los programas de diagnóstico y se emitan los emails al Administrador del Servidor debemos:

Ingresar a:

Webmin > Sistema > Tareas Planificadas (Cron)

Crear los siguientes crones usando el enlace “Crear una nueva tarea de cron en catálogo“ y asignándolos a root, con ejecución en cualquier fecha a las horas seleccionadastodos los días de todas las semanas de todos los meses:

Ejecutar a las 12:10 AM:

/usr/local/bin/rkhunter --update > /dev/null 2>&1
Publicado el

Configuración Global del Apache en Linux

configuración-global-del-apache-en-linux

Ingresar a:

WHM > Service Configuration > Apache Configuration > Global Configuration

Y cambiar los siguientes parámetros:

SSLCipherSuite   ALL:!ADH:+HIGH:+MEDIUM:-LOW:-SSLv2:-EXP

TraceEnable  Pasarlo de On a Off

ServerSignature  Pasarlo de On a Off

ServerTokens  Pasarlo de Full a ProductOnly

FileETag   Pasarlo de All a None

StartServers  5

MinSpareServers  5

MaxSpareServers  10

ServerLimit   256

MaxClients   150

MaxRequestsPerChild 10000

KeepAlive   On

KeepAliveTimeout  5

MaxKeepAliveRequests 100

TimeOut   300

Luego se debe hacer clic en el botón “Save” y finalmente hacer clic en el botón “Rebuild configuration and restart apache“.

A su vez, esto se puede hacer manualmente de la siguiente forma:

Uno de los mecanismos comúnmente usados por los intrusos es verificar la versión del servidor web Apache con la finalidad de conocer con exactitud cual tipo de vulnerabilidad o exploit será utilizada para penetrar el sistema. Para aumentar la seguridad debemos deshabilitar la identificación del Apache con:

nano /etc/httpd/conf/httpd.conf

Buscar y asegurar que las siguientes variables se cumplan:

Timeout 300
 TraceEnable Off
ServerSignature Off
ServerTokens ProductOnly
FileETag None
StartServers 5
 <ifmodule prefork="" c="">
MinSpareServers 5
MaxSpareServers 10
</ifmodule>
ServerLimit 256
MaxClients 150
MaxRequestsPerChild 10000
KeepAlive On
KeepAliveTimeout 5
MaxKeepAliveRequests 100

Reiniciar Apache:

service httpd restart (ó con /etc/rc.d/init.d/httpd restart)

Por otra parte, si se quiere limitar la exposición de la versión de PHP que se está ejecutando se debe hacer lo siguiente:

WHM > Service Configuration > PHP Configuration Editor

Buscar:

expose_php

y colocarlo en Off. Luego hacer clic en el botón “Save“.

Si se desea hacer esto manualmente se deben editar los archivos php.ini siguientes:

nano -w /etc/php.ini
nano -w /usr/local/lib/php.ini
nano -w /usr/local/php4/lib/php.ini

Buscar la opción

expose_php

y colocarla en Off

Guardar el archivo y rearrancar el apache

service httpd restart (ó con /etc/rc.d/init.d/httpd restart)

LISTO.

Publicado el

Aumentar la seguridad en php.ini en Linux

aumentar-la-seguridad-en-phpini-en-linux

Ingresar a:

WHM > Service Configuration > Apache Configuration > Global Configuration

Y cambiar los siguientes parámetros:

SSLCipherSuite   ALL:!ADH:+HIGH:+MEDIUM:-LOW:-SSLv2:-EXP

TraceEnable  Pasarlo de On a Off

ServerSignature  Pasarlo de On a Off

ServerTokens  Pasarlo de Full a ProductOnly

FileETag   Pasarlo de All a None

StartServers  5

MinSpareServers  5

MaxSpareServers  10

ServerLimit   256

MaxClients   150

MaxRequestsPerChild 10000

KeepAlive   On

KeepAliveTimeout  5

MaxKeepAliveRequests 100

TimeOut   300

Luego se debe hacer clic en el botón “Save” y finalmente hacer clic en el botón “Rebuild configuration and restart apache“.

A su vez, esto se puede hacer manualmente de la siguiente forma:

Uno de los mecanismos comúnmente usados por los intrusos es verificar la versión del servidor web Apache con la finalidad de conocer con exactitud cual tipo de vulnerabilidad o exploit será utilizada para penetrar el sistema. Para aumentar la seguridad debemos deshabilitar la identificación del Apache con:

nano /etc/httpd/conf/httpd.conf

Buscar y asegurar que las siguientes variables se cumplan:

Timeout 300
 TraceEnable Off
ServerSignature Off
ServerTokens ProductOnly
FileETag None
StartServers 5
 <ifmodule prefork="" c="">
MinSpareServers 5
MaxSpareServers 10
</ifmodule>
ServerLimit 256
MaxClients 150
MaxRequestsPerChild 10000
KeepAlive On
KeepAliveTimeout 5
MaxKeepAliveRequests 100

Reiniciar Apache:

service httpd restart (ó con /etc/rc.d/init.d/httpd restart)

Por otra parte, si se quiere limitar la exposición de la versión de PHP que se está ejecutando se debe hacer lo siguiente:

WHM > Service Configuration > PHP Configuration Editor

Buscar:

expose_php

y colocarlo en Off. Luego hacer clic en el botón “Save“.

Si se desea hacer esto manualmente se deben editar los archivos php.ini siguientes:

nano -w /etc/php.ini
nano -w /usr/local/lib/php.ini
nano -w /usr/local/php4/lib/php.ini

Buscar la opción

expose_php

y colocarla en Off

Guardar el archivo y rearrancar el apache

service httpd restart (ó con /etc/rc.d/init.d/httpd restart)

LISTO.

Publicado el

Deshabilitar TelNet en Linux

deshabilitar-telnet-en-linux

 

El comando telnet es una de las vías más vulnerables para permitir el acceso a intrusos en forma remota, es por ello que debemos deshabilitarlo. Para lograr esto se debe ejecutar:

nano -w /etc/xinetd.d/telnet

Colocar:

disable = yes

Salir y Guardar

Reiniciar con:

/etc/init.d/xinetd restart
Publicado el

Proteger SYSCTL contra ataques de SYN FLOODS en Linux

proteger-sysctl-contra-ataques-de-syn-floods-en-linux

El comando sysctl es usado para visualizar, configurar y automatizar configuraciones del kernel en el directorio /proc/sys/. Un ataque posible es el SYN FlOODS (Ver el Punto 3.0 donde se explica este tipo de ataque).

Para proteger Sysctl de este tipo de ataques debemos ejecutar:

cd /etc
nano /etc/sysctl.conf

Comentar lo que tenga y colocar:

#Kernel sysctl configuration file for Red Hat Linux
 #
 # For binary values, 0 is disabled, 1 is enabled. See sysctl(8) and
 # sysctl.conf(5) for more details.
 # Disables packet forwarding
 net.ipv4.ip_forward=0
 # Disables IP source routing
 net.ipv4.conf.all.accept_source_route = 0
 net.ipv4.conf.lo.accept_source_route = 0
 net.ipv4.conf.eth0.accept_source_route = 0
 net.ipv4.conf.default.accept_source_route = 0
 # Enable IP spoofing protection, turn on source route verification
 net.ipv4.conf.all.rp_filter = 1
 net.ipv4.conf.lo.rp_filter = 1
 net.ipv4.conf.eth0.rp_filter = 1
 net.ipv4.conf.default.rp_filter = 1
 # Disable ICMP Redirect Acceptance
 net.ipv4.conf.all.accept_redirects = 0
 net.ipv4.conf.lo.accept_redirects = 0
 net.ipv4.conf.eth0.accept_redirects = 0
 net.ipv4.conf.default.accept_redirects = 0
 # Enable Log Spoofed Packets, Source Routed Packets, Redirect Packets
 net.ipv4.conf.all.log_martians = 0
 net.ipv4.conf.lo.log_martians = 0
 net.ipv4.conf.eth0.log_martians = 0
 # Disables IP source routing
 net.ipv4.conf.all.accept_source_route = 0
 net.ipv4.conf.lo.accept_source_route = 0
 net.ipv4.conf.eth0.accept_source_route = 0
 # Enable IP spoofing protection, turn on source route verification
 net.ipv4.conf.all.rp_filter = 1
 net.ipv4.conf.lo.rp_filter = 1
 net.ipv4.conf.eth0.rp_filter = 1
 net.ipv4.conf.default.rp_filter = 1
 # Disable ICMP Redirect Acceptance
 net.ipv4.conf.all.accept_redirects = 0
 net.ipv4.conf.lo.accept_redirects = 0
 net.ipv4.conf.eth0.accept_redirects = 0
 net.ipv4.conf.default.accept_redirects = 0
 # Disables the magic-sysrq key
 kernel.sysrq = 0
 # Decrease the time default value for tcp_fin_timeout connection
 net.ipv4.tcp_fin_timeout = 15
 # Decrease the time default value for tcp_keepalive_time connection
 net.ipv4.tcp_keepalive_time = 1800
 # Turn off the tcp_window_scaling
 net.ipv4.tcp_window_scaling = 0
 # Turn off the tcp_sack
 net.ipv4.tcp_sack = 0
 # Turn off the tcp_timestamps
 net.ipv4.tcp_timestamps = 0
 # Enable TCP SYN Cookie Protection
 net.ipv4.tcp_syncookies = 1
 # Enable ignoring broadcasts request
 net.ipv4.icmp_echo_ignore_broadcasts = 1
 # Enable bad error message Protection
 net.ipv4.icmp_ignore_bogus_error_responses = 1
 # Log Spoofed Packets, Source Routed Packets, Redirect Packets
 net.ipv4.conf.all.log_martians = 1
 # Increases the size of the socket queue (effectively, q0).
 net.ipv4.tcp_max_syn_backlog = 1024
 # Increase the tcp-time-wait buckets pool size
 net.ipv4.tcp_max_tw_buckets = 1440000
 # Allowed local port range
 net.ipv4.ip_local_port_range = 16384 65536
 

Salir y Guardar

Publicado el

Monitor de Integridad del Sistema (SIM) en Linux

monitor-de-integridad-del-sistema-sim-en-linux

Generalidades

SIM es un monitor de la integridad del sistema y sus servicios. Está diseñado para ser intuitivo y modular y para proporcionar un sistema limpio e informativo. Para ello, verifica sistemáticamente que los servicios están en línea, que los promedios de carga sean adecuados, y que los archivos de registro de eventos (logs) tienen tamaños razonables. SIM dispone de diversos módulos y características de mayor profundidad que lo convierten en una herramienta muy completa a nuestra disposición para la administración de servidores en la internet.

Las características de SIM son:

  • Supervisión de los Servicios HTTP, FTP, DNS, SSH, MYSQL y más
  • Seguimiento de eventos y del sistema de alertas
  • Capacidad de auto-reinicio para servicios caídos
  • Verificación contra los sockets de red y la lista de procesos para asegurar que los servicios estén en línea
  • Monitorización avanzada del servicio HTTP para evitar problemas encontrados comúnmente
  • Monitor de carga del sistema con advertencias y acciones personalizables
  • Capacidad de auto-reiniciar el sistema con un nivel de carga crítica definible
  • Cambio de prioridad configurable para los servicios, para niveles de carga de advertencia o crítica
  • Pantalla informativa del estado en la línea de comandos
  • Archivo de configuración fácilmente personalizable
  • Programa de auto configuración
  • Configuración del cronjob automática
  • Programa de instalación simple e informativo
  • Función de actualización automática integrada

Instalación

Para instalar SIM se deben seguir los siguientes pasos:

cd /usr/local/src
wget http://www.rfxn.com/downloads/sim-current.tar.gz
tar -zxvf sim-current.tar.gz
cd sim-3.0/
./setup -i

Esto muestra la licencia, el readme y la configuración automática, dar ENTER todo el tiempo.

Ahora debemos editar la configuración con:

nano /usr/local/sim/config/conf.sim

Debemos buscar los siguientes parámetros y colocar el valor indicado:

EMAIL="hostmaster@sudominio.com"
SUBJ="Advertencia de Estado del Servidor $HOSTNAME"

Para activar los servicios que queremos monitorear debemos editar el archivo de configuración de módulos:

nano /usr/local/sim/config/mods.control

Observaremos la lista de módulos al final del mismo notando que todos están apagados (en off) por lo que no se verificará su funcionamiento. Para activar la verificación de los servicios deseados debemos colocarlos en on, por lo que se deben buscar los siguientes módulos y colocarlos en on como se muestra a continuación:

init.httpd on
init.mysqld on
init.named on
init.sshd on

La lista de módulos indicada arriba es solo un ejemplo, como podrá observar en el archivo de configuración es posible monitorear muchos otros servicios incluyendo el propio cpanel o el webmin, lo importante es activar (colocar en on) solo aquellos servicios que realmente son fundamentales para el funcionamiento del servidor y están en ejecución en el mismo (ej. no activar la verificación del webmin en los servidores de producción ni del cpanel en los de desarrollo ya que dichos servicios no existen en esos servidores).

La tarea cron se crea automáticamente por lo que no es necesario crearla manualmente, sin embargo, si se desea eliminar y crearla posteriormente de nuevo el comando es:

cd /usr/local/src/sim-3.0/
./setup -c

Si ya se estaba ejecutando el cron y lo eliminamos, entonces debemos ejecutar 2 veces el comando para re-establecerlo.

Enlaces de Recursos:

http://www.rfxn.com/appdocs/README.sim

http://www.rfxn.com/appdocs/CHANGELOG.sim

Publicado el

Monitor de Sockets Linux (LSM)

monitor-de-sockets-linux-lsm

Generalidades:

LSM es un monitor de sockets de red; está diseñado para realizar un seguimiento de los cambios en los sockets de la red y sockets de dominio de UNIX, esto es básicamente un monitor de puertos. Para ello, realiza una comparación simple basada en las diferencias de sockets actuales y nuevos (puertos del servidor). Un sistema de alerta simple y configurable envía alertas cada vez que se activan nuevos puertos. LSM omitirá los servicios que ya mantienen sockets abiertos y sólo informará de eventos cuando se haya creado un socket ‘nuevo’ (puerto).

Instalación:

Para instalar el LSM se debe ejecutar:

cd /usr/local/src
wget http://www.rfxn.com/downloads/lsm-current.tar.gz
tar -zxvf lsm-current.tar.gz
cd lsm-0.6/
./install.sh

Indica que todo está instalado:

.: LSM installed
Install path: /usr/local/lsm
Config path: /usr/local/lsm/conf.lsm
Executable path: /usr/local/sbin/lsm

Para configurarlo adecuadamente se debe ejecutar:

nano /usr/local/lsm/conf.lsm

Y cambiar las siguientes variables:

USER="hostmaster@sudominio.com"
SUB="!!Alerta LSM!! en $HOSTNAME"

Ahora debemos crear un cron para la ejecución del LSM. Para ello debemos ejecutar:

cd /etc/cron.d
nano lsm

Agregar:

MAILTO=
SHELL=/bin/sh
*/10 * * * * root /usr/local/sbin/lsm -c >> /dev/null 2>&1

Salir y Guardar

Cambiar Permisos:

chmod 644 lsm

Reiniciar el servicio de Cron

service crond restart (ó /etc/rc.d/init.d/crond restart)

Enlaces a Recursos:

http://www.rfxn.com/appdocs/README.lsm

http://www.rfxn.com/appdocs/CHANGELOG.lsm

Publicado el

Crear una Alerta por Email cuando alguien ingresa por SSH en Linux

crear-una-alerta-por-email-cuando-alguien-ingresa-por-ssh-linux

Es fundamental que el administrador de un servidor conozca con precisión cuando alguien ingrese en el sistema utilizando el usuario root de tal forma que pueda ejecutar las acciones de defensa lo antes posible, para lograr esto debemos ejecutar:

cd /root
nano -w /root/.bashrc

Ir al final del archivo y agregar:

echo 'ALERTA - Acceso Root por SSH en el Servidor N – Fecha/Desde:' `date` `who` | mail -s "Alerta: Acceso Root por SSH en el Servidor N `who | cut -d"(" -f2 | cut -d")" -f1`" hostmaster@sudominio.com

NOTA: Asegurarse que todo el comando anterior quede en una sola línea.

Salir y Guardar

Publicado el

Creando un mensaje de advertencia al entrar por SSH en Linux

creando-un-mensaje-de-advertencia-al-entrar-por-ssh-en-linux

Con la finalidad de mostrar una advertencia legal en inglés y en español a los intrusos que accedan por SSH debemos ejecutar:

nano /etc/motd

Introducir en el archivo:

This server system is for SUEMPRESA authorized users only. All activity is logged and regulary checked by systems personal. Individuals using this system without authority or in excess of their authority are subject to having all their services revoked. Any illegal services run by user or attempts to take down this server or its services will be reported to local law enforcement, and said user will be punished to the full extent of the law. Anyone using this system consents to these terms.

Este sistema servidor es solo para usuarios autorizados de SUEMPRESA. Toda la actividad realizada es registrada en un bitacora que es verificada en forma periodica por nuestro personal de sistemas. Si usted utiliza este sistema sin la autorizacion necesaria o en exceso de la autoridad que se le ha otorgado, le podriamos suspender el servicio. Cualquier servicio ilegal ejecutado por un usuario o intento de sacar de funcionamiento este servidor o sus servicios sera reportado a las autoridades judiciales, y a dicho usuario le sera aplicado todo el peso de la ley. Al usar este sistema usted esta de acuerdo con estos terminos de uso.

Luego salir y Guardar.