lunes, 11 de mayo de 2020

LVM (Logical Volume Management)


LVM es una capa de abstracción entre el disco y el sistema de ficheros.

1) Volumen Físico (Physical Volume) → PV

Es un dispositivo de almacenamiento. Puede ser un disco duro, una partición de un disco o un RAID5 con 3 discos…

2) Grupo de Volúmenes (Volume Group) → VG

Es una especie de dis:co duro virtual compuesto de uno o más PV’s y que crece añadiendo más PV’s.

3) Volumen Lógico (Logical Volume) → LV

Son las “particiones” del “disco duro virtual”. Los LV’s pueden crecer expandiéndose por diferentes PV’s.

4) Unidades de asignación o Extensiones Físicas (Physical Extension) → PE

Unidades de asignación mínima del LVM. Por defecto son de 4 MB’s.

---

Lo primero es marcar un disco o una partición o un RAID como PV:

pvcreate /dev/sda: Un disco completo

pvcreate /dev/sda3 /dev/sdb1 /dev/sdc1: Particiones

pvcreate /dev/mdc0: Un RAID

Una vez marcado un dispositivo como PV podemos ver información del mismo con los comandos:

pvs

pvdisplay /dev/sda3

Ahora creamos un grupo de volúmenes (VG):

vgcreate multimedia /dev/sda3

o

vgcreate produccion /dev/sdb /dev/sdc /dev/sdd

Podemos volver a ver la info con pvs y pvdisplay.




Aún quedan por crear los volúmenes lógicos (LV’s).


lvcreate -L 40M -n musica multimedia

L: especificando el tamaño
musica: nombre del LV a crear
multimedia: nombre del VG dentro del que se crea

O:

lvcreate -l 10 -n musica multimedia

l: especificando el número de PE → 10 x 4 = 40M (por defecto cada PE es de 4 Mb).


Ya está listo para usar, ahora podemos crear un sistema de ficheros y montarlo como cualquier otro dispositivo de almacenamiento.

mkfs.ext4 /dev/multimedia/musica: Crea el file system

mount /dev/multimedia/musica /media/: Monta el FS

df /media/: Para comprobar


Pero podría hacernos falta ampliar el espacio del PV, VG o LV:

- Ampliar un PV:

pvresize /dev/sda3: “Estira” el tamaño del PV hasta su nuevo tamaño completo.

- Ampliar un VG:

pvcreate /dev/sda5: Creamos un nuevo PV

vgextend multimedia /dev/sda5: Ampliamos el VG multimedia con el nuevo PV sda5

- Ampliar un LV (dos fases):

lsv para mostrar la info del LV

a) lvextend -L +10M /dev/multimedia/musica

b) Ahora se debe ampliar el sistema de ficheros:

- Para XFS:

xfs_growfs /dev/multimedia/musica (file system)

o xfs_growfs punto_de_montaje

- Para reiserfs:

resize_reiserfs /dev/multimedia/musica

o resize_reiserfs punto_de_montaje

- Para ext3 / ext4:

resize2fs /dev/multimedia/musica

CREAR UN FILESYSTEM EN UN DISCO NUEVO


1) Creamos un volumen físico (PV, Physical Volume) sobre el disco:

pvcreate /dev/sdb1

2) Creamos un grupo de volumen (VG) dentro del PV:

vgcreate grupotest /dev/sdb1

3) Creamos un volumen lógico (LV) dentro del VG:

lvcreate -L 4,8G -n volutest grupotest

4) Verificamos los pasos dados hasta el momento:

lvdisplay /dev/grupotest/volutest

También podría hacerse un vgdisplay o vgdisplay -v grupotest

5) Creamos un sistema de ficheros ext3 sobre el LV recién creado y montarlo en un directorio.

mkdir /disco2: Creamos el directorio

mkfs -t ext3 /dev/grupotest/volutest: Creamos el punto de montaje

mount /dev/grupotest/volutest/ /disco2: Se monta el FS usando el punto de montaje y el directorio


Nota bene: También podría montarse usando el fichero /etc/fstab y lanzando la orden mount /directorio para que fuera persistente tras el reinicio del sistema.

jueves, 7 de mayo de 2020

SECURIZAR DATOS CON ENCRIPTACIÓN

Realizando configuración básica OpenSSH2 y uso del mismo:

La primera vez que se conecta a un servidor remoto por ssh se actualiza un fichero llamado known_hosts con el nuevo registro.

ssh-keygen -t rsa: Genera una clave pública contenida en un fichero de nombre id_rsa.pub que se puede ver con un cat y ponerla en el servidor remoto dentro del fichero /.ssh/authorized_keys para generar una relación de confianza y poder acceder remotamente y automáticamente sin poner la password en cada acceso.Esta clave pública habrá que copiarla a /.ssh/authorized_keys del servidor remoto como una entrada más dentro del fichero.

Se puede también copiar con ssh-copy-id root@192.168.1.106 y lo deja directamente en el fichero /.ssh/authorized_keys. Y en el primer acceso pedirá la passphrase que se puso al generar la clave privada con ssh-keygen. Pero aún seguirá pidiendo la passphrase, por lo que habrá que lanzar dos comandos más:

ssh-agent y luego ssh-add (en este segundo comando pedirá la passphrase, se pone y ya no volverá a pedirla más).


Claves del servidor OpenSSH2:

Hay claves DSA y RSA

/etc/ssh/ssh_host_dsa_key
/etc/ssh/ssh_host_rsa_key.pub
/etc/ssh/ssh_host_rsa_key
/etc/ssh/ssh_host_rsa_key.pub

-rw------- 1 root root    607 Oct  4 22:43 ssh_Host_dsa_key
-rw-r--r-- 1 root root    623 Oct  4 22:43 ssh_Host_dsa_key.pub
-rw------- 1 root root    241 Oct  4 22:43 ssh_Host_ecdsa_key
-rw-r--r-- 1 root root    194 Oct  4 22:43 ssh_Host_ecdsa_key.pub
-rw------- 1 root root   1602 Oct  4 22:43 ssh_Host_rsa_key
-rw-r--r-- 1 root root    378 Oct  4 22:43 ssh_Host_rsa_key.pub
Son claves generadas usando diferentes algoritmos de cifrado.

SSH usa cifrado de clave pública, lo que significa que cuando se conecta a un servidor SSH, emite una clave pública que puede usar para cifrar más tráfico que se enviará a ese servidor. Si el servidor está configurado para usar RSA, será una clave generada por el algoritmo RSA.
Su computadora devuelve su propia clave RSA pública del archivo de claves que enumeró en su pregunta. El servidor necesita esta clave para volver a conectarse con usted y responder.
Las tres claves existen en su computadora porque cualquier servidor SSH con el que se esté conectando podría estar configurado para usar cualquiera de estos algoritmos. Su computadora enviará una clave única que coincida con el tipo que utiliza el servidor, su clave se ha generado en su computadora por el mismo algoritmo.


Se puede configurar el tipo de clave que el servidor usa editando el fichero /etc/ssh/sshd_config. Se descomenta la línea del tipo de la HostKey que se quiere utilizar.


Usar y configurar GnuPG:

gpg –gen-key: Genera una clave necesaria para encriptar y desencriptar y nos pide una passphrase.
ls -l .gnupg: Para verla

Para encriptar comunicaciones, asociar la clave con un email:
gpg –output /cesar_pubkey.gpg –export cesar@cuaderno.es: Asocia una clave a la dirección. Genera un fichero /cesar_pubkey.gpg que se puede distribuir a los destinatarios de los mails encriptados.

Para encriptar ficheros del sistema:

gpg -e -r cesar@cuaderno.es /itdocs/fichero.txt: Encripta el fichero que se le indique, generando uno nuevo encriptado con extensión .gpg, por lo que habrá que eliminar el original no encriptado.

Para desencriptar el fichero:

gpg /itdocs/fichero.txt.gpg: Lo desencripta tras ponerle la passphrase.



Utilizar tuneles de puerto SSH:

root@suse:# ssh -X root@192.168.1.189 : Me conecto por ssh al destino
linux-destino:# yast2 (lanzo la aplicación en destino pero se ejecuta en el origen)

GESTIÓN DE DATOS SQL

Introducción a SQL Y Select:

rcmysql status: Muestra el estado de mysql

mysql: Conecta a la base de datos, saca el prompt de mysql

show databases; : muestra las bbdd

use modelosclasicos; : Escoge la base de datos elegida

show tables; : Una vez dentro de una bbdd, la muestra

select * from clientes; : Muestra el contenido entero de la tabla.

show columns from clientes; : Muestra las columnas de la tabla.

select nombrecliente, estado, ciudad from clientes: Muestra los datos seleccionados.


Insertar, actualizar y borrar datos con SQL:

insert into clientes (numerocliente, nombrecliente, ciudad) values (457, “test1”, “Coslada”);
Este comando inserta un registro, quedando el “Provincia” con valor NULL pues no se ha puesto nada al respecto.

update clientes set Provincia =”Madrid” where numerocliente=457; : Actualiza el registro con la provincia

delete from clientes where numerocliente=457; : Borra el registro indicado.


Seleccionar datos uniendo dos o más tablas:

select nombrecliente, fechaorden, numeroorden from clientes join ordenes on clientes.numerocliente=ordenes.numerocliente; :Une dos tablas por el campo numerocliente que está presente en ambas tablas.


Ordenando datos devueltos por una Select:

select nombrecliente from clientes order by nombrecliente; :Ordena alfabéticamente

select nombrecliente, numerocliente from clientes order by numerocliente; :De menor a mayor

select nombrecliente, numerocliente from clientes order by numerocliente DESC; Inverso






Agrupamiento avanzado de datos SQL resultantes de una Select:

select Estado, count (clientes,numerocliente) from clientes group by Estado; :Ordena por Estado, contando el número de clientes por Estado.

REALIZAR TAREAS ADMISNITRATIVAS DE SEGURIDAD

Auditar un sistema para encontrar ficheros SUID / SGID:

find / -group helpdesk -perm -g+s: Busca ficheros del grupo helpdesk con permisos especiales.

find / -perm -u+s: Busca con permisos u+s que pueden comprometer la seguridad del sistema.


Establecer y cambiar password y antigüedad de la información:

passwd cesar: Ofrece la posibilidad de cambiar la contraseña.

passwd -l cesar: Bloquea (lock) al usuario indicado. (Pone una ! al fichero /etc/shadow en 2ª columna).

passwd -u cesar: Desbloquea el usuario.

chage -l cesar: Da información de la password del usuario (cada cuanto caduca, etc).

chage -M 60 cesar: Modifica el plazo de caducidad de la contraseña a 60 días.

usermod cesar -s /bin/ksh -G ventas: Modifica la shell del usuario y lo mete en el grupo indicado


Descubrir puertos abiertos en un sistema con netstat:

netstat -t: Muestra los puertos abiertos del sistema y las aplicaciones que los usan, más los usuarios.

netstat -tn: Como el anterior pero desplegando el resultado en valores numéricos (IP’s).


Descubrir puertos abiertos en un sistema con nmap:

nmap 192.168.1.1: Muestra puertos abiertos TCP y UDP, su estado y el servicio que los usa.

nmap -p 53 192.168.1.1: Escanea el puerto indicado indicado.

nmap -sU 192.168.1.1: Mira puertos UDP abiertos en el sistema.

nmap 192.168.1.1-254: Escanea el segmento de red indicado

nmap -p 8000-9000 192.168.1.1: Escanea el rango de puertos indicado en el host señalado



Estableciendo logins de usuarios, procesos y recursos:

/etc/security/limits.conf: Para configurar límites del usuario
domain type item value
* hard maxlogins 10

ulimit -n 100 cesar: Establece en 100 como el máximo de ficheros abiertos por el usuario.

ulimit -m 200000 cesar: Establece en 200000 kilobits el límite de memoria para el usuario.

ulimit -u 1000 cesar: Establece en 1000 el número máximo de procesos del usuario.

ulimit -a: Para ver los límites establecidos para el usuario.

Habría que poner estas modificaciones en el fichero /etc/profile para que se mantuvieran tras el reinicio del sistema.


Determinar qué usuarios o procesos tienen ficheros abiertos:

fuser /scripts: Muestra los usuarios que están usando ese directorio.

fuser -v /scripts: Muestra los usuarios que están usando ese directorio dando más info.

fuser /sbin/ssh/sshd: Muestra los usuarios que están ejecutando ssh en el sistema.

fuser -v -p tcp 22: Dice que usuarios están usando el puerto 22 (de ssh) en el sistema.

lsof | more: Muestra los usuarios o directorios abiertos en el sistema, los procesos, etc.

lsof /sbin/ssh/sshd: Muestra qué usuarios están ejecutando el binario indicado

lsof +D /sbin/ssh/: Muestra ficheros abiertos del directorio indicado

lsof -u cesar: Muestra ficheros abiertos por el usuario que sea


Buscar usuarios que se han loggado o está ahora activos en el sistema:

who: Quién está loggado ahora y desde qué terminal (tty0, tty1….. :0 [console], …..pts [sudo]).

w: Quién está loggado y qué están haciendo

last -i: Muestra desde qué IP se han conectado los usuarios

last: Muestra desde que hostname se han conectado los usuarios


Configurar y usar sudo:

visudo -f /etc/sudoers: Para editar el fichero de usuarios que podrán convertirse en otro. Puede definirse desde dónde ejecutarse los comandos y qué comandos pueden lanzarse.

miércoles, 6 de mayo de 2020

LOCALIZACIÓN E INTERNALIZACIÓN EN LINUX

Configuración local y variables de entorno:

date: Devuelve la hora del sistema, la fecha y la zona horaria

tzselect: Sirve para configurar la hora del sistema escogiendo la zona horaria

Otra forma de configurar la hora es mediante un enlace simbólico:

/usr/share/zoneinfo: Vienen reflejadas las zonas horarias

ln -s /usr/share/zoneinfo/US/Pacific /etc/localtime (o timezone)


Configuración de la zona horaria y variables de entorno:

echo $LANG: Arroja el lenguaje del sistema

locale -a: Muestra las variables locales incluyendo la codificación del lenguaje

locale: Enseña valores de variables locales del sistema.

export TZ=Atlantic/Bermuda: Establece esta zona horaria

AUTOMATIZAR LA ADMINISTRACIÓN DEL SISTEMA CON TRABAJOS PROGRAMADOS

Introducción a los trabajos de cron:

Se pueden programar tareas con cron.

Cron es un demonio que siempre está arrancado y ejecuta tareas programadas.

Los trabajos de cron son del sistema o de usuarios.

Los trabajos de cron no corren supervisados por lo que no deberían a un programa que requiera interacción por parte del usuario.

Ficheros de configuración de cron:

/var/spool/cron

/etc/cron.d

Fichero crontab que contiene todos los trabajos:

/etc/crontab

cron ejecuta trabajos programados y puede relanzarlos.

Para trabajos que se ejecutan una sola vez, mejor usar AT.


Añadir trabajos programados:

El trabajo programado posee a la izquierda la fecha y hora y mes a la que se ejecutará, luego el usuario que lo lanzará y después el script que será desplegado.

rccron status: Verifica el estado de cron

crontab -l: Muestra los trabajos que hay para el usuario que lo lanza.

crontab -e: Para editar el crontab

/var/spool/cron/tabs: Donde se almacenan los cron de todos los usuarios y lo puede ver root

crontab -r: El usuario puede eliminar los trabajos que tuviera programados.


Añadir y gestionar trabajos AT:

rcatd status: Para ver el estado de los trabajos AT

rcatd start: Arranca los trabajos AT

insserv atd: Este comando hace que AT se ejecute al inicio del sistema.


at noon today: Para crear un nuevo trabajo AT
at> (prompt)
at> scripsusuariosactivos.sh
Para salir: Ctrl D

atq: Me muestra los jobs programados en AT para el usuarios

at 10pm nov 30: Crea un trabajo en AT para el 30 de noviembre a las 22:00
at> umount /dev/sdb1
at> fschk /dev/sdb1 > /resultado_fschk.txt
at> <EOT>
Ctrl D

atq: Nos muestra los trabajos AT programados relacionados con un número
atrm número_de_job: Elimina el trabajo indicado.


Configurar el acceso a cron y a AT por parte de los usuarios:


/etc/at.deny: Fichero que guarda los usuarios denegados para acceder a AT

/etc/at.allow: Fichero con los usuarios autorizados con prevalencia sobre el anterior.

Para cron es igual, existen los ficheros del mismo tipo y funciona igual:

/etc/cron.allow: Usuarios autorizados, con prevalencia sobre cron.deny

/etc/cron.deny: Usuarios denegados


Configurar Anacron:

Ejecuta trabajos diaria, semanal y mensualmente incluso si el sistema está apagado.

Es útil para portátiles y estaciones de trabajo.

Sólo root puede programar trabajos de Anacron.

/etc/anacrontab

Período, retraso, nombre de trabajo, comandos:

Ejemplo: 7 15 do_backup scripsbackup.sh
(sem) (tiempo) (nombre) (trabajo)