domingo, 18 de septiembre de 2011

Administrador de Demonios - Administrador de procesos - administrador de tareas - En Linux Debian


Que GNU/Linux sea muy estable no quiere decir que nunca se cuelgue alguna aplicación. Por esto, es importante saber que hacer en esos casos.

Cada aplicación que se ejecute genera un proceso, mismo que hay que matar para descolgar la aplicación que se colgó. Los comandos kill y killall sirven para matar estos procesos. Para poder matar un proceso, primero, es necesario conocer el número de proceso que generó la aplicación (comando ps) .

Ejemplo: Se colgó Iceweasel. Para proceder a matar el proceso que se colgó hacemos lo siguiente:
$ ps aux

Nos mostrará una columna llamada PID y otra "COMMAND". Pues en la columna COMMAND buscamos Iceweasel. Una vez que se encontró, en esa misma fila se checa el número de proceso (columna PID)

Luego para matar el proceso se ejecuta:
$ kill num_proceso

Si el proceso no se pudo matar se usa el parámetro -9 :
$ kill -9 num_proceso

Para matar todos los procesos de una aplicación podemos ejecutar:
$ killall nombre_proceso

Donde nombre_proceso es el nombre del proceso. En este caso sería Iceweacel.

Si el equipo se encuentra muy trabado, y no se puede abrir una terminal desde el entorno gráfico hay que dirigirnos a una ttycon Ctrl + Alt + F1-F6 y desde allí ejecutar las acciones anteriores.

Si no es posible acceder a las ttys y no se puede destrabar el equipo, al menos se puede apagar de manera correcta presionando la combinación de teclas siguientes:
Alt + Impr Pant + RSEIUB



Datos Extra Sobre el comando ps:
-aux Lista los procesos de todos los usuarios con información añadida (destacamos más abajo).
-a Lista los procesos de todos los usuarios.
-u Lista información del proceso como por ejemplo el usuario que lo está corriendo, la utilización de Cpu y memoria, etc.
-x Lista procesos de todas las terminales y usuarios
-l Muestra información que incluye el UID y el valor “nice“.
–forest – Muestra el listado procesos en un formato tipo árbol que permite ver como los procesos interactuan entre si, podría ser algo similar al comando pstree.
Ejemplo de uso del comando ps:
$ ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.3   2844  1692 ?        Ss   18:13   0:01 /sbin/init
root         2  0.0  0.0      0     0 ?        S<   18:13   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S<   18:13   0:00 [migration/0]
root         4  0.0  0.0      0     0 ?        S<   18:13   0:00 [ksoftirqd/0]
root         5  0.0  0.0      0     0 ?        S<   18:13   0:00 [watchdog/0]
root         6  0.0  0.0      0     0 ?        S<   18:13   0:00 [migration/1]
root         7  0.0  0.0      0     0 ?        S<   18:13   0:00 [ksoftirqd/1]
root         8  0.0  0.0      0     0 ?        S<   18:13   0:00 [watchdog/1]
root         9  0.0  0.0      0     0 ?        S<   18:13   0:00 [events/0]
root        10  0.0  0.0      0     0 ?        S<   18:13   0:00 [events/1]
root        11  0.0  0.0      0     0 ?        S<   18:13   0:00 [khelper]
root        47  0.0  0.0      0     0 ?        S<   18:13   0:00 [kblockd/0]
root        48  0.0  0.0      0     0 ?        S<   18:13   0:00 [kblockd/1]
root        51  0.0  0.0      0     0 ?        S<   18:13   0:00 [kacpid]
root        52  0.0  0.0      0     0 ?        S<   18:13   0:00 [kacpi_notify]
root       128  0.0  0.0      0     0 ?        S<   18:13   0:00 [kseriod]
root       168  0.0  0.0      0     0 ?        S    18:13   0:00 [pdflush]
root       169  0.0  0.0      0     0 ?        S    18:13   0:00 [pdflush]
root       170  0.0  0.0      0     0 ?        S<   18:13   0:00 [kswapd0]
...
...
...

Manual SSH: El dios de la administración remota

SSH son las siglas de Secure SHell. Lo que te ofrece es una consola en un ordenador remoto con los privilegios que tenga la cuenta con la que conectes. Es decir, si en tu PC tienes varias cuentas, puedes conectar desde otro ordenador al tuyo con cualquiera de esas cuentas y sus respectivos privilegios, como pudiera ser la cuenta root, la de tu administrador sudo o la de un usuario normal sin poder de administración. Y todo esto con encriptación de datos.

En este manual se mostrara la metodología de instalación, configuración y uso de ssh paso a paso, se explicara cada paso de forma lenta pero segura!



Instalar

En los Repositorios ya se encuentra el ssh, solo resta instalarlo
Una vez instalado se autoiniciará el demonio que ejecuta el servidor SSH y gestiona las solicitudes de login remoto

$ sudo aptitude install ssh

Configuración: Mayor seguridad

No es muy inteligente usar SSH sin modificar el fichero de configuración del servidor. Vamos a modificar algunas opciones para conseguir una seguridad aceptable. 
Si algunas de las opciones o lineas de código no se encuentran es tu archivo de configuración sshd_config, solo agrégalas!
No se requiere un orden especifico el las lineas de comando, pero si recomiendo dejar un comentario antes de cada linea nueva, para que luego puedas recordar cuales fueron las lineas que agregaste.

Vemos un fichero de configuración típico basado en “opción valor”. Vamos a comenzar las modificaciones por el puerto que es lo primero que vemos y una de las cosas más importantes. SSH usa por defecto el puerto 22. Esto significa que si no lo cambiamos estamos entregando a un caco (ladrón) que sabe la dirección de dónde vivimos (nuestra IP) también la llave del portal.

Cambiaremos el puerto para evitarlo. Esto no quita que el caco pueda intentar averiguar “el portal” si sabe cómo hacerlo pero al menos le ponemos impedimentos. También hay scripts que atacan directamente el puerto 22, por lo que el cambio de puerto es algo obligatorio.
Deja el que quieras, pero recuerda abrir también en el router el puerto para que puedas acceder a tu pc desde otro. Usaremos por ejemplo el 4321, podéis poner el que queráis. 

$ sudo gedit /etc/ssh/sshd_config
port 4321

Un poco mas Abajo esta la Opción Protocol, debe estar con el numero 2, (Hay 2 versiones de ssh, solo que el primero ya esta en desuso).

Protocol 2

Busca la sección “Authentication”. Las dos primeras opciones son también importantes. La primera es el número de segundos que tendrá el usuario remoto para hacer login en tu máquina. Deja ese valor a pocos segundos, no tardamos mucho en hacer login si sabemos la cuenta y la password. De esta forma evitamos ciertos scripts que se aprovechan de ese tiempo. El valor típico en términos de seguridad es 30, aunque si te gusta deja menos tiempo, ya tu consideraras.

LoginGraceTime 30

Justo debajo tienes otras de las opciones más importantes, PermitRootLogin. Si antes usé la metáfora del caco y el portal, esta opción viene a ser que si sabe por qué puerto entrar, tan sólo le queda averiguar dos datos: el nombre de una cuenta y su contraseña.
Si tenemos esta opción habilitada (yes) el caco ya tiene la mitad del trabajo hecho, pues el usuario “root” existe en todas las máquinas GNU/Linux, tan sólo le queda averiguar la contraseña. Por eso es más que recomendable deshabilitar esta opción. No te preocupes si tienes en mente usar SSH para hacer un uso administrativo, puedes hacerlo con tu cuenta y sudo sin problemas!!

PermitRootLogin no

También puedes señalar con el dedo las cuentas que tienen permitido el uso SSH (AllowUsers). 
Pongamos un ejemplo, que es como mejor se entienden las cosas: 
Supongamos que tienes un amigo con el que quieres compartir algo vía SSH y además tiene un hermano que es un fastidio y en el que no confías por se muy entrometido. Llamaremos a las cuentas “amigo” y “hermanastro” respectivamente. Para restringir el uso de SSH a tu amigo y a tu propia cuenta (llamémosla “dona”) podemos indicárselo mediante configuración. Incluso podemos indicar también que tu amigo sólo se pueda conectar a tu ordenador desde el suyo, sabiendo su IP (supongamos que es 83.45.258.21). Pondríamos en la configuración:

AllowUsers pepito amigo@83.45.258.21

De esta forma tú podrías usar tu cuenta (dona) para conectar a tu equipo desde cualquier lugar, tu amigo podría hacerlo sólo desde su ordenador (si tiene esa IP) y tu hermano no podría conectar a tu máquina vía SSH, si no tiene tu cuenta.
Otra opción interesante es el número de intentos que tiene el usuario remoto para hacer login (MaxAuthTries). Como comenté antes, quien intente conectar debe acordarse de su login y password, por lo que es tontería darle un número grande de intentos. En principio con dos son más que suficientes. Si al segundo intento no lo ha conseguido se cortará la conexión SSH. Siempre se puede volver a conectar y reintentarlo, pero así nos quitamos de encima ciertos scripts que intentan encontrar el login por fuerza bruta a base de ensayo y error.

MaxAuthTries 2

Por último hay otra opción que define el número máximo de usuarios conectados simultáneamente a tu máquina. Esto ha de adaptarse a tus propias necesidades. Si estamos hablando de un ordenador personal donde sólo vas a iniciar sesion tú, pues lo lógico sería que como mucho hubiera una. Si estamos hablando de un ordenador que hará las veces de servidor compartiendo una carpeta a varias máquinas, deberás decidir cuántos son. Cuanto tengas claro el número indícalo en la opción siguiente en lugar de la ‘X’:

MaxStartups X

Ya puedes guardar y cerrar gedit. Con esto tienes un servidor SSH bastante seguro. Como comenté antes nunca es 100% seguro pero pro ahora estarás bien protegido. Sólo resta reiniciar el propio servidor SSH para que tome los cambios que hemos efectuado en su configuración. 

$ sudo /etc/init.d/ssh restart

Un último consejo. si quieres tener un sistema seguro, no uses password de tipo, 123456 o tu nombre o tu teléfono o el nombre de tu perro o el el nombre de tu novia, o las típicas, sexo, dios... en fin complica la vida de estos mal intencionados y usa combinaciones interesantes, ejemplo: si mi antigua password es "America" intenta transformarla en algo como "01Ann3r!c@10" te aseguro q una password de esta categoría es un dolor de cabeza para un ataque por fuerza bruta.
Uso de SSH en consola

Ahora que tenemos SSH bien seguro miremos para qué sirve. asumo que tienes dos equipos, en el que estas sentado y al que te quieres conectar. Obviamente es importante tener una cuenta en el segundo para poder entrar. La forma de conectar por defecto es la siguiente:

$ ssh tu_cuenta@ip_del_ordenador_remoto

Esto sería si no hubiéramos cambiado el puerto, ya que intentaría conectar por el puerto 22 que es el puerto por defecto del cliente. lo puedes cambiar si quieres para que conecte por defecto por el puerto que le digas en lugar del 22 editando el fichero /etc/ssh/ssh_config. quitas el comentario (si está comentada) la opción “Port” y en lugar de “22″ ponéis el que queráis.
La otra opción, que es lo más normal, es simplemente indicarle en la línea de conexión qué puerto ha de usar:
$ ssh -p puerto tu_cuenta@ip_del_ordenador_remoto

Para que lo notes más claro voy a poner un ejemplo. Mi portátil está en la ip 192.168.1.3 y el puerto SSH que tengo para el mismo es el 4884. La cuenta que voy a usar para conectarme es “cochinito”, así que para conectar desde mi PC de sobremesa al portatil sería:

$ ssh -p 4884 pepino@192.168.1.3

Aquí debe estar pidiendo un password 

cochinito@192.168.1.4's password:

La introducimos y tras un texto de “bienvenida” veremos que nuestro prompt ha cambiado a “nombre_cuenta@nombre_manquina”. Mi portatil se llama victoria, entonces mi prompt es:

cochinito@victoria:~$

Listo compañeros de lucha, ya estas en la home de tu cuenta en el equipo remoto
  • Copiar ficheros
$ scp ruta/archivo cuenta_en_ordenador_presente@ip_ordenador_presente:ruta/fichero
$ scp /home/pepito/Desktop/pepito.jpg tux@192.168.1.6:/home/tux/Colombia_tierra_querida.jpg
$ scp -P 8448 /home/pepino/Desktop/pepito.jpg tux@192.168.1.6:/home/tux/Colombia_Tierra_querida.jpg
pepito@192.168.1.4's password:
Colombia_tierra_querida.png 100% 292KB 291.7KB/s 00:00
$ scp -P 8448 pepito.jpg tux@192.168.1.6:/home/tux/Colombia_tierra_querida.jpg

Otros usos

pepito@salamandra:~$ sudo reboot
Broadcast message from pepito@salamandra
(/dev/pts/1) at 23:45 ...
The system is going down for reboot NOW!
Ó
pepito@salamandra:~$ sudo halt
Broadcast message from pepito@salamandra
(/dev/pts/1) at 23:51 ...
The system is going down for halt NOW!

SSH en Nautilus
ssh://tu_cuenta@ip_pc_remoto
ssh://pepino@192.168.1.4
ssh://pepino@192.168.1.4:4884

RSEIUB, Reinicio de emergencia en sistemas Linux


Cuando un sistema Linux se quede congelado podemos reiniciarlo activando el modo SysRq(con ALT+Imprimir Pantalla) y tecleando después RSEIUB.
Ésta combinación de teclas ejecuta las siguientes ordenes:
  • R devuelve el control al teclado.
  • S sincroniza.
  • E manda a los procesos la señal term.
  • I manda a los procesos la señal kill.
  • U desmonta los sistemas de ficheros.
  • B reinicia el sistema.

Cosas por hacer Luego de instalar DEBIAN Squeeze


1) Editar los repositorios:
Lo primero que debemos hacer después (suponiendo que no tengamos problemas con la conexión a internet) de instalar Debian Squeeze es editar nuestros repositorios, lo hacemos de la siguiente manera:
*Abrimos una terminal (Menú > Accesorios > Terminal) y escribimos lo siguiente:
su
para loguearnos como root, nos pide nuestra contraseña de root, la escribimos y luego escribimos lo siguiente:
gedit /etc/apt/sources.list
borramos lo que tiene y copiamos lo siguiente:

## Debian – Estable
deb http://ftp.us.debian.org/debian/ stable main contrib non-free
deb-src http://ftp.us.debian.org/debian/ stable main contrib non-free
## Actualizaciones de seguridad
deb http://security.debian.org/ stable/updates main contrib non-free
deb-src http://security.debian.org/ stable/updates main contrib non-free
## Multimedia estable
deb http://www.debian-multimedia.org stable main non-free

Después de hacer esto guardamos los cambios y cerramos el gedit.
Posteriormente actualizamos los repositorios (seguimos logueados como root):
aptitude update
nos aparece un error como el siguiente:

W: Error de GPG: http://www.debian-multimedia.org stable Release: Las firmas siguientes no se pudieron verificar porque su llave pública no está disponible: NO_PUBKEY 07DC563D1F41B907
No se preocupen,  al igual que en algunas versiones de Ubuntu esto ocurre por no tener la llave de seguridad de Debian-Multimedia, que instalamos escrbiendo en un terminal (logueados como root):
gpg --keyserver keys.gnupg.net --recv-key 1F41B907
Luego de eso aparece lo siguiente:
gpg: solicitando clave 1F41B907 de hkp servidor keys.gnupg.net
gpg: /root/.gnupg/trustdb.gpg: se ha creado base de datos de confianza
gpg: clave 1F41B907: clave pública "Christian Marillat <marillat@debian.org>" importada
gpg: no se encuentran claves absolutamente fiables
gpg: Cantidad total procesada: 1
gpg: importadas: 1
Después de este paso escribimos lo siguiente en la terminal:
gpg --export --armor 1F41B907 | apt-key add -
Al aplicar este paso nos debe dar un OK. volvemos a actualizar la información de los repositorios con:
aptitude update

2) Instalar paquetes básicos para la compilación de paquetes:

En ocasiones es necesario tener las herramientas básicas de copilación para instalar paquetes desde su código fuente, para eso necesitamos el paquete build-essential, que podemos instalar abriendo una terminal (logueados como root) y escribiendo:
aptitude install build-essential

3) Instalar los codecs básicos multimedia:

Después de haber configurado los repositorios, podemos instalar los codecs multimedia básicos para la reproducción de los formatos de audio y video más  comunes, para hacerlo escribimos lo siguiente en la terminal (logueados como root):

Para 32 bits

aptitude install w32codecs libdvdcss2 gstreamer0.10-fluendo-mp3 ffmpeg sox twolame vorbis-tools lame faad gstreamer0.10-ffmpeg gstreamer0.10-plugins-bad avifile-divx-plugin libfacc0

Para 64 bits

aptitude install w64codecs libdvdcss2 gstreamer0.10-fluendo-mp3 ffmpeg sox twolame vorbis-tools  lame faad gstreamer0.10-ffmpeg gstreamer0.10-plugins-bad avifile-divx-plugin libfacc0

4) Otros codecs importantes (Java y Flash, Rar, 7z)

Para instalar sun-java6 en nuestro computador debemos escribir lo siguiente en la consola (logueados como root):
aptitude install sun-java6-plugin sun-java6-jdk sun-java6-jre sun-java6-bin sun-java6-sources
Para instalar el plugin para reproducir los videos en formato flash escribmos lo siguiente en la consola (logueados como root):
aptitude install flashplugin-nonfree
En ocasiones vamos a tener que lidiar con archivos compresos, especialmente con los de formato .rar que es privativo, para poder comprimir/descomprir archivos en este formato debemos instalar los paquetes rar, unrar, p7zip-full y p7zip-rar, para ello abrimos una terminal  y escribimos lo siguiente (logueados como root):
aptitude install rar unrar p7zip-full p7zip-rar

5) Utilidades “básicas” que se quedan por fuera de la instalación del primer CD de Debian Squeeze:

Hay algunas utilidades “básicas” que al instalar el primer CD de Debian Squeeze se nos quedan por fuera como la cálculadora de gnome, la utilidad para tomar captura de pantalla de gnome, el monitor del sistema, la utilidad de discos, entre otras, aquí cada uno de ustedes puede escoger que instalar y que no, yo instalé lo siguiente:

Utilidad para captura de escritorio de gnome:

En una terminal logueados como root escribimos lo siguiente:
aptitude install gnome-screenshot

Monitor del sistema

En una terminal logueados como root escribimos lo siguiente:
aptitude install gnome-system-monitor

Utilidad de discos

En una terminal logueados como root escribimos:
aptitude install gnome-disk-utility

Cálculadora

Vamos al terminal, nos logueamos como root y escribimos lo siguiente:
aptitude install gcalctool

GDebi

Es una utilidad que necesitamos para instalar paquetes .deb que descarguemos con un par de clicks, la instalamos escribiendo en una terminal (logueados como root):
aptitude install gdebi

Utilidades de Nautilus y Terminal de root:

Hay ocasiones en las que necesitamos trabajar con archivos gráficamente pero con permisos de administrador (como copiar y pegar un wallpaper en /usr/share/backgrounds, por ejemplo), para ello hacemos uso de la extensión nautilus-gksu. Al instalar esta extensión también se instala el paquete gksu, que es una interfaz gráfica para el comando su y nos abre una entrada en el menú de gnome con un programa llamado Terminal de “Root”, que es de útil cuando queramos realizar tareas administrativas desde la consola como instalar paquetes, lo instalamos escribiendo en una consola (logueados como root):
aptitude install nautilus-gksu

Motores de temas gtk+ 2.0 y temas básicos de gnome:

Al instalar Debian Squeeze este viene con el tema clearlooks y muy pocos temas alternativos, para tener más temas gtk a nuestra disposición, podemos instalar los siguientes paquetes, escrbiendo en un terminal (logueados como root) lo siguiente:
aptitude install gtk2-engines gtk2-engines-murrine murrine-themes gnome-themes-more

6)Lo necesesario para trabajar con particiones NTFS:

Si tienes particiones NTFS en tu computador, es probable que en algún momento quieras copiar o crear algún archivo un archivo en una de ellas, si lo haces con el sistema recién instalado te llevarías tremendo estrellón puesto que el soporte para escritura de particiones NTFS no viene por defecto al instalar el primer CD Debian Squeeze, pero descuiden no hay porque alarmarse esto se resuelve con un solo comando, instalando el paquete ntfs-3g, de la siguiente manera: Abrimos una terminal, nos logueamos como root y escribimos:
aptitude install ntfs-3g
Después de que termine de instalar el paquete reiniciamos nuestro computador y listo.

7) Miscelaneos:

Antes de seguir con este punto aclaro que los programas que hemos instalado provienen de los repositorios oficiales de Debian Squeeze por lo cual “no podemos acceder a las versiones más recientes de algunos programas”, por ejemplo mientras la versión actual de VLC Media Player es la 1.1.9, desde los repositorios de Debian Squeeze tenemos disponible el VLC Media Player 1.1.3-1, que tengo instalado actualmente y con el cual no he tenido problemas, hay algunas excepciones a esa regla que luego les mostraré, por ahora les comparto algunas aplicaciones “básicas” que instalé para tener el sistema más funcional “sin perder el minimalismo”.

Mis reproductores favoritos

Soy amante de los programas que consumen pocos recursos y tienen muchas funcionalidades, en el campo de los reproductores estas son las aplicaciones básicas que uso día a día en cuanto a multimedia se refiere:
  • En video mi preferido es el VLC Media Player, del cual tenemos disponible la versión 1.1.3-1 desde repositorios y que instalamos de la siguiente manera:Entramos a una terminal y escribimos (logueados como root):
aptitude install vlc mozilla-plugin-vlc
  • En cuanto sonido mi reproductor preferido es guayadeque que actualmente está en su versión 0.31 y del cual podemos instalar la versión 0.2.5-2 desde repositorios de Debian(que no me ha causado molestias), de la siguiente manera:Abrimos una terminal y escribimos (logueados como root):

aptitude install guayadeque