synthroid taking instructions

Inicio > Base de datos > Seguridad de los inicios de sesión en el Sql Server

Seguridad de los inicios de sesión en el Sql Server

Viernes, 11 de noviembre de 2016 Dejar un comentario Ir a comentarios

En un anterior post hable acerca como bloquear el inicio de sesión desde IP especificos. En este post voy a detallar más lo que podemos hacer con esta poderosa tecnica. Resulta muy util pues aunque se sepan las credencias (usuario/password) el intento de inicio de sesión se rechazara de no cumplir la condición.

Bloquear un host mediante su nombre

En las redes windows se estila usar nombre de host, el cual es independiente de los números IPs. Para rechazar intentos de conexion desde nombres de hosts especificos podemos usar el siguientes script:

USE master;
GO
CREATE TRIGGER connection_lock_trigger
ON ALL SERVER
FOR LOGON AS
BEGIN
   DECLARE @HostName Varchar(MAX)
   SET @HostName = HOST_NAME()
   IF @HostName IN ('NombreDeHost1' , 'NombreDeHost2')
   BEGIN
       ROLLBACK TRANSACTION;
       PRINT 'Esta credencial no se puede usar desde el host ' + @HostName
   END
END;

Limitar la cantidad de veces que se puede iniciar sesión

Profundizamos un poco más en el nivel de seguridad, ahora vamos a realizar un conteo de cuantas sesiones abiertas existen para rechazar las conexiones entrantes. En este ejemplo el inicio de sesión es ‘login_text’ y solo permite 3 conexiones como máximo.

USE master;
GO
CREATE TRIGGER connection_limit_trigger
ON ALL SERVER 
FOR LOGON
AS
BEGIN
    IF ORIGINAL_LOGIN()= 'login_test' AND
        (SELECT COUNT(*) FROM sys.dm_exec_sessions
         WHERE is_user_process = 1 AND
         original_login_name = 'login_test') > 3
    BEGIN
        ROLLBACK TRANSACTION;
        PRINT 'Lo siento solo se permiten 3 conexiones para ''login_text'''
    END
END;

Fijar el inicio de sesion desde un solo origen

Para lograr esto con toda la seguridad posible, tenemos que usar la combinación de 3 elementos: nombre de host, ip e inicio de sesión.
Esta técnica es útil por ejemplo cuando queremos que el inicio de sesión se use solamente para conexiones entre servidores. Y es util por que aun cuando se haya filtrado la credencial esta no podrá ser utilizada por nadie mas.

USE master;
GO
CREATE TRIGGER connection_server_trigger
ON ALL SERVER 
FOR LOGON
AS
BEGIN
    DECLARE @HostName Varchar(MAX)
    DECLARE @IP Varchar(500)
    
    SET @IP = EVENTDATA().value('(/EVENT_INSTANCE/ClientHost)[1]', 'varchar(500)')
    SET @HostName = HOST_NAME()

    IF ORIGINAL_LOGIN()= 'login_test' 
    BEGIN
        IF NOT (@HostName IN ('NombreDeHost1','NombreDeHost2') AND
                    @IP IN ('172.16.255.11', '172.20.254.1', '172.26.254.12')
                   )
        BEGIN
            ROLLBACK TRANSACTION;
            PRINT 'Lo siento pero ''login_text'' es de uso exclusivo para conexión entre servidores'
        END
    END
END;

Recomendaciones

  • Los scripts funcionan a partir de sql server 2005 con sp2.
  • Es necesario primero probarlos en ambientes de pruebas y no directamente en ambientes de producción, debido a que pueden rechazar conexiones de inicios de sesión que utiliza el mismo motor del sql server.
  • Asegurarse bien de que las condiciones no bloquearan otros inicios de sesión

Comparte y diviertete:
  • Print
  • Digg
  • StumbleUpon
  • del.icio.us
  • Facebook
  • Yahoo! Buzz
  • Twitter
  • Google Bookmarks
  • BarraPunto
  • Bitacoras.com
  • BlinkList
  • Blogosphere
  • Live
  • Meneame
  • MSN Reporter
  • MySpace
  • RSS
  • Suggest to Techmeme via Twitter
  • Technorati
  • LinkedIn
  • email
  • FriendFeed
  • PDF
  • Reddit
  • Wikio IT
  • Add to favorites
  • blogmarks
  • http://jmacoe.com/blog jmacoe

    Saludos,

    El problema es que el nombre de aplicación del excel no contiene “EXCEL”. Aquí te envió a solución:

    ALTER TRIGGER Acceso
    ON ALL SERVER
    FOR LOGON
    AS
    BEGIN
    IF APP_NAME() LIKE ‘%Microsoft Office 2010%’
    ROLLBACK;
    END;

  • vega

    hola quisiera saber como bloquear las conexiones a mi servidor sql server 2005, desde access, estoy utilizando un trigger logon como los que comentas aqui:

    CREATE TRIGGER acceso
    ON ALL SERVER WITH EXECUTE AS ‘sa’
    FOR LOGON
    AS
    BEGIN
    IF APP_NAME() LIKE ‘%EXCEL%’ ROLLBACK;
    END;

    Lo curioso es q siempre m permite el acceso, según lo q he leido el trigger logon se activa antes de establecer la sesion y la función app_name() devuelve la aplicación de la sesión actual, entonces cuando se ejecuta el trigger no hay sesion activa x lo tanto app_name() no tiene nada y por lo tanto permite la conexión… bueno eso es lo q yo entendi, pero bueno quisiera ver si m explicas si estoy en lo correcto o si me ayudas a detectar mi error… mil gracias

  • http://jmacoe.com/blog jmacoe

    Estimado Nicolas, para realizar un seguimiento de la creación y eliminación de conexiones es preferible usar la herramienta SQL Server Profiler, esta te brindara mucho mas información que puedes analizar en diferido. Los scripts que he publicado en este articulo sirven para darle un tratamiento en-linea que permiten o rechazan la conexión bajo ciertas circunstancias. No es recomendable escribir en tablas dentro de un disparador (trigger) pues el rendimiento del servicio sera drasticamente afectado.

  • Nicolas

    Hola no soy muy experto en Trigger y quiero saber como puedo crear uno que capture la información de inicio de sesión de usuarios a una instancia de SQL, igualmente de cuando se desconecta.

    La idea es saber cuando se conecta, a donde y desde donde, yo tengo idea de como generar esta información, pero no de como hacer que funcione dentro de un triger.

  • Pingback: Bitacoras.com()

Top Footer
Scarpe Tods primavera estate 2017: Foto Collezione Streethogan outlet anche per lestate e molta attenzione alla cura deipeuterey outlet online dettagli pi minimali, senza altri fronzoli. Lopeuterey outlet online spirito Tods per la linea scarpe donna peuterey outlet online primavera estate 2017 ha un mood adatto peuterey outlet online Sandali bassi, mocassini e tacchi comodipeuterey outlet online con un fil rouge preciso: la tomaia woolrich outlet online incrociata sul collo del piede. Massima woolrich outlet online comodit, piede abbracciato dal pellame woolrich outlet online di alta qualit e colori che spaziano woolrich outlet online dal cuoio al verde acido, senza hogan outlet online dimenticare nero e bianco. hogan outlet online Il marchio di Della Valle ci sorprende.SCARPE TODS DONNA PRIMAVERA ESTATE 2017 Per la mezza stagione primaverile,hogan outlet online ecco le loafers Tods! Comode scarpe flathogan outlet online dallallure bon ton ma sempre urban style,hogan outlet online con quegli accenni jungle legati canada goose pas cher Le scarpe del catalogo Tods 2017 varianocanada goose pas cher dai modelli total white in pelle verniciata,canada goose pas cher al pi discreto nude in suede, senzadoudoune moncler pas cher dimenticare i tocchi fashion del blu doudoune moncler pas cher zaffiro e del silver. Tods propone anche ledoudoune moncler pas cher sneakers stringate, ancora un richiamo aldoudoune moncler pas cher Presentata in occasione della Paris Fashiondoudoune moncler pas cher Week, la nuova collezione Christian Diordoudoune moncler pas cher primavera estate 2017 ci incanta con linee woolrich sito ufficiale pulite e rigorose che plasmano un guardarobawoolrich sito ufficiale ai limiti della femminilit con lobiettivo woolrich sito ufficiale di dimostrare che anche un capo storicamente woolrich sito ufficiale maschile pu plasmare a valorizzare alla perfezione una silhouette delicata. Una collezione moda donna diverse dalle altre. woolrich sito ufficiale Una linea contemporanea che non tradisce la filosofia della maison. Dior sulle passerelle ci mostra una femminilit estremante eterogenea che guarda al futurowoolrich sito ufficiale Presentata nella capitale italiana della moda in occasione di Milano Fashion Week, la collezione primavera estate 2017 di Max Mara ispirata a Lina Bo Bardi, architetto e designer di fama internazionale.