Mostrando entradas con la etiqueta Seguridad. Mostrar todas las entradas
Mostrando entradas con la etiqueta Seguridad. Mostrar todas las entradas

miércoles, 10 de diciembre de 2008

Tu propio AP casero con Debian

Como soy un chico pobre y no tengo dinero para comprarme un access point hace un tiempo átras decidí hacerme el mio propio, hoy les mostraré como se hace.
Yo lo instale con Debian dado que lo monte en mi homeserver el cual ya estaba andando anteriormente, pero existe una distro realizada especificamente para hacer esto llamada ZeroShell la cual aparentemente esta genial, si la prueban cuenteneme su experiencia.

Los requerimientos

Necesitarán:

  • Placa de Red Inalámbrica con chipset Atheros, con otras placas el procedimiento puede variar e incluso hasta no funcionar, algunas placas no soportan modo ap, verificar que la suya lo soporte.
  • Placa de Red Ethernet 10/100, para conectarse a la red cableada.
  • PC x86 o compatible Pentium o superior, cualquiera debería funcionar sin problemas, yo tengo un p3 con 512mb de Ram (ja y después me quieren vender el Linksys con unos miserables 16mb de ram :P).
  • Una Iso de Debian, si se animan con otra distro adapten el ejemplo.

Instalar la Placa Wifi

Para empezar deben tener instalada la placa wifi, si es una placa con chipset atheros deberán instalarla con los drivers de madwifi, para ello pueden utilizar la aplicación module assistant de debian. La secuencia de pasos es la siguiente

apt-get update

Instalamos los paquetes básicos

apt-get install build-essential module-assistant wireless-tools
module-assistant prepare

Instalamos el driver

module-assistant auto-install madwifi-source

Cargamos el modulo

modprobe ath_pci

Por último deben añadir el modulo en el archivo modules en etc para que se cargue al arranque del sistema.

echo "ath_pci" >> /etc/modules

Y deberán añadir esta opción en el archivos modprobe.d en etc para que la interface se levante en modo ap.

options ath_pci autocreate=ap


Configurar las Interfaces

Asumo que la interface ethernet la tienen configurada correctamente y es la eth0, por el otro lado la interface ath0 es la correspondiente a la placa wifi. La forma fácil de montar la red es mediante la creación de un bridge que trabaje con ambas interfaces, la forma difícil es mediante un nateo entre ambas interfaces. Les voy a mostrar como es con nateo dado que no quise crear un bridge porque mi server ya tiene demasiadas interfaces y no quiero añadirle una mas.
La intefaz eth0 obtiene una IP del la red cableada perteneciente a la subred 192.168.10.0/24 y la red inalámbrica tiene una subred del tipo 10.0.0.0/8 siendo la interfase la 10.0.0.1.

Nos vamos al archivo interfaces en /etc/network y empezamos a editar.

auto lo
iface lo inet loopback

allow-hotplug eth0 ath0
auto ath0 eth0


iface eth0 inet dhcp

#Configuracion de la placa wifi

iface ath0 inet static
address 10.0.0.1
netmask 255.0.0.0
post-up /etc/network/start-nat


La última línea ejecuta el script star-nat después de levanta la interface ath0, este configura el iptables para hacer el nateo. Este script no es la gran ciencia, las opciones básicas son las siguientes.

iptables -F
iptables -t nat -F
iptables -t mangle -F

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth0 -o ath1 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i ath0 -o eth0 -j ACCEPT


Si quieren, pueden añadirle mas reglas para montar un firewall interno y proteger tanto el acceso a la red cableada como la red inalámbrica. Otra opción es montar un proxy transparente para la red, esta es una buena idea en el caso de que tengan muchos usuarios colgados y quieran optimizar la navegación, pero eso lo vamos a dejar para otra oportunidad.

Paso siguiente reiniciar la red

/etc/init.d/networking restart


En este punto tienen el AP funcionando, si escanean la red desde una máquina cliente seguro que va a funcionar, la cuestión es que no disponemos de ningún mecanismo de seguridad, dejando nuestra red abierta a todo el mundo que quisiese conectarse.

Seguridad, Hostapd al rescate!

Para evitar dejar nuestra red abierta al mundo lo que vamos a hacer es instalar una utilidad llamada Hostapd, esta utilidad corre como un demonio y se bindea con la intefaz inalámbrica para realizar el proceso de autenticación de los clientes, dejando o no conectarse, en caso de éxito y que el cliente se conecte al AP posteriormente realiza la encriptación de la comunicación.

Para instalarlo deben utilizar el sagrado apt

apt-get install hostapd

Una vez instalado deben configurar el archivo hostapd en el directorio /etc/hostapd/, debería quedarles algo así.
interface=ath0
driver=madwifi
logger_syslog=-1
logger_syslog_level=2
logger_stdout=-1
logger_stdout_level=2
debug=0
dump_file=/tmp/hostapd.dump
ctrl_interface=/var/run/hostapd
ctrl_interface_group=0
ssid=My_Secure_WLAN
#macaddr_acl=1
#accept_mac_file=/etc/hostapd/accept
auth_algs=3
eapol_key_index_workaround=0
eap_server=0
wpa=3
wpa_psk_file=/etc/hostapd/wpa_psk
wpa_key_mgmt=WPA-PSK
wpa_pairwise=CCMP
stakey=0

Por último debemos crear un archivo con la lista de las direcciones mac de los clientes y la contraseña de acceso para cada uno. Dicho archivo esta definido en el archivo de configuración anterior en wpa_psk_file=/etc/hostapd/wpa_psk. Creamos y editamos dicho archivo poniendo lineas como esta

00:00:00:00:00:00 PASSPHRASE
El último paso es cambiar las opciones por defecto de hostapd en /etc/default/hostapd. Debería quedarles algo así

RUN_DAEMON="yes"
DAEMON_CONF="/etc/hostapd/hostapd.conf"


Esto es importante, dado que sino no les va a funcionar hostapd como demonio.

Ahora reiniciamos el demonio hostapd con la nueva configuración.

/etc/init.d/hostapd restart

Si miran la interface ath0 con iwconfig les va a aparecer esto

ath0 IEEE 802.11g ESSID:"casiva" Nickname:""
Mode:Master Frequency:2.412 GHz Access Point: 06:40:05:29:24:FA
Bit Rate:0 kb/s Tx-Power:16 dBm Sensitivity=1/1
Retry:off RTS thr:off Fragment thr:off
Encryption key:2C0D-B181-3C45-C195-13D6-AC8A-D123-CC63 [3]
Power Management:off
Link Quality=37/70 Signal level=-59 dBm Noise level=-96 dBm
Rx invalid nwid:10 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0


Ahora tienen un AP con contraseña y además con filtrado por mac, que tal.

Configurar Clientes

El último paso es configurar los clientes, pero de esto ya hablamos en un post anterior así que solo me limito a la referencia. Observen que pusimos como mecanismo de encriptación WPA-PSK y para transferencia del par CCMP, pueden cambiarlos en la configuración de Hostapd.

http://www.casivaagustin.com.ar/2008/10/wpa-supplicant-en-debian-lenny.html


Conclusiones

Bueno con esto tendrían un AP casero realizado con no mas de 100 pesos y una computadora viejita. Quedarían miles de cosas para hacerle, como por ejemplo configurar posta posta el firewall, poner un proxy y hasta algo más elemental poner un Dhcp.
Para el caso del Dhcp les recomiendo Dnsmasq, se levanta rápidamente y se pueden hacer miles de cosas con el, como filtrar la respuesta de solicitudes de Dhcp por mac, configurar IP estáticas, montar Dns relay o estático y miles de cosas más.

Lo mas gracioso de todo esto es que todos los AP que andan dando vueltas como los Linksys, Dlink, Encore y otros utilizan las mismas utilidades que nombramos aquí, capas otra versión, capaz con esteroides, pero básicamente es lo mismo.

Otra cosa que me gustaría ver es algo así corriendo en windows, a ver si un MSGeek me pasa un link a un howto así, quiero ver si es tan fácil como en Linux y si tienen herramientas tan buenas.

Les dejo un enlace que me ayudo mucho para la instalación

http://www.linux.com/feature/55617

lunes, 17 de noviembre de 2008

Y esto ?!

Estaba buscando el site de Intecnor, una incubadora de empresas de base tecnológica de la zona, para buscar novedades sobre los nuevos planes para emprendedores y al buscar en google me encuentro con este aviso en google.

El mensaje dice "Este sitio puede dañar su computadora", a la mierda dije, cabeza dura como soy hago caso omiso al mensaje y entro igual, me encuentro con este otro mensaje.


Definitivamente Google no me estaba por dejar entrar, así que decidí entrar directamente poniendo la url a mano, entonces firefox me dice esto otro:


Osea, en conclusión, el sitio esta para atraz, seguramente fue una víctima de algún ataque de hacking o están queriendo robar información de los usuarios.

Que feo esto, la imagen corporativa por el piso, mas abajo que el piso, ENTERRADA!. El sitio no solo no esta disponible, sino que tiene código malicioso para ejecutarse en las maquinas de los visitantes.

Deliremos un poco , que pasa si uno dio información a esta gente de algún proyecto productivo y el hacker se las robo, lisa y llanamente el ladrón puede cagarte el proyecto por que esta gente no pensó en la seguridad informática, ojala no haya sucedido.

Espero que solucionen rápido el problema, si mal no recuerdo en el sitio decía quien era el webmaster en el footer, capaz cuando este de vuelta continue dicendolo y todos sabremos quien no administro bien el sitio.

Por el otro lado, remarcable las nuevas incorporaciones del Google, lo de detectar codigo malicioso es increible, ademas añade funciones para personalizar los resultados subiendo, bajando o eliminando a los mismos para mejorar la categorización, muuy bueno. Aunque no parezca los pibes no paran de laburar en el buscandor, felicitaciones.

domingo, 2 de noviembre de 2008

Acceso SSH con Claves

SSH es un protocolo para establecer conexiones de shell seguras a servidores remotos, son seguras por que la comunicación entre el cliente y el servidor viaja encriptada mediante el protocolo SSL. Al iniciar un sesión SSH se debe ingresar la contraseña de la cuenta del usuario en el servidor remoto al que vamos a acceder, existe un mecanismo para evitar tener que ingresar la contraseña cada vez que accedemos al servidor y es mediante la utilización de claves publicas y privadas.

La idea es general un par de claves, una privada y una publica, en nuestra maquina cliente. La clave privada queda en nuestra maquina y la publica se envía a el servidor remoto, cuando deseamos acceder al servidor remoto, el SSH verifica la existencia de las claves y controla que ambas sean el par de claves generadas, en caso de éxito permite el acceso al servidor remoto sin tener que ingresar la contraseña, en caso de fallo no permite el acceso al servidor.
Veamos como es el proceso para generar el par de claves y enviarlas al servidor. Primero, desde una consola, utilizamos el comando ssh-keygen.

$ssh-keygen -t dsa

Les aparecerán unas preguntas, la primera es en donde guardaran las claves, el lugar por defecto es su home dentro de la carpeta .ssh/.
La segunda pregunta es la contraseña para proteger la clave privada. Al final les aparecerá un mensaje con la operación realizada.

Generating public/private dsa key pair.
Enter file in which to save the key (/home//.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home//.ssh/id_dsa.
Your public key has been saved in /home//.ssh/id_dsa.pub.
The key fingerprint is:
a1:b8:muchos numeros wacacca:74:80 @

Una vez terminada la operación tendremos el par de claves, por último solo queda enviar la clave publica a nuestro servidor, puede hacerse con el comando scp o mediante la utilidad ssh-copy-id.

Con scp podemos hacer lo siguiente:

scp .ssh/id_dsa.pub @serverremoto.com.ar:/home//.ssh/authorized_keys

Y con ssh-copy-id sería


ssh-copy-id -i .ssh/id_dsa.pub @suserverremoto.com.ar

Con eso la próxima vez que ingresemos al server se nos pedirá la contraseña con la que protegimos la clave privada y dicha contraseña quedara en toda la sesión de la maquina cliente, por ende no pedirá la contraseña para ingresar al servidor remoto durante la sesión. En caso que esto les moleste pueden dejar la clave privada sin proteger, es decir no ingresen una contraseña al generar el par de claves.

Algunos enlaces

http://www.marcelor.com/2008/02/conexion-con-ssh-sin-contrasena-en-ubuntu.html

http://no-names.biz/es/2008/05/30/howto-use-ssh-key/

martes, 28 de octubre de 2008

WPA Supplicant en Debian Lenny

Todos conocemos, o escuchamos, los posibles problemas de seguridad de que trae tener una red inalámbrica, y también sabemos que un mecanismo de prevención es proteger la red mediante encriptación WPA2. La mejor forma para implementar estos mecanismos sobre Linux es vía el paquete wpa_supplicant, que es una implementación de 802.11i.

Desde que tengo mi laptop siempre tuve problemas para hacer funcionar adecuadamente dicho programa, por ende tenía problemas para conectarme. Ayer dije basta, lo hago andar a como de lugar, así que junte mis cosas y me fui a Techtools para abuzarme de su red inalámbrica privada que trabaja con WPA2.

Después de haber visto varias guías de configuración, me encontré con el dilema de que no encontraba ninguno de los archivos de configuración mencionados en las guias. Continuando con la búsqueda, leo en la wiki de Debian, que en su última versión los desarrolladores cambiaron de lugar la mayoría de los archivos de configuración para poder proveer un mecanismo de configuración mas integrado, por ende toda la documentación que leí anteriormente solo sirvió para confundirme.

Después de probar y probar pude dar en el clavo, la forma de configuración es bastante sencilla, aquí va un pequeño resumen. Primero hay que tener instalador correctamente los drivers de la placa wireles, en mi caso es

Network controller: Broadcom Corporation BCM4318 [AirForce One 54g] 802.11g Wireless LAN

la tengo trabajando con los drivers nativos, pero funciona con Ndiswrapper. Aquí explican bastante bien como realizar la instalación de los drivers.
El paso siguiente es instalar el paquete wpa_supplicant que se encuentra disponible en los repositorios.

# apt-get install wpasupplicant

Por último realizamos la configuración del paquete. Lo primero es crear un archivo de configuración para wpa_supplicant, el cual podemos ponerlo en /etc/wpa_supplicant/wpasupplicant.conf. En dicho archivo se definen las redes y las opciones de encriptación, existen varias formas de definición dependiendo de los mecanismos de encriptación que utilice la red, para el caso de WPA y una red sin encriptación quedaría así.


# WPA-PSK/TKIP
ctrl_interface=/var/run/wpa_supplicant

network={
ssid="RedSeguraConWpa"

proto=WPA

key_mgmt=WPA-PSK

pairwise=TKIP
priority=4

psk="lasuperclave"
}
#Otra red
network={

ssid="RedInsegura"
key_mgmt=NONE

}


Por último debemos definir que el dispositivo wireless será controlado vía wpa_supplicant en el archivo de interfaces, así que a editar.

/etc/network/interfaces


# Loopback
auto lo

iface lo inet loopback


# Configuración de las otras interfaces

allow-hotplug eth1

iface eth1 inet dhcp

#Aca viene la papota

auto wlan0_rename

iface wlan0_rename inet
manual
wpa-driver wext
wpa-roam /etc/wpa_supplicant/wpasupplicant.conf


Fijense la última interface, ahí decimos que la maneje de manera manual, y definimos que utilice el wpa mediante en driver wext y que lea la configuración en el archivo anteriormente creado. Con eso ya estaría todo listo, si reiniciamos las interfaces la maquina debería asociarse a la mejor red disponible de las que están definidas en el archivo wpasupplicant.conf.

La idea de ahora en mas es ir definiendo todas las redes en el archivo de wpa_supplicant y olvidarse de lo demás.

Para otras placas wireless la configuración probablemente varié un poco.

Aquí algunas referencias:

http://wiki.debian.org/WPA
http://home.telkomsa.net/richm/hp-nx6125.html
http://hostap.epitest.fi/wpa_supplicant/

lunes, 13 de octubre de 2008

Recuperar la Password de Root en Debian

Siempre pasa que después de pasar mucho tiempo sin entrar en una maquina nos olvidamos su contraseña administrativa (osea la de root). Antes la clásica solución era entrar en modo single de modo que iniciara una sesión de root sin solicitar contraseña y poder cambiarla ahí, la cosa es que mucha gente tomo esto como un posible problema de seguridad y hasta en el modo single distros como debian solicitan contraseña para ingresar como root.

La segunda forma de solucionar este problema es un poco mas compleja, había que bootear el sistema con un CD de arranque, entrar en el sistema live, montar la partición del sistema que perdimos su contraseña y por último hacer un chroot y pasar el sistema host, de ahí cambiar la password.

Ahora veo una tercera opción mucho mas sencilla, lo que hay que hacer es ni bien arranca la maquina, en el menú de grub editar la linea kernel de la opción que utilizaremos para iniciar y añadiremos la opcioninit=/bin/sh” o “/bin/bash”, quedaría algo así.

kernel /boot/vmlinuz-2.6.18-5-486 root=/dev/hda1 ro init=/bin/sh

Con esto, se iniciara una sesión de shell en modo root, desde aquí montamos el sistema raíz, dado que el proceso de arranque no es el normal y no se ejecutan todos los pasos del proceso de arranque.

#mount -o remount rw /

Y por ultimo cambiamos la password como siempre

#passwd root

Al finalizar reiniciamos mediante rebooot y listo, contraseña de root recuperada.

sábado, 11 de octubre de 2008

WPA y WPA2 comprometidos


Muchos pensábamos que nuestros enlaces WIFI estaban más que seguros con un encriptación WPA2 y nos creíamos los mas capos en seguridad, pues ahora estaríamos más que equivocados. Leyendo en SC Magazine me entero que la empresa Global Secure System dice que una firma Rusa esta utilizando microposesadores gráficos NVidia para realizar ataques de fuerza bruta rompiendo la fuerte encriptación WPA.

Dice esta empresa que técnicas similares ya eran utilizadas por los gobiernos en casos de extrema urgencia, pero ahora como dichos poderosos procesadores están al alcance de cualquiera se considera un verdadero riesgo de seguridad.

La empresa recomienda fuertemente implementar encriptación vía VPN (como IPsec o SSL) sobre los enlaces wifi de tal manera de mejorar los niveles de seguridad.

viernes, 26 de septiembre de 2008

Hacking tools


Leyendo Junauza me encuentro con un completo listado de las mejores herramientas de hacking para Linux y otros unices. El listado es el siguiente

  1. Jhon The Ripper : Utilidad para crackear passwords
  2. Nmap : creo que todos saben para que es
  3. Nessus : Sistema para detectar vulnerabilidades
  4. chkrootkit : utilidad para detectar la existencia de rootkits en el sistema
  5. Wireshark : El sucesor de Ethereal, un packet sniffer de red
  6. netcat : Manipulador de puertos TCP y UDP
  7. Kismet : Utilidad para crakear claves en redes Wifi, ideal para la billetera del caballero y el bolso de un wardriver.
  8. hping : un ping con una h adelante, es un generador de paquetes para redes TCP/IP
  9. Snort : es un IDS, sistema para detección de intrusos.
  10. tcpdump : es otro packet sniffer, que no por estar en el último lugar es malo.
Cabe añadir que ademas de ser herramientas de hacking son herramientas super utilizadas por cualquier Unix Sysadmin, varias de ellas con el pan nuestro de cada día, como por ejemplo hping, snort, nmap y wireshark.

viernes, 13 de junio de 2008

Crear un certificado ssl para Courier Imap

En la instalación por defecto del paquete courier-imap-ssl en debian y derivados se crea todo lo / para que IMAP funcione sobre SSL sin problemas. La cuestión es que el certificado que viene por defecto no es referente a nuestro servidor. Lo ideal es configurarlo para que realmente identifique a nuestro servidor, para ello debemos editar el archivo impd.cnf dentro del directorio /etc/courier-imap-ssl.

Por ejemplo podría quedar así

athos:/etc/courier# cat imapd.cnf
RANDFILE = /usr/lib/courier/imapd.rand

[ req ]
default_bits = 1024
encrypt_key = yes
distinguished_name = req_dn
x509_extensions = cert_type
prompt = no

[ req_dn ]
C=AR
ST=CH
L=Resistencia Chaco
O=Laempresa
OU=Laempresa
CN=mail.laempresa.com.ar
emailAddress=mailsoporte@laempresa.com.ar

[ cert_type ]
nsCertType = server

Por último debemos borrar el certificado creado por defecto

rm /etc/courier/imap.pem

Y crear uno nuevo con la utilidad de courier mkimapdcert.

#mkimapdcert

Les aparecerá algo así

Generating a 1024 bit RSA private key
..............................++++++
.......................................++++++
writing new private key to '/usr/lib/courier/imapd.pem'
-----
1024 semi-random bytes loaded
Generating DH parameters, 512 bit long safe prime, generator 2
This is going to take a long time
........+........+..+............+...............+.... ...(Blahhh y sigue informacion privada)


Una vez terminado reinician courier-imap-ssl y listo el pollo.
Certificado original de su empresa para comunicaciones imap con TLS y SSL.

jueves, 13 de marzo de 2008

G-Archiver




Siempre me tratan de paránoico y loquito cuando les digo que usar Software Libre es importante por que con un software cerrado uno no sabe que coño hace este, más alla de que miremos o no el código fuente.

G-Archiver es un programejo que sirve para hacer copias de seguridad de las cuentas de Gmail, aparentemente el mismo ha sido inspeccionado mediante Reflector, dado que estaba realizado en .NET, y mirando el código descompilado, el hacker, se dio cuenta que este shareware enviaba información a su creador sobre la cuenta del usuario del sistema. En otras palabras, el programita te robaba la contraseña.

Según el hacker, pudo entrar a la cuena de Gmail del creador y vio información de miles de usuarios de Gmail lista para usar (ver imagen).

Moraleja de la historía, cuidado con los software que utilizan.

Fuentes : http://www.kriptopolis.org/shareware-roba-passwords-gmail

viernes, 15 de febrero de 2008

Linux violado


El kernel de Linux vio su peor vulnerabilidad hace unos días. Se trata de un exploit publicado por Wojciech Purczynski, investigador de COSEINC.

Este exploit permite lograr acceso root en ciertos kernel linux no parcheados. Si si, un usuario cualquiera puede convertirse en root con solo ejecutarlo.

McAfee Labsun detallado informe técnico sobre el funcionamiento. El análisis concluye que para lograr su objetivo el exploit utiliza un cóctel de desbordamiento de buffer, desbordamiento de enteros y punteros NULL.

La mejor solución es parchear el kernel (o instalar una nueva versión parcheada), si eso no resulta posible se apunta también a la posibilidad alternativa de utilizar un módulo que deshabilita la llamada del sistema a sys_vmsplice, dicha llamada es la que es explotada.

En el lado positivo, Purczynski recalca que la solución también es trivial: aplicado el parche, la amenaza desaparece. Sin embargo, la dificultad estriba ahora en asegurarse de que no se produjo explotación alguna antes del parcheo

miércoles, 9 de enero de 2008

Parches para PostgreSQL

Se acaba de liberar una serie de parches para las versiones 8.2, 8.1, 8.0, 7.4 y 7.3 de PostgreSQL, dichos parches corrigen serios errores de seguridad que van desde escalación de privilegios hasta denegación de servicio.

Uno de los problemas se encuentra en los "expression index" (CVE-2007-6600), los indices que se crean sobre el resultado de una función, dicha característica puede permitir una escalación de privilegios.

El siguiente problema se encuentra en el tratamiento de las expresiones regulares (CVE-2007-4772, CVE-2007-6067,CVE-2007-4769) debido a problemas en la librería que las procesa se puede provocar
un consumo excesivo de memoria, debido a la creación de loops infinítos, llevando a una denegación de servicio.

El último problema se encuentra en le paquete contrib llamado DBLink (CVE-2007-6601), utilizado para conectarse a diferentes bases de datos dentro de la misma instancia del servidor postgres. Mediante este problema se puede realizar una escalación de privilegios en sistemas con autetificación ident o trust.

Todos ellos fueron solucionados y pueden descargar los parches desde su site.

Fuente : PostgreSQL releases critical security patches [LWN.net]: