Páginas

jueves, 9 de diciembre de 2010

Chipset rtl8187 Gentoo

Configurar modulo rtl8187 en el kernel 
kernel > 2.6.23

Antes de comenzar, los ajustes deben aplicarse a la configuración del kernel. Para configurar el módulo en el kernel:

    * No seleccione Genérico IEEE 802.11 pila de red (seleccionar la versión mac80211 en su lugar)
    * Habilitar la compatibilidad con memoria EEPROM 93CX6
    * Realtek 8187 USB inalámbrico de apoyo en los controladores de LAN


Recuerde su Kernel debe ser > 2.6.23

General setup  --->
  [*] Prompt for development and/or incomplete code/drivers

Networking --->
  [*] Networking support
  Wireless --->
    <*> Generic IEEE 802.11 Networking Stack (mac80211)

Device Drivers --->
  [*] Misc Devices --->
     EEPROM 93CX6 support
  Network device support --->
    Wireless LAN --->
      [*] Wireless LAN (IEEE 802.11)
       Realtek 8187 and 8187B USB support

Cryptographic options --->
  [*]Cryptographic API
    <*>ARC4 cipher algorithm

Library routines
  ---CRC32 functions

Ahora guarde la configuración del núcleo y empezar a recompilar. No se olvide de modificar el archivo /boot/grub/grub.conf si es necesario.

Arranque con el nuevo kernel.
Pruebe cargar el módulo:
modprobe rtl8187

Con el fin de comprobar si ha trabajado, ejecute:
# dmesg | grep rtl8187

Debería ver una salida como esta:

usbcore: conductor registrado nueva interfaz rtl8187

Configuración del acceso inalámbrico
Si todo es correcto, usted debe tener una nueva interface: wlan0. Si tiene mas de un interface inalambrica la nueva tarjeta la vera como wlan1. Si no ve wlan1 simplemente ejecute:

# ifconfig wlan1 up

Para una lista de todas las redes wifi disponibles sólo ejecuta:

# iwlist wlan1 scan

Arrancar el modulo con el sistema
En este punto, necesita para añadir estos módulos a /etc/modules.autoload.d/kernel-2.6:

rtl8187

Ahora reinicie y entre los mensajes durante el arranque vera algo sobre la conexión con net.wlan1.

Conectarse a Internet desde la linea de comandos:
Si utiliza WPA (Wifi Protected Access) PSK (Pre-Share Key) que utiliza el Protocolo de Integridad de Clave Temporal (TKIP - Temporal Key Integrity Protocol),  cambia claves dinámicamente a medida que el sistema es utilizado:
# ifconfig wlan1 up
# chmod 755 /etc/wpa_supplicant.conf

Editar el archivo de configuracion wpa_supplicant
# vim /etc/wpa_supplicant/wpa_supplicant.conf

ctrl_interface=/var/run/wpa_suplicant
network={
ssid="WIREL02"
key_mgmt=WPA-PSK
proto=WPA
pairwise=CCMP TKIP
group=CCMP TKIP
psk="s3cr3t"
priority=3
}

# ifconfig wlan1 up
# wpa_supplicant -w -Dwext -iwlan1 -c/etc/wpa_supplicant/wpa_supplicant.conf
# dhcpcd wlan1

Conectase a internet utilizando WEP (Wired Equivalent Privacy) basado en el algoritmo de cifrado RC4:
Utilizando un script.

#!/bin/bash
# iwconfig wlan1 essid "WLAN_XXXX"
# iwconfig wlan1 key 5a303030324346423731334542
# dhcpcd wlan1
echo "... Conectado a la red WLAN_EB"
sleep 2 &
echo "... Domain name severs OpenDns en uso."

Guardar como wifi_wlan_xxxx y darle permisos de ejecucion:
# ./wifi_wlan_xxxx

Linux es genial!

domingo, 24 de octubre de 2010

CCNA Carlos Camilo

Certificado CCNA Exploration



CCNA 2 Routers and Routing basics


CCNA 3 Switching



CCNA 4 Wan technologies. 



Linux es genial!.

viernes, 3 de septiembre de 2010

VNC para controlar Windows desde Linux

Utilizar VNC para controlar Windows desde Linux

Quiere controlar remotamente ordenadores con Windows para tareas de escritorio (interfaz gráfica), o administración remota?
VNC (Virtual Network Computing) es el más flexible de los escritorios remotos multiplataforma .

TightVNC (GNU General Public License), es una ramificación rápida de RealVNC que se ejecuta bien sobre conexiones lentas. Consta de dos partes: El servidor y el cliente. En el pc Windows instale el servidor desde la pagina http://tightvnc.com y cualquier viewer en Linux. cualquier navegador Web con visor Java puede ser un viewer VNC. Para los más veteranos desde la versión 2.0 tightvn no necesita el controlador DFMirage en Windows.

El instalador le guiará. Puede ignorar la introducción de contraseña durante la instalación, lo hará en la pestaña de configuración del programa. Ejecutar tightvnc como un servicio o en modo aplicación?. Modo aplicación se utiliza para uso ocasional y como servicio para uso frecuente. Puede activar y desactivar servicios ejecutándose actualmente en Windows con el comando services.msc dentro de la ventana que se abrirá al pulsar ctrl+R.

Importante:
 - Habilitar conexiones. Accept incoming connections
 - Asegúrese que en Primary Password y View-Only Password hay contraseña. Máximo 8 caracteres.
 - Server Java Viewer to Web clients.
 - Enable applet parameters in URLs.

Puerto por defecto del servidor 5900
Puerto por defecto  acceso web 5800

No se complique la vida con lo de cliente y servidor. Servidor es la máquina a la que entramos. El cliente es cualquiera que entre a dicha máquina. En el Servidor el servicio tightVNC debe estar en ejecución y escuchando intentos de conexión.

En el ordenador que hará de cliente (Linux), debe tener instalado el plugin java en su navegador. En Gentoo Linux para 64-bit:

Instalando 64-bit plugin
echo "dev-java/sun-jre-bin nsplugin" >> /etc/portage/package.use
hypatia gentoo # emerge sun-jre-bin

Seleccione el plugin adecuado para su navegador
hypatia gentoo # emerge emul-linux-x86-java-1.6.0.20

Verificando los plugins correctos:
hypatia gentoo # eselect java-nsplugin list
Available 32-bit Java browser plugins
  [1]   emul-linux-x86-java-1.6  current
  [2]   emul-linux-x86-java-1.6-old_oji
Available 64-bit Java browser plugins
  [1]   sun-jre-bin-1.6  current

Comprobar los plugins instalados pasa por teclear about:plugins en la barra de direcciones del navegador:
...
Java(TM) Plug-in 1.6.0_20

    Archivo: libnpjp2.so
    Versión:
    The next generation Java plug-in for Mozilla browsers...
....

Ahora desde su máquina Linux puede abrir una sesión VNC en un navegador Web tecleando: http://192.168.1.33:5800 en la barra de direcciones. Para cerrar sesiones remotas será suficiente con cerrar la ventana.


En la ventana de autenticación VNC introduzca el password y pulse OK.
Ahora puede decir: !!estoy dentro!!. Verá el escritorio del pc remoto.

Las transmisiones se envían en simple por lo que no debe utilizarse sobre redes no seguras. El servidor TightVNC tiene su propia contraseña. Se puede entrar el cualquier sesión activa en Windows independientemente de que usuario Windows ha registrado su entrada. En el modo aplicación, para habilitar los accesos remotos es necesario que previamente un usuario Windows se haya registrado. No así en el modo servicio.

Utilizar vncviewer. Instalar tightvnc
hypatia gentoo # emerge tightvnc

Iniciar el visor vnc como usuario normal. Puede hacerlo desde la línea de comandos o desde el menu de gnome Aplicaciones -> Internet -> vncviewer
gentoo@hypatia ~ $ vncviewer &
Induzca la dirección IP y a continuación el password:

Verá esto, es el pc remoto con Firefox abierto:


Aunque las máquinas Linux y Unix pueden endurecerse hasta tal punto que no necesiten un cortafuegos, utilizo un firewall con iptables. Así que agrego esta regla a mi cortafuegos:

$ipt -A OUTPUT -p tcp -d $ip_allow --dport $tvnc --sport \
$ports_perm -m state --state NEW -j ACCEPT
# donde ip_allow="192.168.1.33" tvnc="5800" ports_perm="1024:65535 ACCEPT para permitir, DROP para denegar"

Listar conexiones activas entrantes y salientes:

hypatia gentoo # netstat -atup
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name   
tcp        0      0 localhost:mpd           *:*                     LISTEN      14214/mpd          
tcp        0      0 192.168.1.35:43981      bw-in-f106.1e100.n:http ESTABLISHED 17203/firefox-bin  
tcp        0      0 192.168.1.35:44326      fx-in-f113.1e100.n:http ESTABLISHED 17203/firefox-bin  
tcp6       0      0 192.168.1.35%6431:46646 192.168.1.33%6:tightvnc ESTABLISHED 23872/java


Linux es genial!

martes, 24 de agosto de 2010

Reiserfs Gentoo


ReiserFS es un sistema de archivos de proposito general, soportado por GNU-Linux. Fue el primer sistema de fichero con journal incluido en Linux.

En estos momentos mi portatil tiene dos instalaciones Gentoo Linux, en un disco duro de 120Gb.

He decidido trasladar portage/ a una particion dedicada con el fin de compartirlo con las dos instalaciones Gentoo en el mismo equipo. El sistema de archivos elegido es reiserfs. 

Instalar las utilidades reiserfs necesarias para trabajar con el sistema de ficheros Reierfs. Es necesario que el kernel haya sido compilado para dar soporte a Reiserfs.
# hypatia # emerge reiserfsprogs

Darle formato a la particion con mkreiserfs
hypatia media # mkreiserfs -f --l "portage" /dev/sda11 
mkreiserfs 3.6.19 (2003 www.namesys.com)

A pair of credits:
Many persons came to www.namesys.com/support.html,  and got a question answered
for $25, or just gave us a small donation there.
Yury Umanets  (aka Umka)  developed  libreiser4,  userspace  plugins,  and  all
userspace tools (reiser4progs) except of fsck.
Guessing about desired format.. Kernel 2.6.34-gentoo-r1 is running.
Format 3.6 with standard journal
Count of blocks on the device: 1439808
Number of blocks consumed by mkreiserfs formatting process: 8255
Blocksize: 4096
Hash function used to sort names: "r5"
Journal Size 8193 blocks (first block 18)
Journal Max transaction length 1024
inode generation number: 0
UUID: a0c335fb-2c70-43d3-9138-ff638e360f36
LABEL: portage
Initializing journal - 0%....20%....40%....60%....80%....100%
Syncing..ok

Crear una carpeta para montar la nueva particion 
hypatia media # mkdir /media/reiserfs

Montar la particion
hypatia media # mount -v -t reiserfs /dev/sda11 /media/reiserfs

Copiar todos los archivos y directorios a la nueva particion:

hypatia media # cd /usr
hypatia usr/portage # cp -ax .  /media/reiserfs/

Renombrar, despues de comprobar que todo va bien se podra borrar.
hypatia usr # mv /usr/portage/ portage-backup

Crear el punto de montaje:
hypatia usr # mkdir /usr/portage

Agregar la entrada al archivo /etc/fstab que permitira montar la particion al iniciar la maquina:

#
/dev/sda11  /usr/portage  reiserfs  defaults  0 0


Montar todas las particiones presentes en /etc/fstab
hypatia usr # mount -a
hypatia usr # mount


Linux es genial!.

lunes, 23 de agosto de 2010

MPD servidor de musica

Configurar MPD en Gentoo Linux.

Instalar mpd y el cliente mpc (linea de comandos), y/o sonata un cliente con interfaz gráfica.
# emerge -av mpd
These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild N ] media-libs/libshout-2.1 445 kB
[ebuild N ] media-sound/mpd-0.16.2 USE="aac alsa bzip2 curl ffmpeg \
fifo flac id3tag ipv6 mad network ogg sqlite tcpd unicode vorbis -ao \
-audiofile -cdio -cue -debug -fluidsynth -inotify -jack -lame -lastfmradio \
-libsamplerate -mikmod -mms -modplug -mpg123 -musepack -openal \
-oss -pipe -profile -pulseaudio -sid -sndfile -twolame -wavpack -wildmidi \
-zeroconf -zip" 467 kB

Total: 2 packages (2 new), Size of downloads: 912 kB

Would you like to merge these packages? [Yes/No

# emerge -av media-sound/mpc

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild  N     ] media-libs/libmpdclient-2.4  USE="static-libs -examples" 268 kB
[ebuild  N     ] media-sound/mpc-0.20  USE="iconv -bash-completion" 97 kB

Total: 2 packages (2 new), Size of downloads: 365 kB

Would you like to merge these packages? [Yes/No]

El archivo de configuracion /etc/mpd.conf es basicamente como este:

# /etc/mpd.conf
# Archivo de configuracion para MPD
# Files and directories #######################################################
#
music_directory "/media/data/musica"
#
playlist_directory "/var/lib/mpd/playlists"
#
db_file "/var/lib/mpd/database"
#
log_file "/var/log/mpd/mpd.log"
#
pid_file "/var/run/mpd/mpd.pid"
#
state_file "/var/lib/mpd/state"
#
# General music daemon options ################################################
# cambie por su nombre de usuario.
user "gentoo"
#
# For network
bind_to_address "localhost"
#
# And for Unix Socket
#bind_to_address "/var/lib/mpd/socket"
#
port "6600"
#
log_level "default"
#
save_absolute_paths_in_playlists "no"
#
#
metadata_to_use "artist,album,title,track,name,genre,date,composer,performer,disc"
#
# Symbolic link behavior ######################################################
#
follow_outside_symlinks "yes"
#
follow_inside_symlinks "yes"
#
input {
        plugin "curl"
#       proxy "proxy.isp.com:8080"
#       proxy_user "user"
#       proxy_password "password"
}
#
# Audio Output ################################################################
#
# An example of an ALSA output:
#
audio_output {
type "alsa"
name "HDA Intel"
auto_resample "no"
## device "hw:0,0" # optional
format "44100:16:2" # optional
mixer_device "default" # optional
mixer_control "PCM" # optional
mixer_index "0" # optional
}
#
audio_output_format "44100:16:2"
#
samplerate_converter "Fastest Sinc Interpolator"
#
# Volume control mixer ########################################################
#
mixer_type "software"
#
# Resource Limitations ########################################################
#
connection_timeout "60"
max_connections "10"
max_playlist_length "16384"
max_command_list_size "2048"
max_output_buffer_size "8192"
#
# Character Encoding ##########################################################
#
filesystem_charset "UTF-8"
#
id3v1_encoding "ISO-8859-1"
###############################################

Hay que crear los directorios y archivos que faltan en la seccion Files and directories:

# touch /var/lib/mpd/database

# touch /var/log/mpd/mpd.log
# touch /var/run/mpd/mpd.pid
# touch /var/lib/mpd/state

Agregar al usuario gentoo al grupo audio:
# gpasswd -a gentoo audio

Cambiar el propietario de los archivos y carpetas creados con anterioridad:
# chown -R gentoo.audio /var/{lib,log,run}/mpd

Cambiar permisos de manera recursiva al directorio de musica:
# chmod -R a+x /media/data/musica.

Es el momento de crear la base de datos:
# mpd --create-db

Agregar mpd al arranque y reiniciar:
# rc-update add mpd default

# shutdown -r now

Llego el momento de iniciar mpc (linea de comandos), o sonata (interfaz grafica), como usuario normal:

gentoo@hypatia ~ $ mpc play
Various Artists - Deusa do Amor
[playing] #1145/1188   0:04/4:57 (1%)
volume:100%   repeat: off   random: on    single: off   consume: off

Los comandos del cliente mpc:
gentoo@hypatia ~ $ mpc help

Linux es genial!.

Configurar tarjeta sonido

Configurar tarjeta de sonido Gentoo

hypatia # emerge alsa-utils

Comprobar si soundcore fue compilado como modulo:

hypatia # modinfo soundcore
filename:       /lib/modules/2.6.34-gentoo-r1/kernel/sound/soundcore.ko
alias:          char-major-14-*
license:        GPL
author:         Alan Cox
description:    Core sound module
depends:      
vermagic:       2.6.34-gentoo-r1 SMP mod_unload modversions
parm:           preclaim_oss:int

Tiene este modulo, no tiene que recompilar su kernel.

Detalles de la tarjeta de sonido
hypatia # lspci | grep -i audio
00:1b.0 Audio device: Intel Corporation 82801H (ICH8 Family) HD Audio Controller (rev 02)
hypatia etc # updatedb
hypatia etc # modinfo soundcore
filename:       /lib/modules/2.6.34-gentoo-r1/kernel/sound/soundcore.ko
alias:          char-major-14-*
license:        GPL
author:         Alan Cox
description:    Core sound module
depends:      
vermagic:       2.6.34-gentoo-r1 SMP mod_unload modversions
parm:           preclaim_oss:int
hypatia # alsaconf














===============================================================================

 Now ALSA is ready to use.
 For adjustment of volumes, use your favorite mixer.

 Have a lot of fun!

hypatia # rc-update add alsasound boot
* alsasound added to runlevel boot

Agregar usuario al grupo audio
hypatia # gpasswd -a gentoo audio
Adding user gentoo to group audio

Iniciar demonio alsasound
hypatia # /etc/init.d/alsasound start

Comprobar el volumen
hypatia # alsamixer

Fuente: http://bugtrack.alsa-project.org/main/index.php/Matrix:Module-intel8x0#The_module_options_for_snd-intel8x0
http://www.gentoo.org/doc/es/alsa-guide.xml

Linux es genial!.

viernes, 13 de agosto de 2010

Capturar pantalla

Capturar pantalla al estilo Linux



Como capturar una pantalla en Linux desde la consola como usuario root.

1er metodo:

   1. Capturar pantalla completa, ejecutar como root:
      xwd -root -screen > screen_fvwm-crystal.xwd

   2. Para visuarlizar la captura:
      ee screen_fvwm-crystal.xwd

   3. Para cambiar formato xwd a png:
      convert screen_fvwm-crystal.xwd screen_fvwm-crystal.png

2do metodo:

   1. Capturar pantalla en el formato nativo del xwd:
      xwd -out screen_fvwm-crystal.xwd

   2. Convertir formato creado por xwd a formato pnm:
      xwdtopnm screen_fvwm-crystalxwd screen_fvwm-crystal.pnm
      xwdtopnm: writing PPM file

   3. Por último, pasar el archivo pnm al formato más comun png:
      pnmtopng screen_fvwm-crystal.pnm screen_fvwm-crystal.png

xwdtopnm y pnmtopng, pertenecen al paquete netpbm (Portable Bitmap Plus Utilities).

3er metodo:

También podemos utilizar el programa imagemagick de la siguiente forma:

    * import -window root screen_fvwm-crystal.png

Fuente: http://www.benavent.org/

Linux es genial!

sábado, 7 de agosto de 2010

OpenSSh

Propuestas de Linux para administrar un servidor y acceder a nuestra estación de trabajo remotamente. Tener solamente una linea de comandos o un escritorio gráfico completo.


OpenSSH es la herramienta para la administración remota, es seguro y fácil de instalar y usar. Desempeña la autenticación, el cifrado y la garantía de la integridad de la transferencia de datos. Si ocurre algo que altere los paquetes, SSH nos lo comunicará.

Componentes:

- sshd: Demonio del servedor OpenSSH
- ssh: Significa shell segura.
- scp: Copia segura, ofrece transferencia cifrada de ficheros
- sftp: Protocolo seguro de transferencia de ficheros.
- ssh-copy-id: Para instalar clave personal de identidad en el fichero authorized_keys de un equipo remoto.
- ssh-keyscan: Genera y gestiona claves de autenticación RSA y DSA.
- ssh-add: Agrega identidades RSA o DSA al agente de autenticación ssh-agent.
- ssh-agent: Recuerda las frases de acceso durante varias entradas a SSH para una autenticación automática. Funciona durante una misma sesión. Salir, abrir otra terminal, supone volver a empezar. En cambio, keychain recuerda las frases de acceso mientras no reiniciemos.

Tipos de autenticación:

- Autenticación por clave de host. Utiliza la identificación de entrada y contraseña de Linux para la autenticación y nuestras claves SSH para cifrar la sesión.
- Autenticación por clave pública. En lugar de utilizar nuestro sistema de identificación de entrada, autentica con una clave de identidad SSH. Las claves de identidad autentican usuarios individuales, las claves de host autentican servidores. Tiene que crear claves de identidad además de claves de host, luego distribuir copias de la clave pública a todos los hosts a los que se quiere acceder. Su clave privada no debe compartirla nunca.
- Autenticación sin frase de acceso. Similar a la autenticación por clave pública, pero el par de claves se crea sin frase de acceso. Resulta útil para servicios automatizados, como los guiones y tareas con cron. Una forma de usar frases de acceso con procesos automatizados es usar las utilidades ssh-agent o keychain.

Tipos de claves:

Las claves en símismas son del mismo tipo, RSA o DSA. Cada clave tiene dos partes, una pública y otra privada. El servidor se queda con la clave privada y el usuario, (cliente) emplea la clave pública. Las transmisiones se cifran con la clave pública y se descifran con la clave privada.

La dirección de la transmisión definen Servidor y Cliente. El demonio SSH debe estar ejecutándose y escuchando los intentos de conexión en el Servidor. El Cliente es cualquiera que entre a dicha máquina.

Configurar OpenSSH

para entrar en un host remoto con el método más sencillo soportado:

La autenticación por clave de host es el método más sencillo de configurar el acceso remoto SSH. Será necesario:

- Tener OpenSSH instalado en la máquina a la que queremos acceder remotamente.
- Demonio SSH ejecutándose en el servidor remoto y que el puerto 22 no esté bloquedo.
- Software cliente en el ordenador cliente.
- Una cuenta de acceso en el servidor remoto.
- Por último, distribuir la clave pública del host a los clientes.

Averiguar dependencias y USE local para el paquete openssh en Gentoo Linux, (no es necesario en otras distribuciones).
gentoo@hypatia / # emerge -pv openssh

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild   R   ] net-misc/openssh-5.3_p1-r1  USE="X* pam tcpd -X509 -hpn -kerberos -ldap -libedit -pkcs11 (-selinux) -skey -smartcard -static" 1,004 kB

Total: 1 package (1 reinstall), Size of downloads: 1,004 kB

Por lo tanto la información dentro de package.use quedará asi:
gentoo@hypatia / # vim /etc/portage/package.use
...
net-misc/openssh USE="X* pam tcpd -X509 -hpn -kerberos -ldap -libedit -pkcs11 (-selinux) -skey -smartcard -static"

Instalar openssh en Gentoo:

gentoo@hypatia / # emerge -av net-misc/openssh

Iniciar el demonio sshd:
gentoo@hypatia / # /etc/init.d/sshd start
* Starting sshd ...
gentoo@hypatia / # /etc/init.d/sshd status
 * status:  started

Para iniciarlo automáticamente:
gentoo@hypatia / # rc-update add sshd default

¿Crear claves RSA o DSA?, es igual. Ambas son fuertes criptográficamente.

La cuenta a utilizar será:
username -- > gentoo
passwdord -- > ********

Generar claves SSH:

Siguiendo con nuestro ejemplo, generamos un nuevo par de claves utilizando el nombre de clave de host por defecto de /etc/sshd_config. No cree nunca una frase de acceso en clave de host, en el momento que le solicite una pulse Intro:
gentoo@hypatia / # cd /etc/ssh
gentoo@hypatia / # ssh-keygen -t rsa -f ssh_host_rsa_key
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in ssh_host_rsa_key.
Your public key has been saved in ssh_host_rsa_key.pub.
The key fingerprint is:
f1:d0:8f:de:1f:41:75:5e:51:11:76:9d:c6:1d:3f:64 root@hypatia
The key's randomart image is:
+--[ RSA 2048]----+
|              .E/|
|         .    +*B|
|        o .   o.o|
|         + o .  .|
|        S o . .  |
|         . .   . |
|          . . .  |
|             . . |
|              .  |
+-----------------+
gentoo@hypatia / #

Creo una pequeña red utilizando dos ordenadores, dos claves de red y un router.  El que hará de servidor se llamará hypatia, (Gentoo Linux instalado) y el cliente lucy_ubuntu, (Ubuntu 10.04 - Lucy instalado). Crear

Agregar regla al firewall:

Puede que quiera agregar regla que permita las peticiones de entrada del cliente tanto en el archivo /etc/host.allow como en su guión iptables:
# /etc/host.allow ALL:10.0.0.3/255.255.255.0

En mi caso particular:
# /usr/local/bin/fw_host
...
$ipt -A INPUT -p tcp --dport 22 --sport 1024:65535 -j ACCEPT
---

Esta regla permite las peticiones de entrada del cliente a traves del puerto 22 (puerto por defecto de openssh), desde rango de puertos de origen no privilegiados.

Con la finalidad de realizar pruebas utilizo un viejo router D-Link 504 con 4 puertos Ethernet. A traves de un navegador accedo a la dirección por defecto del router 192.168.1.1 (username y password admin), y cambio la dirección IP  10.0.0.1 con máscara de subred 255.255.255.0.

De esta manera tendré dos redes: La red LAN 10.0.0.0/24 y la 192.168.1.1/24 perteneciente al router de mi proveedor de acceso a Internet. Esta última no la necesito para las pruebas. Desactivo mi tarjeta inalámbrica traves del controlador que utiliza:
gentoo@hypatia / # rmmod iwl3945

No hace falta tocar ningún fichero de configuración ya que con el siguiente comando es posible establecer IP de manera temporal:
gentoo@hypatia / # ifconfig eth0 10.0.0.2 netmask 255.255.255.0 up

gentoo@hypatia / # ifconfig -a
eth0      Link encap:Ethernet  HWaddr 00:21:9b:e2:cd:44 
          inet addr:10.0.0.2  Bcast:10.0.0.255  Mask:255.255.255.0
          inet6 addr: fe80::221:9bff:fee2:cd44/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:448 errors:0 dropped:0 overruns:0 frame:0
          TX packets:562 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:171419 (167.4 KiB)  TX bytes:66852 (65.2 KiB)
          Interrupt:16

Crear ruta estatica:

Para la red 10.0.0.0/24 el gateway por defecto es 10.0.0.1 siendo este el router utilizado para conectar ambos ordenadores.
gentoo@hypatia / # route add default gw 10.0.0.1 eth0

Comprobando con el comando route:
gentoo@hypatia / # route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.0.0        *               255.255.255.0   U     0      0        0 eth0
loopback        *               255.0.0.0       U     0      0        0 lo
default         10.0.0.1        0.0.0.0         UG    0      0        0 eth0

Desde el ordenador que hara de cliente repito los comandos ifconfig y route respectivamente, cambiando la IP a 10.0.0.3:
gentoo@lucy_ubuntu ~ # ifconfig eth0 10.0.0.3 netmask 255.255.255.0 up    
gentoo@lucy_ubuntu ~ # route

Copiar la clave:

Una manera de distribuir la clave pública del host al(los) clientes es entrar desde el cliente y dejar que OpenSSH transfiera la clave. Puede utilizar el nombre de host o su dirección IP:

gentoo@lucy_ubuntu ~ $ ssh 10.0.0.2
The authenticity of host '10.0.0.2 (10.0.0.2)' can't be established.
RSA key fingerprint is 44:e0:bb:e2:92:45:d0:90:cd:54:44:19:7c:b2:97:df.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.0.0.2' (RSA) to the list of known hosts.
Password:

Last login: Fri Aug  6 19:01:40 CEST 2010 from 10.0.0.3 on pts/1

En este momento lucy_ubuntu puede en hypatia como si estuviera delante de la máquina, y el tráfico, incluida la identificación de entrada inicial, está cifrado.
gentoo@hypatia ~ $

Fijese, (en el prompt), que al salir volvemos a la máquina cliente.
gentoo@hypatia ~ $ exit
logout
Connection to 10.0.0.2 closed.

gentoo@lucy_ubuntu ~ $ ssh 10.0.0.2

Password:
Last login: Fri Aug 6 19:5:04 CEST 2010  from 10.0.0.3 on pts/1

gentoo@hypatia ~ $

En el fichero ~/.ssh/known_hosts está la clave pública en el PC cliente. Puede contener cualquier cantidad de claves de host. Es buena idea entrar como usuario normal y luego utilizar su para cambiar a usuario root.

Linux es genial!.

lunes, 2 de agosto de 2010

El mundo Linux (Unix)

Linux no es un simple producto de la moda ni de una campaña promocional. Desde sus primeros desarrollos en 1991 y hasta la fecha de hoy, Linux no ha dejado de evolucionar, cambiar. El mundo de la informática está vivo. Si no evoluciona, vegeta. Gracias a Linux, millones de personas han encontrado por fin lo que estaban buscando.

GNU-Linux no es más complicado que cualquier otro sistema operativo. La lentitud con la que parece penetrar en el gran público no está relacionada con su supuesta dificultad. El buen rendimiento admitido por numerosos usuarios principiantes o avanzados, grupos de usuarios Linux y profesionales en general muestra que se trata sobre todo de un problema relacionado con las costumbres de la gente, habituada durante años a un sistema operativo único. Resulta evidente que hay que modificar un poco estas costumbres para adaptarse a un entorno Linux.

Los ordenadores

 Un ordenador es una máquina muy polivalente. No debemos esperar que sea tan sencillo de usar como una máquina de mecanismo simple aunque no debemos conocer a toda costa los entresijos técnicos de nuestro ordenador para poder utilizarlo, hay que recordar y respetar algunas nociones y bases fundamentales.

Un ordenador no sabe hacer nada por sí mismo. No hay nada más estúpido que una computadora. Hay que decirle lo que debe hacer. Lo que le hace "inteligente" en el sentido de potencia de cálculo es el usuario y los programas que le hace ejecutar. Aunque esté inventado por humanos para humanos, el ordenador no entiende su lenguaje. Habla en binario, combinación de ceros (0) y unos (1). Estos valores combinados entre sí forman palabras y datos para el ordenador. El binario se convierte en un lenguaje llamado "lenguaje máquina". Los microprocesadores emplean un lenguaje llamado "ensamblador" en el cual cada instrucción dispone de un equivalente en binario. Con la ayuda de este lenguaje ensamblador, los informáticos desarrollan sus programas, uno de los cuales se llama "compilador" (un traductor de lenguaje de alto nivel y comprensible esta vez por un gran número de informáticos).

El sistema operativo

Entre el momento en el que pulsa el botón de encendido de su ordenador y el momento en el que puede trabajar y utilizar sus programas, pasa un cierto tiempo durante el cual se cargan programas en la memoria de su ordenador. El objetivo de estos programas es simplificarle la vida al usuario y al programador, al hacer las cosas más sencillas. Estos programas forman un conjunto llamado sistema "operativo". El papel del sistema operativo consiste en sacar partido al ordenador tanto como sea posible. En otras palabras, el sistema operativo le proporciona todos los mecanismos necesarios para aprovechar lo mejor posible los recursos de su ordenador.

Un sistema operativo es un programa o un conjunto de programas que garantiza la gestión del ordenador y de los periféricos. Sirve de interfaz entre el medio físico (hardware) y el programa
(software).

El sistema operativo ofrece a los programadores una interfaz de programación de aplicaciones llamada API, Application Programming Interface. Todos los programadores utilizan las mismas funciones en sus programas, lo que simplifica mucho el trabajo. Pueden centrarse en el objetivo de su programa (crear un procesador de texto, por ejemplo) sin tener que escribir una y otra vez las secuencias de programas que gestionan el disco duro, la impresora o el acceso al teclado. Le corresponde al sistema operativo gestionar:
  •  la memoria,
  •   los accesos a los periféricos,
  •   los datos sobre los discos,
  •   los programas,
  •   la seguridad,
  •   la compilación de información.

La interfaz grafica

En un producto como Microsoft Windows la interfaz gráfica está incluida en el mismo interior del sistema operativo. De hecho, hay una ventana de diálogo para realizar cualquier ajuste en el sistema.
Los usuarios suelen pensar que la interfaz gráfica es el sistema operativo.La interfaz gráfica no siempre ha formado parte del sistema operativo. Viene como complemento. No encontrará ningún
libro sobre teoría de los sistemas operativos que trate de las interfaces gráficas. Aumenta la lentitud y ocupa preciosos recursos de la máquina, no es necesaria interfaz gráfica para gestionar un servidor . Linux propone interfaces, pero no son programas como los demás.

La interfaz gráfica no es un componente del sistema operativo y Linux no la necesita para funcionar correctamente. Es un conjunto de varios programas ejecutados de forma clásica "encima" del sistema operativo.

Linux es un sistema operativo de tipo Unix. Existen decenas de sistemas operativos en esta familia. Unix es un sistema operativo de la familia de los sistemas multitareas y multiusuarios:

  • Multitarea: el sistema gestiona la ejecución simultánea de varios programas llamados procesos (nota: un verdadero multitarea necesita contar con varios microprocesores o equivalentes; Hyper Threading, por ejemplo). 
  • Multiusuarios: el sistema permite la existencia de varios usuarios diferentes en una misma máquina, conectados o no.

Arquitectura lógica de un sistema Linux

El esquema anterior es una sintesis simplificada de la estructura interna de un sistema operativo Unix. Abajo se encuentra su medio físico; arriba, los programas que usted ejecuta en su máquina. Entre ambos, los diferentes componentes del sistema operativo aseguran su correcto funcionamiento:
  • Las llamadas al sistema son utilizadas por los programas para comunicarse con el sistema operativo Unix.
     
  • La gestión de los procesos se encarga de la conmutación de las tareas y de su prioridad. Este
    componente se encarga, por lo tanto, de la multitarea.

  • La gestión de las entradas y de las salidas de ficheros se encarga tanto de la lectura y escritura de los datos en sus discos duros como también en sus periféricos (tarjeta de sonido, impresora,
    etc.).

  • Se puede ubicar cierta información en una zona de memoria llamada caché. En lugar de escribir datos directamente en el disco duro (un proceso lento), Unix va a escribirlos provisionalmente en una zona de memoria para luego escribirlos en el disco, después de unos segundos. Así, la lectura de estos datos es más rápida porque ya están en memoria y el programa no pierde tiempo en esperar el fin de la escritura de los datos.

  • Los drivers tienen como papel gestionar al más bajo nivel el hardware o las estructuras lógicas del hardware (por ejemplo, los datos de una partición).
Una aplicación bien programada en un sistema operativo bien programado no puede cortocircuitar este esquema: no "discute" nunca con el hardware, sino que dialoga obligatoriamente con las API correspondientes.

Linux es genial!

domingo, 20 de junio de 2010

Permisos de acceso


El papel de un sistema operativo es también el de asegurar la integridad y el acceso a los datos. Esto es posible gracias a un sistema de permisos. A cada fichero o directorio se le asignan unos privilegios que le son propios, así como autorizaciones de acceso individuales. En el momento de intentar el acceso, el sistema comprueba si está autorizado.

Cuando el administrador crea un usuario, le asigna un UID (User Identification) único. Los usuarios quedan definidos en el fichero /etc/passwd. Cada usuario es integrado en, al menos, un grupo, que será su grupo primario. Todos éstos tienen un identificador único, el GID (Group Identification) definidos en el fichero /etc/group.

obtener esta información es posible con el comando id. A nivel interno, el sistema trabaja únicamente con los UID y GID.

gentoo@hypatia ~ $ id
uid=1000(gentoo) gid=100(users) grupos=100(users),18(audio),19(cdrom),27(video),85(usb),250(portage),1002(plugdev)

Se asocian un UID y un GID a cada fichero (inodo) que define su propietario y su grupo con privilegios. Usted asigna permisos al propietario, al grupo con privilegios y al resto de la gente. Se distinguen tres casos:

UID del usuario idéntico al UID definido para el fichero. Este usuario es propietario del fichero.
   
Los UID son diferentes: el sistema comprueba si el GID del usuario es idéntico al GID del fichero. Si es el caso, el usuario pertenece al grupo con privilegios del fichero.

En los otros casos (ninguna correspondencia): se trata del resto de la gente (others), ni es el propietario, ni un miembro del grupo con privilegios.   

drwxr-xr-x 10 gentoo users 4096 jun 13 7:32 tutoriales

En esta línea de la tabla, el directorio tutoriales pertenece al usuario gentoo y grupo users con los permisos rwxr-xr-x.

Fichero normal


r - Se puede leer el contenido, cargarlo en memoria, listarlo y copiarlo.

w - Se puede modificar el contenido del fichero. Se puede escribir dentro. Modificar el contenido no significa poder eliminar el fichero (ver permisos en directorio).

x - Se puede ejecutar el fichero desde la línea de comandos si se trata de un programa binario (compilado) o de un script (shell, perl...).

Directorio

r - Se pueden listar (leer) los elementos del directorio (catálogo). Sin esta autorización, ls y los criterios de filtro en el directorio y su contenido no serían posibles. No obstante, puede seguir accediendo a un fichero si conoce su ruta de acceso.

w - Se pueden modificar los elementos del directorio (catálogo), y es posible crear, volver a nombrar y suprimir ficheros en este directorio. Es este permiso el que controla el permiso de eliminación de un fichero.

x - Se puede acceder al catálogo por CD y se puede listar. Sin esta autorización, es imposible acceder al directorio y actuar en su contenido, que pasa a estar cerrado.

Por ejemplo, para un fichero:

rwxr-xr--

Permisos para el propietario de lectura, escritura y ejecución.
Permiso para los miembros del grupo de lectura y ejecución.
Permisos para el resto del mundo de lectura únicamente.

Modificar permisos

Cuando se crea, un fichero o un directorio dispone de permisos por defecto. El comando chmod (change mode) se utiliza para modificar los permisos en un fichero o un directorio. Existen dos métodos para modificar estos derechos: mediante símbolos o mediante un sistema octal de representación de permisos. Sólo el propietario de un fichero y el administrador del sistema puede modificar sus permisos. El parámetro -R cambia los permisos de manera recursiva.

La sintaxis es la siguiente:

chmod modificaciones file3 file2...

Para modificar los permisos del propietario, utilice el carácter u; para los permisos del grupo con permisos, el carácter g; para el resto, el carácter o, y para todos, el carácter a.

Para añadir permisos, se utiliza el carácter +; para retirarlos, el carácter -, y para no tener en cuenta los parámetros anteriores, el carácter =.

Finalmente, ponga el permiso cuyos símbolos son: r, w o x.

Puede separar las modificaciones con comas y acumular varios permisos en un mismo comando.

Si quiere suprimir todos los derechos, no especifique nada después del signo =:


gentoo@hypatia ~ $ ls -l chapter6-config
-rw-r--rwx 1 gentoo users 3257 jun 12 23:48 chapter6-config

gentoo@hypatia ~ $ chmod o= chapter6-config
gentoo@hypatia ~ $ ls -l chapter6-config
-rw-r----- 1 gentoo users 3257 jun 12 23:48 chapter6-config

Sistema octal

  r =  4
  w = 2
  x = 1

Para obtener el permiso final, basta sumar los valores. Por ejemplo, si quiere rwxrw-rw-, entonces obtiene 400+200+100+40+10+4+1=755, y para rw-r--r-- 400+200+40+4=644.

La modificación octal de los permisos no permite modificar un solo derecho. Es la totalidad de los permisos lo que se ha modificado de una sola vez.

Máscara de permisos


En el momento de la creación de un fichero o de un directorio, se les asigna unos permisos automáticamente. Suele ser rw-r--r-- (644) para un fichero y rwxr-xr-x (755) para un directorio. Una máscara de permisos controla estos valores. Se la puede modificar con el comando umask. El comando umask coge como parámetro un valor octal del cual cada permiso individual será suprimido de los derechos de acceso máximo del fichero o del directorio.

Por defecto, se crean todos los ficheros con los permisos 666 (rw-rw-rw-).
Por defecto, se crean todos los directorios con los permisos 777 (rwxrwxrwx).
Luego se aplica la máscara

La máscara es la misma para el conjunto de los ficheros.Una máscara no modifica los permisos de los ficheros existentes, sino solamente los de los ficheros creados a partir de este momento.

Los permisos por defecto (máximo) de los ficheros y de los directorios no son idénticos. Es lógico: como el permiso x permite entrar en un directorio, es normal que éste disponga de él por defecto. Este mismo permiso es inútil por defecto en los ficheros: sólo una pequeña minoría de los ficheros son scripts o binarios.

La máscara por defecto es 022, o sea ----w--w-. Para obtener este valor, inserte umask sin parámetro.

gentoo@hypatia ~ $ umask
0022

Como calcular la máscara

Para un fichero

Predeterminado  rw-rw-rw- (666)
Retirar         ----w--w- (022)
Resta           rw-r--r-- (644)

Para un directorio


Predeterminado  rwxrwxrwx (777)
Retirar         ----w--w- (022)
Resta           rwxr-xr-x (755)

Observe que aplicar una máscara no es sustraer, sino suprimir permisos de los establecidos por defecto, permiso a permiso. Por ejemplo:

Predeterminado  rw-rw-rw- (666)
Retirar         ----wxrwx (037)
Resta           rw-r----- (640)

Y no 629, lo que es imposible en sistema octal...

Cambiar de propietario y grupo

Es posible cambiar el propietario y el grupo de un fichero con la ayuda de los comandos chown (change owner) y chgrp (change group). El parámetro -R cambia la propiedad de manera recursiva.

chown usuario file1 file3...
chgrp grupo file1 file3...

Al especificar el nombre de usuario (o de grupo), el sistema comprueba primero su existencia. Usted puede especificar un UID o un GID. En este caso, el sistema no efectuará comprobación alguna.

Para los dos comandos, no se modifican los permisos anteriores ni la ubicación del fichero. Es posible modificar con un solo comando el propietario y el grupo a la vez.

chown usuario:grupo file1 file2...
chown usuario.grupo file1 file2...

Sólo root tiene el permiso de cambiar el propietario de un fichero. Pero un usuario puede cambiar el grupo de un fichero si forma parte del nuevo grupo.

gentoo@hypatia ~ $ chgrp video file1
gentoo@hypatia ~ $ ls -l file1
-rwxr-xr-x 1 gentoo video 0 mar 21 22:03 file1

SUID y SGID

Es posible establecer permisos de acceso especiales para ficheros ejecutables. Estos permisos de acceso extendidos aplicados a un comando permiten sustituir los permisos otrogados al usuario que lo inició por los permisos del propietario o del grupo de pertenencia del comando.

El ejemplo más sencillo es el programa passwd, que permite cambiar la contraseña. Si se ejecutara el comando con los permisos de un usuario clásico, passwd no podría abrir y modificar los ficheros /etc/passwd y /etc/shadow:

gentoo@hypatia ~ $ ls -l /etc/passwd
-rw-r--r-- 1 root root 1440 may 24 10:02 /etc/passwd

Puede observar que este fichero pertenece a root, y que sólo root puede escribir en él. Un usuario normal no puede leer su contenido sin interactuar. El comando passwd no debería, por lo tanto, poder modificar los ficheros. Vea los permisos del comando passwd (/bin/passwd o /usr/bin/passwd):

gentoo@hypatia ~ $ ls -l /usr/bin/passwd
-rwsr-xr-x 1 root shadow 78208 jun 10:06 /usr/bin/passwd

Lleva asociado un nuevo permiso: s para los permisos del usuario root. Este nuevo atributo permite la ejecución del comando con permisos de acceso extendidos. Durante el tratamiento, se ejecuta el programa con los permisos del propietario del fichero o de su grupo de pertenencia. En el caso de passwd, se inicia con los permisos de root y no del usuario que lo lanzó.

El permiso s sobre el usuario se llama SUID-Bit (Set User ID Bit), y sobre el grupo, GUID-Bit (Set Group ID Bit).

El comando chmod permite ubicar SUID-Bit y GUID-Bit.

chmod u+s comando
chmod g+s comando

Los valores octales son 4000 para SUID-Bit y 2000 para GUID-Bit.

chmod 4755 comando
chmod 2755 comando

Sólo el propietario o el administrador puede activar esta propiedad. Posicionar SUID-bit o SGID-Bit tiene sentido únicamente si se han establecido los permisos de ejecución previamente (atributo x en el propietario o el grupo). Si éstos no están presentes; se sustituye la s por una S..

No se transmiten los SUID-Bit y SGID-bit a los hijos de un proceso. En este caso, se ejecutarán los hijos con los permisos del usuario que inició el comando básico, los UID reales.

Sticky bit

El sticky bit (bit pegajoso) permite asignar un criterio protector contra el borrado del contenido de un directorio. Imagine un directorio /tmp donde todos los usuarios tienen el permiso de leer y escribir ficheros.

gentoo@hypatia ~ $ ls -ld /tmp
drwxrwxrwx   6 root     system     16384 may 14 13:22 tmp

En este directorio todo el mundo puede suprimir ficheros, incluyendo los que no le pertenecen (derecho w presente en todas partes y para todos). Si el usuario gentoo crea un fichero, el usuario axel puede suprimirlo incluso aunque no le pertenezca.

El sticky bit aplicado a un directorio, impide esta operación.

gentoo@hypatia ~ $ chmod u+t /tmp
gentoo@hypatia ~ $ ls -ld /tmp
drwxrwxrwt 35 root root 77824 jun 21 12:30 /tmp

En octal, se utilizará el valor 1000 (chmod 1777 /tmp).

Aunque aplicado al usuario, el sticky bit, representado por una t, aparece en el grupo de permisos de others.

Permisos y directorio

Si usted da el permiso al grupo en un directorio, todos los ficheros creados dentro de este directorio serán del mismo grupo que este directorio, sea cual sea el grupo de la persona que crea este fichero.

gentoo@hypatia ~ $ mkdir dir
gentoo@hypatia ~ $ chmod 770 dir
gentoo@hypatia ~ $ ls -ld dir
drwxrwx--- 2 gentoo users 4096 jun 21 13:36 dir
gentoo@hypatia ~ $ chgrp video dir
gentoo@hypatia ~ $ chmod g+s dir
gentoo@hypatia ~ $ ls -ld dir
drwxrws--- 2 gentoo video 4096 jun 21 13:37 dir
gentoo@hypatia ~ $ cd dir
gentoo@hypatia ~ $ touch test
gentoo@hypatia ~ $ ls -l test
-rw-r--r-- 1 gentoo video 0 jun 21 13:37 test

Algunos ejercicios:

Supongamos un fichero del que es propietario llamado notas, ha retirado a los miembros del grupo y otros todos los permisos sobre él, y el directorio que lo contiene dispone del permiso w para los miembros del grupo. ¿Quién puede suprimir su fichero?

Usted y los miembros del grupo del directorio. El permiso de escritura en el directorio es el que autoriza a las personas a modificar su contenido.

Con chmod, ¿cuáles son los parámetros que se deben colocar para suprimir los permisos de escritura a los demás, dar el permiso de lectura y ejecución a los miembros del grupo y todos los permisos a usted?

u=rwx,g=rw,o-w.
Quiere crear un directorio donde todo el mundo pueda escribir ficheros, donde todos los ficheros tengan el mismo grupo, pero donde nadie pueda suprimir los ficheros de los demás. ¿Cuáles deben ser los derechos?

rwxrwsrwt, o sea, 3777 en octal.

Linux es genial

domingo, 2 de mayo de 2010

Buscar rootkits

Chkrootkit

rootkit es una herramienta, o un grupo de ellas que tiene como finalidad esconderse a sí misma y esconder otros programas, procesos, archivos, directorios, y puertos que permiten al intruso mantener el acceso a un sistema, para remotamente comandar acciones o extraer información sensible, a menudo con fines maliciosos o destructivos.

Buscar rootkits
Después de que un pirata informático no autorizado haya conseguido penetrar en una máquina, por una contraseña muy sencilla o por un fallo, con toda seguridad intentará instalar una puerta trasera o backdoor, con la finalidad de utilizar su máquina con dudosos propositos, llevarse o almacenar datos.

Acaparar los derechos de root no implica necesariamente teclear directamente en esta cuenta. Lo habitual es conectarse como usuario normal y pasar a root utilizando su. Un servicio ftp mal configurado puede hacer posible la conexión y desplegando a continuación un script llamado su, modifica el PATH por defecto poniendo así la ruta del script, lo demás será muy fácil.

gentoo ~$ pwd
/home/gentoo

gentoo ~$ vim su
#!/bin/bash
echo -e "Contraseña :\c"
read -s password
echo "$@ $password" > /home/gentoo/file
echo
echo "su: Password incorrecto."
/bin/su $@
## Fin del archivo####

gentoo ~$ chmod +x su
gentoo ~$ export PATH=$HOME
gentoo ~$ su - root
Contraseña: (falso su)
su: Password incorrecto. (falso su)
Contraseña: (su verdadero)

La contraseña de root esta en el fichero file1
gentoo ~$ cat file1
 rino4Zrcat

su solo pide la contraseña una vez, el engaño salta a la vista.

La herramienta chkrootkit es una sencilla herraminta que permite buscar la presencia de los más conocidos y habituales rootkits. Su eficacia depende de mantenerla actualizada y ejecutarla con regularidad.

xena@gentoo # chkrootkit
xena tmp # cat rootkit
ROOTDIR is `/'
Checking `amd'... not found
Checking `basename'... not infected
Checking `biff'... not found
Checking `chfn'... not infected
Checking `chsh'... not infected
Checking `cron'... not infected
Checking `crontab'... not infected
Checking `date'... not infected
Checking `du'... not infected
Checking `dirname'... not infected
Checking `echo'... not infected
Checking `egrep'... not infected
Checking `env'... not infected
Checking `find'... not infected
Checking `fingerd'... not infected
Checking `gpm'... not infected
Checking `grep'... not infected
Checking `hdparm'... not infected
Checking `su'... not infected
Checking `ifconfig'... not infected
Checking `inetd'... not tested
Checking `inetdconf'... not found
Checking `identd'... not found
Checking `init'... not infected
Checking `killall'... not infected
Checking `ldsopreload'... not infected
Checking `login'... not infected
Checking `ls'... not infected
Checking `lsof'... not infected
Checking `mail'... not found
Checking `mingetty'... not found
Checking `netstat'... not infected
Checking `named'... not found
Checking `passwd'... not infected
Checking `pidof'... not infected
Checking `pop2'... not found
Checking `pop3'... not found
Checking `ps'... not infected
Checking `pstree'... not infected
Checking `rpcinfo'... not infected
Checking `rlogind'... not found
Checking `rshd'... not found
Checking `slogin'... not infected
Checking `sendmail'... not infected
Checking `sshd'... not infected
Checking `syslogd'... not tested
Checking `tar'... not infected
Checking `tcpd'... not infected
Checking `tcpdump'... not infected
Checking `top'... not infected
Checking `telnetd'... not found
Checking `timed'... not found
Checking `traceroute'... not infected
Checking `vdir'... not infected
Checking `w'... not infected
Checking `write'... not infected
Checking `aliens'... no suspect files
Searching for sniffer's logs, it may take a while... nothing found
Searching for HiDrootkit's default dir... nothing found
Searching for t0rn's default files and dirs... nothing found
Searching for t0rn's v8 defaults... nothing found
Searching for Lion Worm default files and dirs... nothing found
Searching for RSHA's default files and dir... nothing found
Searching for RH-Sharpe's default files... nothing found
Searching for Ambient's rootkit (ark) default files and dirs... nothing found
Searching for suspicious files and dirs, it may take a while... nothing found
Searching for LPD Worm files and dirs... nothing found
Searching for Ramen Worm files and dirs... nothing found
Searching for Maniac files and dirs... nothing found
Searching for RK17 files and dirs... nothing found
Searching for Ducoci rootkit... nothing found
Searching for Adore Worm... nothing found
Searching for ShitC Worm... nothing found
Searching for Omega Worm... nothing found
Searching for Sadmind/IIS Worm... nothing found
Searching for MonKit... nothing found
Searching for Showtee... nothing found
Searching for OpticKit... nothing found
Searching for T.R.K... nothing found
Searching for Mithra... nothing found
Searching for LOC rootkit... nothing found
Searching for Romanian rootkit... nothing found
Searching for Suckit rootkit... nothing found
Searching for Volc rootkit... nothing found
Searching for Gold2 rootkit... nothing found
Searching for TC2 Worm default files and dirs... nothing found
Searching for Anonoying rootkit default files and dirs... nothing found
Searching for ZK rootkit default files and dirs... nothing found
Searching for ShKit rootkit default files and dirs... nothing found
Searching for AjaKit rootkit default files and dirs... nothing found
Searching for zaRwT rootkit default files and dirs... nothing found
Searching for Madalin rootkit default files... nothing found
Searching for Fu rootkit default files... nothing found
Searching for ESRK rootkit default files... nothing found
Searching for rootedoor... nothing found
Searching for ENYELKM rootkit default files... nothing found
Searching for common ssh-scanners default files... nothing found
Searching for suspect PHP files... nothing found
Searching for anomalies in shell history files... nothing found
Checking `asp'... not infected
Checking `bindshell'... not infected
Checking `lkm'... chkproc: nothing detected
chkdirs: nothing detected
Checking `rexedcs'... not found
Checking `sniffer'... wlan0: PF_PACKET(/usr/sbin/wpa_supplicant)
Checking `w55808'... not infected
Checking `wted'... chkwtmp: nothing deleted
Checking `scalper'... not infected
Checking `slapper'... not infected
Checking `z2'... chklastlog: nothing deleted
Checking `chkutmp'...  The tty of the following user process(es) were not found
 in /var/run/utmp !
! RUID          PID TTY    CMD
! gentoo      15905 tty5   /usr/bin/X -nolisten tcp
chkutmp: nothing deleted

Automatizar utilizando cron.

Se ejutará cada día a las 3:00 am y enviará por emal el resultado.
Cree un fichero rootkit_cron en /etc/cron.d con la siguiente línea:

0  3  *  *  *    /usr/sbin/chkrootkit  |  mail  usuario@servidor -s "Resultado busqueda rootkit de fecha $(date)" 

Si prefiere enviarlo a un fichero:
0  3  *  *  *  /usr/sbin/chkrootkit  >  /tmp/rootkit

Alerta! en su distro la ruta a chkrootkit puede ser diferente.

Activar :
# crontab rootkit_cron

Listar las crontabs activas del usuario root:
# crontab -u root -l
# DO NOT EDIT THIS FILE - edit the master and reinstall.
# (rootkit_cron installed on Sun May  2 17:39:17 2010)
# (Cron version V5.0 -- $Id: crontab.c,v 1.12 2004/01/23 18:56:42 vixie Exp $)
0  3  *  *  *  /usr/sbin/chkrootkit > /tmp/rootkit

Linux es genial.

sábado, 1 de mayo de 2010

John the Ripper

John the Ripper es un programa que permite averiguar (comprobar la fortaleza) las contraseñas de los usuarios de diferentes sistemas.

Sin embargo, las últimas versiones de la mayoría de distribuciones GNU-Linux utilizan sha-512 como sistema de encriptación de claves. Cada vez que queremos conocer las contraseñas nos encontramos con el siguiente mensaje de error:

"No password hashes loaded".

Las pruebas están realizadas con Gentoo pero el método para compilar John the Ripper sirve para cualquier otra distribución GNU/Linux.

Descargar el programa y el parche de la página de openwall:

$ wget http://www.openwall.com/john/g/john-1.7.3.4.tar.gz
$ wget http://openwall.info/wiki/_media/john/john-1.7.3.1-generic-crypt-1.diff.gz




Descomprimir:
# tar xvzf john-1.7.3.4.tar.gz

Las rutas en mi caso se entenderán mejor con un ls:
john #
ls -l
total 812
drwx------ 5 root root 4096 sep 20 2009 john-1.7.3.4
-rw-r--r-- 1 root root 816259 sep 20 2009 john-1.7.3.4.tar.gz
drwxr-xr-x 2 root root 4096 sep 1 11:14 parche

Entrar al directorio del programa:
# cd john-1.7.3.4

Aplicar el parche:
# gzip -dc ../parche/john-1.7.3.1-generic-crypt-1.diff.gz | patch -p1
 patching file src/Makefile
 patching file src/crypt_fmt.c
 patching file src/john.c
 Hunk #2 succeeded at 67 (offset 2 lines).

El directorio donde se encuentra el código fuente para es src:



# cd src
# make

Con make obtendrá una lista de los sistemas soportados, luego:
# make linux-x86-64



Si el sistema no esta en la lista:

# make clean generic
 rm -f ../run/unshadow
 ln -s john ../run/unshadow
 rm -f ../run/unafs
 ln -s john ../run/unafs
 rm -f ../run/unique
 ln -s john ../run/unique
 
Pruebas de detección de correcto funcionamiento.
# cd ../run
# ./john --test

Benchmarking: Traditional DES [64/64 BS]... DONE
Many salts:    913784 c/s real, 913784 c/s virtual
Only one salt:    841378 c/s real, 842223 c/s virtual

Benchmarking: BSDI DES (x725) [64/64 BS]... DONE
Many salts:    26526 c/s real, 26553 c/s virtual
Only one salt:    26254 c/s real, 26306 c/s virtual

Benchmarking: FreeBSD MD5 [32/64 X2]... DONE
Raw:    8521 c/s real, 8521 c/s virtual

Benchmarking: OpenBSD Blowfish (x32) [32/64 X2]... DONE
Raw:    516 c/s real, 515 c/s virtual

Benchmarking: Kerberos AFS DES [48/64 4K]... DONE
Short:    284132 c/s real, 284132 c/s virtual
Long:    856828 c/s real, 855954 c/s virtual

Benchmarking: LM DES [64/64 BS]... DONE
Raw:    8264K c/s real, 8274K c/s virtual

Benchmarking: generic crypt(3) [?/64]... DONE
Many salts:    178329 c/s real, 178026 c/s virtual
Only one salt:    175640 c/s real, 175640 c/s virtual



Hay que combinar los arhivos /etc/passwd y /etc/shadow con el comando unshadow (como root):
# ./unshadow /etc/passwd /etc/shadow > /home/gentoo/passwords

John probará la fortaleza de la contraseña del usuario donna:

hypatia run # ./john -i -u=1001 /home/gentoo/passwords
Loaded 1 password hash (generic crypt(3) [?/64])
asdfgh           (donna)
guesses: 1  time: 0:00:00:19  c/s: 169  trying: asdfgh

El fichero john.pot contiene los resultados encontrados por john. El fichero no está vacío y esto significa que john ha encontrado la contraseña. El fichero john.rec contiene el estado actual de la búsqueda por si se produce una interrupción y es utilizado por el programa para reanudar la búsqueda.

En una máquina x86_64 Intel(R) Core(TM)2 Duo CPU T5750 @ 2.00GHz fue crackeada la contraseña de nuestro usuario de prueba, donna, en 0.19 segundos.

hypatia run # cat john.pot
$6$Y/SXCZE5$Syxi6qEVLjUecqF449kNy9PISVodOpi1BEwRwkIFn7WsrXTQML7kWLP37j3aDu5qJGoY4seTc0aegKf5fb/Xl1:asdfgh



# ls -l
total 1556
-rw------- 1 root root 341064 dic 16  2005 all.chr
-rw------- 1 root root 232158 dic 16  2005 alnum.chr
-rw------- 1 root root 131549 dic 16  2005 alpha.chr
-rw------- 1 root root  40391 dic 16  2005 digits.chr
-rwxr-xr-x 1 root root 211568 abr 28 13:40 john
-rw------- 1 root root  19988 sep  9  2009 john.conf
-rw------- 1 root root 324629 abr 30 15:14 john.log
-rw------- 1 root root    104 abr 28 13:56 john.pot
-rw------- 1 root root    156 abr 30 15:14 john.rec
-rw------- 1 root root 215982 dic 16  2005 lanman.chr
-rwx------ 1 root root    785 abr 10  2002 mailer
-rw------- 1 root root  22346 dic 16  2005 password.lst
lrwxrwxrwx 1 root root      4 abr 28 13:40 unafs -> john
lrwxrwxrwx 1 root root      4 abr 28 13:40 unique -> john
lrwxrwxrwx 1 root root      4 abr 28 13:40 unshadow -> john

Los módulos PAM influyen en la política de gestión de las contraseñas, obligando en algunos casos a elegir una más o menos compleja.
Las contraseñas se puden recordar por medios mnemotécnicos (La nemotecnia o mnemotecnia es el procedimiento de asociación de ideas, esquemas, ejercicios sistemáticos, repeticiones, etc. para facilitar el recuerdo de algo.  pwgen es un generador de contraseñas.

$ pwgen
uash6She lohJo7ae Ohphab3i ouRik9ie uM4va3im Neer7Eit eib3Hauy xo9Iuy5p
ahSiW0uf AhG6wail Yai6neeh phae4ioV deeL3aip Uz5ahzaa aiV5phee Aegaiy7x
ioPh1ahn Ong6Baib Eish4rip eik9Gie1 ien3Iepe xohduj7U aiP2keov So5ovaht
Voh9oxoe ahs2Meeg Ooch5xix Phe3yiuz eeCa5ohv aig9Ai3o Go4Ateeh Hee6thei
Rai6Daeh aid8ieNg Thah6ien daphaiG0 Iefai5oh Pheife6i Poora8ah Coh5Aida
ViC7ieth hohG5sei Aa9Jeilu eopoX8Si jooh3Eif dooPhai1 chohqu1G ieNgae3o
wiCeiSi3 aej6Piev eoTha1Fu ieR2yeeb Eireili6 saiGhie2 XohRoo1a cahb2Yah
Guungah0 ube3vo0D oshol3Op Pui6agh5 Ao7baeN1 foTek9Ei aeM3lala Ene2baol
geloV9ai Weeyu2ie Uvae2Vie dei0euL7 Xee9uaza ed8Eeghu eebiu2Ka zey0Liuh
be6Ailoi eiph8Ohb Yahpahr4 aij4dahG oQu2chae Fe5eeg9c Hoosh6oh Iip8eiwe
AuPie0um Ahxai9eo Dae5oquu Ie7Viek8 pa2aew8B fohham7A fah1Oogi ieH9vee8
saeC8sha Aejeey6i Eithoow1 yi9vei0L ohC7eegh IaTh4ohn ti6Fooxe Oiche7oh
Tah9uos7 Paej2Iec chuiD8ei aicoGh5l saiKeiw2 mae9mieY Ais9oanu Mah9xej3
Zi2nacai gaiM4thi sapa1Fah kie8oZo7 Po5uuho8 thae3Aim Ohjahgh9 Weike8ra
Cah4weiZ teoji0Oo vi0hei6O Zieha3ai Keip2bie bahR7bah ahSai0Ei afoh3Thi
eeNieTh8 Zei7eth8 uV5eichi kue1Eedi sueThe0V wohChe2u Ohl1zicu Loo1soo3
yahb9uSi EelieGh1 aeMiThi1 OoFoh8wu Ieyei5ka Roph7ape uem5quuK ahQu7eec
NahSha6A kooMou0y gu1chaiJ hae2ku0Z uC3oeNgo xuSha7qu Iucai0fu uK4icewe
eP7aetig ahYai0ee Eetahfu8 yeep0oPi Veimaij3 Oht0aiPh buTh9oob ood4nieC
sah7Ahj1 koozah0J Vieb9Bit eeP9nee1 ea1SohCe Afei4ohS eikahk0W rachoG4c

Puede pedir que se generen contraseñas totalmente aleatorias con una longitud dada. Por ejemplo 9 carácteres:

hypatia run # pwgen -s -1 9
HK8vef07r

Linux es genial!

lunes, 26 de abril de 2010

Sudo

Otorgar privilegios extendidos
El comando sudo permite asignar el derecho a ejecutar comandos de administrador a uno o varios usuarios y en una o varias máquinas. Para que un usuario pueda ejecutar un comando que sólo puede ejecutar root, se añade un derecho sudo a este usuario para este comando.

El fichero de configuración /etc/sudoers se edita con el comando visudo, además comprueba la sintaxis del fichero antes de guardarlo.

La sintaxis es la siguiente:

user maquina = (cuenta_user_ejecuta_comando) comando

De manera que para
autorizar al usuario gentoo a ejecutar el comando tune2fs y sus parámetros con derechos root sobre cualquier máquina (donde esté presente esta regla):

gentoo ALL = /sbin/tune2fs

 Se pide la contraseña del usuario y prosigue. La lista de los derechos del usuario se obtiene:

gentoo@syslinux:~$ sudo -l
[sudo] password for gentoo:
User gentoo may run the following commands on this host:
    (root) /sbin/tune2fs

Los mensajes de sudo se transmiten a syslog que puede dirigirlos a un fichero, por ejemplo, /var/log/messages. El registro de destino se puede determinar mediante syslog.conf.

Es posible crear:

  • grupos de usuarios
  • grupos de máquinas
  • grupos de comandos
  • obligar o no el uso de password
  • forzar la ejecución de un comando a usuario distinto de root.
El nombre de los grupos es alias

Alias de usuarios:
Usar_Alias    ADMIN = gentoo, slack

Si la totalidad de administradores deben poder usar el comando tune2fs:
ADMIN      ALL = /sbin/tune2fs

Si los administradores pueden ejecutar sólo en determinadas máquinas utilice el alias de máquinas:
Host_Alias SERVLINUX = syslinux, xena

Se convierte en:
ADMIN      SERVERLINUX = /sbin/tune2fs

Existe la posibilidad de agregar varios comandos con o sín parámetros, por ejemplo, si los ADMIN además pueden ejecutar el comando /sbin/fdisk quedaría como sigue:
ADMIN       SERVERLINUX = /sbin/tune2fs, /sbin/fdisk

Se pueden crear alias de comandos de manera que faciliten la utilización:
Cmnd_Alias   CMDADMIN=/sbin/tune2fs, /sbin/fdisk

Siguiendo con nuestro ejemplo, la línea sudo quedaría:
ADMIN      SERVERLINUX=CMDADMIN

Evitar la introducción del password de uno o varios usuario(s) pasa por utilizar NOPASSWD, así los usuarios del alias ADMIN están exonerados de introducir contraseña para utilizar los comandos del alias CMDADMIN:

ADMIN       SERVERLINUX=NOPASSWD:   CMDADMIN

Obligar al uso de una contraseña también es posible con PASSWD:
ADMIN      SERVERLINUX=NOPASSWD:    CMDADMIN,  \ PASSWD:/sbin/fdisk

A los usuarios del grupo ADMIN podrán iniciar un comando con la identidad de otro usuario distinto de root colocando el alias entre paréntesis:
ADMIN      ALL=(sonia)  PASSWD: /sbin/service

Los usuarios del grupo ADMIN podrán ejecutar el comando /sbin/service. Como condición tendrán que introducir la contraseña de sonia:
gentoo@syslinux:~$ sudo -u sonia /sbin/services

Puede precisar varios usuarios o crear alias:
Runas_Alias       USERLIST=gentoo,sonia

Quedaría asi:
ADMIN      ALL=(USERLIST)    PASSWD: /sbin/service

El alias ALL define conjunto de usuarios, máquinas, comandos, dependiendo del lugar donde esté escrito.

A los usuarios del grupo ADMIN les está permitido ejecutar todos los comandos, en todas las máquinas sin introducir contraseña.
:
ADMIN      ALL=NOPASSWD:    ALL

Para excluir determinados usuarios, comandos, máquinas, de un alias o lista se utiliza el signo de exclamación:
ADMIN       SERVERLINUX=NOPASSWD:   ALL,  !/sbin/fdisk,   PASSWD:/sbin/tune2fs

La línea anterior da a los ADMIN todos los derechos sobre todos los programas sin contraseña excepto /sbin/tune2fs que requier contraseña y /sbin/fdisk que está prohibido.


Linux es genial.