martes, 23 de diciembre de 2014

HOW TO: EJECUTAR COMANDO SUDO SIN SOLICITAR PASSWORD

En algunas oportunidades, como cuando programamos algún script o alguna tarea vía crontab, necesitamos que al ejecutar un comando con sudo, no nos solicite el password del usuario que ejecuta el comando.  Este evidentemente supone un riesgo en la seguridad y administración del Sistema Operativo, pero si determinamos que necesitamos ejecutar programas con usuarios a los cuales no se les solicite el password, a continuación los pasos:

Como root, ejecutar el comando visudo o con un editor de texto (por ejemplo nano) abrir el archivo /etc/sudoers:

# visudo

# nano /etc/sudoers

Identificar con que usuario "no root" deseamos ejecutar comandos como root (utilizando sudo) sin que nos solicite previamente la contraseña.  Para este ejemplo, utilizaremos un usuario llamado prueba:

prueba        ALL=(ALL) NOPASSWD: ALL

Reiniciamos el servicio sudo:
# /etc/init.dsudores restart

Ahora, al ejecutar algún comando utilizando sudo, como por ejemplo "sudo nano /etc/sudoers" no pedirá que ingresemos el password del usuario.



miércoles, 17 de diciembre de 2014

HOW TO: ELIMINAR SESIONES SSH LINUX.

HOW TO: ELIMINAR SESIONES SSH LINUX.

Si administramos un servidor Linux-Unix que posee funciones de "servidor ssh", en algunas oportunidades nos podemos ver en la necesidad de cerrar algunas conexiones, realizadas desde clientes ssh o putty (en el caso de windows) que se encuentren colgadas o que puedan ser consideradas como sospechosas.  Con este par de métodos podemos realizarlo:


Ejecutando el siguiente comando, verificamos que usuarios (a través de que pts, fecha inicio de sesión y que con que dirección IP) están conectados al servidor vía SSH:
# who

La salida es similar a la mostrada a continuación:

root     pts/0        2014-12-12 10:46 (192.168.31.12)
root     pts/2        2014-12-15 08:57 (192.168.31.12)
root     pts/3        2014-12-17 09:38 (192.168.31.9)

Ahora, si por ejemplo queremos cerrar la 2da conexión listada en el ejemplo anterior (root     pts/2        2014-12-15 08:57 (192.168.31.12)), ejecutamos el siguiente comando:
# pkill -9 -t pts/2

-9: Corresponde al tipo de señal que deseamos enviar. En este caso utilizamos la señal -9 que indica matar (KILL) el proceso.
 -t: indica que se basará en un atributo de nombre de terminal.
pts/2: Indica el nombre del terminal que deseamos cerrar.

martes, 2 de diciembre de 2014

HOW TO: CONFIGURAR CLIENTE NAGIOS EN RED HAT ENTERPRICE LINUX

HOW TO: CONFIGURAR CLIENTE NAGIOS EN RED HAT ENTERPRICE LINUX

1. Validar nuestra versión de red hat:
# cat /etc/issue

Esto nos dará una salida como la que sigue:
Red Hat Enterprise Linux AS release 4 (Nahant)
Kernel \r on an \m

Para este ejemplo, nuestro sistema operativo al cual instalaremos el cliente Nagios es Red Hat Enterprise Linux 4.

2. Descargar los archivos .rpm necesarios desde el repositorio disponibles en internet http://mirror.globo.com/epel/

Para nuestro caso (Red Hat Enterprise Linux 4), descargaremos los siguientes archivos de la ruta http://mirror.globo.com/epel/4ES/i386/.  Indudablemente, si su versión de redhat es diferente, pues seleccionamos desde el repositorio inicial nuestra versión correspondiente:

Los archivos a descargar son:
nrpe-2.12-16.el4.i386.rpm

nagios-common-2.12-10.el4.i386.rpm

nagios-plugins-1.4.15-2.el4.i386.rpm

nagios-plugins-disk-1.4.15-2.el4.i386.rpm

3. Con los archivos descargados y ubicados en cualquier ruta del servidor en donde instalaremos el cliente nagios, procedemos a instalar c/u de ellos (Deben ser instalados en este orden para evitar errores con las dependencias de los archivos):

Instalar en orden:
rpm -Uvh nrpe-2.12-16.el4.i386.rpm
rpm -Uvh nagios-common-2.12-10.el4.i386.rpm
rpm -Uvh nagios-plugins-1.4.15-2.el4.i386.rpm
rpm -Uvh nagios-plugins-disk-1.4.15-2.el4.i386.rpm
Nota: En este ejemplo solo nos interesa monitorear el espacio en disco, por eso solo descargamos el plugin "nagios-plugin-disk".  Si queremos monitorear otras variables del servidor, pues del enlace mostrado en el paso 2 de este ejemplo, descargamos los .rpm adicionales con los plugins de nuestra preferencia).

4. Editamos el archivo /etc/nagios/nrpe.cfg.  Ubicamos la sección "# ALLOWED HOST ADDRESSES".  Colocamos acá la dirección IP del nagios server al cual reportará el cliente nagios que estamos configurando.  Ingresamos entonces la línea allowed_hosts=IP_NAGIOS-SERVER. (Podemos comentar la linea anterior allowed_hosts=localhost) y colocar la nueva línea de configuración.


5. Validar que los plugins se encuentren instalados en el equipo cliente nagios recién instalado:
# ls /usr/lib/nagios/plugins/

6. Ubicamos el file system del volumen o partición de disco que queremos monitorear.  Para iniciar, ejecutamos el comando:
# df -h

 Ahora, si por ejemplo queremos monitorear las particiones / y /oracle (en este ejemplo), el file system que les corresponde a c/u de ellas es /dev/cciss/c0d0p7 y /dev/cciss/c0d0p5 respectivamente.

7. Editamos nuevamente el archivo /etc/nagios/nrpe.cfg.  Agregamos al final del archivo:
#****LINEAS PARA MONITOREAR CON EL NAGIOS DEL SERVIDOR x.xx***
command[check_c0d0p7]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/cciss/c0d0p7
command[check_c0d0p5]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/cciss/c0d0p5
#*************************************************************

Explicación de la configuración:

command[check_c0d0p7]: Identifica como se llamará el comando (lo que se encuentra entre paréntesis).
/usr/lib/nagios/plugins/check_disk: Identifica la ubicación del plugin nagios que realiza y ejecuta el comando que estamos configurando.
-w 20%: Indica el porcentaje que configuraremos para que realice alertas de tipo WARNING.  Esta alerta se disparará cuando el espacio en disco supere el 80% de uso.
-c 10%: Indica el porcentaje que configuraremos para que realice alertas de tipo CRITICAL. Esta alerta se disparará cuando el espacio en disco supere el 90% de uso.
-p /dev/cciss/c0d0p7: Identifica el file system que monitorearemos.

8. En el equipo Nagios Server, configurar el monitoreo que se desea realizar al equipo Nagios Cliente (el que estamos configurando en este momento).  Esto va a variar dependiendo de como previamente estén los archivos de configuración establecidos.

Les coloco acá un ejemplo basado en mis archivos de configuración del nagios server:

En mi caso, tengo el archivo nrpe-services.cfg (archivo donde tengo la configuración de los clientes nrpe que estoy monitoreando), en la ruta /etc/nagios/conf.d/servidores.  En este archivo realizo la siguiente configuración:

Como agregamos (ver paso #7 de este documento), 2 monitores, en mi archivo de configuración agrego las 2 secciones de monitoreo al archivo nrpe-services.cfg:

define service{
                use generic-service
                host_name                       nombre-host
                service_description         Espacio en /
                check_command             check_nrpe!check_c0d0p7
                notification_interval       10
                contact_groups               administradores,servicios
}
define service{
                use generic-service
                host_name                       nombre-host
                service_description         Espacio en /oracle
                check_command             check_nrpe!check_c0d0p5
                notification_interval        10 
                contact_groups               administradores,servicios
}

Explicación de la configuración:

use generic-service: Indica que usa el servicio genérico de la configuración nagios
host_name: El nombre de host en la configuración nagios.
service_description: Descripción breve del servicio
check_command: En esta sección colocaremos la instrucción check_nrpe! seguido del comando de configuración que colocamos en el archivo de configuración del cliente nagios (ver paso #7).  En este ejemplo, configuramos en el cliente nagios 2 comandos: command[check_c0d0p7] y command[check_c0d0p5];
check_nrpe!check_c0d0p7 y check_nrpe!check_c0d0p5 son los comandos que agregaremos en cada define service {} que estamos configurando en este ejemplo.
notificacion_interval: El intervalo de notificación a configurar en el servidor nagios.
contact_groups: El nombre de los grupos de contacto configurados en el servidor nagios.

9. En el Nagios Server, chequeamos la configuración:
# cd /etc/nagios3
# nagios3 -v nagios.cfg

10. En el cliente nagios, reiniciamos el servicio nrpe (Lo ejecutamos 2 veces hasta que salga status OK OK):
# service nrpe restart

Configuramos también el nrpe para que inicie cuando se inicia el servidor:
# chkconfig nrpe on
Con el comando chkconfig --list | grep nrpe podemos ver en que runlevel tiene autostart el comando configurado:

11. En el Nagios Server, reiniciamos el servicio nagios3:
# /etc/init.d/nagios3 restart

12. Para finalizar, podemos ver la aplicación Nagios y validar las configuraciones que realizamos previamente:

lunes, 1 de diciembre de 2014

HOW TO: VACIAR ARCHIVOS LOGS LINUX

HOW TO: VACIAR ARCHIVOS LOGS LINUX

Con el siguiente comando, podemos eliminar todos los registros del archivo de logs en linux sin necesidad de borrar el archivo:

  cat /dev/null >/ruta/nombre_archivo.log




miércoles, 22 de octubre de 2014

HOW TO: SOLICITAR CAMBIO DE CLAVE AL PROXIMO LOGIN EN LINUX

Como root, ejecutar:

# chage -d 0 nombre_usuario

Ejemplo: chage -d 0 frankcho

Con la opción "-d 0", obligamos al usuario al iniciar sesión, a cambiar su clave:

frankcho@framirez-linuxPC:~$ ssh frankcho@192.168.1.1
frankcho@192.168.1.1's password:
You are required to change your password immediately (root enforced)
Last login: Wed Oct 22 15:54:21 2014 from 192.168.31.9
WARNING: Your password has expired.
You must change your password now and login again!
Changing password for user frankcho.
Changing password for frankcho
(current) UNIX password:
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
Connection to 192.168.1.1 closed.
frankcho@framirez-linuxPC:~$

Para finalizar, iniciamos nuevamente sesión ahora con el nuevo password seteado en el password anterior.

viernes, 14 de marzo de 2014

SSH - SCP SIN PASSWORD:

SSH - SCP SIN PASSWORD:

OPCIÓN #1: Con programa/comando sshpass

1. Validar que el programa "sshpass" esté instalado:
# aptitude search sshpass

2. Si el programa no se encuentra instalado, procedemos a instalarlo:

# apt-get install sshpass

Para probar podemos ejecutar lo siguiente:

1.
# sshpass -p "clave" ssh usuario@IP_Remota  (Con este comando ejecutamos una conexión ssh sin que nos solicite vía prompt, el password).

2.
# sshpass -p "clave*" scp archivo-local usuario@IP_Remota:/ruta/remota/
(Con este comando ejecutamos una conexión ssh sin que nos solicite vía prompt, el password).

OPCIÓN #1: Con llaves de autenticación.

Configuración:
En el equipo "cliente" (servidor del cual deseamos conectarnos vía ssh o transferir algún archivo usando el comando scp a otro servidor, ejecutamos:

# cd /home/usuario (nos colocamos en la carpeta home del usuario del equipo cliente con el cual deseamos hacer el ssh o scp al servidor remoto).  Si no tenemos el usuario, lo creamos con el comando adduser usuario y seteamos el password con passwd usuario.

Generamos la llave de autenticación:
# ssh-keygen -b 2048 -t rsa

Opciones:
-b Especifica el número de bits de la llave a crear. Utilizamos 2048 en este ejemplo.
-t Especifica el tipo de llave a crear (rsa, rsa1, dsa, ecdsa).  Utilizamos rsa en este ejemplo.


 Al finalizar el procedimiento, se generarán 2 archivos:
/root/.ssh/id_rsa (Clave privada para el sistema RSA).
/root/.ssh/id_rsa.pub (Clave pública para el sistema RSA).


Luego, copiamos la clave pública generada en este equipo "cliente", al servidor remoto:
# scp .ssh/id_rsa.pub frankcho@192.168.31.9:/home/frankcho/.ssh/llave_rsa8-191



Nos conectamos al equipo "servidor".  Ejecutamos los siguientes comandos:

# cd /home/frankcho/.ssh/ (Vamos al directorio donde colocamos la llave desde el equipo cliente.

# cat llave_rsa8-191 >> authorized_keys (Copiamos el contenido de la llave generadara al archivo authorized_keys.  Este archivo se creará si no existe; si existe, colocará al final del archivo el nuevo contenido.

Con el comando head authorized_keys podemos ver parte del archivo


Ahora podemos emplear los comandos scp y ssh en script o hacer conexiones sin que nos solicite el password.

NOTA: Si luego de seguido estos pasos el "cliente" todavía pide el password, cambiar los permisos del archivo "authorized_keys".  Al finalizar, intentar nuevamente el scp sin password.

[remotebackup@srbuf01bdcan01 .ssh]$ cd /home/remotebackup/.ssh/
[remotebackup@srbuf01bdcan01 .ssh]$ chmod 600 authorized_keys
[remotebackup@srbuf01bdcan01 .ssh]$ ls -la authorized_keys
-rw-------. 1 remotebackup remotebackup 400 sep  3 11:04 authorized_keys