miércoles, 26 de agosto de 2020

Incrementar tamaño de / en EC2 Linux



Cómo incrementar el tamaño de la partición raíz ( / ) de un EC2 Linux en Amazon Web Services.



Si tenemos una instancia Linux en AWS, puede pasarnos que nos quedemos sin espacio en el disco principal de la máquina y no tengamos más remedio que ampliar el número de GB del disco.

Antes de ampliar la partición raíz, debemos averiguar en qué disco está situada la partición:

ip-10-250-4-103:/home/ec2-user # df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 3.9G 0 3.9G 0% /dev tmpfs 3.9G 0 3.9G 0% /dev/shm tmpfs 3.9G 18M 3.9G 1% /run tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup /dev/xvda1 99G 60G 35G 64% / tmpfs 799M 0 799M 0% /run/user/1000

Listamos los discos del sistema con el comando lsblk y encontramos el disco xvda:

ip-10-250-4-103:/home/ec2-user # lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda 202:0 0 100G 0 disk └─xvda1 202:1 0 100G 0 part /

Ahora ampliamos el espacio del disco xvda desde la consola de AWS.

Volvemos a lanzar el comando lsblk y vemos como xvda ha subido de tamaño:

ip-10-250-4-103:/home/ec2-user # lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda 202:0 0 250G 0 disk └─xvda1 202:1 0 100G 0 part /

Llegados a este punto, tenemos un disco ampliado, pero la partición raíz sigue igual:

ip-10-250-4-103:/home/ec2-user # df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 3.9G 0 3.9G 0% /dev tmpfs 3.9G 0 3.9G 0% /dev/shm tmpfs 3.9G 18M 3.9G 1% /run tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup /dev/xvda1 99G 60G 35G 64% / tmpfs 799M 0 799M 0% /run/user/1000

Ampliamos la partición /dev/xvda1:

ip-10-250-4-103:/home/ec2-user # sudo growpart /dev/xvda 1 CHANGED: partition=1 start=2048 old: size=209713119 end=209715167 new: size=524285919,end=524287967

Comprobamos que haya cogido el nuevo espacio asignado:

ip-10-250-4-103:/home/ec2-user # lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda 202:0 0 250G 0 disk └─xvda1 202:1 0 250G 0 part /


EXT4



Si el disco está particionado con EXT4, usamos resize2fs para acabar de ampliar la partición raíz:

ip-10-250-4-103:/home/ec2-user # sudo resize2fs /dev/xvda1 resize2fs 1.42.11 (09-Jul-2014) Filesystem at /dev/xvda1 is mounted on /; on-line resizing required old_desc_blocks = 7, new_desc_blocks = 16 The filesystem on /dev/xvda1 is now 65535739 blocks long.

Vemos como la partición raíz ya ve el nuevo espacio en disco:

ip-10-250-4-103:/home/ec2-user # df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 3.9G 0 3.9G 0% /dev tmpfs 3.9G 0 3.9G 0% /dev/shm tmpfs 3.9G 18M 3.9G 1% /run tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup /dev/xvda1 246G 60G 177G 26% / tmpfs 799M 0 799M 0% /run/user/1000


XFS



Si ampliamos una partición no EXT4 usando el comando resize2fs veremos el siguiente error en pantalla:

ip-10-250-4-94:/home/ec2-user # sudo resize2fs /dev/xvda2 resize2fs 1.43.8 (1-Jan-2018) resize2fs: Bad magic number in super-block while trying to open /dev/xvda2 Couldn't find valid filesystem superblock.

Buscamos el tipo de partición del sistema operativo:

ip-10-250-4-94:/home/ec2-user # df -Th Filesystem Type Size Used Avail Use% Mounted on devtmpfs devtmpfs 3.9G 0 3.9G 0% /dev tmpfs tmpfs 3.9G 0 3.9G 0% /dev/shm tmpfs tmpfs 3.9G 375M 3.6G 10% /run tmpfs tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup /dev/xvda2 xfs 100G 58G 42G 58% / /dev/xvda1 xfs 297M 90M 208M 31% /boot tmpfs tmpfs 797M 0 797M 0% /run/user/1000

Vemos que es XFS. Usamos xfs_growfs para ampliar nuestra partición raíz:

ip-10-250-4-94:/home/ec2-user # sudo xfs_growfs -d / meta-data=/dev/xvda2 isize=512 agcount=42, agsize=636096 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0 spinodes=0 rmapbt=0 = reflink=0 data = bsize=4096 blocks=26137339, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 data blocks changed from 26137339 to 65458939

Ahora ya vemos el nuevo espacio en la partición raíz:

ip-10-250-4-94:/home/ec2-user # df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 3.9G 0 3.9G 0% /dev tmpfs 3.9G 0 3.9G 0% /dev/shm tmpfs 3.9G 375M 3.6G 10% /run tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup /dev/xvda2 250G 58G 192G 24% / /dev/xvda1 297M 90M 208M 31% /boot tmpfs 797M 0 797M 0% /run/user/1000


Fuentes:

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/recognize-expanded-volume-linux.html
0

miércoles, 19 de agosto de 2020

Qué es un bind mount y cómo crearlo en Linux



¿Qué es un bind mount? ¿Qué diferencia hay entre un bind mount y un enlace simbólico?



Los montajes "bind" (bind mounts) de Linux permiten montar una ruta del sistema de archivos en otra ubicación, es decir, hacen que dos rutas vayan al mismo directorio. Se suelen usar para restringir el acceso de usuarios específicos a ciertas rutas de un servidor.

Por ejemplo, si queremos que un usuario sólo pueda acceder a una ruta específica vía SFTP y esta muestre archivos contenidos en otra parte del sistema, podemos usar un bind mount, lo cual le permitirá al usuario ver los archivos de esa ruta a la que no tendría acceso de otra forma.


Configurar bind mount



Para crear un bind mount, debemos usar la siguiente sintaxis:

HOST# mount --bind /ruta/original/ /nueva/ruta

Tambien podemos usar esta otra sintaxis:

HOST# mount -o bind /ruta/original/ /nueva/ruta

Una vez hecho esto, cada vez que nos dirijamos a /nueva/ruta, veremos los archivos situados en /ruta/original, como si hubieramos accedido a /ruta/original.


Montaje persistente



Cuando reiniciemos la máquina, los bind mount se perderán. Para hacerlos persistentes (perdurables después de reinicios), deberemos editar el archivo /etc/fstab del sistema y decirle a este que los monte:

/ruta/original /nueva/ruta none bind,nobootwait 0 0

Agregar nobootwait a la sección de opciones de la configuración de fstab garantiza que el sistema se inicie incluso si el directorio original se ha eliminado del sistema.


Diferencias entre bind mount y enlaces simbólicos



Un enlace simbólico es un inodo que apunta a un determinado objeto del sistema de archivos. Por otro lado, si se monta un directorio con un bind mount, se crea un segundo punto de montaje para un directorio ya existente dentro del sistema de archivos.

Si un enlace simbólico se podría ver como una redirección, un bind mount se podría ver como otra puerta de enlace a los datos de un directorio ya existente.

Varios programas pueden distinguir entre enlaces simbólicos y directorios o archivos reales. Pocos pueden distinguir entre un directorio o archivo y el que está montado en él (bind mount). Un software de backup, por ejemplo, creará dos copias de cada archivo ubicado en un directorio doblemente montado mediante bind mount, ya que tratará a ambos directorios como rutas independientes.

En un chroot, por su parte, si el objetivo del enlace está fuera del chroot, el enlace simbólico quedará muerto. El bind mount, en cambio, funcionará y permitirá que se acceda a los datos ubicados fuera del chroot. Además, los enlaces simbólicos sobreviven a un reinicio mientras que los mount bind no lo hacen a menos que se edite /etc/fstab para hacerlos persistentes.

Por último, los bind mount permiten un acceso más rápido a su destino que los enlaces simbólicos.


Fuentes:

https://support.rackspace.com/how-to/bind-mounts-in-linux/
https://serverfault.com/questions/613179/how-do-i-do-mount-bind-in-etc-fstab
https://unix.stackexchange.com/questions/53456/what-is-the-difference-between-nobootwait...
0

miércoles, 12 de agosto de 2020

Enviar e-mail usando telnet



Cómo conectarnos a un servidor SMTP y enviar un e-mail usando telnet, paso a paso.



Podemos probar la conectividad o el funcionamiento de un servidor SMTP mediante el uso de telnet, tanto desde Windows como desde Linux. Para ello, deberemos conectarnos al servidor SMTP y ejecutar una serie de instrucciones que nos servirán para poder enviar un e-mail de prueba.

Veamos los pasos uno a uno.

Para conectarnos al servidor SMTP de turno, normalmente deberemos conectarnos al puerto 25:

telnet smtp.dominio.com 25

El siguiente paso es saludar al servidor. Para ello debemos escribir HELO smtp.dominio.com, reemplazando smtp.dominio.com por el nombre del servidor.

HELO smtp.dominio.com 250 smtp.dominio.com Hello smtp.dominio.com ([1.2.3.4]), pleased to meet you

Si aparece un mensaje de error, probar con EHLO en lugar de HELO.

A continuación, debemos especificar el remitente (quien envía el mail) con el comando:

MAIL FROM: remitente@dominio.com

MAIL FROM: remitente@dominio.com 250 remitente@dominio.com... Sender OK

Ahora toca especificar el destinatario escribiendo:

RCPT TO: destinatario@dominio.com

RCPT TO: destinatario@dominio.com 250 destinatario@dominio.com... Recipient OK

Para redactar el cuerpo del mensaje, debemos empezar ejecutando el comando DATA:

DATA 354 Enter message, end with "." on a line by itself

En la siguiente línea, escribir "SUBJECT: " y el asunto del mail:

SUBJECT: prueba

Tras pulsar enter, ya podemos escribir el mensaje. Cuando acabemos, habrá que pulsar enter de nuevo.

Para terminar, escribir . y presionar Enter. En este punto, deberá aparecer un mensaje confirmando si el correo se aceptó o se agregó a la cola. Este mensaje varía según el servidor.

SUBJECT: prueba probando . 250 Message accepted for delivery

Todo seguido sería:

telnet smtp.dominio.com 25 Trying smtp.dominio.com... Connected to smtp.dominio.com. Escape character is '^]'. 220 smtp.dominio.com ESMTP Service (IBM Domino Release 9.0.1FP3 H HELO smtp.dominio.com 250 smtp.dominio.com Hello smtp.dominio.com ([1.2.3.4]), pleased to meet you MAIL FROM: remitente@dominio.com 250 remitente@dominio.com... Sender OK RCPT TO: destinatario@dominio.com 250 destinatario@dominio.com... Recipient OK DATA 354 Enter message, end with "." on a line by itself SUBJECT: prueba probando . 250 Message accepted for delivery Connection closed by foreign host.

Una vez aceptado el mensaje, puede que el servidor cierre la conexión automáticamente o que tengamos que cerrarla manualmente con el comando quit.
0

miércoles, 5 de agosto de 2020

Ver qué dominio valida un certificado SSL



Ver qué dominios asegura un certificado SSL con extensión .crt o .pem.



Si nos descargamos un certificado de una autoridad certificadora como por ejemplo GoDaddy, obtendremos un archivo con un nombre parecido a:

3d8b2wfe3454e.crt

Este archivo es la parte privada de un certificado SSL, el cual es usado para securizar las conexiones HTTPS de un dominio determinado.

Si acumulamos varios archivos de este tipo sin renombrarlos, puede que en un momento dado no sepamos a qué dominio hace referencia un determinado archivo .crt. Para averiguar a qué dominio hace referencia un archivo concreto, podemos usar la utilidad openssl del siguiente modo:

openssl x509 -text -in archivo.crt

Donde archivo.crt es el nombre del archivo a verificar.

El resultado de este comando producirá un output similar a este:

HOST# openssl x509 -text -in archivo.crt Certificate: Data: Version: 3 (0x2) Serial Number: ac:42:57:06:12:67:98:e7 Signature Algorithm: sha256WithRSAEncryption Issuer: C = US, ST = Arizona, L = Scottsdale, O = "GoDaddy.com, Inc.", OU = http://certs.godaddy.com/repository/, CN = Go Daddy Secure Certificate Authority - G2 Validity Not Before: Mar 27 10:27:18 2019 GMT Not After : Mar 27 10:27:18 2021 GMT Subject: OU = Domain Control Validated, CN = dominio.com Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public-Key: (2048 bit) Modulus: ...

Nos debemos fijar en la línea que dice:

Subject: OU = Domain Control Validated, CN = dominio.com

Donde "CN =" muestra el dominio para el cual es válido el certificado.

También podemos buscar el apartado siguiente:

... X509v3 Subject Alternative Name: DNS:dominio.com, DNS:www.dominio.com ...

En el apartado "X509v3 Subject Alternative Name" se nos muestra también el dominio al que hace referencia el archivo. Concatenando un grep, podemos ir directos al dominio:

HOST# openssl x509 -text -in archivo.crt | grep DNS DNS:dominio.com, DNS:www.dominio.com

En definitiva, usando openssl y filtrando por "DNS" o por "Domain Control Validated" veremos rápidamente el dominio que valida un archivo .crt (la parte privada de un certificado SSL).


Fuentes:

https://security.stackexchange.com/questions/134245/how-to-verify-which-for-domains-if-any-is...
0