Mostrando entradas con la etiqueta Infraestructura. Mostrar todas las entradas
Mostrando entradas con la etiqueta Infraestructura. Mostrar todas las entradas

miércoles, 29 de mayo de 2019

Docker en Debian 9 Stretch



Docker:

Docker es un proyecto de código abierto con el cuál podemos crear contenedores.

Un contenedor es un prisma rectangular de gran tamaño que suelen utilizar los barcos para transportar mercaderías y suele tener dentro distintos tipos de productos. Docker vendría a ser como el transportador de esos containers, es decir el barco.

Llevado a la informática se utiliza para que aplicaciones de software puedan ejecutarse en cualquier máquina, independizandose del sistema operativo.

Es una especie de empaquetado de sofware que se puede llevar de un lado a otro.

Docker permite meter todo lo que se necesite para que una aplicación funcione y se ejecute correctamente.
Por ejemplo debe contener algo como: java, tomcat, nginx, la aplicación en si misma, librerias, binarios y todo lo que necesite para funcionar.

Si llevo ese contenedor a otro servidor donde esté docker instalado debería funcionar correctamente.


Docker Hub:

Es un repositorio donde los usuarios de docker y los partners crean, testean, guardan y distribuyen imagenes de contenedores.

Es un lugar de donde me puedo bajar contenedores ya armados y listos para usar. Por ejemplo un debian oficial, un linux customizado, un ubuntu con paquetes ya instalados, un webserver ya listo para usarse, etc.


Docker Files:

Se pueden crear imágenes a partir de un archivo llamado Dockerfile.


Instalando docker:
apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian stretch stable"
apt-get update
apt-get install docker-ce 


Verificamos que Docker se este ejecutando:
/etc/init.d/docker status




Vemos todas las imágenes de debian en dockerhub:
docker search debian



Si quiero descargar una imagen utilizo el docker pull:
docker pull debian



Para ver las imagenes que tengo ya descargadas:
docker images



Ver contenedores ejecutando:

No tenemos contenedores corriendo, por ahora solo lo descargamos.

docker ps



Ejecutar un contenedor:

Utilizaremos la imagen de debian oficial que bajamos anteriormente con el comando pull:

Utilizaremos losbparámetros -t de tty y el -i de interactivo y le decimos que ejecute un bash. Vemos como nos cambió el prompt:

docker run -t -i debian /bin/bash



Instalamos paquetes en el container:

Hacemos un update de los repositorios e instalamos nginx, wget y vim.

root@1363037a2fad:/# apt-get update && apt-get -y install wget vim nginx



Tener en cuenta que puedo salir del contenedor con exit ó Ctrl+d pero dejará de ejecutarse el contenedor.

Si quisiera volver a tener el mismo container corriendo tendría que volver a instalar todo lo que instalé antes ya que no guarde los cambios en una imagen.

Para guardar esos cambios en una imagen primero debo salir sin matar el contenedor, para eso ejecutamos Ctrl+p+q y veremos que vuelve el prompt.



Si ahora ejecutamos el comando docker ps veremos que sigue corriendo ese container:

docker ps



Crear una imagen:

Ahora voy a guardar la imagen modificada, pero con otro nombre.

Primero obtenemos el ID del contenedor en ejecución (f5b9be35915d) con el comando "docker ps".

Guardaremos los cambios en una nueva imagen llamada nginx-debian:1.0. Esto lo hacemos con "docker commit [id-del-contenedor] [nombre-nueva-imagen] por ejemplo:

docker commit f5b9be35915d nginx-debian:1.0



Verificamos la creacion de la imagen:

root@debian:~# docker images



Salimos de un contenedor sin que quede en ejecución:

Primero verificamos que no hay contenedor corriendo:

docker ps

Verificamos que imagenes podemos usar para crear un contenedor:

docker images 

Iniciar un contenedor interactivo con la imagen que guardamos previamente llamada nginx-debian versión 1.0:

docker run -it nginx-debian:1.0

Salimos del contenedor con exit ó con Ctrl+d:

root@8c80b4f2c09e:/# exit

Verificamos que el contenedor no está corriendo:

docker ps



Si quiero borrar una imagen hacemos lo siguiente:

Vemos las imágenes disponibles:

docker images

Eliminamos la imagen nginx-debian v1.0:

docker rmi -f nginx-debian:1.0

Volvemos a ver que fue eliminada:

docker images




Creando una imagen con Dockerfile:

Creamos la carpeta y archivo Cockerfile y lo editamos:
mkdir -p /var/Dockerfile/nginx
vi /var/Dockerfile/nginx/Dockerfile

Dentro ponemos lo siguiente, este archivo debería utilizar un contenedor debian, indica que Hernan es el que la mantiene, actualiza los repo, instala en nginx lo expone en el puerto 8888 e inicia el demonio del nginx:
FROM debian
MAINTAINER HERNAN
RUN apt-get update && apt-get install -y nginx && apt clean
EXPOSE 8888
RUN /etc/init.d/nginx start

Ejecutamos el build posicionandonos donde está el docker file:
cd /var/Dockerfile/nginx/
docker build . 



Verificamos las imagenes:

root@debian:~# docker images
REPOSITORY                           TAG                 IMAGE ID            CREATED             SIZE
debian-apache                        latest              af0593cb85eb        59 seconds ago      225MB
debian                               latest              8d31923452f8        3 weeks ago         101MB

Vemos que no hay nada corriendo, ejecutamos la imagen debian-apache y verificamos que ahora corre:

root@debian:~# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

root@debian:~#
root@debian:~# docker run -p 8181:80 debian-apache-bis /usr/sbin/apache2ctl -D FOREGROUND
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message



Si ingresamos a la ip del docker, no la del contenedor, deberíamos ingresar al puerto 8181 y nos reenviaría al apache 80 del contenedor:

http://debian:8181/


Matamos el contenedor que habia quedado corriendo:

root@debian:~# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED                                                          STATUS              PORTS                          NAMES
68c121179ab3        debian-apache-bis   "/usr/sbin/apache2ct…"   12 minutes ago                                                   Up 12 minutes       81/tcp, 0.0.0.0:8181->80/tcp   vigorous_benz
root@debian:~# docker kill 68c121179ab3

lunes, 4 de febrero de 2019

Modificar Active Directory desde Linux

El siguiente script es utilizado para modificar la descripción de un usuario de Active Directory de Windows desde un Linux con el comando ldapmodify.

El script crea un archivo llamado entrymods con formato ldif para luego importarlo, finalmente lo borra.

Acá el script y luego lo explicaré linea por linea:

#!/bin/bash
if [ $# -ne 3 ]
then
       echo "Cantidad de parametros incorrecta"
       echo "Uso del Script: $0 [Apellido] [Nombre] [descripcion]"
       echo "Ejemplo: $0 Martinez Diego Mi_Descrip"
       exit
fi
if [ "$1" != "Cacheuta" -a "$1" != "Perez" -a "$1" != "Martinez" ]
then
 echo "Usuario Incorrecto, no tiene permisos o esta mal escrito: (Cacheuta, Perez ó Martinez)"
 exit
fi
rm -rf /tmp/entrymods
echo dn: CN=$1 $2,OU=Sistemas,OU=Users,OU=España,OU=Europa,DC=redes,DC=seguridad,DC=com >> /tmp/entrymods
echo changetype: modify >> /tmp/entrymods
echo replace: description >> /tmp/entrymods
echo description: $3 >> /tmp/entrymods
ldapmodify -h mi_domain_controller -D "mi_user@redes.seguridad.com" -w "Clave_de_mi_user" -f /tmp/entrymods
rm -rf /tmp/entrymods

Explicación del script:

 El primer if testea si la cantidad de parámetros que recibe el script es igual a 3. Se debe enviar como parámetro el Apellido, Nombre y la Descripción que querémos que le ponga al usuario con el Apellido indicado.

El segundo if verifica si los usuarios a modificar corresponde con alguno de esos 3, es decir sólo a estos 3 usuarios podré modificar su descripción: Cacheuta, Perez y Martinez.

Luego borro el temporal de ldif en caso que exista, a continuación creo uno nuevo, donde le especifico la Unidad Organizativa donde están dichos usuarios a modificar, le especifico que voy a modificar y lo que voy a reemplazar es la descripción del usuario.

Ejecuto el ldapmodify específicandole el nombre ó la ip del domain controller, un usuario con permisos para modificar el Active Directory, la password del usuario para modificar el AD y el archivo LDIF generado previamente.

Al final vuelvo a borrar el archivo temporal.

Le damos permisos al script para que cualquiera pueda ejecutar:

# chmod a+x /ruta/del/script/modifica_descripcion.sh

Ejecutamos el script pasandoles los parámetros:


/ruta/del/script/modifica_descripcion.sh Cacheuta Diego Administracion

Agregamos al webmin para que pueda ejecutarlo el usuario deseado:

http://redes-seguridad.blogspot.com/2012/11/permisos-script-en-webmin.html

miércoles, 2 de enero de 2019

Conectar con SSH sin clave pública/privada - SSHpass


Qué es SSHpass:

     Cuando utilizamos SSH para conectarnos de un servidor a otro utilizamos un usuario y una contraseña.
   
     Usualmente podemos generar un par de claves pública y privada para que no nos solicite la contraseña. En el caso que no deseemos utilizar estas claves podremos utilizar el SSHPASS que nos servirá para pasar la contraseña por parámetro.

     Esta herramienta podemos utilizarla por ejemplo para poner dentro de scripts sin que tener que configurar las keys SSH.

     También explicaré como utilizar GPG para encriptar la clave y que no quede en texto plano en un archivo.

Instalar el sshpass:
root@debian:~# apt-get install sshpass

Ingresar pasando el password sin tener keys ssh:
root@debian:~# sshpass -p 'Mi_password' ssh 192.168.0.200

Poner la clave dentro de un archivo:
root@debian:~# echo 'Mi_password' > pass.txt
root@debian:~# sshpass -f pass.txt ssh 192.168.0.200

Tener en cuenta para darle permisos de lectura solo al owner, para que nadie más pueda leer la clave.
root@debian:~# chmod 0400 pass.txt

Encriptar el archivo de contraseña con gpg:
root@debian:~# gpg -c pass.txt

Ingresamos una passphrase que nos solicita y la confirmamos. Esto nos genera un archivo .gpg

root@debian:~# ls -lat pass.txt.gpg
-rw-r--r-- 1 root root 94 ene  2 11:15 pass.txt.gpg

Eliminamos el que no está encriptado:

root@debian:~# rm -rf pass.txt

Usamos el sshpass con la clave encriptada:
root@debian:~# gpg -d -q pass.txt.gpg > pass.txt; sshpass -f pass.txt ssh 192.168.0.200; rm pass.txt

sábado, 15 de septiembre de 2018

jueves, 13 de septiembre de 2018

09 - Bootear ISO desde iDrac de Dell EMC PowerEdge R740

Lo que más me gusta del iDrac es que no tenemos que estar físicamente frente al servidor para instalar el sistema operativo. En la entrada previa expliqué como configurar el iDrac y pueden verlo en el siguiente enlace: http://redes-seguridad.blogspot.com/2018/09/08-configuracion-de-idrac.html

Antes de empezar la instalación voy a deshabilitar el booteo PXE, nos logueamos por web al iDRAC con la ip que nos dio anteriormente el DHCP ó la que hemos configurado como ip fija.

Hacemos click en la consola virtual como indica la siguiente imagen:


Nos pide descargar el viewer.jnlp, el cuál le damos "Guardar" y abriremos desde las descargas del navegador.


Nos mostrará otra ventana con una advertencia de seguridad, le damos continuar:


Tildamos la opción para que no la vuelva a mostrar y Ejecutar:


Ejecutar nuevamente:


Vemos la consola del server sin estar en frente de él físicamente:


Vemos que al bootear en la ventana previa intenta hacerlo primero por PXE, para deshabilitarlo también podemos hacerlo directamente de esta ventana. Click sobre "Siguiente Inicio" => "Configuración del BIOS":


Aceptar y luego reiniciar el equipo:


Alimentación => Restablecer el sistema


Damos que si y se reiniciará el servidor:


Luego del reinicio vemos que directamente ingresa a la configuración del BIOS sin teclear ninguna letra, click sobre "System BIOS"


Boot Settings:


UEFI Boot Settings:


Destildamos la opción PXE como indica la imagen siguiente:


Click arriba a la derecha en "Exit" y le damos "Yes" para que guarde los cambios:


Los cambios fueron guardados OK => Finish => Yes y se reiniciará el equipo:


Vemos que ahora NO nos aparece el booteo "Booting from PXE":


Ya deshabilitado el PXE vamos a bootear con la ISO del VMware desde la consola virtual, vamos a "Medios virtuales" => "Conectar medios virtuales"


Nuevamente => "Medios virtuales" => "Asignar CD/DVD":


Elegimos una unidad virtual, en mi caso D: => "Explorar":


Seleccionamos la ISO del VMware 6.7, tener en cuenta que esta está customizada para servidores Dell:


Asignamos el dispositivo:


Ahora configuramos el booteo desde la ISO virtual => "Siguiente inicio" => CD/DVD/ISO virtual:


Damos => "Aceptar":


Reiniciamos el equipo mediante la siguiente imagen. Al pedir confirmación le damos que SI.


Esperamos el reinicio y vemos que cuando comienza el booteo sin tocar absolutamente ninguna letra bootea desde el Virtual CD:


Ver que comienza el booteo del ESXi:


Damos (Enter Continue) y hasta acá llegaré con esta entrada, la instalación la veremos en el siguiente post.


Acá les dejo un video de cómo deshabilitar el PXE de los pasos previos, posteriormente haré otro video para el booteo y la instalación del ESX.




lunes, 10 de septiembre de 2018

08 - EMC Dell PowerEdge R740 iDrac configuration

Vemos que por defecto el iDrac tiene configurado DHCP, si tenemos un servidor de DHCP en nuestra red directamente accedemos a la ip que muestra por pantalla, en cambio si queremos configurarle ip fija para ingresar al iDrac presionamos F10.


Por primera vez nos pedirá acceso con usuario: root y la clave está por defecto debajo de la etiqueta del service TAG donde figura el número 4 en la siguiente imagen:


Esta etiqueta podemos identificarla del lado derecho del server abajo, en la próxima figura es el punto número 6:


Debemos tener en cuenta que la clave para acceder por web está debajo de la etiqueta:


Ya tenemos el usuario: root, la clave que figura debajo de la etiqueta del Service TAG y la ip que la brinda el DHCP, así que ingresamos directamente por la url con: https://ip_del_idrac:


Ni bien nos logueamos nos pedirá restablecer la contraseña, si no nos lo pide podremos ir a la flecha hacia abajo donde dice iDRAC Settings como muestra la siguiente imagen:


Users:


Edit:


Y cambiamos acá la contraseña. También podemos configurar Keys SSH ó Smart Card, SNMP, etc.