Consejos para asegurar tu MS SQL Server

Microsoft SQL Server es un sistema de administración de bases de datos relacionales (RDBMS) que contiene pocos componentes y subcomponentes. Cada componente en SQL Server tiene su propio mecanismo de seguridad que está casi separado el uno del otro. La seguridad de Database Engine incluye la cuenta de servicio, la instancia y la seguridad de las bases de datos.

Como DBA y Sysadmin debes pensar en diferentes mecanismo para asegurar tus motores de bases de datos. No solo por la criticidad de la información, sino por el costo de no estar en producción.

Lo primero que debes pensar es a nivel de networking que medidas tomar

  • Cambia el puerto predeterminado de tu SQL Server (https://maurobernal.com.ar/blog/mssql/cambiar-el-puerto-del-ms-sql-server)
  • SQL Server puede encriptar el protocolo TDS con protocolo SSL. Para habilitar el protocolo SSL, SQL Server necesita un certificado auto firmado o un certificado autorizado de los proveedores de certificados.
  • Revisa y crea las reglas en tu firewall en base a tu puerto
    • Por ejemplo: limita las conexiones entrantes solo a tu segmento de red permitido
netsh advfirewall firewall add rule name="SQL Access" ^
dir=in action=allow ^
program="%programfiles%\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Binn\sqlservr.exe" ^
remoteip=LOCAL_SUBNET

Seguido a este puedes tener en cuenta estas recomendaciones a nivel de sistema operativo:

  • De forma predetermina el servicio del MS SQL Server corre con su propio usuario que tiene permisos limitados a los archivos, a la red y al registro. Mi consejo es que trabajes siempre dentro de un entorno de directorio activo (DC) y que crees un usuario nuevo, único para cada instancia de SQL Server
  • Este usuario debe ser extremadamente limitado, solo para correr el servicio.
  • Recuerda que complementario al servicio del SQL Server, tendrás el del agente, encargado entre otras cosas de efectuar tu backup. Haz lo mismo y limita su ambito solo al directorio de backups, el cúal no debería estar disponible para usuarios normales del directorio activo

A nivel de aplicación, ten tu información encriptada y cifrada

  • Puedes encriptar la información almacenada en tus tablas, limitándose a campos extremadamente sensibles (como tarjetas de crédito, cuentas bancarias, etc)
  • Pero también puedes cifrar toda la base de datos.

Mas adelante te mostraré como hacer estos dos últimos puntos…

Cambiar el puerto del MS SQL Server

Primero que nada recordemos que el motor de Microsoft corre bajo los siguientes puertos:

TCP:1433

UDP:1433

Seguido a este te dejamos este post donde te contamos como funciona la seguridad de MS SQL (https://maurobernal.com.ar/blog/consejos-para-asegurar-tu-ms-sql-server/)

Entendiendo esta ya podemos empezar a cambiar la configuración de nuestro motor, para cambiar su puerto predeterminado. Lo primero que debes hacer es buscar el “SQL Server Configuration Manager” (o administrador de configuración de SQL Server) y buscar la opción de “SQL Server Network Configuration” (Configuración de Red) \ Protocols for MOTOR ,

y una vez seleccionado buscas la configuración de TCP/IP y le das doble clic. En la nueva ventana emergente ya puedes cambiar el puerto como te mostramos en la imagen.

Con esto sería suficiente. Solo toca ahora reiniciar el servicio. Puedes hacerlo también desde la misma aplicación.:

PD: No te olvides de abrir el puerto en tu firewall. Te dejo una ayuda para hacerlo desde CMD. Por ejemplo si elegiste el 11433:

netsh advfirewall firewall add rule name="SQL Puerto alternativo" dir=in localport="11433" protocol=tcp action=allow

Si quieres verificar, puedes usar tu SQL Management Studio ( https://maurobernal.com.ar/blog/mssql/como-especificar-el-puerto-en-el-sql-server-management-studio)

Deja tus comentarios si te son útiles estos consejos…

Actualizar Grandstream GXW4104

Tocó trabajar con este Gateway para convertir 4 líneas analógicas de Telefónica de Argentina y digitalizarlas para trabajar sobre un Asterisk, con distro de Issabel 4.5

http://www.grandstream.com/products/gateways-and-atas/voip-gateways/product/gxw4104/4108

La primer dificultad es tener el GXW con la última versión del firmware. Para ello debes tener las diferentes versiones para irlo actualizando de forma gradual.

La recomendación es que hagas un reset factory, para borrar la cache, y luego comenzar con la actualización, sino puedes recibir el siguiente error:

ERROR Failed to write firmware /hm/gxw410x/1_0_1_10/load64b.bin to Flash: Data MD5 fail(4105)

Luego puedes comenzar con la actualización cambiando el URL de Firmware.

A continuación te dejo un server privado de Grandstream en donde podremos obtener las versiones ya descontinuadas.

http://173.254.235.113/hm/gxw410x

– 1.0.1.25

http://173.254.235.113/hm/gxw410x/1_0_1_25/

– 1.3.4.9

http://173.254.235.113/hm/gxw410x/1_3_4_9/GXW410x_R_1_3_4_9/

– 1.4.1.4

http://173.254.235.113/hm/gxw410x/1_4_1_4/

– 1.4.1.5

http://firmware.grandstream.com

Cualquier duda deja tus comentarios. Ya hoy tenemos este esquema funcionando!!!

CRUD con Entity Framework en ASP.NET MVC con NET Framework

Primero te cuento que he creado una serie de videos en mi canal de youtube ( https://www.youtube.com/c/maurobernal) para explicar como armar una aplicación en .NET MVC desde 0.

En esta oportunidad vemos como crear el CRUD con Entity Framework y Linq

Aqui veremos como pasar del resultado de una query (Iqueryable) a nuestro modelo (List<ofT>) y como crear el crud

-Create (Crear un registro nuevo)
-Read (Select – Leer los registros de la tabla)
-Update (Actualizar los registros de la tabla)
-Delete(Eliminar los registrode la tabla)

https://github.com/maurobernal/Portal… – Proyecto en GitHub

Finalmente espero que te sirva, y apoyes este nuevo emprendimiento que estamos tomando al subir contenidos a nuevos canales como Youtube y Twitch.

Error 0x80070422 con Flight Simulator 2020

Si estabas ansioso de instalar Flight Simulator 2020, y te encuentras con el bendito error 0x80070422 aquí te contamos como solucionarlo.

Primero ten en cuenta que puede darse el mismo error para otro juego, y es ocasionado por no poder loguearse correctamente la aplicación de XBOX APP frente a la tienda de Windows Store.

Primero debes verificar de tener dentro de Windows Store la aplicación de XBOX Beta. Luego revisar que estén arriba los siguientes servicios

  • Xbox Live Auth Manager (Administrador de autentificación de Xbox Live)

  • Xbox Live Game Save (Juegos guardados en Xbox Live) Xbox Live Networking Service (Servicio de red de Xbox Live)

En caso de que estén deshabilitados, debes pasarlo al tipo de inicio “automático” y luego “iniciar”

Y por último debes ingresar a la siguiente carpeta: 

En la barra del explorar escribe:

%appdata%  Una vez dentro sube un nivel y ve a la siguente ubicación: C:\Users\XXXXX\AppData\LocalPackages\Microsoft.XboxIdentityProvider_8wekyb3d8bbwe\AC\TokenBroker y borra las carpetas: Account y Cache

 

Eso es todo!!!

Cambiar Issabel a español

Te mostramos como cambiar en Issabel (o Elastix) los audios y los textos

Elastix logro convertirse en la PBX más utilizada por su fácil instalación y por su creciente comunidad. Con la venta del producto de Palo Santos quedó un vació que rápidamente pudo cubrir Issabel. Si bien aún no logra establecerse como su antecesor sigue siendo la primer opción al instalar nuestra PBX. Sin embargo luego de realizar la instalación podremos corroborar que los audios y textos de las interfaces web están en inglés. Hoy te mostramos como cambiar los audios y textos de Issabel PBX (aplica también a Elastix)

Por defecto vienen los idiomas alojados en  /var/lib/asterisk/sounds y cuenta con en:English, es:Español, fr:Francés, br:Portugués (Brasil)

Para cambiar el idioma de las voces, es necesario editar los archivo de configuración de asterisk dentro de /etc/asterisk:

  • sip_general_custom.conf para las extensiones SIP
  • iax_general_custom.conf para las extensiones IAX2

Solo se debe agregar la línea language=es y reiniciar el servicio de asterisk.

Para cambiar los textos de los menús debes ingresar por la interface web en SYSTEM / LANGUAGE

Cambiar idioma de Issabel a Español
Cambiar idioma de Issabel a Español
Cambiar idioma de issabel a Español 2
Cambiar idioma de Issabel a Español 2

Renovar certificado de Elastix o Issabel

La aparición de asterisk como alternativa a las centrales telefónicas pagas motivo la creación de diferentes aplicaciones que tomaran como base este servicio, y facilitarán su administración mediante interfaces web. Este es el caso de AsteriskNow, hoy FreePBX (https://www.freepbx.org/). Continuando con esta idea hubo empresas que aprovecharon esta idea, y crearon una aplicación que trabajara sobre el esquema anterior. Así fue que Palos Santos Solutions de la mano de Edgar Landivar fundaron Elastix.

Hoy Elastix ya desaparecido del mercado, y con la lenta continuación del proyecto a través de Issabel (https://www.issabel.org/) es que seguimos usando ambas distro de esta PBX. Lo que resulta muy común que luego de varios años de tener nuestras plantas en producción ya tendremos nuestros certificados SSL vencidos, y recibimos el molesto mensaje de advertencia por parte de nuestros navegadores.

Estos son los simples pasos para generar un nuevo certificado SSL para nuestra PBX con Elastix o Issabel

Crear un nuevo certificado

Lo primero que haremos es generar nuestro nueva key. En este punto nos solicitará un password.

openssl genrsa -des3 -out server.key 1024

A partir de este pediremos el certificado autoafirmado. Deberemos completar los datos de nuestra organización.

openssl req -new -key server.key -out server.csr
openssl x509 -req -days 730 -in /root/server.csr -signkey /root/server.key -out /root/server.crt

Ahora podremos reemplazar nuestra key y certificado actual. Si tienes duda de donde están puedes verificar en: /etc/httpd/conf.d/ssl.conf

(opcional) hacemos un backup de la key y el certificado actual

 cp /etc/pki/tls/private/localhost.key /etc/pki/tls/private/localhost.key.bakcp /etc/pki/tls/certs/localhost.crt /etc/pki/tls/certs/localhost.crt.bak

Reemplazamos los mismos

cp server.key /etc/pki/tls/private/localhost.key
cp server.crt /etc/pki/tls/certs/localhost.crt
Reiniciamos el servicio. En este momento nos solicitará el password que usamos antes en la key
service httpd restart

Ya está listo.

Como restaurar una sola tabla en MYSQL

Desde MYSQL es posible excluír una tabla en el momento del backup, pero no es posible solo restaurar una sola tabla. A continuación te mostramos como:

Restaurar una sola tabla en MYSQL

En base a lo anterior en el momento de realizar nuestro backup con MYSQLDUMP podemos excluir o ignorar aquellas tablas que no deseamos realizar un backup mediante el parametro –ignore

--ignore-table=db_name.tbl_name Do not dump the given table, which must be specified using both the database and table names. To ignore multiple tables, use this option multiple times. This option also can be used to ignore views.

Sin embargo, en ambientes de producción es necesario restaurar una sola tabla (o varias) en una nueva ubicación. Para ello podemos hacer lo siguiente:

1- Desde nuestra consola Linux creamos el siguiente script:

touch restore.sh
nano restore.sh

2 – Colocamos en su interior lo siguiente:

#!/bin/bash

####
# Split MySQL dump SQL file into one file per table
# based on http://blog.tty.nl/2011/12/28/splitting-a-database-dump
####

if [ $# -lt 1 ] ; then
  echo "USAGE $0 DUMP_FILE [TABLE]"
  exit
fi

if [ $# -ge 2 ] ; then
  csplit -s -ftable $1 "/-- Table structure for table/" "%-- Table structure for table \`$2\`%" "/-- Table structure for table/" "%40103 SET TIME_ZONE=@OLD_TIME_ZONE%1"
else
  csplit -s -ftable $1 "/-- Table structure for table/" {*}
fi

[ $? -eq 0 ] || exit

mv table00 head

FILE=`ls -1 table* | tail -n 1`
if [ $# -ge 2 ] ; then
  mv $FILE foot
else
  csplit -b '%d' -s -f$FILE $FILE "/40103 SET TIME_ZONE=@OLD_TIME_ZONE/" {*}
  mv ${FILE}1 foot
fi

for FILE in `ls -1 table*`; do
  NAME=`head -n1 $FILE | cut -d$'\x60' -f2`
  cat head $FILE foot > "$NAME.sql"
done

rm head foot table*

Fuente: https://gist.github.com/jasny/1608062

3 – Le damos permiso para ejecutar el script

chmod +x restore.sh

4- Uso del script

El mismo permite limpiar un archivo de backup de MySQL y dejar la parte relevante a nuestra tabla. Su uso sería así:

  • Extraer todas las tablas en archivos individuales
./restore.sh mybackup.sql
  • Extraer una sola tabla específica en un archivo individual
restore.sh mybackup.sql table1

5-Restaurar la tabla en una base especifíca

mysql -D mydatabase < mytable1.sql

Espero que le sea útil

 

Error con mapsbrokers o OneSync en Win Server 2016

Lo primero que hago en un Windows Server 2016 o superior que trabaja como host de Hyper V es deshabilitar los servicios innecesarios.

Error con MapsBrokers o OneSync_

Hay una serie de servicios encargados de recopilar información, y/o actualizar la ofimática de Windows (maps, correos, contactos) que son innecesarios en un servidor de producción.

En una sesión de PowerShell con derechos de administrador deshabilitamos los siguientes servicios:

Set-Service -Name CDPUserSvc -StartupType Disabled
Set-Service -Name OneSyncSvc -StartupType Disabled
Set-Service -Name DiagTrack -StartupType Disabled
Set-Service -Name lfsvc -StartupType Disabled
Set-Service -Name MapsBroker -StartupType Disabled
Set-Service -Name Themes -StartupType Disabled
Set-Service -Name XblAuthManager -StartupType Disabled
Set-Service -Name XblGameSave -StartupType Disabled

 

Tablero de Comando de Cheques de Terceros de Sistemas Bejerman

Para poder obtener un tablero de comandos existen diversas herramientas, entre pagas y gratuitas. Hoy analizaremos la herramienta de Microsoft Power BI para generar un pequeño tablero de comando de la información cargada en el ERP Sistemas Bejerman.

Tablero de Comando de Cheques de 3ros de Sistemas Bejerman

Obteniendo los datos:

Lo primero que haremos será “Obtener datos” de “SQL Server”:

Para ello deberemos completar la cadena de conexión indicando nuestro servidor de SQL Server y la Base a usar:

Si toda esta correcto nos listará todas las tablas existentes. Para este ejemplo solo marcaremos tres:

  • cheques3: Contiene todos los cheques de 3ro
  • bco: Contiene todos los bancos
  • clientes: Contiene todos los datos de los clientes

Una vez que tenemos nuestras tablas e importante armar la relación entre ellas. La forma que vamos a usar es la siguiente:

  • Cheques3 -> Left Join -> Bco
  • Cheques3 -> Left Join -> Clientes

Pero en el caso de la primer relación la tabla Bco tiene una clave combinada, compuesta por dos campos: Código y Sucursal. Y en PowerBi no se pueden hacer relaciones con más de un campo, por eso haremos un pequeño truco: combinaremos dos columnas en una nueva columna.

Es un proceso fácil. Se marcan las dos columnas de la tabla Bco, y se elige “Combinar” (Merge), teniendo la opción de agregar un separador. Así pasaremos de tener bco_cod y bco_descrip en una nueva columna llamada “Banco_Sucursal”:

Este paso lo haremos también en la tabla cheques3. Es momento de hacer las relaciones. Así es como inicia:Así debe ser el resultado:

Armando campos calculados

Antes (o durante) del momento del diseño del tablero pueden surgir la necesidad de crear campos calculados. El objetivo es:

  • Obtener criterios de Filtros
  • Agrupar datos
  • Evitar relación con otras tablas
  • Armar cálculos

 

Para el ejemplo en cuestión dentro de la tabla cheques3 el camp chq3_edo indica el estado del cheque, pero solo tenemos una letra que significa lo siguiente:

  • C: En Cartera
  • D: Depositado
  • E: Entregado
  • R: Rechazado
  • V: Devuelto

Para cargar esta equivalencia, podemos usar una formula. simplemente creamos una nueva columna, y agregamos en su interior:


Y le cambiamos el nombre a uno más amigable: Estado

Usemos el ingenio

Ya es momento de usar los elementos visuales para empezar con las representaciones de los indicadores

Espero que les sea útil para comenzar a preparar sus propios reportes. Dejen sus comentarios.