Algo de Linux: marzo 2017

viernes, 17 de marzo de 2017

tr: Concatenar las líneas de un archivo en una sola

A veces, un comando no tiene un parámetro que permita tomar los datos desde un fichero y necesitamos obtener los datos del fichero en una sola línea. 
La forma más sencilla de hacerlo es usar el comando tr para transformar cada carácter de nueva línea en un espacio: tr '\n' ' ' 

Un ejemplo:
# cat /etc/dsh/machines.list | tr '\n' ' '
Publicado por primera vez en http://enavas.blogspot.com.es

nmap: Excluir del escaneo una serie de máquinas mediante un fichero

Es posible excluir del escaneo una serie de máquinas mediante un fichero si utilizamos el parámetro:
 --excludefile.

Un ejemplo:
# nmap -e eth1 -p 135 192.168.100.0/22 --excludefile=/tmp/noscan
Publicado por primera vez en http://enavas.blogspot.com.es

nmap: Detectar el sistema operativo instalado en una máquina

En versiones recientes de nmap, podemos utilizar el parámetro -A para tratar de detectar el sistema operativo instalado en una máquina. Por ejemplo:
# nmap -v -A 192.168.101.16

Starting Nmap 6.47 ( http://nmap.org ) at 2017-03-17 10:53 CET
NSE: Loaded 118 scripts for scanning.
NSE: Script Pre-scanning.
Initiating ARP Ping Scan at 10:53
Scanning 192.168.101.16 [1 port]
Completed ARP Ping Scan at 10:53, 0.22s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 10:53
Completed Parallel DNS resolution of 1 host. at 10:53, 5.50s elapsed
Initiating SYN Stealth Scan at 10:53
Scanning 192.168.101.16 [1000 ports]
Discovered open port 22/tcp on 192.168.101.16
Discovered open port 135/tcp on 192.168.101.16
Completed SYN Stealth Scan at 10:53, 19.44s elapsed (1000 total ports)
Initiating Service scan at 10:53
Scanning 2 services on 192.168.101.16
Completed Service scan at 10:53, 6.01s elapsed (2 services on 1 host)
Initiating OS detection (try #1) against 192.168.101.16
Retrying OS detection (try #2) against 192.168.101.16
NSE: Script scanning 192.168.101.16.
Initiating NSE at 10:54
Completed NSE at 10:54, 4.05s elapsed
Nmap scan report for 192.168.101.16
Host is up (0.00052s latency).
Not shown: 998 filtered ports
PORT    STATE SERVICE VERSION
22/tcp  open  ssh     OpenSSH 7.4 (protocol 2.0)
|_ssh-hostkey: ERROR: Script execution failed (use -d to debug)
135/tcp open  msrpc   Microsoft Windows RPC
MAC Address: 50:65:F3:2D:38:BB (Unknown)
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose|router|firewall
Running (JUST GUESSING): FreeBSD 6.X (93%), Juniper JUNOS 9.X|10.X|12.X (87%), m0n0wall FreeBSD (87%), Netasq embedded (87%)
OS CPE: cpe:/o:freebsd:freebsd:6.2 cpe:/o:juniper:junos:9 cpe:/o:m0n0wall:freebsd cpe:/o:juniper:junos:10 cpe:/o:juniper:junos:12 cpe:/h:netasq:u70
Aggressive OS guesses: FreeBSD 6.2-RELEASE (93%), Juniper Networks JUNOS 9.0R2.10 (87%), m0n0wall 1.3b11 - 1.3b15 FreeBSD-based firewall (87%), Juniper SRX100-series or SRX200-series firewall (JUNOS 10.4 - 12.1) (87%), Netasq U70 firewall (87%), FreeBSD 6.3-RELEASE (86%)
No exact OS matches for host (test conditions non-ideal).
Uptime guess: 1.977 days (since Wed Mar 15 11:26:54 2017)
Network Distance: 1 hop
TCP Sequence Prediction: Difficulty=259 (Good luck!)
IP ID Sequence Generation: Incremental
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows

TRACEROUTE
HOP RTT     ADDRESS
1   0.52 ms 192.168.101.16

NSE: Script Post-scanning.
Read data files from: /usr/bin/../share/nmap
OS and Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 40.27 seconds
           Raw packets sent: 3108 (141.968KB) | Rcvd: 42 (2.128KB)
En este caso, como podemos comprobar, el sistema operativo de la máquina detectada es Windows: Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows Publicado por primera vez en http://enavas.blogspot.com.es

jueves, 16 de marzo de 2017

Añadir el módulo zentyal-radius con mschap a zentyal 4.2

Por alguna razón, los desarrolladores de Zentyal decidieron quitar el soporte de radius a partir de la versión 4.0 de Zentyal Community Edition, que por cierto, en versiones posteriores pasaron a llamar Zentyal Development Edition.

Si queréis añadir el soporte para radius en versiones 4.0, 4.2 o 5.0, podéis recurrir al foro de Zentyal, donde el usuario julio tiene publicadas las instrucciones para descargar el código del módulo zentyal-radius_3.5.1, aplicarle un parche que lo adapta a las siguientes versiones y volver a construir el paquete.

Siguiendo sus instrucciones, he generado el paquete que instala el módulo en la versión 4.2 y funciona perfectamente:
# sudo apt-get install zbuildtools build-essential fakeroot dpkg-dev -y
# mkdir ~/tmp
# cd ~/tmp
# wget 'http://archive.zentyal.org/zentyal/pool/main/z/zentyal-radius/zentyal-radius_3.5.1.tar.gz' -O zentyal-radius_3.5.1.tar.gz
# tar -xf zentyal-radius_3.5.1.tar.gz
# mv zentyal-radius-3.5.1 zentyal-radius-4.2
# wget 'https://drive.google.com/uc?export=download&id=0B4_d-7xL0AS_MWRMOS10Y2c1S2s' -O zentyal-radius-4.2.patch
# patch -t -p1 -i zentyal-radius-4.2.patch
# cd zentyal-radius-4.2
# dpkg-buildpackage -rfakeroot -b -tc
# cd ..
# sudo dpkg -i zentyal-radius_4.2_all.deb
# sudo apt-get install -f -y
De este modo, podreḿos controlar qué grupo de usuarios del servidor Zentyal pueden acceder a la red vía freeradius, algo muy interesante porque vamos a poder configurar nuestro portal cautivo en pfSense para que utilice el servicio radius de Zentyal.
Publicado por primera vez en http://enavas.blogspot.com.es

miércoles, 15 de marzo de 2017

Realizar consulta para obtener usuarios, grupos y máquinas en la B.D. LDAP de Zentyal 4.2

Tengo implementado el controlador de dominio Windows mediante Zentyal 4.2. Para obtener información de usuarios en la B.D. LDAP, podemos realizar la siguiente consulta desde un terminal:
# ldapsearch -xLLL -H ldap://127.0.0.1 -D "adminies@instituto.extremadura.es" -b "cn=Users,dc=instituto,dc=extremadura,dc=es" -W
Para obtener información de grupos en la B.D. LDAP, podemos realizar la siguiente consulta desde un terminal:
# ldapsearch -xLLL -H ldap://127.0.0.1 -D "adminies@instituto.extremadura.es" -b "cn=Groups,dc=instituto,dc=extremadura,dc=es" -W
Para obtener información de máquinas en la B.D. LDAP, podemos realizar la siguiente consulta desde un terminal:
# ldapsearch -xLLL -H ldap://127.0.0.1 -D "adminies@instituto.extremadura.es" -b "cn=Computers,dc=instituto,dc=extremadura,dc=es" -W
Siendo adminies@instituto.extremadura.es un usuario administrador del dominio. Publicado por primera vez en http://enavas.blogspot.com.es

viernes, 10 de marzo de 2017

Error: VM is locked (backup) en Proxmox

Si en algún momento tratáis de hacer un backup de una máquina virtual en Proxmox y os aparece el siguiente error cuando no se está realizando ningún backup:
Error: VM is locked (backup)
Es posible que se haya producido algún error y se mantenga el bloqueo de la máquina virtual. Para eliminar dicho bloqueno no tenemos más que utilizar
# qm unlock <vmid>
Donde será el identificador de la máquina virtual a desbloquear. Por ejemplo:
# qm unlock 102
Publicado por primera vez en http://enavas.blogspot.com.es

miércoles, 8 de marzo de 2017

Instalación de OMV-Extras en OpenMediaVault 3.0

OMV-Extras.org es un plugin que nos permite, entre otras cosas:
  • Instalar otros plugins en OpenMediaVault.
  • Instalar un kernel de backports.
  • Añadir repositorios personalizados.
En este post, vamos a ver cómo instalar este plugin en OMV 3.0 desde la línea de comandos:

Primero.- Instalamos el paquete apt-transport-https, si no lo teníamos instalado aún:
# apt-get install apt-transport-https
Segundo.- Descargamos el paquete que contiene el plugin:
# wget http://omv-extras.org/openmediavault-omvextrasorg_latest_all3.deb
Tercero.- Una vez descargado, lo instalamos:
# dpkg -i openmediavault-omvextrasorg_latest_all3.deb
Cuarto.- Por último actualizamos los índices de los repositorios:
# apt-get update
Una vez hecho ésto, ya podemos buscar plugins de openmediavault:
# apt-cache search openmediavault
Publicado por primera vez en http://enavas.blogspot.com.es

Cambiar/establecer etiqueta en una partición/volumen LVM

Es muy fácil cambiar o establecer una etiqueta para una partición o volúmen LVM con tan sólo utilizar el comando e2label. Un par de ejemplos:
# e2label /dev/openmediavault-vg/backup backup
# e2label /dev/openmediavault-vg/publico publico
Publicado por primera vez en http://enavas.blogspot.com.es

viernes, 3 de marzo de 2017

Restaurar objetos de directiva de grupo

Es conveniente tener un backup de nuestros objetos de directiva de grupo, para poder restaurarlos en caso de que haya algún problema.

Primero.- Seleccionamos "Objetos de directiva de grupo":


Segundo.- Hacemos clic con el botón derecho del ratón sobre "Objetos de directiva de grupo". Se nos desplegará un menú de contexto. Haremos clic sobre la opción "Administrar copias de seguridad...":



Tercero.- Se nos mostrará un cuadro de diálogo donde seleccionaremos la ubicación de la copia de seguridad y el/los objeto/s de directiva de grupo que queramos restaurar. Una vez seleccionados, pulsaremos el botón "Restaurar":


Cuarto.- Se nos abrirá un cuadro de diálogo que nos pedirá confirmación antes de restaurar. Pulsamos en "Aceptar":


Y comenzará el proceso de restauración. Cuando termine, pulsamos el botón "Aceptar" y habremos restaurado los objetos de política de grupo seleccionados.


Publicado por primera vez en http://enavas.blogspot.com.es

Realizar un Backup de todos los objetos de directiva de grupo

Veamos cómo hacer un backup de los objetos de directiva de grupo de nuestro dominio:

Primero.- Abrimos la herramienta de administración de directivas de grupo gpmc.msc en el equipo que tiene instalado RSAT y seleccionamos "Objetos de directiva de grupo".


Segundo.- Hacemos clic con el botón derecho del ratón sobre "Objetos de directiva de grupo". En el menú de contexto hacemos clic sobre "Hacer copia de seguridad de todos..." para realizar una copia de seguridad de todos los objetos de directiva de grupo:


Tercero.- Seleccionamos la ruta donde guardar la copia de seguridad, escribimos un comentario en la "Descripción" y hacemos clic sobre el botón "Hacer copia de seguridad".


Cuando termine, pulsamos el botón "Aceptar" y listo:


Publicado por primera vez en http://enavas.blogspot.com.es

Modificación del script update.cmd para actualizar Windows en equipos Infolab sólo en un intervalo horario

En un post del viernes pasado, os mostré un script al que llamé update.cmd que me permite dos cosas:
  • Actualizar el software instalado mediante chocolatey.
  • Aplicar las actualizaciones de Windows Update descargadas mediante WSUS Offline Update en mi NAS.
Esta semana he realizado una actualización del script que tan sólo realizará la actualización del equipo si se encuentra en un determinado intervalo horario, renombrando la versión anterior como "pkgsyncwin.cmd".

La idea es dejar el script pkgsyncwin.cmd para poder lanzarlo de forma manual en cualquier momento y utilizar el script update.cmd mediante una tarea que se ejecute en el inicio de Windows. De este modo, las actualizaciones sólo se realizarán fuera del horario de "actividad".
update.cmd
@echo off

set olddir=%CD%
set hour=%TIME:~0,2%

if %hour% LSS 8 if %hour% GTR 15) (
   bcdedit /set {bootmgr} path \efi\microsoft\boot\bootmgfw.efi
   choco upgrade -y all --except=puppet

   net use t: \\nas\wsus /persistent:no
   t:
   cd client\cmd
   call DoUpdate.cmd /verify /updatecpp /updatetsc /instdotnet4
   cd /d %olddir%
   shutdown -r -t 10   
)
El script hace exactamente lo mismo que la versión anterior, sólo dentro de un horario.
Publicado por primera vez en http://enavas.blogspot.com.es

jueves, 2 de marzo de 2017

El interfaz web de Zentyal no carga después de actualizar desde la versión 4.2 a la 5.0

Por lo que he podido comprobar, parece un poco pronto para actualizar desde zentyal development edition 4.2 a 5.0, si nuestro sistema se encuentra en producción.
Uno de los errores que se han producido: El interfaz webadmin no cargaba después de actualizar de una versión a otra.
Al conectarme vía ssh al servidor Zentyal comprobé que el servicio webadmin estaba caído. ¿Cómo lo comprobamos?
# zs webadmin status
Una vez comprobado, podemos iniciarlo de la siguiente manera:
# zs webadmin start

Publicado por primera vez en http://enavas.blogspot.com.es

Eliminar un usuario local de Windows mediante Puppet

Es muy sencillo eliminar un usuario local de Windows mediante Puppet. Tan sólo tenemos que utilizar el recurso puppet "user" del mismo modo que lo hacemos con clientes Linux. Vamos a verlo con un ejemplo aplicado:

El sistema Windows de mis Infolab tiene un usuario local llamado "Usuario". Puesto que tengo un controlador de dominio para estos equipos, y, cada usuario inicia sesión con su propio login y password, no me interesa que puedan iniciar sesión con este usuario local, que, por otra parte, no tiene contraseña. Para eliminarlo, podemos utilizar el recurso user de la siguiente manera:
   user { 'Usuario':
      ensure => absent,
      managehome => true
   }
Para eliminarlo, es suficiente con definir el atributo ensure => absent.

Sin embargo, me gustaría comentar un detalle importante: Podemos utilizar el atributo managehome (y esto es aplicable tanto a clientes Linux como clientes Windows) para eliminar su home local (si estamos usando ensure => absent) o crearlo (si estamos usando ensure => present).

Una vez definido el recurso y aplicado a los clientes, podemos comprobar que el usuario se elimina:
# puppet agent -tv
Info: Caching catalog for infolab-prueba.instituto.extremadura.es Info: Applying configuration version '1488442521' Notice: /Stage[main]/Windows_users/User[Usuario]/ensure: removed Notice: Finished catalog run in 54.99 seconds
Publicado por primera vez en http://enavas.blogspot.com.es

Recuperar el gestor de arranque del DEP-Profe

Los adjudicatarios de un DEP-Profe deben solucionar los problemas de sus dispositivos. En ocasiones, se pierde el arranque dual tras las actualizaciones de Windows. En este caso, es sencillo repararlo siguiendo las instrucciones del manual creado por el CPR de Mérida:

Publicado por primera vez en http://enavas.blogspot.com.es

miércoles, 1 de marzo de 2017

Uso de barras invertidas en manifests Puppet para Windows

Cuando escribimos un fichero manifests para clientes Windows, debemos tener en cuenta lo siguiente:
  • En la mayoría de los atributos, Puppet admite tanto las barras (/) como las barras invertidas (\), si bien es cierto que algunos atributos sólo admiten las barras y otros, solamente las barras invertidas.
  • Cuando las barras invertidas se encuentran entre comillas dobles, deben ser "escapadas".
  • Cuando las barras invertidas se encuentran entre comillas simples, podemos elegir "escaparlas" o no.
Ejemplos:
file { "C:\\Windows\\System32\\pkgsyncwin.cmd": }
file { 'C:\Windows\System32\pkgsyncwin.cmd': }
file { 'C:\\Windows\\System32\\pkgsyncwin.cmd': }
Publicado por primera vez en http://enavas.blogspot.com.es

Actualizar pfSense desde la línea de comandos


Normalmente actualizamos pfSense desde el interfaz web, aunque también es posible actualizarlo desde la línea de comandos, algo realmente útil, como por ejemplo, cuando no tenemos un acceso a dicho interfaz pero sí podemos conectarnos remotamente al servidor vía ssh.

Lo primero será conectarnos vía ssh al firewall. Si necesitáis acceder a él desde las interfaces LAN, no hay problema. Pero si lo que queréis es acceder desde la WAN, tendréis que crear una regla que lo permita.

Una vez conectados, ejecutamos el comando: 
# pfSense-upgrade -d
Y comenzará el proceso de actualización. Cuando termine, se reiniciará el sistema automáticamente para aplicar los cambios.
Publicado por primera vez en http://enavas.blogspot.com.es

Copiar scripts a múltiples equipos Windows vía GPO

Aprovechando que necesitaba distribuir el script update.cmd (una especie de pkgsync para windows que me va a permitir mantener actualizados los equipos), he creado un script de inicio copyfiles.cmd con el que distribuir cualquier nuevo script a los clientes:


De este modo, cada vez que necesite distribuir un nuevo script a los clientes Windows, tan sólo tengo que colocarlo en el directorio Netlogon del controlador de dominio.
Publicado por primera vez en http://enavas.blogspot.com.es