No funciona la SOMBRA en RDP
Habilitar esta regla:
Creo que encontré la respuesta. Alguien más hizo esta pregunta en sysadmin sub-reddit y liquidkristal en el hilo publicado una solución.
Enlace: https://www.reddit.com/r/sysadmin/comments/lnbxqq/startmenu_windows_server_2019_rds_host/
Básicamente, este problema se debe a un montón de claves de registro de reglas de firewall que se crean durante el proceso de inicio de sesión y que no se eliminan. Recuerdo haber leído sobre este problema con las entradas del registro de reglas de firewall en otros lugares, pero no me di cuenta de que afectaría al servidor de esta manera.
Ejecuté las tres actualizaciones de registro sugeridas en mi servidor que tenía este problema y el problema desapareció (solo requería cerrar sesión y volver a iniciar sesión, no es necesario reiniciar):
reg delete HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\FirewallRules /va /f
reg delete HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\RestrictedServices\Configurable\System /va /f
reg delete HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\RestrictedServices\AppIso\FirewallRules /va /f
¡Espera que esto también ayude a otros con este problema!
NOTA: Anadido 02/11/2023
Crear tambien la sigueinte regla:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy]
"DeleteUserAppContainersOnLogoff"=dword:00000001
----------------------------------------------------------------------------------------------------------
I think I found the answer. Someone else asked this question on the sysadmin sub-reddit and liquidkristal on the thread posted a solution.
Link: https://www.reddit.com/r/sysadmin/comments/lnbxqq/startmenu_windows_server_2019_rds_host/
Essentially, this issue is due to a bunch of firewall rules registry keys that get created during the login process that don't get removed. I remember reading about this issue with the firewall rules registry entries in other places, but didn't realize it would affect the server like this.
I ran the three suggested registry updates on my server having this issue and the problem went away (just required a logoff and log back in, no reboot required):
reg delete HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\FirewallRules /va /f
reg delete HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\RestrictedServices\Configurable\System /va /f
reg delete HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\RestrictedServices\AppIso\FirewallRules /va /f
Hopes this helps others with this issue as well!
La solución está en añadir el sitio de red a la lista de sitios locales. Claro, puedes hacerlo desde Opciones de Internet > Seguridad > Red local > Sitios > Añadir, pero eso solo funcionaría para un usuario, y hablamos de un dominio con muchos usuarios.
Si lo haces, recuerda añadir el sitio sin protocolo de red. Es decir, si tu servidor se llama RECALLSTACK, no lo añadas como \RECALLSTACK ni como file://RECALLSTACK ni smb://RECALLSTACK. Añádelo como RECALLSTACK a secas.
Entra en el administrador de directivas de grupo, crea un GPO para tus usuarios (si no lo tienes ya), púlsalo con el botón derecho > Editar.
Ve a Configuración del equipo > Plantillas administrativas > Componentes de Windows > Internet Explorer > Panel de Control de Internet > Página de seguridad. Aquí deberás habilitar las siguientes directivas:
¿Y por qué hace falta activar la detección automática de intranet si ya le estoy diciendo explícitamente en la otra directiva que RECALLSTACK pertenece a dicha zona? ¿Y qué pasa si dentro de RECALLSTACK tienes una carpeta que sí es de fiar, pero otras que no? Ni idea, pero si no nunca te librarás de ese dichoso cartelito.
fuente: https://www.recallstack.icu/2014/10/03/como-evitar-la-advertencia-de-seguridad-en-los-accesos-directos-ubicados-en-la-red/
Para generar licencias permanentes sigan los siguientes pasos.
Primero debemos agregar ambos roles , El "Host de sesión de escritorio
remoto" y el servicio de "Administración de licencias de escritorio
remoto"
Seleccionamos la opción activar en el "Administrador de licencias de
escritorio remoto" con click derecho.
Este nos dará nuestro Product
ID . Y le indicamos que vamos a activar
vía Web o Explorador Web,
para eso abrimos la siguiente pagina:
https://activate.microsoft.com/
Al proceso lo hice en ingles, aunque mi versión de Windows esta en Español.
Aquí ingresamos nuestro "Product
ID" , rellenamos los campos obligatorios, y dejamos
en Pais EEUU.
Este paso nos devolverá nuestro "License
server ID"
Aquí lo ingresamos a
nuestro equipo
En esta pantalla seleccionamos "Other
Agreement"
El numero mágico es el 3.6.4.7.5.8.9 (sin puntos) , es importante
seleccionar la opción correcta como en el grafico.
Nos devuelve nuestro "Licence
Key Pack ID"
Y lo ingresamos en nuestro equipo
Todo bien...
Otra imagen
Aquí le decimos a
nuestro equipo que use el servidor de licencias que acabamos de activar.
Hasta luego.
Hay que crear un fichero con el nombre mms.cfg en la siguiente ruta:
C:\Windows\SysWOW64\Macromed\Flash
Y su configuración debe ser, o sea, dentro debe tener escrito:
EOLUninstallDisable=1
EnableAllowList=1
AllowListPreview=1
AllowListUrlPattern=http://url_a_dar_permisos (por ejemplo https://www.google.es)
In this article, server A and server B are different servers.
After you move a database from the instance of SQL Server on server A to the instance of SQL Server on server B, users may be unable to log in to the database on server B. Additionally, users may receive the following error message:
Login failed for user 'MyUser'. (Microsoft SQL Server, Error: 18456)
This problem occurs because you did not transfer the logins and the passwords from the instance of SQL Server on server A to the instance of SQL Server on server B.
Note
The 18456-error message also occurs due to other reasons. For additional information on these causes and potential resolutions review MSSQLSERVER_18456.
To transfer the logins, use one of the following methods, as appropriate for your situation.
Method 1: Reset the password on the destination SQL Server computer (Server B)
To resolve this issue, reset the password in SQL Server computer, and then script out the login.
Note
The password hashing algorithm is used when you reset the password.
Method 2: Transfer logins and passwords to destination server (Server B) using scripts generated on source server (Server A)
Create stored procedures that will help generate necessary scripts to transfer logins and their passwords. To do this, connect to Server A using SQL Server Management Studio (SSMS) or any other client tool and run the following script:
USE master
GO
IF OBJECT_ID ('sp_hexadecimal') IS NOT NULL
DROP PROCEDURE sp_hexadecimal
GO
CREATE PROCEDURE sp_hexadecimal
@binvalue varbinary(256),
@hexvalue varchar (514) OUTPUT
AS
DECLARE @charvalue varchar (514)
DECLARE @i int
DECLARE @length int
DECLARE @hexstring char(16)
SELECT @charvalue = '0x'
SELECT @i = 1
SELECT @length = DATALENGTH (@binvalue)
SELECT @hexstring = '0123456789ABCDEF'
WHILE (@i <= @length)
BEGIN
DECLARE @tempint int
DECLARE @firstint int
DECLARE @secondint int
SELECT @tempint = CONVERT(int, SUBSTRING(@binvalue,@i,1))
SELECT @firstint = FLOOR(@tempint/16)
SELECT @secondint = @tempint - (@firstint*16)
SELECT @charvalue = @charvalue +
SUBSTRING(@hexstring, @firstint+1, 1) +
SUBSTRING(@hexstring, @secondint+1, 1)
SELECT @i = @i + 1
END
SELECT @hexvalue = @charvalue
GO
IF OBJECT_ID ('sp_help_revlogin') IS NOT NULL
DROP PROCEDURE sp_help_revlogin
GO
CREATE PROCEDURE sp_help_revlogin @login_name sysname = NULL AS
DECLARE @name sysname
DECLARE @type varchar (1)
DECLARE @hasaccess int
DECLARE @denylogin int
DECLARE @is_disabled int
DECLARE @PWD_varbinary varbinary (256)
DECLARE @PWD_string varchar (514)
DECLARE @SID_varbinary varbinary (85)
DECLARE @SID_string varchar (514)
DECLARE @tmpstr varchar (1024)
DECLARE @is_policy_checked varchar (3)
DECLARE @is_expiration_checked varchar (3)
DECLARE @defaultdb sysname
IF (@login_name IS NULL)
DECLARE login_curs CURSOR FOR
SELECT p.sid, p.name, p.type, p.is_disabled, p.default_database_name, l.hasaccess, l.denylogin FROM
sys.server_principals p LEFT JOIN sys.syslogins l
ON ( l.name = p.name ) WHERE p.type IN ( 'S', 'G', 'U' ) AND p.name <> 'sa'
ELSE
DECLARE login_curs CURSOR FOR
SELECT p.sid, p.name, p.type, p.is_disabled, p.default_database_name, l.hasaccess, l.denylogin FROM
sys.server_principals p LEFT JOIN sys.syslogins l
ON ( l.name = p.name ) WHERE p.type IN ( 'S', 'G', 'U' ) AND p.name = @login_name
OPEN login_curs
FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @type, @is_disabled, @defaultdb, @hasaccess, @denylogin
IF (@@fetch_status = -1)
BEGIN
PRINT 'No login(s) found.'
CLOSE login_curs
DEALLOCATE login_curs
RETURN -1
END
SET @tmpstr = '/* sp_help_revlogin script '
PRINT @tmpstr
SET @tmpstr = '** Generated ' + CONVERT (varchar, GETDATE()) + ' on ' + @@SERVERNAME + '*/'
PRINT @tmpstr
PRINT ''
WHILE (@@fetch_status <> -1)
BEGIN
IF (@@fetch_status <> -2)
BEGIN
PRINT ''
SET @tmpstr = '-- Login: ' + @name
PRINT @tmpstr
IF (@type IN ( 'G', 'U'))
BEGIN -- NT authenticated account/group
SET @tmpstr = 'CREATE LOGIN ' + QUOTENAME( @name ) + ' FROM WINDOWS WITH DEFAULT_DATABASE = [' + @defaultdb + ']'
END
ELSE BEGIN -- SQL Server authentication
-- obtain password and sid
SET @PWD_varbinary = CAST( LOGINPROPERTY( @name, 'PasswordHash' ) AS varbinary (256))
EXEC sp_hexadecimal @PWD_varbinary, @PWD_string OUT
EXEC sp_hexadecimal @SID_varbinary,@SID_string OUT
-- obtain password policy state
SELECT @is_policy_checked = CASE is_policy_checked WHEN 1 THEN 'ON' WHEN 0 THEN 'OFF' ELSE NULL END FROM sys.sql_logins WHERE name = @name
SELECT @is_expiration_checked = CASE is_expiration_checked WHEN 1 THEN 'ON' WHEN 0 THEN 'OFF' ELSE NULL END FROM sys.sql_logins WHERE name = @name
SET @tmpstr = 'CREATE LOGIN ' + QUOTENAME( @name ) + ' WITH PASSWORD = ' + @PWD_string + ' HASHED, SID = ' + @SID_string + ', DEFAULT_DATABASE = [' + @defaultdb + ']'
IF ( @is_policy_checked IS NOT NULL )
BEGIN
SET @tmpstr = @tmpstr + ', CHECK_POLICY = ' + @is_policy_checked
END
IF ( @is_expiration_checked IS NOT NULL )
BEGIN
SET @tmpstr = @tmpstr + ', CHECK_EXPIRATION = ' + @is_expiration_checked
END
END
IF (@denylogin = 1)
BEGIN -- login is denied access
SET @tmpstr = @tmpstr + '; DENY CONNECT SQL TO ' + QUOTENAME( @name )
END
ELSE IF (@hasaccess = 0)
BEGIN -- login exists but does not have access
SET @tmpstr = @tmpstr + '; REVOKE CONNECT SQL TO ' + QUOTENAME( @name )
END
IF (@is_disabled = 1)
BEGIN -- login is disabled
SET @tmpstr = @tmpstr + '; ALTER LOGIN ' + QUOTENAME( @name ) + ' DISABLE'
END
PRINT @tmpstr
END
FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @type, @is_disabled, @defaultdb, @hasaccess, @denylogin
END
CLOSE login_curs
DEALLOCATE login_curs
RETURN 0
GO
Note
This script creates two stored procedures in the master database. The procedures are named sp_hexadecimal and sp_help_revlogin .
In the SSMS query editor, select the Results to Text option.
Run the following statement in the same or a new query window:
EXEC sp_help_revlogin
No funciona la SOMBRA en RDP Habilitar esta regla: En Firewall de Entrada, habilitar Escritorio Remoto - Instantanea (TCP de Entrada)