Autor: miguel

  • ssh desatendido (clave dsa) (II)

    Buscando soluciones para hacer copias de seguridad con rdiff-backup (que utiliza ssh) tuve que buscar una solución para acceder al servidor de copias con ssh sin que preguntara todas las veces la contraseña.

    Hay varias soluciones. La primera probada con éxito la conseguí de esta web:

    Desde el ordenador que va a conectar al otro y con el usuario que conectará ponemos:

    ssh-keygen -t dsa -f ~/.ssh/id_dsa -N ''

    Esto nos va a generar un conjunto de pares de clave pública y clave privada.

    Ahora y desde el mismo ordenador:

    cat ~/.ssh/id_dsa.pub | ssh x_usuario@ip_servidor_ssh ' cat - >> ~/.ssh/authorized_keys'

    donde x_usuario es el usuario que conectará con el ordenador remoto y ip_servidor_ssh es el propio ordenador remoto.

    Después de esto podemos probar con un simple ssh al ordenador destino que ya no nos pedirá claves.

    En mi caso me ocurrió que el ordenador remoto no tenía el directorio .ssh creado. Lo creé y el fichero autorized_keys se creó solo. Este comando lo que hace es añadir la clave pública del ordenador cliente al fichero de claves autorizadas del ordenador destino.

  • Herramienta de backup definitiva hasta ahora.

    Desde hace mucho tiempo he ido buscando una herramienta de backup simple pero que a su vez cubriera mis necesidades:

    1. Debería hacer copias locales y remotas rapidamente y de forma segura.

    2. de linux o windows.

    3. Restauración de ficheros individuales de forma fácil.

    Hasta el momento la herramienta que he usado ha sido rsync pero siempre he sentido el gusanillo de usar otra herramienta para mí mas potente: rdiff-backup.

    rdiff-backup tiene la característica fundamental que hace copias incrementales en su funcionamiento básico, es decir, la primera vez que se usa hace un mirror del directorio pero la segunda y posteriores solo hace una copia de los ficheros añadidos o cambiados pero de forma trasparente. Tendremos pues un clon de Time Machine del Macos pero en modo consola para nuestros linux.

    El problema que siempre ví en este proceso era que no había una forma de navegar por los distintos backups que, recordemos tienen fecha variadas, para recuperar un fichero o directorio a una fecha concreta. Pues bien he descubierto rdiff-web que no es mas que un front-end o gui para que esta labor de recuperación sea mucho más amigable.

    En sucesivas entradas explicaré el uso de rdiff-backup básico (tal como yo lo uso), la forma de usar el rdiff-backup de forma desatendida (recordemos que este script usa ssh y por tanto nos pide usuario y contraseña) y para terminar la serie, cómo instalé rdiff-web en un ubuntu server.

  • …seguimos construyendo el ftp.

    Si has seguido todos los pasos anteriores debes tener en cuenta un par de detalles que te pueden volver loco literalmente:

    1- Si al probar el ftp con el usuario1, el cliente ftp no te deja entrar puede ser debido a que el shell que hemos especificado «/bin/false» no exista como shell del sistema.

    Para revolver esto solo debes editar el fichero «/etc/shells» y añadir una línea con el texto «/bin/false».

    2- Si aún así no ves ningún fichero disponible en el ftp es ya un particularidad de Mandriva. Resulta que Mandriva dispone de un demonio «msec» que controla que los permisos de los directorios de nuestro sistema no sean alterados sin nuestro consentimiento. Esto lo puede comprobar ya que al cambiar los permisos de «/home/macroftp» de 711 (originales) a nuestro 755, el demonio los vuelve a cambiar en pocos segundos.

    Esto lo solucionamos accediente al comando «drakperm» y creando una nueva regla para el directorio «/home/macroftp» que sobreescribará a las demas reglas para asignarle unos permisos 755. Con estar particularidades tendremos un servicios ftp básico funcionando.

  • Instalar impresora USB en Ubuntu Server.

    Después de una investigación previa he encontrado la información para instalar mi impresora USB en el servidor Ubuntu sin gestor gráfico. La información está en inglés pero creo que es util:

    Howto: configure cups on Ubuntu Server from command line

    I recently installed Ubuntu server on one of my machines at home. I didn’t want to install the Gnome desktop, so when it came time to configure cups as a print server I had a time figuring it out. Nobody seems to be configuring from the command line, but without Gnome, there doesn’t appear to be another way (cups web page doesn’t allow administration, details below).

    I’m posting my notes here in the hope that it will save somebody else some frustration. The guide below sets up cups on a server running a fresh install of Ubuntu Server 6.06. The printer will be available to any computer on the network.

    I use «smithers» as the hostname for my linux box.  You can substitute the IP address for «smithers» in the guide.

    To install on smithers (my Ubuntu server):

    1. $ sudo apt-get install cupsys cupsys-client

    2. Modify /etc/cups/cupsd.conf

    – comment out
    #BrowseAllow @LOCAL
    #BrowseAddress @LOCAL
    – add
    BrowseAllow all

    – For the block change «Allow localhost»
    to «Allow all».

    NOTE: If you do this for the other two location
    blocks, you can view the admin and config
    stuff.  However, the https stuff doesn’t
    work so you can’t administer anything.  You
    have to administrate from the command line.
    for more details as to why you can’t do this
    from the web interface, which would be my first
    choice, check out /usr/share/doc/cupsys/README.Debian.gz.

    3. Modify /etc/cups/cups.d/browse.conf

    – Change to «Browsing on»

    4. Modify /etc/cups/cups.d/ports.conf

    – Change «Listen localhost:631» to «Listen 631»

    5. $ sudo /etc/init.d/cupsys restart

    6. Get info on the connected printers:
    $ lpinfo -v
    network socket
    direct usb://hp/deskjet%205550?serial=MY25K1K0TC2L
    network http
    network ipp
    network lpd
    direct parallel:/dev/lp0

    7. Add the printer:
    $ sudo lpadmin -E -p hp5550 -v usb://hp/deskjet%205550?serial=MY25K1K0TC2L -P /usr/share/ppd/cups-included/HP/deskjet.ppd -u allow:all

    NOTE: substitute my details for your details. You can name the printer anything you like. I don’t think it allows numbers as the first letter, spaces, dashes, or underscore characters. I’m not positive about these rules, so if I’m wrong, post a follow up. alt As for the ppd file, there are only a few that come with cups, but I believe they cover the vast majority of printers. Just take a guess and try the one you think will apply. I think there were only 5 or so files.

    8. To delete a printer (shouldn’t need to do this):
    $ sudo lpadmin -x hp5550

    NOTE: you shouldn’t need to do this, but I included this just in case you wanted to remove a printer.

    9. To set the default printer:
    $ sudo lpadmin -d hp5550

    10. Enable the printer (required):
    $ cupsenable hp5550

    11. Start accepting jobs (required):
    $ accept hp5550

    NOTE: I read that the «-E» option is the same as the cupsenable and accept commands. However, it didn’t work for me. I had to issue both commands before it would work. You can check the status of the printer using the «printers» link below to see the printer status.

    12. You can now browse the server using a web browser on
    port 631.  For example: http://smiters:631.  To see the
    printers, navigate to http://smithers:631/printers

    13. To allow Windows XP to print to the cups printer, use the
    add printer wizard.  Start->Printers and Faxes.  Then
    select add printer.  Select network printer.  For the IP
    address use: http://smithers:631/printers/hp5550.  Click
    next, find the appropriate driver.  Continue until wizard
    is complete.  Print a test page.  Enjoy!

    La información original se puede encontrar en este foro.
  • Entrar por ssh desatendido (clave rsa).

    Una característica importante de las conexiones ssh es la seguridad. Pero también es cierto que para hacer ssh desatendidos a un servidor ssh es muy molesto tener que teclear las claves del usuario y la contraseña. Siguiendo este tutorial conseguimos que el terminal ssh se dé a conocer al servidor ssh de forma definitiva.

    Tenemos que generar una pareja de claves publica y privada, para despues añadir la clave pública en el fichero ~/.ssh/authorized_keys de la cuenta que se encuentra máquina a la que queremos acceder.

    1. Generar las claves

    miguel@terminal:~$ ssh-keygen -t rsa -b 1024

    Con esto se generará en ~/.ssh/ dos ficheros, id_rsa(clave privada) y id_rsa.pub(clave pública)

    2. Copiar la clave pública en la cuenta de la máquina que queremos acceder.

    miguel@terminal:~$ssh miguel@servidor «cat >>~/.ssh/authorized_keys» <~/.ssh/id_rsa.pub

    3. Realizar un ssh

    miguel@terminal:~$ ssh miguel@servidor

    si todo ha ido bien, habrás accedido a la máquina remoto si que te pida el password.

    Este proceso lo he cogido de este post de BULMA.

  • µTorrent en Ubuntu Server

    Después de mucho buscar he encontrado en un blog la información que estaba buscando. Los antecedentes son lo siguientes:

    Tengo en casa un pequeño ordenador con Ubuntu Server instalado. No tiene ningún servidor X instalado. Accedo por ftp, ssh, http, etc sin problemas, pero también me gustaría instalar un servidor gráficos para acceder por VNCViewer.

    Encontré en http://adumont.wordpress.com la forma de hacerlo. Los artículos originales se encuentran en http://adumont.wordpress.com/2007/10/10/%C2%B5torrent-en-linux-i-introduccion/. Por lo tanto lo que se refiere a continuación es mérito completo del autor del blog (gracias).

    Para bajar los capitulos de mi series preferidas, no he encontrado ningun cliente Bittorrent mejor que µTorrent:
    * es muy pequeño y consume poco
    * no necesita instalacion,
    * soporta RSS (programar el µTorrent para que baje una serie es mas facil que programar el video!).

    Lo malo es que es para Windows. En casa tengo un servidor de ficheros corriendo Debian y esto me obligaba a mantener encendido tambien otro equipo con Windows.

    Hasta que probe µTorrent bajo Wine en Debian, y funciono perfectamente.

    Bajamos Wine y µTorrent:

    # apt-get install wine
    $ wget http://download.utorrent.com/1.8/utorrent.exe

    En mi caso, como mi Linux hace de servidor, no suele tener conectado ni monitor ni teclado (salvo casos que los necesite). Por lo tanto, no tiene entorno grafico, pero µTorrent (y Wine) necesitan un entorno grafico para correr. Para resolver este problema, he instalado el paquete vncserver.

    Es un servidor X que corre en background (frame buffer). Es decir que esta en memoria, no en un monitor. Para poder interactuar con el, lo haremos de forma remota con un cliente VNC. Es perfecto para poder lanzar µTorrent en el servidor.

    Para bajar VNCserver:

    # apt-get vncserver

    En este post, vamos a suponer que lanzo µTorrent en el puerto 4567, con el usuario utorrent.

    Abrimos el firewall del linux, para permitir conexiones entrantes al puerto del µTorrent:

    # Apertura puerto 4567 para uTorrent
    iptables -A INPUT -i eth0 -p tcp --dport 4567 -m state --state NEW -j ACCEPT

    Lanzamos el servidor X vncserver. En mi caso, lo lanzo en el display :2 :

    utorrent@servidor$ vncserver :2

    Vemos que vncserver lanza Xrealvnc con un monton de opciones:

    utorrent  10784     1  4 15:22 pts/0    00:10:12 Xrealvnc :2 -desktop X
    -httpd /usr/share/vnc-java -auth /home/utorrent/.Xauthority -geometry 796x576
    -depth 24 -pixelformat bgr888 -rfbwait 120000 -rfbauth /home/utorrent/.vnc/passwd
    -rfbport 5902 -fp /usr/share/fonts/X11/misc/ -co /etc/X11/rgb

    Al abrir el display :2, el servidor VNC escucha en el puerto 5900+2=5902. Para levantar µTorrent, vamos a conectarnos desde otro equipo con un cliente VNC a nuestro servidor (en el cliente indicaremos “servidor::5902″).

    Al desconectarnos, no pasara nada, todo lo que teniamos sigue corriendo en el vncserver.

    Para lanzar µTorrent, ejecutaremos:

    DISPLAY=:2 wine ~/.wine/drive_c/Program Files/uTorrent/uTorrent.exe

    (En mi caso, he copiado el binario uTorrent.exe en la ruta ~/.wine/drive_c/Program Files/).

    Si es la primera vez que lanzamos Wine, saldra un pequeño asistente, indicar tipo de equipo “Windows XP”. Luego, configurar el µTorrent. (En mi caso, he conservado la configuracion de µTorrent que tenia bajo Windows, copiando los ficheros de configuracion de µTorrent en la misma ruta que el binario en Linux).

    Podemos ver que µTorrent en Linux no requiere muchos recursos:

    top - 06:48:06 up 9 days,  9:01,  3 users,  load average: 0.07, 0.26, 0.68
    Tasks: 112 total,   2 running, 110 sleeping,   0 stopped,   0 zombie
    Cpu(s):  2.3%us,  2.6%sy,  0.0%ni, 94.4%id,  0.3%wa,  0.0%hi,  0.3%si,  0.0%st
    Mem:    256972k total,   253344k used,     3628k free,     3672k buffers
    Swap:   735852k total,    56760k used,   679092k free,    72680k cached
    
    PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
    13873 utorrent   18   0 2597m  10m 4948 S  2.3  4.2  31:05.70 uTorrent.exe
    13877 utorrent   15   0  4076  712  544 S  1.6  0.3   6:41.99 wineserver

    Aqui van algunos pantallazos del µTorrent corriendo en mi Linux:
    pict0004.gif pict0005.gif pict0002.gif

  • (II) Protección de un directorio en Apache2

    Existe una forma de proteger un directorio de los ojos indiscretos a través de la tupla login/contraseña. Seguiremos los siguientes pasos:

    1) Crear un archivo con claves y usuarios:

    htpasswd -c /etc/passwd.apache username

    con la opción -c estamos indicando la ruta del archivo de claves ( que es recomendable que esté fuera del árbol web público para que nadie se lo pueda bajar). Además estamos poniendo el username o nombre de usuario que queremos crear en dicho archivo, que puede ser uno que esté en el sistema o no, es independiente. Nos pedirá la contraseña para dicho usuario.
    Con el fin de establecer la seguridad necesaria, cambie los atributos de lectura y escritura solo para el usuario apache:

    chmod 600 /etc/passwd.apache
    chown apache:apache /etc/passwd.apache

    Si más tarde querríamos añadir más usuarios a dicho archivo para que puedan acceder al recurso web:

     htpasswd /etc/passwd.apache username

    2) Crear otro archivo descriptivo del recurso a proteger:

    Posteriormente, en el directorio web que queramos proteger, deberemos crear un archivo oculto llamado .htaccess con el siguiente contenido:

    AuthName Privado
    AuthType Basic
    AuthUserFile /etc/passwd.apache
    Require valid-user

    3) Hacer que el Apache proteja dicho recurso:

    Por último, deberemos indicar a Apache que para dicho directorio busque el archivo .htaccess que en la configuración por defecto, habíamos puesto en la directiva AllowOverride None para que no lo hiciera. Entonces, si el directorio a proteger es /var/www/privado/ deberemos añadir en /etc/apache/httpd.conf algo como:

    AllowOverride AuthConfig

    y recargar la configuración del servidor.

    Se puede acceder a la información completa en :
  • Proteger un directorio en Apache

    Una de las primeras necesidades que se nos plantean a la hora de instalar un servidor web en nuestro ordenador de casa es cómo proteger un directorio al que solo nosotros podremos tener acceso. La información que sigue ha sido obtenida de una página muy buena como es «bulma».Los pasos que he seguido son:

    1. Creamos un fichero de nombre .htaccess en el directorio que queremos proteger con el siguiente contenido:

    -------Fichero: .htaccess----------
    AuthUserFile  /var/www/html/loadavg/.htpasswd
    AuthGroupFile /dev/nullAuthName "loadavg"
    AuthType Basic Options All
    require valid-user
    -------Fin Fichero-------------

    donde «/var/www/html/loadavg» es el directorio que queremos proteger.2. El fichero .htpasswd estará situado en el mismo directorio que queremos proteger y lo crearemos de la siguiente forma:

    htpasswd -c /var/www/html/loadavg/.htpasswd pepe

    Lo que hace es sobreescribir el fichero.

    3. Una  vez creados tantos usuarios como deseemos tenemos que editar el fichero de configuración de Apache (/etc/httpd.conf o similar) y añadir al final.

    AllowOverride All

    4. Ahora solo tendremos que reiniciar Apache.

    [root@p90 myadmin]# cd /etc/rc.d/init.d/
    [root@p90 init.d]# ./httpd restartShutting down http: [  OK  ]
    Starting httpd: [  OK  ]
  • Asegurando nuestro sistema contra «rootkits».

    Los «rootkits» son un conjunto de herramientas de software diseñadas para buscar procesos activos de nuestro linux, ficheros nuestros o del sistema vulnerables, para, a través de ellos, tomar el control de nuestro sistema sin que seamos conscientes de ello.

    Seguiendo nuestro intento de asegurar nuestra máquina encontramos una herramienta que testeará nuestro sistema y nos indicará si existen vulnerabilidades graves. Hay que tener en cuenta que un sistema linux o no, es vulnerable en función de la pericia del usuario que lo controle. El programa del que tratamos es «Rootkit Hunter».

    Su instalación en nuestro Ubuntu es extremadamente sencilla.

    Bastará un «apt-get install rkhunter» como usuario root para tenerlo instalado. A continuación (también desde root) teclearemos «rkhunter –update» para que rkhunter se conecte con su base de datos en internet e instale las ultimas actualizaciones de la versión. Hay que tener en cuenta que rootkits aparecen constantemente (al igual que los virus) y por ello es conveniente mantener a rkhunter actualizado.

    Por último, «rkhunter –checkall» nos hará la comprobación de nuestro sistema y nos mostrará en pantalla (a la vez que crea un log) lo que ha encontrado como vulnerabilidad.

    Un saludo y a disfrutar de rkhunter («rkhunter» sin parámetros nos indicará los comandos disponibles).

  • Montar unidades USB

    Normalmente, si tienes una distribución linux de tipo desktop relativamente moderna, cuando conectes una llave USB o disco duro USB al ordenador, el sistema la montará automáticamente para que la puedas usar.En mi caso tengo instalado la Ubuntu 7.04 server, sin interfaz gráfico, por lo cual el montaje no se produce de forma automática.

    Buscando por internet como siempre he encontrado un artículos que reproduzco parcialmente:Como es un tema que surge habitualmente y sobre el que muchas veces se dan soluciones un tanto chapuceras, os comento la forma mas sencilla de localizar dispositivos de almacenamiento USB para montarlos en sistemas GNU/LiNUX.Antes de nada comentar que para todo lo que voy a comentar ahora funcione debemos tener los siguientes modulos cargados en nuestro kernel:

    • usb-storage
    • sd_mod

    Montar una memoria de este tipo no tiene mayor complicacion que montar cualquier otro dispositivo. Lo que provoca dolores de cabeza es localizar que dispositivo de bloques de /dev es nuestra memoria usb. Esta labor nos la alivia notablemente el paquete sg3-utils (apt-get install sg3-utils), una utilidad para trabajar con dispositivos SCSI genéricos.Una vez instalado, ejecutamos sg_scan -i. En mi caso que tengo un lector de tarjetas que lee varios formatos (en concreto 4: SMC, CFC, MMC y MSC) y un lapiz, me saca esto:

    wikier@agiler:$ sg_scan -i/dev/sg2: scsi1 channel=0 id=0 lun=0 em  type=0    LG        X-tick 2.0        PROL [wide=0 sync=0 cmdq=0 sftre=0 pq=0x0]/dev/sg3: scsi1 channel=0 id=0 lun=0 [em]  type=0    Generic   USB Storage-SMC   0180 [wide=0 sync=0 cmdq=0 sftre=0 pq=0x0]/dev/sg4: scsi1 channel=0 id=0 lun=1 [em]  type=0    Generic   USB Storage-CFC   0180 [wide=0 sync=0 cmdq=0 sftre=0 pq=0x0]/dev/sg5: scsi1 channel=0 id=0 lun=2 [em]  type=0    Generic   USB Storage-MMC   0180 [wide=0 sync=0 cmdq=0 sftre=0 pq=0x0]/dev/sg6: scsi1 channel=0 id=0 lun=3 [em]  type=0    Generic   USB Storage-MSC   0180 [wide=0 sync=0 cmdq=0 sftre=0 pq=0x0](...)

    Ahora si ejecutamos sg_map nos saca un mapeo de los dispositivos sg. En mi caso tengo esto:

    wikier@agiler:$ sg_map/dev/sg2  /dev/sda/dev/sg3  /dev/sdb/dev/sg4  /dev/sdc/dev/sg5  /dev/sdd/dev/sg6  /dev/sde

    Asá logramos tener la relación entre el listado de antes y el dispositivo SCSI que vamos a montar. Como veis, el lapiz estaba en /dev/sg2, asi que le corresponde el dispositivo /dev/sda. Y mi lector de tarjetas localiza la ranura de mi tarjeta SD (MMC) en /dev/sg5, asi que le corresponde el dispositivo /dev/sdd.Motarlo es tan sencillo como hacer un mount /dev/sdX /mnt/dir (el directorio de montaje tiene que existir), aunque hay que tener cuidado con un detalle: si la memoria tiene o no particiones, que dependera de si esa memoria lo usamos en camaras u otros aparatitos que necesitan formatear esa memoria para leer/escribir en ella.En mi caso me he encontrado con ambas situaciones:

    • Mi lapiz de memoria viene sin particionar, asi que lo monto con un simple mount /dev/sda /mnt/usb.
    • La tarjeta SD de mi camara trae una particion (mi camara lo requiere), por lo que para montarla tengo que hacer mount /dev/sdd1 /mnt/usb. Podéis averiguar fácilmente que partiones puede tener con un simple cfdisk /dev/sdd.

    Y recordar, debeis desmontar (man umount) todos los sistemas de ficheros que hayais montado vosotros, no es muy recomenable desechufar un dispositivo sin haberlo desmontado previamente.Ahora que ya hemos conseguido montar sin problemas nuestra memoria USB, vamos a preparar nuestro sistema para que se nos haga mas livianos usar nuestro lapiz usb o similar. Para ello debemos (como root) editar el fichero /etc/fstab y le añadimos la siguiente linea:

    /dev/sda        /mnt/usb        vfat    rw,exec,user,noauto       0       0

    Hacemos un mount -a para que este cambio sea efectivo sin reiniciar, y con un simple mount /mnt/usb/ ya lo tendremos montado.Si vais con calma y os fijais bien, no tendreis ningún problema. Como mucho se me ocurre que tengais que consultar el manual del mount (man mount).Por último, una última anotación. Un paquete interesante que nos facilita la vida automatizando el montaje de este tipo dispositivos es hotplug (apt-get install hotplug). Si quereis saber más sobre el plug&play en GNU/LINUX, este puede ser un buen punto de comienzo. De ambas formas se consigue el mismo resultado; cual useis ya es a gusto personal.Como no es mi gusto piratear, podeis consultar la página actual en http://www.asturlinux.org/comunidad/MemoriaUSB?