1/9/20

Alertas vía mail de espacio en disco en Windows con Powershell

El siguiente es un script al que en su momento le saque mucho provecho y había olvidado que lo tenia. Su función es verificar diariamente (mediante una tarea programada) el espacio libre disponible y en caso de que dicho espacio sea menor al umbral definido envía una alerta vía mail con el detalle. Adicionalmente en cada ejecución guarda un log.

El mismo está pensado para envíos desde cuentas Office365 pero es fácilmente adaptable a otras cuentas.


2/5/20

Personalizar Apache Guacamole Guacamole

En artículos anteriores vimos como montar un servicio de puerta de enlace de escritorio remoto vía web con Apache Guacamole, todo sobre Docker, con SSL y autentificación en dos pasos.

Si seguiste esos artículos y se lo mostrarte a tu jefe, de seguro todas maravillosas prestaciones del producto quedaron apocadas por comentarios chistosos/despectivos sobre el nombre, el logo y el contexto de la url. Así que en este articulo solucionaremos todas esas quejas y pasaremos de esto:

A algo como esto:


Cambiar la URL:
La manera como yo la hago es muy sencilla y consiste solo en ingresar al contenedor borrar la carpeta "ROOT" del tomcat y renombrar la carpeta "guacamole" a "ROOT", haciendo esto mi dominio pasa a apuntar directamente al Apache Guacamole sin necesidad de agregar el contexto, es decir:
  • Antes: https://midominio.algo/guacamole
  • Después: https://midominio.algo
Si por el contrario solo quieres renombrar el contexto de la url de "/guacamole" a "/otracosa", solo debes eliminar "ROOT" (opcional pero recomendable) y renombrar "guacamole" a "otracosa".

Como sabrás hacer este cambio en docker es solo temporal y durará hasta que se actualice la imagen, a menos que le hagas un docker commit, lo cual genera una nueva imagen y posteriormente cambies en el docker-compose.yml la imagen oficial de guacamole por tu nueva imagen creada, lo cual yo no recomiendo hacer. Mi sugerencia es que se armen un pequeño script como el siguiente:



Y así si en algún momento se pierde el cambio solo corren el script y listo, ni siquiera es necesario reiniciar el contenedor. 

Cambiar Logo y Nombre: 
Para esto utilizaremos un plugin, el cual antes de pasarlo al servidor lo deben descargar en un PC:

descargar

Logo:
Abran el archivo branding.jar con 7-zip; van a la carpeta "images" y allí verán un archivo de nombre logo-place-holder.png, el cual deben reemplazarlo con el logo que deseen; es recomendable mantener el mismo nombre de archivo así no hace falta modificar nada más.


Por ultimo para ir ajustando el tamaño de la imagen tienen que ir modificando los siguientes valores en el archivo login-override.css:


Nombre:
Ingresamos a la carpeta "translations", hacemos una copia del archivo en.json, y creamos uno nuevo llamado es.json con el siguiente contenido:

Reemplacen "RD Gateway" con el nombre que quiera.

Ahora abran el archivo "guac-manifest.json" y cambian para que lea el archivo de traducción correcto:



Subir el archivo al servidor:
Ya con el cambio de logo y nombre realizado, suban el archivo al servidor alojandolo en la carpeta de las extensiones la cual si siguieron mis artículos anteriores seria: /docker/guacamole/config/extensions y reinicien el contenedor de Guacamole.

1/5/20

Apache Guacamole en Docker con certificado SSL de Let's Encrypt

En un articulo anterior les mostré como montar un servicio de puerta de enlace de escritorio remoto vía web con Apache Guacamole, todo sobre Docker, en este articulo vamos a añadir otra capa de seguridad sumando dos contenedores adicionales, un nginx proxy y un companion que se encarga de generar un certificado SSL de Let's Encrypt y mantenerlo actualizado.

A considerar antes de iniciar:
  • NOTA1: Debemos contar con un dominio o un DDNS.
  • NOTA2: Si ya siguieron el tutorial anterior tienen dos opciones... Borrarlo todo y seguir este nuevo tutorial o solamente hacer los ajustes necesarios al .yml y al archivo .env para añadir los dos nuevos contenedores.
  • NOTA3: Let's Encrypt necesita que tengas el puerto 443 y 80 abiertos en tu router a modo de poder hacer la validación y generar el SSL. 
Si comienzan desde "cero" pueden correr el siguiente script:


Del siguiente modo:

Cambiar a sudo:

sudo su

Descargar el script:

wget https://gist.githubusercontent.com/JManzur/bb5b1128c5da6dec53ae545f0a60a849/raw/1c70eb1558997f6807223cb22c35072deb22ce55/docker-compose.yml

Hacerlo ejecutable:

chmod +x prep_guacamole_ssl.sh

Ejecutarlo:

./prep_guacamole_ssl.sh

IMPORTANTE: Una vez finalice la ejecución del script es recomendable que editen el archivo de variable de entorno que genera y coloquen su propio usuario y contraseña para la base de datos, adicionalmente ingresen la información de su dominio, y correo, para ello editen el archivo /docker/guacamole/.env 



El script también se encargó de bajar el docker-compose.yml el cual contiene los 6 contenedores necesarios:


Y antes del primer inicio necesitamos ejecutar el contenedor que genera la base de datos:

docker-compose up init-guac-db

NOTA: El proceso anterior solo se realiza por única vez antes del primer inicio.
Y una vez finalice levantamos todo con:

docker-compose up -d

Hecho esto ya podemos ingresar a

https://IP/guacamole/#/

Con los credenciales:
  • Usuario: guacadmin
  • Contraseña: guacadmin
Al ingresar se nos presentará un código QR, (es recomendable respaldarlo) el cual tendremos que escanear con la app Google Authenticator disponible para Android y iOS y así podremos hacer la autentificación en dos pasos.

Ejemplo:

Clic en la imagen para agrandar

NOTA: Cada vez que creemos un nuevo usuario debemos marcarle la opción "permitir el cambio de contraseña" a modo de que puede utilizar la autentificación  en dos pasos.


21/4/20

DDNS con Duck DNS en Docker

Años atrás NO-IP, era el servicio gratuito de DDNS que elegíamos los SysAdmin en nuestros proyectos personales o incluso como una solución para algún cliente pequeño; pero hoy en día la mejor alternativa es sin lugar a dudas Duck DNS. En este articulo les mostrare como utilizar el servicio en Docker, con Docker Compose.

Si aun no tienen instalado docker y docker-compose pueden instalarlo (en Ubuntu) con el siguiente comando:
  • sudo apt-get install docker.io docker-compose
Ahora ejecuten los siguientes comandos para crear un directorio donde descargaremos el docker-compose.yml
Hecho esto obtendremos un archivo como este:


Ahora antes de levantar el contenedor. Ingresen a Duck DNS, proceden a registrarse con el método que prefieran y verán en el home sus datos de usuarios, incluido el "Token", el cual deben copiar y pegar en el compose en "TOKEN=" (sin espacios luego del símbolo "=" ):


Proceden a crear su subdominio:


Lo definen en el compose en "SUBDOMAINS=" (sin espacios luego del símbolo "= " y sin http://)

Ejemplo:

  • - SUBDOMAINS=ejemplo.duckdns.com

Ahora estando en /docker/tools/ hacen:

  • docker-compose up -d
Esto seria todo ya tienes un DDNS que se renovara automáticamente.

NOTA: Recuerden cambiar la time zone, pueden identificar la suya con la ayuda de este listado. 

11/4/20

Apache Guacamole con PostgreSQL y Google Authenticator en Docker

En un articulo anterior mostré como instalar una puerta de enlace de escritorio remoto web utilizando Apache Guacamole; en este nuevo articulo vamos a mejorar la instalación haciendo que almacene la información en una base de datos PostgreSQL lo cual nos brindará una interfaz gráfica de administración mejorada, adicionalmente habilitaremos una extensión de autentificación en dos pasos para brindar una capa de seguridad adicional, todo esto en Ubuntu Server 18.04 con Docker en contenedores separados relacionados por un mismo stack de Docker-Compose.

Para hacer la instalación mas sencilla he creado un script:

El cual pueden descargar y ejecutar del siguiente modo:

Cambiar a sudo:

sudo su

Descargar el script:

wget https://gist.githubusercontent.com/JManzur/6a433c3df5aec8645e809ca978b0be1e/raw/9fb7c5d021204a8ead48fc2b986fa05d29d23ffa/prep_guacamole.sh

Hacerlo ejecutable:

chmod +x prep_guacamole.sh

Ejecutarlo:

./prep_guacamole.sh

IMPORTANTE: Una vez finalice la ejecución del script es recomendable que editen el archivo de variable de entorno que genera y coloquen su propio usuario y contraseña para la base de datos, para ello editen el archivo /docker/guacamole/.env

El script también se encargó de bajar el docker-compose.yml el cual contiene los 4 contenedores necesarios:

Y antes del primer inicio necesitamos ejecutar el contenedor que genera la base de datos:

docker-compose up init-guac-db

NOTA: El proceso anterior solo se realiza por única vez antes del primer inicio.
Y una vez finalice levantamos todo con:

docker-compose up -d

Hecho esto ya podemos ingresar a

http://IP:8084/guacamole/#/

Con los credenciales:
  • Usuario: guacadmin
  • Contraseña: guacadmin
Al ingresar se nos presentará un código QR, (es recomendable respaldarlo) el cual tendremos que escanear con la app Google Authenticator disponible para Android y iOS y así podremos hacer la autentificación en dos pasos.

Ejemplo:

Clic en la imagen para agrandar

NOTA: Cada vez que creemos un nuevo usuario debemos marcarle la opción "permitir el cambio de contraseña" a modo de que puede utilizar la autentificación  en dos pasos.


9/4/20

cheat.sh Un aliado en la linea de comandos.

Hay SysAdmin que tienen una habilitad envidiable para recordar comandos y sus variables con las cuales cumplir diferentes funciones; lamentablemente ese no es mi caso y termino perdiendo minutos valiosos googleando, leyendo man pages o revisando mis notas y son precisamente esta clase de situaciones las que cheat.sh me ha ayudado a optimizar.

cheat.sh es una "cheat sheet", lo que en Venezuela conocemos como "chuleta" y en Argentina como "machete"... Es decir un "hoja" con apuntes para hacer "trampa". Y la idea de cheat.sh es ser utilizado desde la terminal ya que ingeniosamente armaron su web de manera tal que cada contexto lleva el nombre de un comando y al realizarle un curl nos traerá un resumido listado de las funciones mas comunes/útiles del mismo. 

Ejemplo: Para ver la cheat sheet del comando grep, simplemente hacemos:


curl cheat.sh/grep

Lo cual nos traería el html con los apuntes:



El listado cheat sheet que armaron es extenso y en constante crecimiento, ademas tienen otras herramientas que puedes conocer visitando http://cheat.sh/

27/11/19

Cerrar sesiones fantasmas en Windows.

Si te has encontrado con sesiones de usuario como estas:


Sabrás que no te permite cerrarlas a menos que reinicias, lujo que no siempre podemos permitirnos, especialmente cuando se trata de servidores; estas sesiones fantasmas se generan cuando un usuario cierra sesión pero algún proceso queda tildado. Para solucionarlo abrimos una consola de comando con privilegios elevados y seguimos estos pasos:

Identificar el ID de la sesión:

qwinsta

En el output del comando anterior notaremos que la sesión fantasma no tiene nombre.

Listamos los procesos asociados al ID:

query process /ID:X

Copiamos el PID de cada proceso y forzamos su cierre uno a uno:

taskkill /F /PID XXXXX

Ahora si ejecutamos qwinsta una vez más ya no veremos la sesión fantasma.

Ejemplo:


7/8/19

Servidor SFTP con Ubuntu Server 18.04

Para publicar un SFTP sobre un servidor Ubuntu 18.4 estos son los pasos a seguir:

Creamos un grupo para usuarios de SFTP:

sudo groupadd sftp

Creamos un usuario que solo tendrá acceso vía SFTP y no shell:
NOTA: Nos solicitará varios campos pero solo la contraseña es obligatoria.

sudo adduser --shell /bin/false ftpuser

Ingresamos el usuario al Grupo:

sudo usermod -a -G sftp sftpuser

Creamos la carpeta para el SFTP:

sudo mkdir -p /var/sftp/archivos 

Le otorgamos propiedad a los miembros del Grupo:

sudo chgrp sftp /var/sftp/archivos 
sudo chmod -R 770 /var/sftp/files

Editamos el archivo de confiuración sshd_config:

sudo vim /etc/ssh/sshd_config

Y agregamos al final las siguientes lineas:

Match group sftp
ForceCommand internal-sftp
PasswordAuthentication yes
ChrootDirectory /var/sftp
PermitTunnel no
AllowAgentForwarding no
AllowTcpForwarding no
X11Forwarding no


Reiniciamos el servicio SSH:

sudo systemctl restart ssh

Y con esto ya tenemos configurado un SFTP que atenderá por la IP del servidor mediante el puerto 22.

31/7/19

Respaldo y Restore de base de Datos SQL con T-SQL Query

En caso de necesitar hacer un respaldo y/o restore de una base de datos con una T-SQL Query, este seria el formato del script:

Respaldo:


BACKUP DATABASE NOMBRE_DE_LA_BASE
TO DISK = 'C:\RUTA\DESTINO\NOMBRE_DEL_RESPALDO.bak' WITH INIT, COPY_ONLY;
GO

Restore Paso 1:


USE master;
GO
IF  EXISTS (SELECT name FROM sys.databases WHERE name = N'NOMBRE_DE_LA_BASE')
BEGIN
ALTER DATABASE NOMBRE_DE_LA_BASE
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE
DROP DATABASE NOMBRE_DE_LA_BASE;
END

Restore Paso 2:


RESTORE DATABASE NOMBRE_DE_LA_BASE
FROM DISK = '\\RUTA\DE\ORIGEN\NOMBRE_DEL_RESPALDO.bak'
WITH MOVE 'NOMBRE_LOGICO_DE_LA_BASE' TO 'C:\RUTA\DE\DESTINO\NOMBRE_DE_LA_BASE.mdf',
MOVE 'NOMBRE_LOGICO_DEL_LOG' TO 'C:\RUTA\DE\DESTINO\NOMBRE_DEL_LOG.ldf';
GO

Nota: Para obtener el nombre logico del archivo de la base y/o el log ejecutamos la query  

sp_helpdb NOMBREDELABASE

Como utilizar un Tunel SSH para dar Soporte Técnico

Hay dos modalidades de túnel SSH que suelo utilizar constantemente y que considero una herramienta inmensamente útil que todo Administrador de Sistemas debe conocer. Este método de conexión es especialmente eficaz si el único acceso que tenemos hacia el destino remoto es un servidor linux (sin interfaz gráfica) o cuando simplemente queremos trabajar más cómodos.

 

Tunel SSH - Redirección de puerto Dinámico [SSH Dynamic Port Forwarding]:


Ejemplo Practico: Tenemos un cliente cuyo único servicio al que le damos soporte es una central telefónica, por ende tenemos acceso SSH a la PBX pero necesitamos acceder a su GUI, la GUI de los hard phone o quizás a algún Gateway GSM o Gateway de linea análoga.

Realizando la Conexión desde PC Linux:
  • Formato:
    • ssh -D PuertoParaProxy usuario@IPPublica -p PuertoSHH  
  • Ejemplo: En el siguiente caso utilizaré como puerto para el proxy 4815, es importante que utilicemos un puerto que no esté realmente en uso en ninguno de los extremo, el usuario será root, ip publica ficticia 123.123.123.1 y puerto 2222
    • ssh -D 4815 root@123.123.123.1 -p 2222 
  • Configurando el proxy en Firefox: Vamos a Menú / Opciones / Configuracion de Red / Configuraciones y seteamos el Host SOCKS Proxy de la siguiente manera:
  • Clic en la imagen para agrandar.
  •  Hecho esto podremos alcanzar desde Firefox cualquier GUI del segmento de red remoto.
Realizando la Conexión desde PC Windows: Hacemos lo siguiente utilizando putty:
 

Túnel SSH - Redirección de puerto Local [SSH Local Port Forwarding]:  


Ejemplo Practico 1: Tenemos un cliente cuyo único servicio al que le damos soporte es un servidor Linux, por ende tenemos acceso SSH, pero necesitamos acceder por RDP a una terminal Windows en el otro extremo.

Realizando la Conexión desde PC Linux:
  • Formato:
    • ssh -L PuertoParaRDP:IPdePCWindows:PuertoRDP usuario@IPPublica -p PuertoSHH  
  • Ejemplo: En el siguiente caso utilizaré como puerto para el RDP 4815, es importante que utilicemos un puerto que no esté realmente en uso en ninguno de los extremo, la ip de la pc Windows es 192.168.1.123 el usuario será root, ip publica ficticia 123.123.123.1 y puerto 2222
    • ssh -L 4815:192.168.1.123:3389 root@123.123.123.1 -p 2222 
  • Iniciando la conexion: Tipeamos el comando:
    • rdesktop 127.0.0.1:4815
      • Nota debemos tener rdesktop instalado o cualquier otro cliente RDP por CLI o Grafico.
 Realizando la Conexión desde PC Windows: Al igual que en el caso anterior utilizamos putty pero en este caso configurando las opciones del túnel del siguiente modo:



 Y abrimos el RDP como localhost apuntando al puerto que indicamos:


Ejemplo Practico 2: Una medida de seguridad que suelo utilizar en servidores linux con Webmin Instalado es solo permitir el acceso a la GUI desde el localhost, lo cual considerando que un servidor Linux no tiene interfaz grafica no es posible, pero utilizando SSH Local Port Forwarding se pueden acceder de modo totalmente normal y seguro, esto lo utilizo tanto de modo remoto como de modo local.

Ejemplo: Utilizando el puerto default de Webmin iniciando sesión ssh en el servidor 192.168.1.124 de modo local:

ssh -L 10000:192.168.1.124:10000 root@192.168.1.124

Ahora podemos ir a un navegador e ingresar a http://127.0.0.1:10000 (o bien https)

1/3/19

Apache Guacamole en Ubuntu 18.04

Una de las características que más me gusta de los fortigate es el portal que obtienes (de modo opcional) cuando generas una VPN SSL, me parece una herramienta inmensamente útil y aunque está demás aclarar que la calidad de la conexión no se compara con la obtenida cuando se utiliza forticlient (el software cliente), el SSL-VPN Portal es indudablemente útil y cualquier persona sin conocimiento técnico alguno es capaz de utilizarlo. 

Por esto llamó mi atención Apache Guacamole un proyecto de software libre que hace una tarea muy parecida y no dudé en probarlo.

Guacamole es presentado en su página web como:
Apache Guacamole es una puerta de enlace de escritorio remoto "sincliente", soporta protocolos standard como VNC, RDP y SSH, lo llamamos "sincliente" porque no requiere de ningún software cliente ni de plugins. Gracias a HTML5, una vez Guacamole es instalado en un servidor lo único que necesitaras para acceder a tu escritorio es un navegador web.
En este articulo vamos a instalar Guacamole Apache en Ubuntu Server 18.04 LTS.

Una vez tengas Ubuntu Server instalado, actualizado y con IP fija podemos comenzar con el proceso:

Instalamos dependencias:

sudo apt install -y gcc-6 g++-6 libcairo2-dev libjpeg-turbo8-dev libpng-dev libossp-uuid-dev libavcodec-dev libavutil-dev libswscale-dev libfreerdp-dev libpango1.0-dev libssh2-1-dev libvncserver-dev libssl-dev libvorbis-dev libwebp-dev

Instalamos Tomcat:

sudo apt install tomcat8 tomcat8-admin tomcat8-common tomcat8-user -y

Permitimos el paso por el firewall:

sudo ufw allow 8080
sudo ufw reload


Descargamos y descomprimimos Guacamole:

wget https://sourceforge.net/projects/guacamole/files/current/source/guacamole-server-0.9.14.tar.gz
tar xzf guacamole-server-0.9.14.tar.gz
cd guacamole-server-0.9.14

Corremos el script de configuración:

./configure --with-init-dir=/etc/init.d

Compilamos:

make CC=gcc-6

Instalamos los componentes:

sudo make install

Una vez finalizada la instalación creamos los links:

sudo ldconfig

Habilitamos el inicio automático de Guacamole:

sudo systemctl enable guacd
sudo systemctl start guacd


Descargamos el cliente de Guacamole:

wget https://sourceforge.net/projects/guacamole/files/current/binary/guacamole-0.9.14.war

Creamos directorio de configuración de Guacamole:

sudo mkdir /etc/guacamole

Movemos los binarios del cliente al directorio creado anteriormente:

sudo mv guacamole-0.9.14.war /etc/guacamole/guacamole.war


Creamos el enlace simbólico:

sudo ln -s /etc/guacamole/guacamole.war /var/lib/tomcat8/webapps/

Reiniciamos Tomcat y Guacamole:

sudo systemctl restart tomcat8
sudo systemctl restart guacd


Configuramos Guacamole:

Creamos los directorios de configuración:

sudo mkdir /etc/guacamole/{extensions,lib}

Añadimos el directorio home de Guacamole al archivo de configuración de Tomcat:

sudo su
echo "GUACAMOLE_HOME=/etc/guacamole"
>> /etc/default/tomcat8

Creamos el archivo guacamole.properties

vim /etc/guacamole/guacamole.properties

Con el contenido:

guacd-hostname: localhost
guacd-port:    4822
user-mapping:    /etc/guacamole/user-mapping.xml
auth-provider:    net.sourceforge.guacamole.net.basic.BasicFileAuthenticationProvider


Linkeamos el archivo de configuracion de Guacamole a Tomcat:

ln -s /etc/guacamole /usr/share/tomcat8/.guacamole

Creamos el archivo de autenticación. (Este es el archivo que alojará los datos Usuario y de las conexiones SSH, RDP y/ VNC), pero antes vamos a generar el hash md5 para la contraseña del usuario que tendrá permisos para iniciar sessión en Guacamole:

sudo echo -n CONTRASEÑA | openssl md5

El output será algo como esto:
(stdin)= f1379b1b0123458dd91fa6ebb41ec50c

Copien el hash a un txt de modo temporal y pasamos a crear el archivo de configuracion:

vim /etc/guacamole/user-mapping.xml

Con el siguiente contenido:


NOTA: Editen los datos del .xml anexando su información personal de: Usuario, IP y demás datos necesarios.

Creamos los siguientes link simbolicos para que funcione el RDP:

ln -s /usr/local/lib/freerdp/guacsnd-client.so /usr/lib/x86_64-linux-gnu/freerdp
ln -s /usr/local/lib/freerdp/guacdr-client.so /usr/lib/x86_64-linux-gnu/freerdp/


Reinciamos los servicios:

systemctl restart tomcat8
systemctl restart guacd


Y nos dirigimos a la IP:

http://IPDELSERVIDOR:8080/guacamole


 Al ingresar veremos los equipos que agregamos y con un click podremos ingresar:


Y desde cualquier equipo pueden pulsar "Ctrl" + "Alt" + "Shift" para desplegar un panel que nos mostrará algunas opciones como por ejemplo volver al home:


26/2/19

Windows Server iSCSI Target Server.

Para utilizar un equipo Windows Server como un storage a fin de compartir unidades lógicas y que otros equipos los detecten como si de una unidad física se tratase, estos son los pasos a seguir:

Instalar el rol:

Clic en la imagen para agrandar
 Crear el primer LUN:

Clic en la imagen para agrandar
 Seleccionar el disco físico a compartir:

Clic en la imagen para agrandar
 Le asignamos un nombre y descripción:

Clic en la imagen para agrandar
 Indicamos la capacidad a compartir y el tipo de disco virtual a crear:

Clic en la imagen para agrandar
 Seleccionamos el target (Equipo al que asignaremos el LUN) o creamos uno nuevo:

Clic en la imagen para agrandar
 En el ejemplo siguiente creo un nuevo target:

Clic en la imagen para agrandar
En este caso como lo estoy compartiendo en un entorno Active Directory, ubico el servidor con la opción "Query initiator [....]".

Clic en la imagen para agrandar

Clic en la imagen para agrandar
 En esta opción podemos definir características de seguridad adicionales o continuar:

Clic en la imagen para agrandar
 Pulsamos crear y esperamos a que finalice el proceso:

Clic en la imagen para agrandar

Clic en la imagen para agrandar
IMPORTANTE: Debemos esperar a que el siguiente proceso finalice.

Clic en la imagen para agrandar
Ahora en el equipo que recibirá el disco, vamos a: Panel de Control / Herramientas Administrativas / iSCSI initiator


Y añadimos el disco de la siguiente forma:


Para finalizar, reiniciamos el equipo, vamos al administrador de discos, y damos formato a la nueva unidad tal como lo haríamos con un disco físico.

Crear un namespace en Dokuwiki.

En Dokuwiki existen "Paginas" (page) y "Espacios de Nombre" (namespace), lo cual realmente no es más que:
  • Page: Artículos
  • Namespace: Carpetas que alojan los artículos.
Crear paginas es intuitivo, simple y no requiere explicación pero crear crear namespace si bien una vez lo aprendes es sumamente simple, la manera de crearlo no es intuitiva y tuve que Googlear un buen rato hasta encontrar la forma.

¿Para qué crear namespace? 

Crear namespace puede ser útil por dos razones: 
  • Organización: Es conveniente tener artículos organizados en carpetas así se facilita la navegación, respaldos y exportación.
  • Segmentar permisos: Esto seria realmente el mayor beneficio, ya que es mucho más cómodo administrar permisos por namespace.

Crear un namespace:

Para crear un namespace solo basta con realizar una búsqueda con el siguiente formato:

namespace:namespace

Notas:
  • Todos los caracteres deben ser minúsculas.
  • No debe contener espacios ni caracteres especiales.
Ejemplo:

Para crear un namespace llamado "Contraseñas" realizamos la búsqueda:

contrasenas:contrsenas



Hacemos clic en el vinculo del resultado de la búsqueda y creamos la primera page del namespace con el contenido que queramos:


Hecho esto ya tendremos el namespace creado, lo cual podremos validar dirigiéndonos al índice:


Moviendo pages al nuevo namespace:

Si ya habías creado paginas y ahora quieres moverlas, debemos ingresar al servidor por ssh y cambiar al directorio que aloja las paginas y los namespace:

cd /var/www/html/dokuwiki/data/pages/


Allí si realizamos un list (comando: "ls") veremos los namespace en azul y las page con extensión .txt


Ahora para mover una page a un namespace ejecutamos el comando:

mv page.txt namespace

Ejemplo para mover la page "Administradores de Dominio" al namespace "Contraseñas" realizamos:

mv administradores_de_dominio.txt contrasenas

Borrar un namespace:

Se realiza vía ssh con el comando:

cd /var/www/html/dokuwiki/data/pages/
rm -Rf namespace

IMPORTANTE:
  • Si el namespace contiene pages, estas serán borradas, con lo cual deben asegurarse de moverlas previamente a otro namespace. 
  • Si las pages tenian hipervinculos internos una vez movidor deberas reacerlos. 

2/1/19

Problemas de sincronizacion NTP en redes con dominio.

Si el controlador de dominio que tiene el rol de PDC presenta problemas con la fecha/hora, se generarán problemas de resolución de nombre y fallos en handsake de kerberos, para solucionar esto debemos ejecutar los comandos siguientes:

En el PDC:

  • w32tm /config /manualpeerlist:pool.ntp.org /syncfromflags:manual /reliable:yes
  • w32tm /config /update
  • net stop w32time && net start w32time
  • w32tm /resync /rediscover
Nota: luego de ejecutar estos comandos es probable que debamos aguardar unos minutos para que la nueva configuración surta efecto, podemos ir verificando con el comando:

  • w32tm /query /source
En el resto de controladores de dominio:
  • w32tm /config /syncfromflags:domhier /reliable:no
  • w32tm /config /update
  • net stop w32time && net start w32time
  • w32tm /resync /rediscover
En otros servidores miembros del dominio:
  • w32tm /config /syncfromflags:domhier
  • w32tm /config /update
  • net stop w32time && net start w32time
  • w32tm /resync /rediscover

3/11/18

Dokuwiki en CentOS 7.

Hay empresas en las cuales con tener un directorio compartido que aloje una decena de .txt es más que suficiente como sistema de documentación, pero hay otras donde se requiere mucho más, en especial la ayuda de un buscador.

En este artículo vamos a instalar Dokukiwi en un CentOS 7 y lo utilizaremos para almacenar la documentación del Departamento de Tecnología.

Una vez tengamos CentOS Instalado lo actualizamos e instalamos aplicativos útiles.
  • yum update
  • yum install wget net-tools vim
Instalamos Apache
  • yum -y install httpd
Instalamos PHP 7 y dependencias:
  • yum -y install epel-release
  • rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
  • yum update
  • yum -y install php71w php71w-curl php71w-cli php71w-gd
Editamos el siguiente fichero:
  • vim /etc/httpd/conf/httpd.conf
Ubicamos la linea: AllowOverride None
Y la cambiamos a: AllowOverride All

Clic en la imagen para agrandar.

Habilitamos el inicio automático de Apache.
  • systemctl start httpd 
  • systemctl enable httpd 
Ahora pasamos a la instalación de DokuWiki
  • cd /var/www/html
  • wget https://download.dokuwiki.org/src/dokuwiki/dokuwiki-stable.tgz
  • tar -xvzf dokuwiki-stable.tgz
  • mv dokuwiki-20* dokuwiki
Creamos el siguiente fichero:
  • vim /etc/httpd/conf.d/wiki.tudominio.local.conf 
Con el contenido:
< VirtualHost *:80>
     ServerAdmin tu@mail.com
     DocumentRoot "/var/www/html/dokuwiki"
     ServerName wiki.tudominio.local   
     ServerAlias www.wiki.tudominio.local
     ErrorLog "/var/log/httpd/wiki.tudominio.local-error_log"
     CustomLog "/var/log/httpd/wiki.tudominio.local-access_log" combined
< /VirtualHost>
IMPORTANTE: Eliminar el espacio luego de "<"

Remplazando tu@mail.com, wiki.tudominio.local y www.wiki.tudominio.local con tus datos.

Cambiamos la propiedad de la carpeta:
  • chown -R apache:apache /var/www/html/dokuwiki
Abrimos el puerto 80 en el firewall:
  • firewall-cmd --zone=public --permanent --add-service=http
  • firewall-cmd --reload
Deshabilitamos SELinux
  • setenforce 0
  • vim /etc/selinux/config
Ubicamos la linea: SELINUX=enforcing
Y la cambiamos por: SELINUX=disabled


Abrimos un navegador y vamos a: http://IPDELSERVIDOR/install.php



Una vez finalizado debemos borrar el instalador:
  • rm /var/www/html/dokuwiki/install.php

26/10/18

Shrink SQL Transaction log.

Mas a menudo de lo que nos gustaría los SysAdmin debemos hacer de DBAdmin, realizando labores de mantenimiento como por ejemplo limpiar el SQL Transaction log. Por suerte es una tarea sencilla que se logra con unas pocas y simples querys.

Lo primero es realizar un respaldo del log. Este punto es obligatorio. 

Backup log NOMBREDELABASE
to disk ='C:\RUTA\NOMBRE.bak'

Clic en la imagen para agrandar.
 Luego tomamos nota del nombre lógico del log.

sp_helpdb NOMBREDELABASE

Clic en la imagen para agrandar.
 Cambiamos el modo de recuperación a simple:

ALTER DATABASE NOMBREDELABASE
SET RECOVERY SIMPLE;
GO
Clic en la imagen para agrandar.
 Realizamos el shrink a 1 MB.

DBCC SHRINKFILE(NOMBRELOGICO_Log, 1);
GO

Clic en la imagen para agrandar.
Volvemos el modo de recuperación a full.
 
ALTER DATABASE NOMBREDELABASE
SET RECOVERY FULL;
GO

Clic en la imagen para agrandar.
 Y esto seria todo. Para validar podemos volver a realizar la query:

sp_helpdb NOMBREDELABASE

Clic en la imagen para agrandar.