Mostrando entradas con la etiqueta Linux comandos. Mostrar todas las entradas
Mostrando entradas con la etiqueta Linux comandos. Mostrar todas las entradas

domingo, 13 de octubre de 2013

Linux - Configurando servicios fácilmente

Cuando el sistema inicia, carga diferentes servicios, estos normalmente los encontraremos en /etc/rcX.d/, en Donde X va del 0 al 6. Sin intentar explicar esto, existe una forma de administrar los servicios bastante fácil, esto es gracias a sysv-rc-conf. Para instalarlo debemos:

$ sudo aptitude install sysv-rc-conf


Una vez instalado, simplemente lo ejecutamos en consola:

$ sudo sysv-rc-conf


Aquí nos encontraremos con algo similar a lo siguiente:


Como podemos ver, nos muestra los diferentes servicios, y del 0 al 6, por lo cual podemos activar o desactivar según nosotros estimemos conveniente.

  • Con la tecla espacio podemos marcar o desmarcar un servicio en un nivel de ejecución, al tener la “X” significa que estará activado.
  • Con la combinación “Ctrl + N” pasamos a la siguiente página, al igual que lo podemos hacer si simplemente empezamos a bajar.
  • Para detener o iniciar un servicio que ya esté en ejecución, utilizamos las teclas “-” y “+”.
  • Para salir, simplemente utilizamos la tecla “q”


martes, 25 de septiembre de 2012

SSH - Generar llave de confianza en solo 3 pasos


Cuando nos conectamos mediante ssh nos pide la contraseña del usuario para realizar con éxito la conexión, esto si bien es cierto es un grado de seguridad, puede resultarnos útil que a nuestra máquina no le pida la contraseña, esto se logra creando una relación de confianza, lo que hace es que nuestra máquina sea reconocida por la máquina remota como equipo de confianza y sólo a la máquina la deje ingresar sin contraseña, las demás les pedirá dicha contra.

El tutorial lo dividiré en 3 partes, la primera parte contendrá sólo las sintaxis, la segunda parte tendrá un ejemplo de conexión y la tercera parte será un bash script que podemos ejecutar para automatizar esto.

Primera parte - Sintaxis

PASO 1: Con nuestro usuario (no con root) debemos generar la key:

$ ssh-keygen

Aquí nos saldrá una serie de preguntas, simplemente apretamos enter y dejamos todo en blanco.

PASO 2: Copiar nuestra key pública al host remoto

$ ssh-copy-id -i ~/.ssh/<> <usuario>@<host remoto>

Luego de esto nos pedirá ingresar la contraseña del usuario remoto, la ingresamos y nos deberá aparecer un mensaje diciendo: “now try logging into the machine, with "ssh '<usuario>@<host>'" lo que significa que ya podemos loguearnos sin necesidad de la contraseña

PASO 3: Conectarse a la máquina remota por SSH

$ ssh <usuario>@<host>



Segunda parte - Ejemplo

Ejemplo 1

PASO 1: Con nuestro usuario (no con root) debemos generar la key:

$ ssh-keygen

PASO 2: Copiar nuestra key pública al host remoto

ssh-copy-id -i ~/.ssh/id_dsa.pub root@192.168.1.105

PASO 3: Conectarse a la máquina remota por SSH

ssh root@192.168.1.105


Ejemplo 2

PASO 1: Con nuestro usuario (no con root) debemos generar la key:

$ ssh-keygen -t id_dsa.pub -b 1024

PASO 2: Copiar nuestra key pública al host remoto

ssh-copy-id -i ~/.ssh/id_dsa.pub root@192.168.1.105

PASO 3: Conectarse a la máquina remota por SSH

ssh root@192.168.1.105


Como podemos darnos cuenta, en tan solo 3 pasos podemos generar una llave de confianza, tenemos que tener en cuenta que tipo de key hemos creado, ya que podemos crear una key dsa o una rsa, también podemos agregar opción como el -t para elegir el tipo (rsa o dsa) -b para ver la cantidad de bits, etc. Todo esto lo podemos ver en el manual haciendo

$ man ssh
$ man ssh-keygen
$ man ssh-copy-id



Tercera parte - Bash Script

Como amante de la línea de comandos y de Bash, debemos generar un Bash Script para generar una llave de confianza automatizada, aquí dejo el script.

#!/bin/bash
#
# author:       Nicolás Ormeño
# email:        ni.ormeno at gmail dot cl
# license:      GPL V3
# date:         2012-09-25
# description:  Script para generar llaves de confianzas SSH BASICAS!
#
read -p "Crear llave? (s/n) " key

if [ $key == s ]; then
       read -p "rsa o dsa? " type
       ssh-keygen -t $type
fi
read -p "ip del host: " host

ssh-copy-id -i ~/.ssh/id_dsa.pub root@$host

viernes, 21 de septiembre de 2012

Comando GCP, un CP mejorado

En Linux, como todos sabrán, para copiar ficheros por consola tenemos el comando cp, si bien es cierto funciona a la perfección, no nos detallada el progreso del fichero, normalmente esto no es problema, pero que pasa si queremos copiar un fichero de varios megas o gigas? esto se vuelve más complejo, ya que no sabemos cuanto deberemos esperar, para solucionar esto tenemos GCP, para instalarlo simplemente
# aptitude install gcp
Luego simplemente en vez de copiar con cp, copiamos con gcp, adjunto un screenshot para que vean su función



Algunas personas prefieren reemplazar cp por gcp, en mi caso no es así, ya que son comandos diferencias y no me cuesta nada trabajar con cp o agregarle una letra g y trabajar con gcp, en el caso que quieran hacerlo, deben hacer es crear el alias correspondiente.
echo "alias cp='gcp'" >> $HOME/.bashrc

domingo, 2 de septiembre de 2012

Linux - Permisos

En todo sistema es necesario manejar los permisos de los ficheros y directorios, obviamente Linux no es la excepción. Los permisos que maneja Linux son los clásicos de Unix (Leer-Escribir-Ejecutar). Para saber los permisos de un directorio/fichero simplemente ejecutamos el comando “ls -l” y nos mostraría algo parecido a esto:
-rwxr-xr-x 1 user1 grupo1 128931 ago 28 2012 gpl.txt
Los primeros 10 caracteres (de izquierda a derecha) son los caracteres de permisos, lo que podemos visualizar en ellas son 5 letras y un signo
  • - : Significa que no posee la propiedad.
  • l : Significa que es un enlace simbólico
  • d : Se refiere a que es un directorio y no un fichero.
  • r : Posee la propiedad Read.
  • w : Posee la propiedad Write.
  • x : Posee la propiedad eXecute
Estos 10 caracteres los podemos dividir en 4 segmentos,
  • Carácter 1: esta entrada nos indica si es un fichero o un directorio. En caso de ser un fichero, aparece el carácter “-”, en de que este sea un enlace simbólico aparece una “l”, mientras que si es directorio aparece una “d”. 
  • Caracteres 2, 3, 4: nos indican, respectivamente, los permisos de lectura, escritura y ejecución para el propietario del fichero. En caso de no tener el permiso correspondiente activado, encontramos el carácter “-” y no “r”, “w” o “x”, según si lo podemos leer (Read), escribir (Write) o ejecutar (eXecute). En el tercer carácter, además, podemos encontrarnos una “s”, que nos indica si el archivo es de tipo SetUserId, que quiere decir que al ejecutarlo obtendrá los permisos del propietario del fichero. Si sólo tiene el permiso “x”, cuando el programa se ejecuta lo hace con los permisos de quien lo haya lanzado.
  • Caracteres 5, 6, 7: estos caracteres tienen exactamente el mismo significado que anteriormente, pero hacen referencia a los permisos concedidos a los usuarios del grupo al que pertenece el fichero.
  • Caracteres 8, 9, 10: igual que en el caso anterior, pero para los otros usuarios del sistema.

Después de estos 10 caracteres encontramos una cifra que nos indica el número de enlaces fuertes que tiene el fichero. Para los directorios, este número indica cuántos directorios hay dentro de él además de los enlaces fuertes que tiene (cuando no hay ninguno, el número es 2, debido a la gestión interna del operativo).

A continuación vemos el propietario y el grupo del archivo, seguido del tamaño (en bytes) que ocupa y la fecha de la ultima modificación. Les dejo una imagen que encontré en Internet que me parece que está bastante bien explicado.


Si por alguna razón, necesitamos cambiar los permisos de algún directorio/fichero, tenemos que utilizar el comando “chmod” el cual nos permite esto, este comando nos permite trabajar de 2 formas, una es con números y la otra con letras.

Para trabajar con números debemos utilizarlo de la siguiente forma: “chmod XXX nombreFichero”, donde las “X” deben ser tres números entre 0 y 7. El primer número indica los permisos que queremos establecer para el usuario, el segundo, para el grupo y el tercero, para el resto.


Ejemplos de utilización:

# chmod 644 <directorio/fichero> Damos permiso “rw” al usuario y “r” al grupo y otros.
# chmod 777 <directorio/fichero> Damos permisos “rwx” al usuario, grupo y otros.
# chmod 664 <directorio/fichero> Damos permisos “rw” al usuario y grupo y permisos “r” a otros.
# chmod 700 <directorio/fichero> Damos permisos “rwx” al usuario y ningún permiso al grupo y otros.

Como mencione anteriormente, la otra forma de trabajar es trabajar (por llamarlo de alguna forma) con letras. . La manera de hacerlo es indicando, primero, si nos referimos a los permisos del usuario, grupo o al resto con las letras “u”, “g” u “o” respectivamente. Seguidamente, debemos añadir un “+” o “-” según si queremos añadir o eliminar el atributo, que indicaremos con “r”, “w”, “x” o “s” (este último para el SetUserId). Además, podemos hacer todas las combinaciones posibles, refiriéndonos a más de un permiso y/o usuarios.

Ejemplos de utilización:

# chmod ug+wrx <directorio/fichero> Damos permisos “wrx” al usuario y al grupo.
# chmod go -x <directorio/fichero> Quitamos permisos de ejecución al grupo y otros.
# chmod go+rw <directorio/fichero> Damos permisos “rw” al grupo y otros.


Dato: El mecanismo de SetUserId es muy útil cuando un programa necesita tener los permisos de su propietario para acceder a ciertos archivos o hacer algún tipo de operación en el sistema. De todos modos, debemos vigilar mucho con este tipo de ficheros porque pueden suponer fallos de seguridad en el sistema si son mal utilizados.





Basado en: Sistema Operativo GNU/Linux Básico - UOC


martes, 12 de junio de 2012

Linux - Trabajando con SSH

SSH (Secure SHell, en español: intérprete de órdenes segura) es el nombre de un protocolo y del programa que lo implementa, y sirve para acceder a máquinas remotas a través de una red. Permite manejar por completo la computadora mediante un intérprete de comandos, y también puede redirigir el tráfico de X para poder ejecutar programas gráficos si tenemos un Servidor X (en sistemas Unix y Windows) corriendo.

Además de la conexión a otros dispositivos, SSH nos permite copiar datos de forma segura (tanto ficheros sueltos como simular sesiones FTP cifradas), gestionar claves RSA para no escribir claves al conectar a los dispositivos y pasar los datos de cualquier otra aplicación por un canal seguro tunelizado mediante SSH.

SSH trabaja de forma similar a como se hace con telnet. La diferencia principal es que SSH usa técnicas de cifrado que hacen que la información que viaja por el medio de comunicación vaya de manera no legible y ninguna tercera persona pueda descubrir el usuario y contraseña de la conexión ni lo que se escribe durante toda la sesión; aunque es posible atacar este tipo de sistemas por medio de ataques de REPLAY y manipular así la información entre destinos.

Conectarse a una máquina mediante ssh

Para conectarnos mediante ssh a una máquina, simplemente debemos ejecutar:
ssh <usuario>@<ip o host>
ejemplo:
ssh root@192.168.1.2
copiado de ficheros a través de ssh

Para poder copiar ficheros a través de ssh simplemente:
$scp ruta/fichero_a_copiar usuario@<ip o host remoto>:/ruta/donde/dejamos/el/fichero
ejemplo:
$scp /home/miusuario/imagen.jpg root@192.168.1.2:/root/imagen.jpg

Generación de relación de confianza.

Cuando nos conectamos mediante ssh nos pide la contraseña del usuario para realizar con éxito la conexión, esto si bien es cierto es un grado de seguridad, puede resultarnos útil que a nuestra máquina no le pida la contraseña, esto se logra creando una relación de confianza, lo que hace es que nuestra máquina sea reconocida por la máquina remota como equipo de confianza y SOLO a la máquina la deje ingresar sin contraseña, las demás les pedirá dicha contraseña, para realizar esto, debemos:

Antes de comenzar a escribir comandos, debemos saber la diferencia entre rsa y dsa, para así saber cual de estos queremos aplicar.
RSA: Es un algoritmo asimétrico cifrador de bloques, que utiliza una clave pública, la cual se distribuye y otra privada, guardada en secreto por su propietario.Su funcionamiento reside en el uso de expresiones exponenciales dentro de la aritmética modular. Obteniendo una completa seguridad, debido a que aún no se conocen formas óptimas de factorizar un número grande en sus factores primos utilizando ordenadores personales.El RSA se basa en dos problemas matemáticos: el problema de factorizar números grandes y el problema RSA. El descifrado completo de un texto cifrado con RSA es computacionalmente intratable. Por otro lado la factorización de números grandes proponen métodos para longitudes de 600-700 bits de longitud. Y generalmente, las claves RSA usan entre 1024-2048 bits.

DSA: (Digital Signature Algorithm o Algoritmo Estándar de Firmado) es el algoritmo de firmado digital incluido en el DSS (Digital Signature Standard o Estándar de Firmas Digitales) del NIST Norteamericano. Está basado en el problema de los logaritmos discretos y únicamente puede emplearse para las firmas digitales. A diferencia del RSA, que puede emplearse también para encriptar.La elección de este algoritmo como estándar de firmado generó multitud de críticas puesto que perdía bastante flexibilidad respecto al RSA.
Sabiendo esto, comenzamos a teclear.
usuario@maquinalocal:$ssh-keygen -t <rsa/dsa>
Nos aparecera una sería de preguntas le tecleamos a todas ENTER dejando vacías las respuestas. Esto nos creará un directorio .ssh, dentro del home de nuestro usuario, ahora en la maquina remota, hacemos el mismo proceso:
usuario@maquinalocal:$ssh root@<ip_maquina_remota>
usuario@maquinaremota:#ssh-keygent -t <rsa/dsa>
Ahora nuevamente desde nuestra maquina local, copiamos nuestro id_rsa.pub o id_sda.pub, ingresamos a la máquina remota (ingresaremos por última vez la contraseña) y colocamos nuestro fingerprint como relación de confianza.
usuario@maquinalocal:$scp .ssh/id_rsa.pub usuario@<ip>:/root/.ssh/id_dsa.pub
usuario@maquinaremota:#cat .ssh/id_rsa.pub >> .ssh/authorized_keys
El fichero authorized_keys no existe, pero al hacer la instrucción descrita lo creará.

Una vez hecho esto, cada vez que ingresemos a la máquina remota, ingresaremos sin necesidad de ingresar nuevamente la contraseña.

viernes, 1 de junio de 2012

Linux - tips dmidecode

dmidecode es una herramienta fundamental en la administración de sistemas Linux, ya que este nos muestra el hardware de nuestro equipo que es reconocido por nuestra BIOS.

Lo interesante del comando dmidecode es todo lo que nos puede mostrar por pantalla, por ejemplo el fabricante del Sistema, Modelo Exacto , número de serie, versión del BIOS ,Memorias, Cuanta Memoria soporta ,Modelo de Memoria,Modulo,Procesador, etc.

La información que nos muestra dmidecode es sumamente extensa es por esto que les recomiendo guardar el resultado en fichero, esto lo debemos usar con privilegios de super usuario.
# dmidecode >> resultado_dmidecode
Otra forma más amigable es usar el pipe more.
# dmidecode | more
Este es usado también en caso de errores, ya que si notamos dificultad con algún hardware, podremos saber si la BIOS lo está reconociendo correctamente.

Como tips, les puedo dejar un uso que le di al dmidecode, el uso fue cuando quisé comprar una memoria RAM para el laptop y no recordaba el tipo de memoria, por lo que ejecute lo siguiente:
# dmidecode --type 17
Y como resultado, obtuve lo siguiente:
Handle 0x0019, DMI type 17, 28 bytes
Memory Device
Array Handle: 0x0018
Error Information Handle: No Error
Total Width: 64 bits
Data Width: 64 bits
Size: 2048 MB
Form Factor: SODIMM
Set: 1
Locator: M1
Bank Locator: Bank 0
Type: DDR3
Type Detail: Synchronous
Speed: 667 MHz
Manufacturer: 04CB
Serial Number: 00000000
Asset Tag: 1040
Part Number: AD73I1B1674EU
Rank: Unknown
Si se fijan me mostro que el tipo era DDR3, lo que hice con –type 17, es similar a hacer un pipe como el grep, con el cual hago una búsqueda más exacta. La lista de los tipos es la siguiente:

0 BIOS
1 System
2 Base Board
3 Chassis
4 Processor
5 Memory Controller
6 Memory Module
7 Cache
8 Port Connector
9 System Slots
10 On Board Devices
11 OEM Strings
12 System Configuration Options
13 BIOS Language
14 Group Associations
15 System Event Log
16 Physical Memory Array
17 Memory Device
18 32-bit Memory Error
19 Memory Array Mapped Address
20 Memory Device Mapped Address
21 Built-in Pointing Device
22 Portable Battery
23 System Reset
24 Hardware Security
25 System Power Controls
26 Voltage Probe
27 Cooling Device
28 Temperature Probe
29 Electrical Current Probe
30 Out-of-band Remote Access
31 Boot Integrity Services
32 System Boot
33 64-bit Memory Error
34 Management Device
35 Management Device Component
36 Management Device Threshold Data
37 Memory Channel
38 IPMI Device
39 Power Supply
Por lo que según esta lista, simplemente vamos cambiando el type para realizar una búsqueda mucho más exacta.

Fuente: http://julio-linux.esdebian.org/32607/herramienta-dmidecode