¿Que servicios están activos, son todos necesarios?
Para ver los servicios que tenemos activos se puede usar el comando netstat. Por ejemplo desde una conexión SSH:
root@server1:~# netstat -aNos muestra todos los servicios activos y escuchando para recibir usuarios o conexiones, aquí vemos algunos como Apache (http) para servir paginas web, smtp servicio de envio de emails, ftp para subir archivos.
Se puede parar un servicio si es innecesario o si ocupa mucha memoria o cpu, para esto podemos ver el consumo con el comando:
root@server1:~# ps aux --sort cputime
Aquí podemos ver a Mysql, el antivirus Clamav, y Dovecot es un servidor de IMAP y POP3 de código abierto. Aquí podemos ver el proceso ejecutado por nosotros anteriormente, es importante no confundir la columna START que lleva fechas y horas, indica en que fecha u hora comenzó la operación.
Luego para detener un servicio ejemplo Mysql:
/etc/init.d/mysql restart /etc/init.d/mysql stop /etc/init.d/mysql startEjemplo de utilización de comando en seguridad de servidor Linux, vamos a utilizar algunos comandos para detectar y prevenir un ataque de denegación de servicios que son los mas frecuentes.
Un ataque de denegación de servicio (ataque DoS) o ataques distribuidos de denegación de servicio (DDoS ataque) es un intento de hacer un recurso del servidor no esté disponible para sus usuario.
1) Detectar el ataque
El principal síntoma es el servidor se pone muy lento, o se “caen los servicios”, dejan de funcionar debido a que se genera un exceso de conexiones el servidor no puede responder.
Utilizaremos el comando “netstat”.
Nos muestra las conexiones activas en el puerto 80.
root@server1:~# netstat -an | grep :80 | sort
Aquí podemos ver que una de la ip activas que realiza consultas a nuestro servidor lleva 5000 conexiones, mientras que se podria decir que lo normal serian unas 20 o 30 conexiones por ip. Podríamos sospechar entonces de un ataque DDOS, ya que el consumo de recursos
2) Lo primero sera bloquear la ip del atacante con Iptables
Iptables es el nombre de la herramienta de espacio de usuario mediante la cual el administrador puede definir políticas de filtrado del tráfico que circula por la red.
root@server1:~# iptables -I INPUT -s 74,6,73,22 -j DROPCon eso se bloquea.
3) Instalar mod_evasive para Apache
Mod Evasive es un módulo para Apache que se encarga de proporcionarle un nivel de seguridad adicional a nuestro servidor web muy potente y personalizable.
En el ejemplo lo haremos para Centos, pero puede adecuarse a cualquier Linux con Apache.
Instalamos dependencias desde ssh
root@server1:~# cd /usr/src root@server1:~# wget http://www.zdziarski.com/projects/mod_evasive/mod_evasive_1.10.1.tar.gz root@server1:~# tar zxvf mod_evasive_1.10.1.tar.gz root@server1:~# cd mod_evasive root@server1:~# apxs -cia mod_evasive20.c # para Apache 1.3 el comando sería apxs -cia mod_evasive.c root@server1:~# vi /etc/httpd/conf/httpd.conf # editamos la configuracion root@server1:~# service httpd restart # reiniciamos el ApacheEn el /etc/httpd/conf/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>Los parámetros importantes
- DOSPageCount: número de conexiones que puede realizar un usuario por seg antes de ser bloqueada su ip.
- DOSSiteCount: cuantas peticiones puede hacer un usuario antes de ser bloqueado.
- DOSBlockingPeriod: cuanto tiempo en segundos durara el bloqueo de esa IP.