miércoles, 4 de agosto de 2021

Error de Microsoft Teams C0070057



Cómo solucionar el error C0070057 que impide usar Microsoft Teams en Windows".



Al volver de vacaciones, encendí el PC del trabajo y al abrir Teams me encontré con este error:



Tras leer en reddit acerca de este fallo de Windows, lo que hice para solucionarlo fue ir a la opción correo electrónico y cuentas, clicando en el botón inicio y escribiendo "correo":



Cliqué sobre "Agregar una cuenta de trabajo o escuela" e introduje, de nuevo, mi cuenta de correo empresarial, para regenerar el perfil corrupto que provoca el error.

Una vez hecho esto, el pop up con el error dejó de aparecer y Teams volvió a funcionar con normalidad.
1

miércoles, 28 de julio de 2021

Replicar directorios entre 2 servidores Linux



Cómo replicar una estructura de directorios (sin archivos) entre dos servidores Linux.



Puede que necesitemos replicar una estructura de directorios entre 2 servidores Linux y que solo queramos copiar los directorios, no los archivos. En ese caso, podemos usar la herramienta rsync.

Para esta tarea, usaremos las siguientes opciones de rsync:

Copiar los directorios:

-f"+ */"

No copiar los archivos:

-f"- *"

Seguido de la ruta en origen y la ruta en destino:

HOST# rsync -av -f"+ */" -f"- *" /carpeta/ root@destino:/carpeta/

Tras ejecutar el comando anterior, el árbol de carpetas de origen, es decir, la carpeta que hemos indicado y todas sus subcarpetas, se copiarán en destino, sin los archivos que haya en su interior.

El resto de opciones de rsync significan:

-a: archive mode; es como ejecutar las opciones -rlptgoD
-v: mostrar más información por pantalla.

Rescto al parámetro -a / -rlptgoD, singifica:

-r, --recursivo: entra a los subdirectorios
-l, --links: copiar enlaces
-p, --perms: preservar pemisos
-t, --times: preservar marcas de tiempo
-g, --group: el grupo en destino es el mismo que el grupo en origen
-o, --owner: preservar el autor
-D, -devices --specials: transfiere archivos especiales
0

miércoles, 7 de julio de 2021

Aumentar tamaño de swap en Linux



Cómo aumentar el tamaño de swap por si el sistema se queda sin memoria RAM disponible.



Administro un sistema operativo Linux que corre directamente sobre una máquina física, sin ningún sistema de virtualización por en medio. Este sistema va algo corto de memoria RAM y cae a menudo.

Mientras espero la llegada de nuevos DIMM's de RAM, lo que he hecho ha sido aumentar el tamaño de swap para que pagine bajo demanda bajando a disco aquellos programas que no necesite usar en un momento dado para evitar que el sistema haga un kernel panic al no contar con la RAM necesaria.

Para aumentar el tamaño de swap en un sistema Linux, podemos aumentar la partición de swap o podemos añadir un swapfile que actúe como espacio swap. Lo más rápido es añadir un swapfile.

Para ello, creamos un directorio donde ubicar el fichero:

HOST # mkdir /swap

A continuación, creamos un swapfile de 100GB:

HOST # fallocate -l 100G /swap/swapfile

Si no disponemos de fallocate, podemos usar dd:

HOST # dd if=/dev/zero of=/swap/swapfile bs=1G count=100 100+0 records in 100+0 records out 107374182400 bytes (107 GB, 100 GiB) copied, 151.577 s, 708 MB/s

- bs indica el tamaño de los bloques a crear.
- count indica el número de bloques a crear en total.

bs * count = el número de GB del fichero.

Damos derechos de lectura/escritura/ejecución al fichero solo a root:

HOST # chmod 600 /swap/wapfile

Indicamos al sistema que el archivo es una swap area:

HOST # mkswap /swap/swapfile Setting up swapspace version 1, size = 100 GiB (107374178304 bytes) no label, UUID=37855cb5-34f6-45b6-a6a3-bdf87642abff

Activamos el fichero:

HOST # swapon /swap/swapfile

Recordar que este fichero se desactivará tras un reinicio del sistema operativo.

Por último, solo queda comprobar que swap ha aumentado su tamaño:

HOST # swapon --show NAME TYPE SIZE USED PRIO /dev/sdb3 partition 32G 0B -2 /swap/swapfile file 100G 0B -3

También podemos mirarlo con el comando free:

HOST # free -h total used free shared buff/cache available Mem: 1.3Ti 777Gi 275Gi 37Gi 324Gi 549Gi Swap: 131Gi 0B 131Gi

Si quisiéramos deshabilitar el swapfile:

HOST # swapoff /swap/swapfile

Listo.
0

miércoles, 5 de mayo de 2021

Eliminar kernels viejos en SUSE Linux



Cómo eliminar un kernel viejo de un SUSE Linux para liberar espacio.



Hoy he actualizado un SUSE Linux Enterprise Server y el sistema me ha devuelto un error indicando que faltaba espacio en disco para instalar un nuevo kernel:

... (182/184) Installing: kernel-default-5.3.18-59.19.1.x86_64 ......................................................................[error] Installation of kernel-default-5.3.18-59.19.1.x86_64 failed: Error: Subprocess failed. Error: RPM failed: installing package kernel-default-5.3.18-59.19.1.x86_64 needs 76MB on the /boot filesystem

Para hacer espacio, tenía dos opciones:

- Borrar archivos no usados.
- Añadir espacio en disco a la máquina virtual.

He optado por la primera y he eliminado el kernel antiguo:

HOST # zypper purge-kernels Reading installed packages... Preparing to purge obsolete kernels... Configuration: latest,latest-1,running Running kernel release: 4.12.14-150.32-default Running kernel arch: x86_64 Resolving package dependencies... The following package is going to be REMOVED: kernel-default-4.12.14-150.22.1 1 package to remove. After the operation, 218.7 MiB will be freed. Continue? [y/n/v/...? shows all options] (y):

Tras eliminar el kernel viejo, el nuevo kernel se ha instalado sin problemas:

HOST # zypper up Refreshing service 'Basesystem_Module_x86_64'. Refreshing service 'Containers_Module_x86_64'. Refreshing service 'Desktop_Applications_Module_x86_64'. Refreshing service 'Development_Tools_Module_x86_64'. Refreshing service 'Legacy_Module_x86_64'. Refreshing service 'Public_Cloud_Module_x86_64'. Refreshing service 'Python_2_Module_x86_64'. Refreshing service 'SUSE_Cloud_Application_Platform_Tools_Module_x86_64'. Refreshing service 'SUSE_Linux_Enterprise_Server_x86_64'. Refreshing service 'Server_Applications_Module_x86_64'. Loading repository data... Reading installed packages... The following NEW package is going to be installed: kernel-default-5.3.18-59.19.1 The following package requires a system reboot: kernel-default-5.3.18-59.19.1 1 new package to install. Overall download size: 64.2 MiB. Already cached: 0 B. After the operation, additional 148.4 MiB will be used. Note: System reboot required. Continue? [y/n/v/...? shows all options] (y): y Retrieving package kernel-default-5.3.18-59.19.1.x86_64 (1/1), 64.2 MiB (148.4 MiB unpacked) Retrieving: kernel-default-5.3.18-59.19.1.x86_64.rpm ......[done (11.7 MiB/s)] Checking for file conflicts: ...........................................[done] (1/1) Installing: kernel-default-5.3.18-59.19.1.x86_64 .................[done]

Tras esto, el nuevo kernel ha quedado instalado.
0

miércoles, 28 de abril de 2021

Rewrite de URL en NGINX



Cómo hacer un rewrite de una URL en NGINX.



Hace años, las URL solían ser del tipo:

https://www.web.com/noticias.php?id=1284

Esto pasó de moda y hoy en día es habitual que las URL sean del tipo:

https://www.web.com/noticia/1284

NGINX nos permite crear URL modernas mediante su instrucción rewrite.

Si volvemos al caso anterior, podemos lograrlo en NGINX usando este código:

rewrite ^/noticia/(.*) /noticias.php?id=$1 last;

Donde la sintaxis es:

rewrite regex replacement [flag];

- regex lee la expresión regular introducida por el usuario en la URL.
- replacement se refiere a la "parte real", los archivos del servidor con sus variables GET.
- flag: puede ser uno de estos cuatro valores

• last: deja de procesar el rewrite y busca el siguiente regex.
• break: deja de procesar el rewrite.
• redirect: realiza un redirect con código 302.
• permanent: realiza un redirect permanente con código 301.

Los rewrite se pueden emplazar dentro de un bloque location o de un bloque server en NGINX.


Fuente:

http://nginx.org/en/docs/http/ngx_http_rewrite_module.html
0

miércoles, 21 de abril de 2021

Extraer clave privada de un fichero PFX de un IIS



Comprobar si un certificado en formato PFX tiene un password asociado.



Puede que alguien nos pida instalar un certificado en un servidor Linux y que este haya generado el certificado originalmente en un servidor Windows. Desde el IIS de Windows, no se puede exportar una clave privada como .key, por lo que tendremos que dar algunos tumbos para dar con la clave privada.


Exportar clave privada (IIS)


Abrimos el Microsoft Management Console (mmc).

Ir a File > Add/Remove Snap-in.

Doble clic en Certificates.

Seleccionar Computer account.

Seleccionar Local computer y clic en Finish.

Ir a Console Root > Certificates > Certificate Enrollment Requests.

Clic derecho en el certificado y seleccionar All Tasks > Export.

Selecciona Yes, export the private key.

Selecciona Personal Information Exchange – PKCS #12.

Entra un password para proteger tu private key (obligatorio).

Seleccionar la ubicación dodne guardar la private key.

Clica Finish.

La clave privada se exporta como archivo .pfx.


Convertir .pfx a .key


Ahora toca convertir el pfx en .key. Para ello, podemos usar la utilidad openssl en Windows/Linux:

HOST# openssl pkcs12 -in archivo.pfx -nocerts -out archivo.key

Donde archivo.pfx es el origen y archivo.key el fichero que se generará.

Listo, ya tenemos el fichero .key listo para usar el certificado en un servidor que ejecute Linux.
0

miércoles, 14 de abril de 2021

Ver cuándo cambió la contraseña un usuario



Cómo ver qué día cambió la contraseña de Windows un usuario local o de dominio.



Hay ciertas situaciones en las que nos puede interesar averiguar cuándo un usuario cambió su contraseña por última vez, como por ejemplo un incidente de seguridad.

Para ver esta información desde Windows, podemos usar el comando "net user" seguido del nombre de usuario, en caso de cuentas locales.

Para averiguar lo propio en cuentas de dominio, podemos usar "net user" seguido del nombre de usuario seguido de la opción /domain.

Ejemplo de cuenta de usuario local:

C:\Users\Administrador>net user Administrador Nombre de usuario Administrador Nombre completo Comentario Cuenta integrada para la administración del equipo o dominio Comentario del usuario Código de país o región 000 (Predeterminado por el equipo) Cuenta activa No La cuenta expira Nunca Ultimo cambio de contraseña 30/03/2021 18:18:36 La contraseña expira 29/10/2021 13:33:23 Cambio de contraseña 30/03/2021 18:18:36 Contraseña requerida Sí El usuario puede cambiar la contraseña Sí Estaciones de trabajo autorizadas Todas Script de inicio de sesión Perfil de usuario Directorio principal Ultima sesión iniciada 07/12/2010 8:23:21 Horas de inicio de sesión autorizadas Todas Miembros del grupo local *Administradores Miembros del grupo global *Ninguno Se ha completado el comando correctamente.

Como se observa, el último cambio de contraseña se produjo el día 30/03/2021.
0

miércoles, 7 de abril de 2021

Actualizar versión de SSH en Linux



Cómo actualizar la versión de SSH en un servidor con Linux.



Las versiones tempranas de OpenSSH 7.x que encontramos en multitud de sistemas Linux relativamente modernos contienen bugs que hacen saltar todas las alarmas en las auditorías de seguridad, con problemas tipo "OpenSSH user enumeration vulnerability".

Para resolver estos problemas, podemos actualizar la versión de SSH compilando el código fuente de una versión superior con los pasos que mostraré a continuación.

El sistema que muestra el problema mencionado tiene la siguiente versión de SSH instalada:

HOST # ssh -V OpenSSH_7.6p1, OpenSSL 1.1.0i-fips 14 Aug 2018

Para descargar versiones más actuales de OpenSSH para Linux, podemos ir a la web de SSH:

https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/

Desde el servidor, podemos descargar una de las versiones, en este caso será la versión 8.8, con wget:

HOST # wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-8.8p1.tar.gz --2021-09-29 10:35:53-- https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-8.8p1.tar.gz Resolving cdn.openbsd.org (cdn.openbsd.org)... 151.101.130.217, 151.101.194.217, 151.101.2.217, ... Connecting to cdn.openbsd.org (cdn.openbsd.org)|151.101.130.217|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 1815060 (1.7M) [application/octet-stream] Saving to: ‘openssh-8.8p1.tar.gz’ openssh-8.8p1.tar.gz 100%[==========>] 1.73M --.-KB/s in 0.06s 2021-09-29 10:35:53 (27.5 MB/s) - ‘openssh-8.8p1.tar.gz’ saved [1815060/1815060]

Descomprimimos el fichero descargado:

HOST # tar xvf openssh-8.8p1.tar.gz

Entramos el directorio que se ha creado, con "cd openssh*".

A continuación, compilamos el código fuente:

HOST # ./configure HOST # make HOST # make install

Cuando acabe la compilación ya correrá la nueva versión de SSH en el sistema (v8.8):

HOST # ssh -V OpenSSH_8.8p1, OpenSSL 1.1.0i-fips 14 Aug 2018

A partir de este momento ya no debería saltar ningún error relativo a SSH en la siguiente auditoría.
0

miércoles, 31 de marzo de 2021

Listar usuarios locales de Windows



Ver cuentas de usuario locales de un ervidor Windows Server o de un PC de usuario..



Debido a ciertas peticiones que debía atender para una auditoría de seguridad, necesitaba listar todos los usuarios locales de un Windows Server. Para hacer esto, hay varias formas, de las cuales voy a mostrar las dos que se ejecutan vía línea de comandos: cmd y PowerShell.

cmd



Para listar los usuarios locales de un Windows mediante cmd:

C:\Users\usuario>net user Cuentas de usuario de \\WIN ------------------------------------------------------------------------------ Administrador DefaultAccount defaultuser0 Invitado Usuario WDAGUtilityAccount Se ha completado el comando correctamente.

Las cuentas de usuario se enumeran por los nombres internos que Windows usa, no por su nombre de visualización mostrado cuando se inicia sesión en Windows.


PowerShell



Si queremos listar los usuarios locales mediante PowerShell:

Get-WmiObject Win32_UserAccount -filter “LocalAccount=True” | Select-Object Name,FullName,Disabled.

Ejemplo:

PS C:\Users\usuario> Get-WmiObject Win32_UserAccount -filter "LocalAccount=True" | Select-Object Name,FullName,Disabled. Name FullName Disabled. ---- -------- --------- Administrador DefaultAccount defaultuser0 Invitado Usuario WDAGUtilityAccount

Al igual que antes, se muestran los nombres internos de Windows, no los nombres de visualización.
0

miércoles, 24 de marzo de 2021

Acceder a una carpeta compartida con samba en Linux con un usuario de Active Directory



Cómo acceder a un share de samba ubicado en Linux con un usuario de Active Directory.



Al usar Samba en un sistema Linux, podemos conectar este con el Active Directory de la organización y permitir el acceso a ciertas carpetas solo a determinados usuarios del dominio.

Primero de todo debemos instalar el paquete de Samba Client en nuestro sistema operativo a la par que el paquete krb5 y conectar el S.O. con el dominio.

El siguiente paso es configurar el apartado [global] del archivo smb.conf ubicado en /etc/samba:

[global] netbios name = nombredemaquina workgroup = DOMINIO idmap gid = 10000-20000 idmap uid = 10000-20000 kerberos method = secrets and keytab realm = DOMINIO.LOCAL security = ADS template homedir = /home/%D/%U template shell = /bin/bash winbind offline logon = yes winbind refresh tickets = yes winbind use default domain = yes

NOTA: cambiar "nombredemaquina" por el nombre real de la máquina dentro del dominio y "DOMINIO" por el nombre de dominio de la organización.

A continuación, podemos crear carpetas compartidas o shares cuya visibilidad esté restringida a ciertos usuarios, por ejemplo usuario1 y usuario2, en el archivo smb.conf:

[Nombre] path = /ruta access based share enum = yes read only = no valid users = usuario1, usuario2 create mask = 0775 directory mask = 0775

Lo más interesante de esta configuración es la opción "access based share enum". Samba, en su archivo smb.conf, permite enumerar los recursos compartidos en función de los permisos de acceso.

Si este parámetro está configurado en "yes" para un share, este solo será visible para los usuarios que hayamos definido que tengan acceso de lectura o escritura al recurso (en el ejemplo, usuario1 y usuario2. Solo estos dos usuarios serán capaces de ver la carpeta compartida).

Para esconder solamente los archivos o carpetas ubicados dentro de una carpeta compartida a usuarios que no tengan permisos de lectura o escritura:

[share] hide unreadable = yes

Tras modificar alguna de estas opciones, hace falta reiniciar el daemon de smb (systemctl restart smb).


Fuentes:

https://serverfault.com/questions/144339/hiding-samba-share-from-browse-list-for-unauthorised-users

https://superuser.com/questions/1028430/hide-samba-share-names

https://access.redhat.com/solutions/2262051

https://askubuntu.com/questions/352456/samba-setup-for-windows-domain-access

https://www.tecmint.com/create-shared-directory-on-samba-ad-dc-and-map-to-windows-linux/

https://wiki.samba.org/index.php/Setting_up_a_Share_Using_POSIX_ACLs

https://askubuntu.com/questions/102924/list-samba-shares-and-current-users

https://askubuntu.com/questions/208013/how-can-i-set-up-samba-shares-to-only-be-accessed-by...

https://community.spiceworks.com/topic/400799-linux-samba-file-server-with-ad-authentication

https://www.samba.org/samba/docs/current/man-html/smb.conf.5.html

https://serverfault.com/questions/395486/i-can-connect-to-samba-server-but-cannot-access-shares

https://unix.stackexchange.com/questions/377516/what-does-browseable-in-samba-configuration...

https://web.mit.edu/rhel-doc/4/RH-DOCS/rhel-rg-es-4/s1-samba-servers.html

http://www.bdat.net/documentos/samba/smb.conf/t1.html

https://serverfault.com/questions/562875/samba-default-file-creation-mask-calculation
0

miércoles, 17 de marzo de 2021

vCenter a través de NGINX reverse proxy



Cómo acceder a un vCenter web a través de NGINX.



Podemos acceder a un vCenter vía web con su subdominio en dominio.local, del tipo vcenter.dominio.local, pero eso llevará a que el subdominio tenga un certificado autofirmado y el navegador web se queje de ello.

Podríamos subir un certificado SSL firmado por una autoridad certificadora como GoDaddy al vSphere y solucionar el problema, pero entonces tendríamos que recordar de renovarlo cada año.

Por otro lado, podemos hacer que el acceso al vCenter pase por un reverse proxy como NGINX.

Veamos un ejemplo:

server { listen 443 ssl; server_name vcenter.dominio.com; ssl_certificate /etc/ssl/dominio.com/dominio.com.crt; ssl_certificate_key /etc/ssl/dominio.com/dominio.com.key; access_log /var/log/nginx/vcenter.dominio.com_access.log; error_log /var/log/nginx/vcenter.dominio.com_error.log; location / { proxy_set_header Host vcenter.dominio.local; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; sub_filter "vcenter.dominio.local" "vcenter.dominio.com"; proxy_pass https://vcenter.dominio.local; } }

En este ejemplo, usamos la directiva proxy_set_header Host seguida del dominio.local para forzar las peticiones hacia el dominio configurado en vSphere.

Además, usamos 'sub_filter' para filtrar las peticiones hacia dominio.local y cambiarlas por dominio.com (string original primero, reemplazo en segundo lugar).


Fuentes:

http://nginx.org/en/docs/http/ngx_http_sub_module.html#sub_filter
0

miércoles, 10 de marzo de 2021

Solucionar Windows Remote Desktop Protocol Weak Encryption Method Allowed (Qualys)



Cómo solucionar la vulnerabilidad de Windows reportada por el scanner de Qualys "Windows Remote Desktop Protocol Weak Encryption Method Allowed".



Tras escanear un host Windows con la herramienta Qualys, me encontré con la vulnerabilidad "Windows Remote Desktop Protocol Weak Encryption Method Allowed".

Ante todo, comprobé qué encriptación veía activa mediante uno de los plugins de nmap:

HOST# nmap -p 3389 --script rdp-enum-encryption 192.168.1.1 Starting Nmap 7.70 ( https://nmap.org ) at 2021-03-10 10:26 CEST Nmap scan report for host.local (192.168.1.1) Host is up (0.00058s latency). PORT STATE SERVICE 3389/tcp open ms-wbt-server | rdp-enum-encryption: | Security layer | CredSSP: SUCCESS | Native RDP: SUCCESS | SSL: SUCCESS | RDP Encryption level: Unknown |_ 128-bit RC4: SUCCESS MAC Address: 00:50:56:A6:07:15 (VMware) Nmap done: 1 IP address (1 host up) scanned in 0.77 seconds

Acto seguido, ejecuté estos comando en PowerShell:

PS C:\Users\Administrator> $RDSSettings = Get-WmiObject -class "Win32_TSGeneralSetting" -Namespace root\cimv2\terminalservices -Filter "TerminalName='RDP-tcp'" PS C:\Users\Administrator> $RDSSettings.SetEncryptionLevel(3) __GENUS : 2 __CLASS : __PARAMETERS __SUPERCLASS : __DYNASTY : __PARAMETERS __RELPATH : __PROPERTY_COUNT : 1 __DERIVATION : {} __SERVER : __NAMESPACE : __PATH : ReturnValue : PSComputerName : PS C:\Users\Administrator> $RDSSettings.SetSecurityLayer(2) __GENUS : 2 __CLASS : __PARAMETERS __SUPERCLASS : __DYNASTY : __PARAMETERS __RELPATH : __PROPERTY_COUNT : 1 __DERIVATION : {} __SERVER : __NAMESPACE : __PATH : ReturnValue : PSComputerName : PS C:\Users\Administrator>

Después de esto, volví a pasar nmap y vi lo siguiente:

HOST# nmap -p 3389 --script rdp-enum-encryption 192.168.1.1 Starting Nmap 7.70 ( https://nmap.org ) at 2021-03-10 10:28 CEST Nmap scan report for host.local (192.168.1.1) Host is up (0.00058s latency). PORT STATE SERVICE 3389/tcp open ms-wbt-server | rdp-enum-encryption: | Security layer | CredSSP: SUCCESS |_ SSL: SUCCESS MAC Address: 00:50:56:A6:07:15 (VMware) Nmap done: 1 IP address (1 host up) scanned in 0.93 seconds

Tras esto, el scanner de Qualys ya no mostró la vulnerabilidad.


Más información:

https://docs.microsoft.com/es-es/windows/win32/termserv/win32-tsgeneralsetting-setsecuritylayer
https://docs.microsoft.com/es-es/windows/win32/termserv/win32-tsgeneralsetting-setencryptionlevel
0

miércoles, 3 de marzo de 2021

Crear SNMP community en Linux



Cómo crear una comunidad SNMP en un sistema operativo Linux.



Para crear una comunidad SNMP en un sistema operativo Linux debemos editar el archivo:

/etc/snmp/snmpd.conf

Una vez dentro, hacer que la community sea read-only con el parámetro "rocommunity".

A continuación, escribir el nombre de la community (en este caso la he llamado "prueba"):

# Please see /usr/share/doc/packages/net-snmp/EXAMPLE.conf for a # more complete example and snmpd.conf(5). # # Writing is disabled by default for security reasons. If you'd like # to enable it uncomment the rwcommunity line and change the community # name to something nominally secure (keeping in mind that this is # transmitted in clear text). # don't use ' < > in strings for syslocation or syscontact # Note that if you define the following here you won't be able to change # them with snmpset syslocation Server Room syscontact Sysadmin (root@localhost) # These really aren't meant for production use. They include all MIBS # and can use considerable resources. See snmpd.conf(5) for information # on setting up groups and limiting MIBS. rocommunity prueba # rwcommunity mysecret 127.0.0.1

Por último, reiniciar el daemon de snmp:

HOST# service snmpd restart

Tras esto, ya se debería poder acceder a la community "prueba" en este servidor.
0

miércoles, 24 de febrero de 2021

Forzar PC a conectarse a un DC específico



Forzar a qué Domain Controller / Active Directory / Directorio Activo se autentica el ordenador o PC de un usuario de una organización o empresa.



En las organizaciones que tienen varios controladores de dominio, los inicios de sesión de máquina y de usuario se reparten entre ellos. Esto hace que dos máquinas de una misma sede puedan estar autenticadas en diferentes controladores de dominio.

En otra entrada ya dije cómo averiguar en qué controlador de dominio se ha autenticado una máquina. Ahora mostraré como forzar que una máquina se autentique contra el controlador de dominio que le especifiquemos nosotros manualmente.

Para forzar la autenticación de una máquina:

1. Abrir cmd.exe
2. Ejecutar la siguiente instrucción:

nltest /SC_RESET:dominio.local\SERVIDORDC

Donde dominio.local es el dominio de la organización y SERVIDORDC el nombre de máquina del servidor DC (Domain Controller) en el que queramos que la máquina se autentique.
0

miércoles, 17 de febrero de 2021

cifs_mount failed w/return code = -512



Resolver cifs_mount error 512



Hoy me ha tocado montar en un Linux una carpeta compartida desde un Windows Server 2003 (sí, lo se, debería ser delito tener un Windows Server 2003 corriendo en 2021).

He tratado de montar la carpeta compartida con este comando:

mount -t cifs -o username=usuario,password=password //192.168.1.1/carpeta /carpeta/en/linux

El comando se quedaba cargando infinitamente, así que le he metido verbosidad con:

mount -t cifs -o username=usuario,password=password //192.168.1.1/carpeta /carpeta/en/linux --verbose

pero cifs no me ha mostrado nada.

Llegados a este punto, me he ido a /var/log/messages y he visto el siguiente mensaje:

CIFS: Attempting to mount //192.168.1.1/carpeta No dialect specified on mount. Default has changed to a more secure dialect, SMB2.1 or later (e.g. SMB3), from CIFS (SMB1). To use the less secure SMB1 dialect to access old servers which do not support SMB3 (or SMB2.1) specify vers=1.0 on mount. CIFS VFS: Cancelling wait for mid 0 cmd: 0 CIFS VFS: cifs_mount failed w/return code = -512

He probado a forzar la versión de Samba a 1.0 del siguiente modo:

mount -t cifs -o vers=1.0,username=usuario,password=password //192.168.1.1/carpeta /carpeta/en/linux

Y la carpeta ha montado sin problemas.
0

miércoles, 10 de febrero de 2021

Presentar un nuevo volumen a una EC2 Linux



Cómo presentar un nuevo disco o volumen a una EC2 Linux.



La situación es la siguiente: tenemos una instancia (o máquina virtual) Linux en AWS y queremos presentarle un nuevo disco o volumen EBS para montarlo en una carpeta y almacenar ficheros en él.

Primero de todo, creamos un nuevo volumen en la consola de AWS con el tamaño que necesitemos (luego se puede ampliar) y lo adjuntamos a la instancia EC2 en cuestión.

Lo podemos ver ahora en la instancia ejecutando el comando lsblk como xvdb:

HOST# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda 202:0 0 300G 0 disk ├─xvda1 202:1 0 2M 0 part ├─xvda2 202:2 0 20M 0 part /boot/efi └─xvda3 202:3 0 300G 0 part / xvdb 202:16 0 1.5T 0 disk

A continuación, formateamos el volumen. En este caso, lo he formateado a XFS:

HOST# mkfs -t xfs /dev/xvdb meta-data=/dev/xvdb isize=512 agcount=4, agsize=98304000 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=1, sparse=0, rmapbt=0 = reflink=0 data = bsize=4096 blocks=393216000, imaxpct=5 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0, ftype=1 log =internal log bsize=4096 blocks=192000, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0

En este punto, ya podemos crear el directorio donde se montará el disco (/oradata):

HOST# mkdir /oradata

Monto el disco sobre la carpeta:

HOST# mount /dev/xvdb /oradata

Compruebo que el disco esté montado sobre el directorio en cuestión mediante df:

HOST# df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 16G 4.0K 16G 1% /dev tmpfs 16G 0 16G 0% /dev/shm tmpfs 16G 353M 16G 3% /run tmpfs 16G 0 16G 0% /sys/fs/cgroup /dev/xvda3 300G 57G 244G 19% / /dev/xvda2 20M 142K 20M 1% /boot/efi tmpfs 3.2G 0 3.2G 0% /run/user/1000 /dev/xvdb 1.5T 1.6G 1.5T 1% /oradata

Se observa que /dev/xvdb está montado sobre /oradata.

Llegados aquí, toca hacer que el montaje sea persistente. Para ello, miramos el ID del volumen con blkid:

HOST# blkid /dev/xvda1: PARTLABEL="p.legacy" PARTUUID="73cfc22b-6651-4fa1-9cee-04818d0607be" /dev/xvda2: SEC_TYPE="msdos" LABEL_FATBOOT="EFI" LABEL="EFI" UUID="564C-A498" TYPE="vfat" PARTLABEL="p.UEFI" PARTUUID="2d0407cf-5df1-4ff4-9c7f-5796c942fd32" /dev/xvda3: LABEL="ROOT" UUID="15991bdf-394d-4e90-b988-5061b112debe" TYPE="xfs" PARTLABEL="p.lxroot" PARTUUID="0e94321a-99d8-4a89-8b3e-ee0ffaad835c" /dev/xvdb: UUID="3a21705d-ad34-4ce2-94ab-9df6edcc727d" TYPE="xfs"

Vemos el ID de xvdb en la última línea.

Ahora, modifico el archivo /etc/fstab para que el volumen se monte automáticamente tras un reinicio:

HOST# vi /etc/fstab

El archivo /etc/fstab queda así:

LABEL=ROOT / xfs defaults 0 0 LABEL=EFI /boot/efi vfat defaults 0 0 UUID="3a21705d-ad34-4ce2-94ab-9df6edcc727d" /oradata xfs defaults 0 0

Por último, podemos probar a desmontar /oradata y montarlo automáticamente siguiendo los puntos de montaje presentes en /etc/fstab para emular el comportamiento tras un reinicio de la instancia:

HOST# umount /oradata

Ahora monto todas las particiones automáticamente:

HOST# mount -a

Y compruebo que el disco esté montado usando df:

HOST# df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 16G 4.0K 16G 1% /dev tmpfs 16G 0 16G 0% /dev/shm tmpfs 16G 353M 16G 3% /run tmpfs 16G 0 16G 0% /sys/fs/cgroup /dev/xvda3 300G 57G 244G 19% / /dev/xvda2 20M 142K 20M 1% /boot/efi tmpfs 3.2G 0 3.2G 0% /run/user/1000 /dev/xvdb 1.5T 1.6G 1.5T 1% /oradata


Fuentes:

https://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/ebs-using-volumes.html
0

miércoles, 3 de febrero de 2021

Listar carpetas compartidas por samba



¿Cómo listar las carpetas compartidas por samba en un servidor remoto?



Si queremos listar las carpetas que un servidor remoto está compartiendo en red, podemos usar smblcient para ello desde la terminal de un Linux.

HOST# smbclient -L 192.168.1.1 Enter WORKGROUP\root's password: Sharename Type Comment --------- ---- ------- profiles Disk Network Profiles Service users Disk All users groups Disk All groups print$ Disk Printer Drivers IPC$ IPC IPC Service (Samba 4.11.14-git.247.8c858f7ee144.19.1-SUSE-oS15.0-x86_64) SMB1 disabled -- no workgroup available

192.168.1.1 es la IP del servidor que está publicando carpetas en red.

El nombre de cada carpeta es cada una de las líneas de la columna sharename.
0

miércoles, 27 de enero de 2021

Averiguar a qué DC se ha autenticado una máquina



¿A qué Domain Controller / Active Directory / Directorio Activo se ha autenticado una máquina de una organización cuando ha iniciado sesión en su sistema operativo Windows?



En las organizaciones que tienen varios Domain Controllers, los inicios de sesión de máquina y de usuario se reparten entre ellos para balancear la carga. Esto hace que dos máquinas de una misma sede puedan estar autenticadas en diferentes controladores de dominio.

Para ver a qué directorio activo se ha conectado una máquina para recibir sus GPO, podemos usar el siguiente comando en una ventana de cmd:

nltest /DSGETDC:

Esto nos dará información sobre el DC en el que se ha conectado la máquina, por ejemplo:

C:\Users\usuario>nltest /DSGETDC: DC: \\USA-DC01.dominio.local Dirección: \\192.168.1.4 GUID del DOM: c95a30af-2af1-cf3c-a4fa-cfbe3b776daf Nombre del DOM: dominio.local Nombre del bosque: dominio.local Nombre de sitio DC: USA Nuestro nombre de sitio: USA Marcas: GC DS LDAP KDC TIMESERV WRITABLE DNS_DC DNS_DOMAIN DNS_FOREST CLOSE_SITE FULL_SECRET WS DS_8 DS_9 DS_10 El comando se completó correctamente

En el resultado del comando podemos ver el nombre de máquina del controlador de dominio, su IP, el nombre del dominio, etc.
0

miércoles, 20 de enero de 2021

Instalar vmware tools en SUSE Linux



Cómo instalar vmware tools en un SLES (SUSE Linux Enterprise Server).



Me acabo de descargar la última versión de SUSE Linux Enterprise Server 15 SP2 y he creado una plantilla en vmware para desplegar máquinas a partir de ella.

Ahora, el vCenter me indica que el sistema operativo no tiene instaladas las vmware tools.

He tratado de instalar las "open vm tools" como de costumbre:

HOST# zypper install open-vm-tools zypper in open Refreshing service 'Basesystem_Module_15_SP2_x86_64'. Refreshing service 'Desktop_Applications_Module_15_SP2_x86_64'. Refreshing service 'Development_Tools_Module_15_SP2_x86_64'. Refreshing service 'Python_2_Module_15_SP2_x86_64'. Refreshing service 'SUSE_Linux_Enterprise_Server_15_SP2_x86_64'. Refreshing service 'SUSE_Package_Hub_15_SP2_x86_64'. Refreshing service 'Server_Applications_Module_15_SP2_x86_64'. Refreshing service 'Web_and_Scripting_Module_15_SP2_x86_64'. Loading repository data... Reading installed packages... 'open' not found in package names. Trying capabilities. No provider of 'open-vm-tools' found. Resolving package dependencies... Nothing to do.

Esta vez no ha funcionado.

Tras darle algunas vueltas, he hecho lo siguiente:

HOST# zypper install open-vm-tools* Refreshing service 'Basesystem_Module_15_SP2_x86_64'. Refreshing service 'SUSE_Linux_Enterprise_Server_15_SP2_x86_64'. Refreshing service 'Server_Applications_Module_15_SP2_x86_64'. Loading repository data... Reading installed packages... 'open-vm-tools' providing '*vm-tools*' is already installed. No update candidate for 'open-vm-tools-11.2.5-4.12.1.x86_64'. The highest available version is already installed. Resolving package dependencies... The following NEW package is going to be installed: open-vm-tools-sdmp 1 new package to install. Overall download size: 44.4 KiB. Already cached: 0 B. After the operation, additional 31.6 KiB will be used. Continue? [y/n/v/...? shows all options] (y): y Retrieving package open-vm-tools-sdmp-11.2.5-4.12.1.x86_64 (1/1), 44.4 KiB ( 31.6 KiB unpacked) Retrieving: open-vm-tools-sdmp-11.2.5-4.12.1.x86_64.rpm ...............[done] Checking for file conflicts: ..........................................[done] (1/1) Installing: open-vm-tools-sdmp-11.2.5-4.12.1.x86_64 .............[done]

Tras instalar este paquete con un wildcard al final (*), el sistema ha encontrado un paquete con la coletilla "sdmp". Lo he instalado y vmware ya no se ha quejado más.
0

miércoles, 13 de enero de 2021

No matching host key type found



Cómo solucionar el error "no matching host key type found. Their offer: ssh-dss".



Tuve que crear un script que se conectara a un host externo vía SSH. Al probar la conexión manualmente para ver que podía establecerse, me encontré con el siguiente problema:

HOST # sftp usuario@host Unable to negotiate with 1.2.3.4 port 22: no matching host key type found. Their offer: ssh-dss Connection closed

Parece que el otro extremo corre una versión antigua (muy antigua) de OpenSSH, por lo que hay que indicarle explícitamente a la última versión de OpenSSH (es decir, la versión que ejecutamos en nuestro host) que use el algortimo "ssh-dss" para establecer la conexión.

Para ello, deberemos usar una opción en el comando ssh (las opciones se añaden con el parámetro -o seguido de la opción que querramos añadir) del siguiente modo:

-oHostKeyAlgorithms=+ssh-dss

De esta forma, el comnando completo queda así:

HOST # sftp -oHostKeyAlgorithms=+ssh-dss usuario@host

Tras usar el comando ssh con el parámetro indicado, ya podremos establecer la conexión con el host en cuestión con normalidad y ya no nos saltará el mensaje de error.

Como curiosidad, si queremos averiguar qué versión de OpenSSH corre en el otro extremo, podemos usar la opción "-vvv" de ssh para ver las versiones local y remota:

debug1: Local version string SSH-2.0-OpenSSH_8.4 debug1: Remote protocol version 2.0, remote software version OpenSSH_6.2p2+sftpfilecontrol-v1.3-hpn13v12
0

miércoles, 6 de enero de 2021

Averiguar a qué DC se ha autenticado un usuario



¿A qué Domain Controller / Active Directory / Directorio Activo se ha autenticado un usuario de una organización cuando ha iniciado sesión en su sistema operativo Windows?



Si trabajamos en una organización que tenga varios Domain Controllers, puede resultarnos útil saber en cual de ellos ha iniciado sesión un usuario determinado con el fin de resolver problemas en el inicio de sesión de esa cuenta de usuario, por ejemplo.

Averiguar a qué directorio activo ha iniciado sesión un usuario al introducir sus credenciales en el inicio de sesión de Windows es posible mediante una variable de sistema de Windows llamada %logonserver%.

Para ver el contenido de la variable %logonserver% podemos usar la sentencia:

echo %logonserver%

Esto nos devolverá el nombre de máquina del directorio activo donde el usuario ha iniciado sesión.

Un ejemplo de output del comando en una ventana de cmd podría ser:

C:\Users\usuario>echo %logonserver% \\USA-DC01

En este caso, el directorio activo en cuestión sería el USA-DC01.


Alternativa



Alternativamente, podemos usar el comando "set L":

C:\Users\usuario>set L LOCALAPPDATA=C:\Users\usuario\AppData\Local LOGONSERVER=\\USA-DC01

Como vemos, este comando muestra también la variable LOGONSERVER.
0