Deshabilitar SELinux / Turn Off SELinux


Seguramente en alguna ocasión, se habrán encontrado con algún problema de seguridad y se han preguntado como deshabilitar SELinux, a fin de descartarlo como fuente del problema.  Es que por línea de comandos, solo veremos la opción de colocarlo en modo:

Enforcing:

# setenforce 1

o en modo Permissive:

# setenforce 0

Pero para deshabilitarlo totalmente, al igual que si queremos hacer persistente el cambio de modo, debemos tocar el archivo /etc/sysconfig/selinux y allí modificar la línea

SELINUX=disabled

cerrar conexiones TCP / killing tcp connections


Si alguna vez tuvimos un servidor bajo ataque, seguramente hemos tenido la necesidad de cerrar o matar determinadas conexiones a nuestro servidor. Con un netstat, vemos la conexión, pero no tenemos opción de matarla.

Para ello, podemos utilizar el comando tcpkill, que viene en el paquete dsniff, junto con otras utilidades de línea de comandos.

Así que si no lo tenemos, primero, lo instalamos:

$ sudo yum install dsniff

Luego, podremos utilizar el tcpkill de diferentes maneras, por ejemplo:

# tcpkill −9 host www.gmail.com
# tcpkill −9 192.168.0.1
# tcpkill −9 host hvivani.com.ar and host www.google.com

Se sienten mas tranquilos ahora ?

Protegiendo nuestro servidor con fail2ban


fail2ban es una herramienta que nos da una buena mano al momento de proteger nuestros servidores. Trabaja baneando las ips de los atacantes por un determinado periodo de tiempo.

Por ejemplo, supongamos que tenemos un ataque por fuerza bruta a nuestro servicio ssh, esta herramienta, agrega una regla a nuestro firewall iptables, denegando la ip del atacante, en el puerto 22, por un periodo de tiempo configurable.

Instalación:

Necesitaremos tener los repositorios epel en nuestro CentOS / RHEL para poder instalarlo con yum. A partir de ahí es coser y cantar…

# yum install gamin fail2ban

Configuración:

En el /etc/fail2ban, tenemos:

fail2ban.conf: Este es el archivo de configuración general y podemos dejarlo con los valores por defecto.

jail.conf: Este archivo es el que debemos modificar de acuerdo a los servicios que queremos monitorear, o inclusive configurar nuevos servicios. Cada servicio definido entre [ ] tiene una linea filter que indica que cadenas (definidas en el directorio filter.d) buscar en los archivos de log para detectar la intrusión.

Dejo un ejemplo de archivos de configuración para detectar ataques por ssh, http y vpopmail y vsftpd:

jail.conf:

# Fail2Ban configuration file
#
# Author: Cyril Jaquier
#
# $Revision: 747 $
#

# The DEFAULT allows a global definition of the options. They can be override
# in each jail afterwards.

[DEFAULT]

# "ignoreip" can be an IP address, a CIDR mask or a DNS host. Fail2ban will not
# ban a host which matches an address in this list. Several addresses can be
# defined using space separator.
ignoreip = 127.0.0.1

# "bantime" is the number of seconds that a host is banned.
bantime  = 600

# A host is banned if it has generated "maxretry" during the last "findtime"
# seconds.
findtime  = 600

# "maxretry" is the number of failures before a host get banned.
maxretry = 5 

# "backend" specifies the backend used to get files modification. Available
# options are "gamin", "polling" and "auto". This option can be overridden in
# each jail too (use "gamin" for a jail and "polling" for another).
#
# gamin:   requires Gamin (a file alteration monitor) to be installed. If Gamin
#          is not installed, Fail2ban will use polling.
# polling: uses a polling algorithm which does not require external libraries.
# auto:    will choose Gamin if available and polling otherwise.
backend = gamin

# This jail corresponds to the standard configuration in Fail2ban 0.6.
# The mail-whois action send a notification e-mail with a whois request
# in the body.

[ssh-iptables]

enabled  = true
filter   = sshd
action   = iptables[name=SSH, port=ssh, protocol=tcp]
           sendmail-whois[name=SSH, dest=fail2ban@hvivani.com.ar]
logpath  = /var/log/secure
maxretry = 5

# This jail demonstrates the use of wildcards in "logpath".
# Moreover, it is possible to give other files on a new line.

[apache-tcpwrapper]

enabled  = true
filter	 = apache-nohome
action   = hostsdeny
           sendmail-whois[name=APACHE, dest=fail2ban@hvivani.com.ar]
logpath  = /var/log/httpd*/*error.log
#           /home/www/myhomepage/error.log
maxretry = 3

# Same as above but with banning the IP address.

[vsftpd-iptables]

enabled  = true
filter   = vsftpd
action   = iptables[name=VSFTPD, port=ftp, protocol=tcp]
           sendmail-whois[name=VSFTPD, dest=fail2ban@hvivani.com.ar]
logpath  = /var/log/secure
maxretry = 3
bantime = 1800

[vpopmail]
enabled = true
port    = pop3
filter  = vpopmail
action   = iptables[name=VPOPMAIL, port=pop3, protocol=tcp]
           sendmail-whois[name=VPOPMAIL, dest=fail2ban@hvivani.com.ar]
logpath = /var/log/maillog
maxretry = 3
bantime = 1800

Para el vpopmail, vamos a tener que crear un vpopmail.conf en el ./filter.d porque no viene por default. El mio es asi:

# Fail2Ban configuration file for vpopmail
#
# Author: Lawrence Sheed
#
# $Revision: 1.0 $
#

[Definition]

# Option: failregex
# Notes.: regex to match the password failures messages in the logfile.
# Values: TEXT
#
failregex = vchkpw-pop3: vpopmail user not found .*@:<HOST>$

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT
#
ignoreregex =

 

Ocultar versión en servidor apache / Hide apache software version


Ante cualquier servidor expuesto a internet, seguramente necesitemos incrementar su nivel de seguridad, dado que es muy probable que cuando comience a tener tráfico, sea victima de múltiples ataques.

Una vulnerabilidad importante en los servidores Apache es que cuando una página da error, nos muestra la versión de apache que está corriendo y sobre que sistema operativo. De esta manera, le damos información a un atacante para buscar vulnerabilidades específicas a nuestra instalación

Para ocultar esta información en nuestro servidor, debemos modificar dos líneas en el httpd.conf:

ServerSignature Off 

Esta variable, cuando está en On, muestra la versión del servidor apache y el nombre del servidor.

#ServerTokens OS

Comentamos esta variable para que los clientes no reciban en la cabecera de las respuestas del servidor información de versiones.

 

Cambiar puerto de escucha en Terminal Server (escritorio remoto) / Change Terminal Server Listening Port


Si tenemos un servidor Terminal Server expuesto a internet, es muy probable que sea víctima de ataques a fin de acceder a su información, al igual que cualquier otro servidor.

Una de las primeras medidas que podemos tomar para evitar el ataque con herramientas automatizadas o programas es cambiar el número de puerto donde Terminal Server escucha a los clientes.

Para esto, debemos cambiar una clave en el registro:

HKEY_LOCAL_MACHINESystemCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp

Buscamos la subclave PortNumber y cambiamos el valor 00000D3D en hexa 3389 por el número de puerto (en hexadecimal) que queramos utilizar.

Firefox: eliminar nombre de usuario mal almacenado


En firefox, por defecto, los nombres de usuario solicitados por diferentes portales, serán almacenados automáticamente. Eso ocasiona que si  ponemos mal el nombre, se vayan almacenando o guardando de manera errónea y cuando volvemos al sitio, se ve la lista de nombres de usuarios utilizados.

Lo mas peligroso es si lo que quedó mal almacenado es la password del usuario como nombre de usuario, como por ejemplo:

Dado que varios usuarios me han preguntado como eliminar estos usuarios y la solución no es tan intuitiva como debería, esta es una solución al problema: bajando con el teclado numérico al nombre de usuario que queremos eliminar y presionando la tecla delete o suprimir.

Navegación anónima en Linux


Que queramos navegar anónimamente no significa que estemos haciendo algo ilícito, simplemente podemos querer navegar anónimamente para proteger nuestra privacidad.

Para navegar de manera anónima bajo Linux, utilizaremos un proxy (privoxy) y la red anónima Tor.

Instalamos Privoxy y Tor:

$ su -c "yum install privoxy tor"

Editamos la configuración del proxy:

$ sudo vi /etc/privoxy/config

y colocamos la siguiente línea al final del archivo:

 forward-socks4a / localhost:9050 .

Iniciamos los servicios Tor y Privoxy:

$ sudo service tor start
$ sudo service privoxy start

A continuación debemos configurar nuestro navegador para que utilice el nuevo proxy en la dirección 127.0.0.1 puerto 8118 y para socks puerto 9050.

Con Firefox, quedaría algo así:

Con esta configuración ya estaríamos navegando a través de Privoxy con otra IP asignada por Tor.

Cada vez que queramos navegar normalmente deberíamos cambiar esta configuración a “Sin Proxy” o “Configuración Automática”. Esto podemos hacerlo facilmente utilizando algún plugin de Forefox como TorButton, QuickProxy o FoxyProxy.

Si queremos que privoxy y tor arranquen automáticamente con Linux, hagamos:

$ su -c "chkconfig --level 2345 privoxy on"
$ su -c "chkconfig --level 2345 tor on"

Realmente vale la pena leer la documentación de Tor, y sus recomendaciones para mejorar la privacidad, entre ellas: usar SSL, bloquear cookies y plugins Java.

 

Seguridad en Redes Sociales


Bueno, este no es un tema que acostumbre tocar pero hace un tiempo que me ronda en la cabeza  ya que es realmente preocupante ver como se expone a la familia y en especial a los hijos en las redes sociales. En particular facebook.

Imaginen la siguiente situación: “subo” al facebook las últimas fotos del cumpleaños de mi hijo. Inclusive pongo un título como: “Fotos del cumple de Juancito”. Si no he establecido los niveles de privacidad adecuados, automáticamente estaré “mostrando” a mi hijo a todos los usuarios de facebook. 
Ahora imaginemos a un pederasta cualquiera que anda a la caza de niños.
Si se topa con nuestra cuenta de facebook, automáticamente tendrá toda la info necesaria como para establecer contacto con él: sabe como es fisicamente, sabe como se llama, sabe como se llaman sus padres. Supongamos que vive en la misma ciudad que nosotros: puede ubicarnos por la guía telefónica para llamar a casa o inclusive saber donde vivimos. Puede seguirnos e ir a buscarlo a la escuela diciendole: “Hola Juancito, yo soy Fernando, amigo de tu papá Juan Carlos, el me pidió que te venga a buscar porque todavía está trabajando.”

Hoy por hoy, pederastas, secuestradores, todo tipo de criminales, tienen toda la información servida para realizar su trabajo en internet.

Como hablábamos hace unos días en familia: esto no es para causar pánico, solo es para tomar conciencia de como manejarnos en este nuevo mundo de las comunicaciones.
Traten, por favor, de establecer en las opciones de privacidad del facebook, que el contenido puede ser visto solo por “mis amigos”.
Inclusive la opción “amigos de mis amigos” no creo que sea segura, dado que no puedo confiar en ellos.
Más aún, tengan cuidado al publicar fotos de terceros, por ejemplo: “el cumple de mi sobrino” porque si no tienen establecidas correctamente las políticas de privacidad lo están dejando expuesto.

Las herramientas como Facebook, son excelentes medios de comunicación. Cuando no existía, teníamos que enviar varios mails con las fotos que queríamos mostrar a nuestros familiares, tal vez nos olvidabamos de alguno… con esta herramienta, la publicación es automática y llegamos a todos ellos de una vez.
La cuestión es que no nos han educado acerca de los peligros de internet y el nivel de exposición que puede llegar a tener.