iptables ddos configurar recent, impedir ataques denegación de servicio (DOS Denial Of Service) en Linux (Match extension recent )

Recientemente se ha puesto en contacto conmigo un compañero de fatigas llamado Miguel Angel (un saludo), a ver si le podía echar una mano con unos ataques que está teniendo. Evidentemente no usaré sus datos para nada en esta entrada.

En esta estrada vamos realizar un filtrado más preciso de las comunicaciones entrantes, para evitar ataques DOS.

En el anterior post «Impedir ataques denegación de servicio (DOS Denial Of Service) en Linux (Match extension limit)», se mostraba como realizar un filtrado limitando el número de accesos. La gran mejora de la extensión recent vs limit, es que recent mantiene una lista de IPs de origen de comunicación y los límites son establecidos por IP de origen. La extensión limit impone límites independientemente del origen, es un límite global.

Continue reading

Linux montar discos UUID y /etc/fstab

Quien más o quien menos sabe como añadir un montaje automático en /etc/fstab, lo que quizá no se use tanto como debería es el montaje usando UUIDS.

El UUID (Universally Unique Identifier) es un identificador único para cada sistema de ficheros. Es muy interesante porque permite utilizarlo como referencia para un montaje, es decir en lugar de usar /dev/sdb1 (referencia física de conexión) podemos usar su UUID y de esta forma podríamos cambiar las conexiones de los discos sin que los puntos de montaje se viesen afectados.

La herramienta para conocer los UUID de los discos es:

Source   
[root@test ~]# blkid
/dev/sdb1: UUID="a210f4aa-0333-4827-b4f0-4a987c3364cf" TYPE="ext4"
/dev/sdb2: UUID="2133ef48-5eb9-4413-8b42-2f5f023a765b" TYPE="ext4"
/dev/sda1: UUID="0cdd3b92-349c-407f-87d2-63242782b531" TYPE="ext4"
/dev/sda2: UUID="rNf0sI-d44o-5c3f-VJMJ-zdhk-eT4q-Lc8xXT" TYPE="LVM2_member"
/dev/mapper/vg_test-lv_root: UUID="6c9fa623-8bc4-4143-b8a5-f7d0966980c9" TYPE="ext4"
/dev/mapper/vg_test-lv_swap: UUID="b382f6a5-0a63-4ab8-aaf4-8b8c1c0b969d" TYPE="swap"

Continue reading

Volúmenes encriptados (LUKS, Linux Unified Key Setup) en RedHat/CentOS 6

En esta entrada vamos a crear un volumen encriptado, algo muy útil si trabajamos con un portátil y queremos asegurar los datos ante la posible perdida.

Se pueden hacer cosas muy interesantes, como que nos pida la clave al arrancar o tener la clave por ejemplo en un USB. A mi me parece muy buena la opción de un dispositivo USB con la clave para poder arrancar.

Vamos al asunto, los pasos a seguir son:

1- Asegurarnos que tenemos cargado el módulo de kernel dm_crypt con:

Source   
[root@test ~]# lsmod | grep dm_crypt
dm_crypt 10848 2
dm_mod 63859 11 dm_crypt

Continue reading

iptables ddos configurar limit, impedir ataques denegación de servicio (DOS Denial Of Service) en Linux (Match extension limit)

Cuando ponemos un servidor web funcionando, hay que tener aplicar una protección básica para evitar cualquier posibilidad de que alguna «buena» persona (con todo el sarcasmo), se dedique a poner algún que otro JMeter (excelente software pensado para pruebas de cargar) con la idea de saturar nuestro servidor.

Esto son cosas que realmente ocurren, no es nada paranoico .

Una forma de evitar estos ataques es mediante iptables (tengo otra entrada más amplia sobre iptables), un ejemplo de configuración sería:

Continue reading

Configuración firewall iptables Red Hat/CentOS 6, desde linea de comandos

IPTABLES es el firewall incluido a nivel de kernel en las distribuciones Linux, es muy potente (una vez comprendido su funcionamiento), muy útil y flexible. Este post se ha hecho sobre un CentOS 6 (clon de Red Hat), prácticamente todo se debería poder aplicar a cualquier distribución.

Mucho cuidado con los — y los -, wordpress hace conversiones, el largo son en realidad 2 cortos. En los ejemplos no existe esa conversión.

El funcionamiento básico de iptables es el siguiente:

  1. Existen chains (cadenas) de reglas. Basicamente 3: INPUT, OUTPUT y FORWARD.
  2. Las reglas dentro de una cadena se evaluan por orden. Es aquí donde hay multitud de opciones de filtrado.
  3. Cuando una regla se evalua de forma positiva, es dirigida a un TARGET. Puede ser aceptada, denegada, eliminada, logada u otras muchas consas más (ver man iptables TARGET EXTENSIONS).

Podemos listar las reglas actuales con:

Continue reading

Ampliación y reducción de volúmenes LVM (Red Hat 6 y CentOS 6)

Voy a mostrar como crear, ampliar y reducir volúmnes LVM, todas estas acciones se han realizado con RedHat 6 directamente desde la consola LVM. Creo que no es necesario decirlo, pero es muy recomendable hacer una copia de seguridad de los discos originales por si acaso.

Lo primero que se ha de tener claro es la estructura que sigue LVM, trabaja con 3 tipos de elementos:

  • Grupos de volúmenes, todos los comandos relacionados con esto comienzan por vg*, un grupo de volúmenes puede contener 1 o más volúmenes lógicos. Y está compuesto por volúmenes físicos.
  • Volúmenes lógicos, todos los comandos relacionados comienzan por lv*, un volumen lógigo reside dentro de un grupo de volúmenes
  • Volúmenes físicos, en este caso todos los comandos comienzan por pv*, un grupo de volúmenes se componen de 1 o más volúmenes físicos.

Existen una gran cantidad de comandos para administrar los volúmnes LVM:

Continue reading

Línea de comandos virtualización con qemu usando el KVM

El KVM (Kernel Based Virtual Machine) es usado por qemu para la virtualización de máquinas. La creación, modificación, arranque, parada, etc.. se puede realizar de forma visual con Virtual Machine Manager, pero la opción de trabajar por linea de comandos me parece muy potente y relativamente sencilla.

Por ejemplo si queremos crear una máquina y que nos vaya preguntando que es lo que queremos podemos hacer:

Continue reading

Instalar linux modo texto, forzar instalación en modo texto (RedHat/Centos)

En algunos casos es interesante realizar la instalación completa en modo texto. Alguna vez me he encontrado con la imposibilidad de trabajar con ratón (parece moverse con vida propia) durante la configuración de una máquina en un Blade (no se si será por el navegador, la configuración del Blade o…).

El caso es que en esas situaciones es mejor realizar la instalación en modo texto y listo. Esto se puede forzar en la primera pantalla de bienvenida durante la instalación, si nos ponemos encima de «Install or upgrade an existing  system» y pulsamos tab aparece:

vmlinuz initrd=initrd.img

Pues si añadimos text al final:

vmlinuz initrd=initrd.img text

Y pulsamos return ya lo tenemos.

Instalar linux desde usb, preparación de unidad USB para iniciar instalación por red (RedHat o Fedora)

Cada vez de forma más frecuente, podemos vernos en la necesidad de instalar un SO (Red Hat o Fedora) sobre un servidor físico sin unidad de DVD.

En estos casos a partir de la ISO del DVD podemos preparar un pendrive USB para realizar la instalación por red. Los pasos son:

  1. Montamos la iso con:
    mount -o loop DVD.iso /mnt
  2. Suponiendo que el pendrive lo tengamos pinchado en /dev/sdd, copiamos la imagen (ojo que se borrará todo lo que haya):
    dd if=/mnt/images/efidisk.img of=/dev/sdd
  3. Desmontamos la iso:
    umount /mnt

Ya tenemos el pendrive listo para arrancar, curiosamente en el DVD de Centos no contiene esta imagen.

Arranque automático oracle linux, Inicio automático Oracle Database para Red Hat

Un pequeño script para arrancar automáticamente una BD Oracle:

Source   
# chkconfig: 2345 80 20
# description: Oracle Database
#!/bin/bash
start() {
su - oracle <<EOF
lsnrctl start
sqlplus / as sysdba<<EOO
startup
EOO
EOF
}
stop() {
su - oracle <<EOF
sqlplus / as sysdba<<EOO
shutdown immediate
EOO
lsnrctl stop
EOF
}
case "$1" in
start)
start
;;
stop)
stop
;;
*)
echo $"Usage: $0 {start|stop}"
esac

Arranca la BD como usuario «oracle», que tiene que tener todas las variables de entorno correctemente configuradas (especialmente ORACLE_SID).

Este script se puede instalar con chkconfig ya que tiene la cabecera preparada para ello.