miércoles, 24 de junio de 2009

ssh_exchange_identification

Ayer por la tarde, configurando vsftpd en una máquina con Debian GNU/Linux añadí una interfaz de red a mayores. En principio todo parecía funcionar sin problemas. Probe la conectividad desde el segmento de red vía ICMP, pedí vía HTTP un documento al servidor web de esta misma máquina y todo parecía funcionar. La sorpresa es cuando, al llegar a casa ,intento conectarme vía SSH. Misión imposible, devuelve el error: ssh_exchange_identification. La solución fue muy sencilla :

echo 'SSHD: ALL' >> /etc/hosts.allow

Pero mi pregunta es la siguiente: ¿ por qué ? Esto es lo que odio muchas veces de los foros de Internet. La gente resuelve un problema despreocupándose del porqué, algo que a mi modo de ver es tanto o más importante que el propio problema en sí. Saber el origen ayuda a no volver a cometer el mismo error en un futuro. Pues manos a la obra. Vamos a intentar averiguar el por qué del ssh_exchange_identification.
Leo en este post, que OpenSSH usa TCPWrappers, escrito por el maestro Wietse Venema , os suena de algo. Postfix quizá? TCPWrappers es un sistema de Listas de Control de Acceso(ACL) para servicios de la pila de protocolos TCP/IP. Incluye una librería libwrap que incluye las principales funcionalidades de filtrado. Intuyo que al detectar que se ha añadido una nueva interfaz, la acción por defecto es denegar el acceso a SSH; y puesto que TCPWrapper usa /etc/hosts.allow y /etc/hosts.deny para definir qué servicios "envuelve",la explicación ahora, a mi modo de ver, queda un poco más clara, verdad?

Comprobamos si efectivamente OpenSSH está compilado con libwrap:

root@pilarrubio#ldd /usr/sbin/sshd
linux-gate.so.1 => (0xffffe000)
libwrap.so.0 => /lib/libwrap.so.0 (0xb7f3c000)
libpam.so.0 => /lib/libpam.so.0 (0xb7f31000)
libdl.so.2 => /lib/i686/cmov/libdl.so.2 (0xb7f2c000)
libselinux.so.1 => /lib/libselinux.so.1 (0xb7f12000)
libresolv.so.2 => /lib/i686/cmov/libresolv.so.2 (0xb7efc000)
libcrypto.so.0.9.8 => /usr/lib/i686/cmov/libcrypto.so.0.9.8 (0xb7da4000)
(...)

jueves, 18 de junio de 2009

Ocultando, viendo y luchando contra...

Después de más de dos semanas sin postear absolutamente nada, no por falta de ganas, más bien por falta de tiempo. Como comentaba, entre el trabajo,los cursos y la futura asociación y demás actividades, es difícil mantener la actividad del blog. Pero vamos a ello. Cosas interesantes que he visto vía RSS y demás.

Ver cabeceras HTTP en la línea de comandos.

alberto@debian:/tmp$ wget -S www.google.com -O /dev/null
--2009-06-18 05:58:49-- http://www.google.com/
Resolviendo www.google.com... 209.85.135.106, 209.85.135.147, 209.85.135.99, ...
Connecting to www.google.com|209.85.135.106|:80... conectado.
Petición HTTP enviada, esperando respuesta...
HTTP/1.0 302 Found
Location: http://www.google.es/
Cache-Control: private
Content-Type: text/html; charset=UTF-8

Ocultar versión PHP.
Buscamos la el fichero php.ini, en mi caso, en Debian GNU/Linux con apache2 y php5, el fichero en cuestión se localiza en /etc/php5/apache2/php.ini, como comentar Nasser Heidari "Haciendo esto, no harás tu servidor Web más seguro, solo harás que a los hosts remotos les sea un poco más difícil ver qué versión de PHP tienes corriendo en tu sistema".

expose_php = Off

Por cierto, estas tres referencias las he leído en el blog de Nasser. Os recomiendo una entrada reciente , en la que comenta cómo evitar en Apache2 ataques de BruteForce y DoS.
Crear un fichero "ficticio" , en este caso de 10M.
Este es "cojonudo" cuando en una LAN party, en un Server Direct Connect , ponen restricciones del tipo "Mínimo 30GB para poder acceder al servidor", pues toma GB...

dd if=/dev/zero of=testfile.txt bs=1M count=10

Añadir timestamp a mysqldump.

$ mysqldump [options] |gzip ->mysqldump-$(date +%Y-%m-%d-%H.%M.%S).gz


De momento esto es todo.

martes, 2 de junio de 2009

Jugando con mknod

Al generar la llave rsa con ssh-keygen recibo un error del tipo:

apermuy@bezoucos:~$ ssh-keygen
Couldn't open /dev/null: Permission denied

Investigando un poco, llego a la conclusión de que el usuario en cuestión no tiene permisos de escritura en /dev/null. Al ser este un dispositivo que no existe, debemos tirar de mknod para crearlo de nuevo, como en el siguiente ejemplo:

root@bezoucos:/home/bezoucos# mknod --mode=666 /dev/null c 1 3

El mode está claro lo que indica, c indica que es un dispositivo de caracteres con un número mayor que 1 y menor que 3.

Ahora parece que ssh-keygen no se queja:

apermuy@bezoucos:/home/bezoucos$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/apermuy/.ssh/id_rsa):

Documentar mola!

Aceptamos FTP como protocolo inseguro.


Wireshark a calado en los SysAdmins, de eso no hay duda; lo triste de esta historia es que muchos desconocen Ethereal. Pero bueno, muchas veces se lleva la gloria el programador de la GUI en lugar del que se lo ha currado de verdad, sin quitar mérito al primero claro.
Hace unos minutos jugaba con Wireshark para ver qué datos pillaba de una web que estoy programando, y he recordado lo inseguro que es FTP. En su lugar, usa scp,ssh o sshfs.
Fijaos bien en esta captura de pantalla repetid conmigo en voz alta: "Sí, aceptamos FTP, al igual que Windows XP , como protocolo inseguro".

jueves, 28 de mayo de 2009

100%

Estoy al 100%. Desde el día 11 de Mayo estoy haciendo el módulo BCMSN de CCNP, de Lunes a Jueves de 16:30 a 20:45; unido a mi horario laboral de 08:00 a 15:00 horas, os podéis imaginar el poco tiempo que tengo. A modo de mini-resumen semanal, me gustaría añadir unas notas, más que nada para mi recordatorio personal.

Laboral
  • A vueltas con PHP y MySQL.
  • He visto cosas interesantes para importar directamente desde CSV a MySQL.Bastante sencillo con un script en bash, que ahora mismo no localizo.
  • Confirmar que los usuarios de Microsoft Windows, por lo menos la gran mayoría, a parte de "no tener ni idea", no se preocupan lo más mínimo por aprender a utilizar y optimizar su sistema.
  • Estoy trabajando directamente vía SSHFS sobre un directorio en una máquina de desarrollo virtualizada sobre VMWare con unos resultados más que óptimos.Mola!
  • A nivel de seguridad tampoco he hecho grandes cosas: portsentry,lynis...y algún que otro script. Cuestión de tiempo.
CCNP
  • En general: Después del CLP es el curso que más me ha gustado. Un 10 al docente, por conocimientos y ganas.
  • HSRP,VRRP Y GLBP: Interesante, lástima que ahora mismo no pueda tocar Routers Gordos, ya que en el trabajo usan Fortinet. Personalmente lo solucionaría con Quagga, HA, UltraMonkey y esas cosillas que nos gustan a los GNULinuxeros(vale,a veces, las menos, también Maquero, pero con "ports included").
  • Etherchannel: Ah, pero eso no se hacía con ifenslave?(Jaajajjaj)
  • CEF: No me quedó muy claro. Tendré que repasar los apuntes.
  • VLAN & Spanning Tree: Ya lo había visto en el CCNA, pero nunca está demás repasarlo. De VTP casi ni me acordaba.
Personal
  • vsftpd. Instalaré un FTP Server contra MySQL, ahora que sé que libpam-mysql-0.6 hace bugi-bugi, todo será más fácil.
  • Asterisk. En unos seis meses puede salir algo de VoIP. A esperar.
  • Wireless: Para el Kernel 2009 tenemos pensado montar algo guapo con Wifi. Unos pirulos para emitir la señal a todo el pueblo de Mugardos. A ver qué sale.
  • Cisco: He echo cosillas en un 857 esta semana.
  • Xornadas SwLibre 2009. Casi todo listo. Más info aquí.
  • Nuevo monitor de 21,6. Mi regalo de cumpleaños( 30 ).