Mostrando entradas con la etiqueta Directorio Activo. Mostrar todas las entradas
Mostrando entradas con la etiqueta Directorio Activo. Mostrar todas las entradas

martes, 13 de abril de 2021

Comportamiento de GPOS a través de VPN

 Hola, 

A raíz de la proliferación de entornos de teletrabajo, muchos administradores de sistemas con Directorio Activo, están encontrando situaciones que no les eran comunes hasta ahora.

La instalación de software o lanzado de scripts de Log-in no está funcionando vía GPO, dado que habitualmente, los equipos iniciados fuera de la Lan, no ven a los controladores de dominio, hasta que iniciamos sesión en Windows e iniciamos la conexión VPN. 

Esto no sería así, si tuviésemos IPSEC, Direct Access o accesos VPN Always on, pero no es algo común de encontrar. 

Habilitación de DirectAccess | Microsoft Docs

Comportamiento

Por definición, y aunque no está popularizado este conocimiento, las gpos se procesan cada 90 minutos con una diferencia aleatoria de 30 minutos. Por lo que podemos decir, que todas las gpos que no se han procesado al estar el equipo conectado a la red en el inicio, finalmente se procesan, si el equipo permanece conectado a la VPN. Esto viene a ser igual, en cuanto a las GPOS con opciones de usuario.

Tenéis información sobre procesamiento Síncrono y Asíncrono y sobre el proceso de refresco aquí:

RefreshPolicy function (userenv.h) - Win32 apps | Microsoft Docs

Initial Processing of Group Policy | Microsoft Docs

Logon Optimization | Microsoft Docs

Actualizar la directiva de grupo | Microsoft Docs

Excepciones

Instalación de software, Scripts de logon y redirección de carpetas.

Lo dicho anteriormente es cierto, aunque es bien cierto también, que no todas las opciones configuradas en las GPOS se aplican cada 90 minutos. "Folder Redirection" por ejemplo, o la aplicación de Scripts de logon e instalación de software vía GPO, en las opciones de GPO por equipo, no se aplicarán nunca si el equipo no alcanza a los controladores de dominio en el arranque del sistema operativo. En cuanto a estas opciones lanzadas por usuario, si no se alcanzan los DCs tras la introducción de las credenciales.

Conectividades lentas

Aun con todo lo comentado, todo equipo conectado por VPN tendrá una conexión considerada lenta si esta ofrece 500kbps. Esta consideración es la que encontramos por defecto, aunque permite ser cambiada.

La política en cuestión, la podéis encontrar en las opciones por equipo: 

    Policies\Adminsitrative Templates\System\Group Policy

    Con nombre: Configure Group Policy slow link detection . Podréis variar la consideración entre 0 y        4.294.967.200 kbps. Si configuráis la cifra 0 desactivaréis la consideración de Slow Link.

La consideración lenta, también puede determinarse por otras situaciones a pesar de tener más de 500kbp, por ejemplo serían estas:

- Slow-link mode:  Determinación de latencia según path. (“Configure slow-link mode” policy on Vista for Offline Files | Microsoft Docs)

- Tiempo de espera: Control Slow Network Connection 120 milisegundos (GPS: Control slow network connection timeout for user profiles (gpsearch.azurewebsites.net)

- PingBufferSize: Algoritmo por cierto que ha varia en Windows Server 2019 y versiones superiores a Windows 10 1809. (https://docs.microsoft.com/en-us/troubleshoot/windows-server/user-profiles-and-logon/manage-profile-service-slow-link-detection#how-slow-link-detection-works-in-current-operating-systems)

La consideración de conexión lenta según PingBufferSize, ha variado según versión de Windows:

  • Windows Server 2019 and Windows 10 1809: KB 4601383, February 16, 2021-KB4601383 (OS Build 17763.1790) Preview
  • Windows 10 1909: KB 4601380, February 16, 2021—KB4601380 (OS Build 18363.1411) Preview
  • Windows 10 20H1/20H2: KB 4601382, February 24, 2021—KB4601382 (OS Builds 19041.844 and 19042.844) Preview

También, podéis cambiar el comportamiento de conexión lenta a través de las siguientes opciones en GPO:

A modo de diagnóstico. El evento que veréis cuando no podremos por ejemplo aplicar un Roaming profile es el siguiente:

Log Name: Application

Source: Microsoft-Windows-User Profiles Service

Event ID:1543

Y por ejemplo, el aviso que un usuario verán en perfiles móviles dirá lo siguiente: 

Your roaming profile isn't synchronized with the server because a slow network connection is detected. You've been signed in with a local profile.

Más información la podéis encontrar aquí: https://docs.microsoft.com/en-us/troubleshoot/windows-server/user-profiles-and-logon/manage-profile-service-slow-link-detection#settings-that-control-slow-link-detection

Slow Link Mode - Archivos Offline

Event ID=1004

Description:  Path \server\share$ transitioned to slow link with latency = 81 and bandwidth = 258888 

“Configure slow-link mode” policy on Vista for Offline Files | Microsoft Docs


Las opciones de las directivas de grupo no aplicará en conexiones Slow Link son las siguientes:


COMPONENTE


FORZADO (Push)


Deployed Printer Connections

No

Disk Quotas

No

Folder Redirection

No

Scripts

No

Software Installation

No

martes, 26 de marzo de 2013

Script que permite limpiar o subir fotografía a AD.

 

Hola.

Os cuelgo a continuación un Script que he terminado y que permite al usuario subir o limpiar su foto del directorio activo, para que luego se alimente, ya sabéis, Exchange, Lync, etc.

Diréis, ¿Por qué no lo haces en C# y lo compilas?, pues porque lo he ido haciendo en mis ratos libres y como muchas otras cosas, nació para algo diferente. Pero me gusta porque el usuario lo puede lanzar con unas simples instrucciones (botón derecho, ejecutar con poweshell) y al contrario de algunas aplicaciones, no tiene por qué, tener derechos de administrador local para instalarse nada. Sonrisa

Como es común en estas cosas, solo tenéis que localizar y adaptar esta línea de aquí:

$root = [ADSI]'GC://dc=dominio,dc=local' #Inyecta el dominio con el que trabajar

Se que es mejorable,  lo se Guiño.

También tiene varias funciones que os pueden servir de utilidad.

#------------------------------------------------------
#Script encargado de guardar o limpiar fotografía en AD del campo Thumbnailphoto

#Autor: Miguel Hernández

#------------------------------------------------------

[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")

#-------------------------------------------------------------------------------
#Funciones
#-------------------------------------------------------------------------------

#Toma usuario y lo devuelve con valor $X0
function tomausuario
{

    $objForm0 = New-Object System.Windows.Forms.Form
    $objForm0.Text = "Fotografía en Directorio Activo"
    $objForm0.Size = New-Object System.Drawing.Size(300,120)
    $objForm0.StartPosition = "CenterScreen"

    $objForm0.KeyPreview = $True
    $objForm0.Add_KeyDown({if ($_.KeyCode -eq "Enter")
        {$x0=$objTextBox0.Text;$objForm0.Close()}})    #toma el valor X0
    $objForm0.Add_KeyDown({if ($_.KeyCode -eq "Escape")
        {$objForm0.Close()}})

    $objLabel0 = New-Object System.Windows.Forms.Label
    $objLabel0.Location = New-Object System.Drawing.Size(10,10)
    $objLabel0.Size = New-Object System.Drawing.Size(280,20)
    $objLabel0.Text = "Usuario:"
    $objForm0.Controls.Add($objLabel0)

    $objTextBox0 = New-Object System.Windows.Forms.TextBox
    $objTextBox0.Location = New-Object System.Drawing.Size(10,30)
    $objTextBox0.Size = New-Object System.Drawing.Size(260,20)
    $objForm0.Controls.Add($objTextBox0)

    $OKButton0 = New-Object System.Windows.Forms.Button
    $OKButton0.Location = New-Object System.Drawing.Size(110,60)
    $OKButton0.Size = New-Object System.Drawing.Size(75,23)
    $OKButton0.Text = "OK"
    $OKButton0.Add_Click({$x=$objTextBox0.Text;$objForm0.Close()})
    $objForm0.Controls.Add($OKButton0)

    $objForm.Topmost = $True

    $objForm0.Add_Shown({$objForm0.Activate()})
    [void] $objForm0.ShowDialog()

return $x0

}

#----------------------------------------------------------
#Función resultado
#----------------------------------------------------------

#Abre form con el valor $valor escrito.

function resultado
{

    $objForm0 = New-Object System.Windows.Forms.Form
    $objForm0.Text = "Resultado"
    $objForm0.Size = New-Object System.Drawing.Size(400,90)
    $objForm0.StartPosition = "CenterScreen"

    $objLabel0 = New-Object System.Windows.Forms.Label
    $objLabel0.Location = New-Object System.Drawing.Size(10,20)
    $objLabel0.Size = New-Object System.Drawing.Size(380,20)
    $objLabel0.Text = $valor
    $objForm0.Controls.Add($objLabel0)

       $objForm.Topmost = $True

    $objForm0.Add_Shown({$objForm0.Activate()})
    [void] $objForm0.ShowDialog()
}

#-------------------------------------------------------------
#Función donde se abre ventana donde elegir fotografía
#-------------------------------------------------------------

function Select-FileDialog
    {
        param([string]$Title,[string]$Directory,[string]$Filter="All Files (*.*)|*.*")
        [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") | Out-Null
        $objForm = New-Object System.Windows.Forms.OpenFileDialog
        $objForm.InitialDirectory = $Directory
        $objForm.Filter = $Filter
        $objForm.Title = $Title
        $objForm.ShowHelp = $true
        $Show = $objForm.ShowDialog()

        If ($Show -eq "OK")
        {
            Return $objForm.FileName
        }
        Else
        {
            $valor = "Operación cancelada por el usuario."
            resultado $valor
        }
    }

#------------------------------------------------------
#Empieza el script
#------------------------------------------------------

#Ventana Form donde se pregunta la acción a realizar

$objForm = New-Object System.Windows.Forms.Form
$objForm.Text = "Fotografía en Directorio Activo"
$objForm.Size = New-Object System.Drawing.Size(300,200)
$objForm.StartPosition = "CenterScreen"

$objForm.KeyPreview = $True
$objForm.Add_KeyDown({if ($_.KeyCode -eq "Enter")
    {$x=$objTextBox.Text;$objForm.Close()}})
$objForm.Add_KeyDown({if ($_.KeyCode -eq "Escape")
    {$objForm.Close()}})

$OKButton = New-Object System.Windows.Forms.Button
$OKButton.Location = New-Object System.Drawing.Size(75,130)
$OKButton.Size = New-Object System.Drawing.Size(75,23)
$OKButton.Text = "OK"
$OKButton.Add_Click({$x=$objTextBox.Text;$objForm.Close()})
$objForm.Controls.Add($OKButton)

$objLabel0 = New-Object System.Windows.Forms.Label
$objLabel0.Location = New-Object System.Drawing.Size(10,10)
$objLabel0.Size = New-Object System.Drawing.Size(280,20)
$objLabel0.Text = "1. Limpiar fotografía actual"
$objForm.Controls.Add($objLabel0)

$objLabel1 = New-Object System.Windows.Forms.Label
$objLabel1.Location = New-Object System.Drawing.Size(10,30)
$objLabel1.Size = New-Object System.Drawing.Size(280,20)
$objLabel1.Text = "2. Cambiar fotografía"
$objForm.Controls.Add($objLabel1)

$CancelButton = New-Object System.Windows.Forms.Button
$CancelButton.Location = New-Object System.Drawing.Size(150,130)
$CancelButton.Size = New-Object System.Drawing.Size(75,23)
$CancelButton.Text = "Cancelar"
$CancelButton.Add_Click({$objForm.Close()})
$objForm.Controls.Add($CancelButton)

$objLabel = New-Object System.Windows.Forms.Label
$objLabel.Location = New-Object System.Drawing.Size(10,70)
$objLabel.Size = New-Object System.Drawing.Size(280,20)
$objLabel.Text = "Seleccionar acción:"
$objForm.Controls.Add($objLabel)

$objTextBox = New-Object System.Windows.Forms.TextBox
$objTextBox.Location = New-Object System.Drawing.Size(10,90)
$objTextBox.Size = New-Object System.Drawing.Size(260,20)
$objForm.Controls.Add($objTextBox)

$objForm.Topmost = $True

$objForm.Add_Shown({$objForm.Activate()})
[void] $objForm.ShowDialog()

#Devuelve el valor $X con 1 o 2 = 1: Limpiar fotografía / 2: Cambiar fotografía

$SAMName = tomausuario  #Pregunta el usuario

    $root = [ADSI]'GC://dc=dominio,dc=local'  #Inyecta el dominio con el que trabajar
    $searcher = new-object System.DirectoryServices.DirectorySearcher($root)
    $searcher.filter = "(&(objectClass=user)(sAMAccountName=$SAMName))"
    $user = $searcher.findall()
    $userdn = $user[0].path
    $userdn = $userdn.trim("GC")
    $userdn = "LDAP" + $userdn
     
      
IF ($x -EQ "1") {

    try
    {
        $user = [ADSI]($userdn)
        $user.Properties["thumbnailPhoto"].Clear()
        $user.CommitChanges()
        $valor = "La fotografía ha sido borrada del servidor"
        resultado $valor
    }
    catch
    {
        $valor = "La fotografía no ha podido ser borrada del servidor"
        resultado $valor
    }
       
}

IF ($x -EQ "2") {
  
    try
    {
        $photo = Select-FileDialog -Title "Selecciona una fotografía (ext.jpg o .png)" -Directory "%userprofile%" -Filter "JPG Images (*.jpg)|*.jpg|PNG Images (*.png)|*.png"
        [byte[]]$file = Get-Content $photo -Encoding Byte
        $user = [ADSI]($userdn)
       
        # Limpiar foto anterior
        $user.Properties["thumbnailPhoto"].Clear()

        # Guardar fotografía
        $user.Properties["thumbnailPhoto"].Add($file)
        $user.CommitChanges()
        $valor = "La fotografía ha sido guardada del servidor"
        resultado $valor
    }
    catch
    {
        $valor = "La fotografía no ha sido guardada en el servidor"
        resultado $valor
    }      
}

miércoles, 30 de septiembre de 2009

Desactivar "Reply All"

Hola.

No es el final de todos nuestros males, pero diría que en gran parte si lo es.

El equipo de Exchange ha colgado un post de imprescindible lectura para todos nosotros, nos explican como desactivar la opción de "Responder a todos" de Outlook por gpo.

http://msexchangeteam.com/archive/2009/09/29/452689.aspx Parte 1.
http://msexchangeteam.com/archive/2009/09/30/452724.aspx Parte2

"Reply-All Storms" nunca mejor dicho.

sábado, 1 de noviembre de 2008

¿Varias políticas de contraseñas en el mismo dominio?

Pues sí, algunos ya lo sabéis y otros ya lo habréis oido. Con windows server 2008 podemos tener diferentes políticas de contraseñas en el mismo dominio, la explicación en video y aquí:

http://technet.microsoft.com/en-us/windowsserver/2008/bb896051.aspx

Saludos.

viernes, 18 de julio de 2008

Desastre en controlador de dominio con Exchange 2003

Hola.

Me ha llegado hoy una incidencia sobre un desastre de un controlador de dominio, que además era el servidor de correo de la organización. Ante un desastre así, lo mejor es echar mano de la documentación y pensar ¿a quien le ha podido pasar ya?, en internet he recopilado información que puede ser de ayuda para solucionar este estropicio, pero creo es en estos casos donde está sobrádamente justificada la cuota de 250€ +/- por tener soporte en Microsoft.

Cómo quitar por completo huérfano controlador de dominio http://support.microsoft.com/kb/555846/es
Una vez limpio el Ad de los restos que quedaron del controlador de dominio que ya no estará y asumidos los roles por otro controlador de dominio, se trata de instalar un windows 2003 nuevecito y promocionarlo como controlador de dominio y catálogo globa, hecho esto, la guía siguiente nos ayudará a instalar Exchange 2003 en una organización donde ya había uno anteriormente.



Por ejemplo, si no se tiene copia de seguridad, en las páginas 207, 208 explican como:
Cómo reparar un servidor miembro




Si se tiene copia de seguridad la guía explica como:

Copiar y restaurar en el caso de ser un servidor miembro

Copia y restaurar en el caso de ser un servidor controlador de dominio

En el caso de tener que recuperar una copia de seguridad de Exchange realizada con Ntbackup, el organigrama siguiente os va a venir muy bien:

martes, 6 de mayo de 2008

Como funciona la replicación de Active Directory

Vale está en inglés, es largo y mogollón de friki, por eso me ha costado unos cuantos ratos leerlo y ya veremos cuando consigo comprenderlo al detalle, pero por si también os pica la curiosidad os lo paso.

Muy pero que muy buena explicación de como funciona la replicación de AD. ( al menos en 2000 y 2003 Server):
http://blogs.technet.com/asksbs/archive/2008/03/28/troubleshooting-active-directory-replication.aspx

jueves, 29 de noviembre de 2007

Migrar perfiles

Hola.

La migración de los perfiles es el quebradero de cabeza de todo administrador, todos hemos tenido que afinar los pasos a base de introducir equipos en el dominio e ir descubriendo paso a paso como hacerlo de forma lo mas transparente y rápida posible, no digamos ya cuando tenemos que pasar perfiles de dominio a dominio, eso ya mejor no pensarlo.
La cuestión es que hay herramientas que nos facilitan la vida, los que trabajamos con SBS podemos disfrutar de /connectcomputer , que nos introduce al equipo en dominio, nos da a elegir un perfil local y un usuario del dominio previamente creado, reinicia con un usuario administrador temporal, hace no se que y ¡voile!. Pero cuando hay que hacerlo a mano en un dominio 2003, debemos pensar en utilizar alguna de las herramientas como las que os presento a continuación:

Move user.exe : http://support.microsoft.com/kb/930955 que viene con el resource kit .

User Profile Wizard 2.5 : http://www.forensit.com/profwiz/index.htm es una auténtica pasada, migra perfiles en masa via script, migra perfiles uno a uno sin estar en la propia máquina, lo que quieras...

















viernes, 26 de octubre de 2007

Wake on lan - solo existe en nuestro subconsciente

Hola.

¿Os imaginais que todos o parte de los equipos de vuestra red, obedecen cuando reciben una orden?, sería el colmo ¿no?.

Bueno después de una broma fácil, quería sacar a la luz un sistema que se que está en todos vuestros subconscientes, es la teconología wake on lan, viene implementada en sistemas ibm desde hace muchos años y funciona en todos los equipos en los que no hayais tirado a la basura el cablecito de 3 pins que traen las tarjetas de red, este cablecito con conectores hembra, una vez conectado debídamente a su respectivo conector macho en la placa base, transmite la orden de encendido del equipo. En equipos donde la tarjeta de red viene integrada en la placa base, solo hay que entrar en la bios y activar la tecnología wake on lan.

Sin complicarlo mucho:


1. Comprobar la conexión del cable de la tarjeta de red a la placa, o bién, si la tarjeta de red va integrada en placa, activar opción de wake on lan en la bios.

2. En algunos equipos hay que añadir un paso para activar en power management la opción de permitir encendido desde la red.

3. La orden de arranque va sobre la mac de la tarjeta de red, aquí os dejo un manual que lo explica mejor y donde os podeis bajar un .exe que al fin y al cabo es un comando al que añadiendo la mac remota envia el paquete necesario para el encendido, (la mac la podemos conseguir con el comando ipconfig /all , con windows 98 con winipcfg)

Os dejo una pequeña utilidad de las miles que hay por ahí fuera para conseguir el arranque en remoto.

Complicándolo un poco más:

Una vez comprendida esta tecnología, podemos dejar volar la imaginación y llegamos a pensar las utilidades que tiene ante sistemas implantados en un dominio windows con wsus, mom, bueno, con active directory al fin y al cabo.

La gente de specops tiene la herramienta specops gpupdate que añade a la cuenta del equipo en el AD las opciones que veis a continuación en la imagen.















La utilidad anterior está muy bien, pero a continuación os presento otra que tiene la particularidad de integrarse en herramientas como mom 2003 y scmm 2007 junto a su wsus correspondiente, donde complicándolo un poco y exprimiendo nuestro dominio vpn incluida podemos llegar a hacer cosas muy buenas.

http://www.myitforum.com/myITWiki/Default.aspx?Page=WOL&AspxAutoDetectCookieSupport=1

















Un saludo.

miércoles, 17 de octubre de 2007

SBS con clientes Mac Os X y Windows XP y Windows Vista.

Hola.

He cambiado esta entrada, paso de decir que es todo un reto ver como introducir clientes Max Os X en un entorno con Active Directory, a buscar y un poquito y poneros unos enlaces que acabo de encontrar, vaya que me ha picado la curiosidad y me voy a clavar estas guias, aunque no salga la venta que hemos tratado hoy en MHS con una empresa de diseño.

http://images.apple.com/server/pdfs/Open_Directory.pdf

http://www.macwindows.com/ADinstruct.html

Se admiten colaboraciones e información al respecto, ¿Guraaa?¿Resto de visitantes que caeis por aquí?.

Saludos.

domingo, 23 de septiembre de 2007

Office 2003 sp3 a través de directivas de grupo

Aquí teneis la descarga del paquete necesario para administrar el Office 2003 sp3 a través de las directivas de grupo.

Recordar que antes hay que actualizar vuestros Office 2003.