Archivo

Archivo para la Categoría "Seguridad"

Proteger el servidor de ataques por fueerza bruta

17/04/2012 Deja un comentario

BFD (Brute Force Detection) es un script que va analizando cada cierto tiempo los logs de los diferentes servicios en busca de fallos de autentificación, exceso de conexiones por parte de una misma IP, etc. En el momento que se encuentre alguna de éstas situaciones, el script puede alertanos o incluso bloquear la IP.

Para obtener los mejores resultados en cuanto a seguridad, se recomienda su uso integrado junto con APF (Advanced Policy Firewall), herramienta que analizaremos en otra ocasión.

Para la instalación BFD, escribiremos en la consola:

cd /root/descargas (o la carpeta en la que guardes tus sources)
wget http://rfxnetworks.com/downloads/apf-current.tar.gz
tar -zxf apf-current.tar.gz
cd apf-0.*
./install.sh

Una terminada la instalación, se nos muestran las rutas al los ejecutables y al fichero de configuración. Modificaremos éste último con nuestro editor preferido. Por lo general su ubicación será /usr/local/bfd/conf.bfd Los parámetros a modificar serán:

ALERT_USR="1"
EMAIL_USR="direccion@tnombredominio.com"
EMAIL_SUBJECT=”Ataque de Fuerz Bruta en el servidor $HOSTNAME”

También deberemos añadir nuestra IP, para evitar que el sitema nos la bloquee añadiéndola al fichero donde se guardan las  IPs a ignorar en el rastreo. Su ubicación es:  /usr/local/bfd/ignore.hosts

Podemos personalizar las reglas que vienen por defecto para cada servicio, modificando los parametros que se encuentran en /usr/local/bfd/rules

Finalmente, para ejecutar el script deberemos escribir:

/usr/local/sbin/bfd -s
Categorías:Internet, Seguridad Etiquetas: , ,

Incrementar la seguridad de un servidor ssh

13/04/2012 Deja un comentario

Podemos securizar nuestro servidor ssh si aplicamos una serie de modificaciones. El fichero a editar será el de configuración, que se encuentra en /etc/ssh/sshd_config

 

Seguridad en los accesos: realizaremos los siguientes cambios:

#LoginGraceTime 2m -> LoginGraceTime 20 Con esto reducimos el tiempo de espera del password de 2 minutos a 20 segundos.

#PermitRootLogin yes -> PermitRootLogin no Evitamos el acceso directo de root, por lo que necesitaremos tener creados usuarios con acceso “normal”. Si necesitamos usar al usuario root, utilizaremos su.

#MaxAuthTries 6 -> MaxAuthTries 3 Podemos reducir el número de intentos fallidos de acceso al servidor.

ListenAddress 192.168.1.10 Podremos indicar la IP que queramos que tenga acceso al servidor, aunque esto será recomendable solamente si se dispone de un IP fija.

 

Utilizar únicamente el SSH2: ya que este protocolo es mas seguro que el SSH1

#Protocol 2,1 -> Protocol 2

 

Crear un mensaje personalizado: este mensaje se mostrará cada vez que un usuario acceda al sistema

La ruta es /etc/motd En este archivo escribiremos el mensaje que creamos oportuno y guardaremos.

Para que todos los cambios efectuados sean accesibles deberemos reiniciar el servidor. Para ello deberemos escribir:

service sshd restart o bien /etc/init.d/sshd restart

Categorías:Seguridad Etiquetas:

Actualización de un servidor basado en CentOs

10/04/2012 Deja un comentario

En los sistemas Linux cuyos paquetes de instalación están basados en el formato .rpm, como Red Hat, Fedora, CentOs…, existe una utilidad denominada YUM (cuyas siglas vienen de Yellow dog Updater Modified). Con esta utilidad podremos gestionar fácilmente los paquetes .rpm

Si queremos actualizar nuestro sistema con todas sus dependencias deberemos escribir:

yum update

 

Con yum, podemos también y de forma muy sencilla realizar una serie de tareas:

Instalar un paquete y sus dependencias:

yum install nombre-paquete

 

Desinstalar un paquete:

yum remove nombre-paquete

 

Consultar la información de un paquete:

yum info nombre-paquete

 

Realizar una búsqueda de un paquete:

yum search nombre-paquete

 

 

Categorías:Seguridad Etiquetas: , ,

Vulnerabilidad en Plesk

14/03/2012 Deja un comentario

La empresa Pararells, recientemente ha anunciado, que existe un fallo de seguridad en el panel de control de Plesk. Esta vulnerabilidad afecta a todas las versiones inferiores a la 10.4 y con el paquete “API RPC” instalado.

Existe una utilidad para corregir este fallo, por lo que no es necesaria la actualización del panel a una versión superior.

Para mas información sobre este fallo, podéis acudir a la página web de Pararells pulsando aqui.

 

Categorías:Plesk, Seguridad Etiquetas: , , ,

Comandos SSH básicos

14/12/2011 Deja un comentario

SSH es un protocolo de comunicación seguro que permite controlar un equipo remotamente a través de comandos. Es muy similar a Telnet, pero en este caso la información viaja codificada.

Para conectarnos a un servidor con nuestro nombre de usuario escribiremos:

ssh host  (donde host será el nombre del servidor o su ip)

Para conectarnos a un servidor con un nombre de usuario remoto pondremos:

ssh usuario@host  (donde usuario será el nombre del usuario remoto y host será el nombre del servidor o su ip)

Buscar archivos en el equipo remoto

ssh usuario@host  “find /bin -name zz” (buscará en la carpeta bin del equipo remoto remoto)

Para Copiar ficheros por ejemplo desde el equipo local al remoto escribiremos

scp /tmp/file usuario@host:/tmp

Las opciones más habituales de scp son:

-p: conserva las propiedades del archivo. Permisos del archivo, fecha de última de modificación.
-r: realiza la copia recursiva de directorios

Categorías:Seguridad

Seguridad en nuestras aplicaciones PHP (parte dos)

23/11/2011 Deja un comentario

Hace unos días un dimos unas directrices para que nuestra aplicación creada en php fuera más segura. Hoy vamos a ampliar dicha información con unos consejos más:

Evitar que se muestre la información de PHP

Si tenemos una pagina php cuyo contenido sea <? phpinfo() ?> al ejecutarla en nuesto servidor, obtendremos toda la información de PHP, módulos activos, rutas, datos de configuración, etc.

Para desactivar esta opción deberemos buscar “expose_php” en nuestro fichero php.ini y ponerlo a Off:

expose_php = Off

Utilización del Safe Mode

Por defecto el Safe_mode está “On” aunque la mayoria de CMS o aplicaciones web necesitan que esta directiva esté a “Off”. Esta directiva es para que los scripts PHP únicamente puedan acceder a los ficheros que tienen como propietario el mismo que ellos para evitar, por ejemplo, que tengan acceso de lectura a ficheros de sistema. Esto puede ser un problema en el momento que necesitamos acceder a información generada por otros usuarios en el sistema. La solución será la siguiente:

safe_mode = Off
safe_mode_gid = On

Si activamos safe_mode_gid en lugar de safe_mode, en lugar de revisar el usuario se revisará el grupo.

Visualizar los errores PHP

Para eliminar los mensajes de error que puedan servir de pista para los usuarios que puedan estar haciendo un mal uso de nuestros scripts desactivaremos la opción de mostrar los errores php:

display_errors = Off

Guardar los logs de los errores PHP

Si hemos desactivado “display_errors” podemos activar la opción para que dichos errores se guarden en un fichero log. Para ello deberemos escribir lo siguiente:

log_errors = On

error_log = /ruta/fichero/log

Os recordamos que para más información debéis acudir a la página oficial de php.

Seguridad en nuestras aplicaciones PHP

08/11/2011 Deja un comentario

Una vez tenemos nuestra página web colgada en internet, debemos protegerla de los posibles ataques que pueda recibir. Si estas usando un cms o cualquier otra aplicación (tienda online, foro, etc.), ésta deberá estar actualizada a la última versión estable. También comentamos unas directivas de PHP que deberíais revisar:

Ocultar la versión de PHP
Para evitar que con un telnet se pueda averiguar que versión de PHP hay corriendo en nuestro servidor, editaremos php.ini y cambiaremos a off la directiva:

expose_php = Off

Deshabilitar register_globals
Esta directiva está desabilitada en las versiones actuales de php ya que permite a un atacante manipular cualquier variable definida de forma global. Por si acaso deberemos revisar nuestro php.ini y comprobar que esté en off:

register_globals = Off

Evitar que aparezca el ID de sesión en la URL
Podemos desactivar la visualización de una URL con el ID de la sesión como esta:

http://dominio.com/?PHPSESSID=5mhjusibcsvmhgkiu196i6ka

modificando en el php.ini y poniendo a off (o a cero) la variable:

session.use_trans_sid = off

Deshabilitar funciones peligrosas
Existen una serie de funciones que pueden generar graves problemas de seguridad si un atacante logra utilizarlas. Recomendamos desactivar estas funciones y si en un momento dado son necesarias, se activarán o se buscarán alternativas. Para deshabitar dichas funciones utilizaremos disable_functions:

disable_functions =”system, passthru, escapeshellarg, escapeshellcmd, proc_close, proc_open, ini_alter, popen, show_source, pcntl_exec”

Podemos encontrar más información de cada función en el sitio oficial de php php.net

Mantener una sesión ssh abierta

05/11/2011 Deja un comentario

Puede darse el caso de que por alguna razón queremos que una sesión SSH se mantenga abierta, pero si SSH detecta que durante un tiempo no hay actividad, cierra la sesión y por tanto no podemos ver que está sucediendo en el servidor. Una solución a este problema sería habilitar los keepalive timeouts. Para ello editaremos el archivo ~/.ssh/config (para un usuario) o bien /etc/ssh/ssh_config (para todos los usuarios) y al final insertaremos:

ServerAliveInterval N: Donde N es el número de segundos que el cliente esperará antes de enviar un paquete al servidor para mantener la conexión.

ClientAliveInternal N: Donde N es el número de segundos que el servidor esperará antes de enviar un paquete al cliente.

ServerAliveInterval es la opción más común para mantener la sesión abierta, aunque queremos recordar que mantener la sesión abierta entraña un riesgo de seguridad y que si se utiliza esta opción para un momento dado, se restablezca lo antes posible ya que una sessión desatendida con ssh al root de una máquina es un caramelito para cualquier atacante que pueda acceder físicamente al terminal de origen.

Categorías:Seguridad

Ejemplo de vulnerabilidad de la función mail() de PHP

20/10/2011 Deja un comentario

La función mail() de php es extremadamente vulnerable, por eso se recomienda no usar dicha función.

Como ejemplo vamos a ver un formulario php que usa la función mail() y aunque es un formulario muy simple y no valida los datos que se le suministran, no es tan extraño encontrarse webs en esta situación. Veamos el ejemplo:

Supongamos que el formulario nos solicita nuestra dirección de correo, tendríamos un etiqueta input como la siguiente:

<input type=”text” name=”correo” value=”Escriba su dirección de correo” />

Al pulsar el botón de enviar la información llegaría al servidor y la funcion mail() tomaría la dirección de correo para usarla como FROM en el envío del email.
Pero, ¿que pasaría si en vez de una dirección de correo, le metieramos un script malicioso como el siguiente?

“spam@emailfalso.com%0ACc:email@victima.com”

La función mail() tomaría a spam@emailfalso.com como el parámetro FROM: (dirección del que nos envía el correo),  email@victima.com como parámetro  Cc: (Direcciones que recibirían el email). %0A es simplemente el valor hexadecimal de un salto de línea.

Así de sencillo es para un spamer utilizar la funcion mail() para enviar emails a sus victimas, por tanto, y como se ha comentado antes, es muy recomendable no utilizar esta función.

Categorías:Seguridad, Spam

Como deshabilitar el acceso root por SSH

24/11/2010 Deja un comentario

IMPORTANTE: Antes de aplicar este manual para deshabilitar el acceso root por ssh es imprescindible haber creado un usuario sin premisos de administrador mediante el cual poder acceder por ssh.

Editamos el archivo /etc/ssh/sshd_config

donde añadiremos la siguiente linea en el caso de no estar creada:

PermitRootLogin no

tras hacer este cambio deberemos reniciar el servidor SSH como sigue:

/etc/init.d/sshd restart

Categorías:Seguridad, VPS