Exchange 2010 - expirace hesla - email notifikace

Pepa

Exchange 2010 - expirace hesla - email notifikace
« kdy: 29. 06. 2016, 14:40:35 »
Ahoj,

Řeším jeden problém, potřeboval bych emailovou notifikaci na upozornění blížící se expiraci hesla.

Některé PC nejsou v doméně, takže se uživatelům neukazuje upozornění o expiraci, přijdou na to v momentě, kdy jim nechodí pošta, vlezou na "OWA" a tam heslo změní.

Nevíte tu někdo, jestli se dá na Exchange 2010 nastavit pravidlo, že když se bude blížit 14 dní do konce hesla, tak mu přijde email a pro jistotu za týden další?

Díky moc!!!

Pepa


Re:Exchange 2010 - expirace hesla - email notifikace
« Odpověď #1 kdy: 29. 06. 2016, 16:29:13 »
U Exchange 2010 jsem takové pravidlo nikde neviděl, pravděpodobně si budeš muset napsat v Powershellu skript na kontrolu+poslání mailu. U Exchange 2016 už upozorňuje na expiraci několik dní předem v OWA + v kombinace s Outlookem 2016 se zobrazuje upozornění i tam..

Pepa

Re:Exchange 2010 - expirace hesla - email notifikace
« Odpověď #2 kdy: 29. 06. 2016, 19:39:08 »
Nakonec jsem vyřešil jednoduchým PS scriptem, koukne do AD, zjistí jak na tom uživatelé jsou a pošle email, nechal jsem si posílat do mailu log, tam vidím, komu to přišlo a jak na tom uživatelé jsou :)

Ale na EX 2016 mrknu, díky za typ :)

kolemjdouci

Re:Exchange 2010 - expirace hesla - email notifikace
« Odpověď #3 kdy: 30. 06. 2016, 13:02:27 »
Ahoj,

zrovna podobný problém řeším i já. Pokud by jsi měl k dispozici PS script usnadnilo by mi to na pár chvil práci.

Díky

Lol Phirae

Re:Exchange 2010 - expirace hesla - email notifikace
« Odpověď #4 kdy: 30. 06. 2016, 13:18:25 »
Problém je snadno řešitelný tím, že se vysereš na nesmyslné expirace hesla.


darth vader

Re:Exchange 2010 - expirace hesla - email notifikace
« Odpověď #5 kdy: 30. 06. 2016, 13:43:53 »
Problém je snadno řešitelný tím, že se vysereš na nesmyslné expirace hesla.

+1

kolemjdouci

Re:Exchange 2010 - expirace hesla - email notifikace
« Odpověď #6 kdy: 30. 06. 2016, 18:17:30 »
Problém je snadno řešitelný tím, že se vysereš na nesmyslné expirace hesla.

Pokud nevíš proč je to tak nastaveno je zbytečné bez relevantní odpovědi reagovat.

Lol Phirae

Re:Exchange 2010 - expirace hesla - email notifikace
« Odpověď #7 kdy: 30. 06. 2016, 18:45:56 »
Pokud nevíš proč je to tak nastaveno

No z 99 procent proto, že přece to v příručce pro bezpečnostní managory psali, že to je cool must-have nápad; kdo nenutí uživatele jednou měsíčně měnit heslo, tak není in a určitě ho nahackujou ty zlí lidi vod kinderporna a teroristi.

Re:Exchange 2010 - expirace hesla - email notifikace
« Odpověď #8 kdy: 30. 06. 2016, 20:14:34 »
Problém je snadno řešitelný tím, že se vysereš na nesmyslné expirace hesla.

Pokud nevíš proč je to tak nastaveno je zbytečné bez relevantní odpovědi reagovat.
Je to tak nastaveno, protože nikomu z lidí za to zodpovědných nevadí, že uživatelé budou mít snáze odhalitelná hesla, než kdyby to tak nastavené nebylo.

M.

Re:Exchange 2010 - expirace hesla - email notifikace
« Odpověď #9 kdy: 02. 07. 2016, 21:11:30 »
Nemá smysl se rozčilovat, protože když s politikou hesle nevyhoví, tak může být třeba také vyměněn. :-)
A pokud je třeba v působnosti zákonu o kybernetické bezpečnsoti, tak to v prováděcí vyhlášce (č. 316/2014 Sb.) píší pro vybrané subjekty jasně:
(3) Nástroj pro ověřování identity uživatelů, který používá autentizaci pouze heslem, zajišťuje
a) minimální délku hesla osm znaků,
b) minimální složitost hesla tak, že heslo bude obsahovat alespoň 3 z následujících čtyř požadavků
1. nejméně jedno velké písmeno,
2. nejméně jedno malé písmeno,
3. nejméně jednu číslici, nebo
4. nejméně jeden speciální znak odlišný od požadavků uvedených v bodech 1 až 3,
c) maximální dobu pro povinnou výměnu hesla nepřesahující sto dnů; tento požadavek není vyžadován pro samostatné identifikátory aplikací.

Takže můžu být rád, že nám na NBÚ vyhádali platnost 6 měsíců (při délce hesla 10 znaků). :-)

Pepa

Re:Exchange 2010 - expirace hesla - email notifikace
« Odpověď #10 kdy: 08. 07. 2016, 22:35:27 »
Ahoj,

zrovna podobný problém řeším i já. Pokud by jsi měl k dispozici PS script usnadnilo by mi to na pár chvil práci.

Díky

Ahoj,

Omlouvám se, že píšu takhle pozdě, byl jsem mimo PC :)

Kód: [Vybrat]
$smtpServer="exchange.domena.cz" #tvuj email server
$expireindays = 21 # Pocet dni k expiraci
$from = "jmeno@domena.cz"
$logging = "Enabled" # Set to Disabled to Disable Logging
$logFile = "E:\Log\emaillog.csv" #cesta k logu
$testing = "Disabled" # Pokud mas disable, tak je to ostra verze
$testRecipient = "jmeno@domena.cz" # testovaci email, kdyz zapnes test, na tento email ti budou chodit maily
#
###################################################################################################################

# Check Logging Settings
if (($logging) -eq "Enabled")
{
    # Test Log File Path
    $logfilePath = (Test-Path $logFile)
    if (($logFilePath) -ne "True")
    {
        # Create CSV File and Headers
        New-Item $logfile -ItemType File
        Add-Content $logfile "Date,Name,EmailAddress,DaystoExpire,ExpiresOn,Notified"
    }
} # End Logging Check

# System Settings
$textEncoding = [System.Text.Encoding]::UTF8
$date = Get-Date -format ddMMyyyy
# End System Settings

# Get Users From AD who are Enabled, Passwords Expire and are Not Currently Expired
Import-Module ActiveDirectory
$users = get-aduser -filter * -properties Name, PasswordNeverExpires, PasswordExpired, PasswordLastSet, EmailAddress |where {$_.Enabled -eq "True"} | where { $_.PasswordNeverExpires -eq $false } | where { $_.passwordexpired -eq $false }
$DefaultmaxPasswordAge = (Get-ADDefaultDomainPasswordPolicy).MaxPasswordAge

# Process Each User for Password Expiry
foreach ($user in $users)
{
    $Name = $user.Name
    $emailaddress = $user.emailaddress
    $passwordSetDate = $user.PasswordLastSet
    $PasswordPol = (Get-AduserResultantPasswordPolicy $user)
    $sent = "" # Reset Sent Flag
    # Check for Fine Grained Password
    if (($PasswordPol) -ne $null)
    {
        $maxPasswordAge = ($PasswordPol).MaxPasswordAge
    }
    else
    {
        # No FGP set to Domain Default
        $maxPasswordAge = $DefaultmaxPasswordAge
    }

 
    $expireson = $passwordsetdate + $maxPasswordAge
    $today = (get-date)
    $daystoexpire = (New-TimeSpan -Start $today -End $Expireson).Days
       
    # Set Greeting based on Number of Days to Expiry.

    # Check Number of Days to Expiry
    $messageDays = $daystoexpire

    if (($messageDays) -gt "1")
    {
        $messageDays = "za " + "$daystoexpire" + " dny\dnů."
    }
    else
    {
        $messageDays = "dnes."
    }

    # Email Subject Set Here
    $subject="Vypršení Vašeho hesla $messageDays"
 
    # Email Body Set Here, Note You can use HTML, including Images.
    $body ="
    Milý/á $name,
    <p> Vašemu heslu skončí platnost $messageDays<br>
    Pro změmu hesla prosím navštivte tuto stránku: <br>
Po přihlášení nahoře vpravo klikněte na 'Možnosti' a 'změna hesla'. <br>
    <p>Děkuji, <br>
S pozdravem, <br>

 <br>
    </P>"

   
    # If Testing Is Enabled - Email Administrator
    if (($testing) -eq "Enabled")
    {
        $emailaddress = $testRecipient
    } # End Testing

    # If a user has no email address listed
    if (($emailaddress) -eq $null)
    {
        $emailaddress = $testRecipient   
    }# End No Valid Email

    # Send Email Message
    if (($daystoexpire -ge "0") -and ($daystoexpire -lt $expireindays))
    {
        $sent = "Yes"
        # If Logging is Enabled Log Details
        if (($logging) -eq "Enabled")
        {
            Add-Content $logfile "$date,$Name,$emailaddress,$daystoExpire,$expireson,$sent"
        }
        # Send Email Message
        Send-Mailmessage -smtpServer $smtpServer -from $from -to $emailaddress -subject $subject -body $body -bodyasHTML -priority High -Encoding $textEncoding   

    } # End Send Message
    else # Log Non Expiring Password
    {
        $sent = "No"
        # If Logging is Enabled Log Details
        if (($logging) -eq "Enabled")
        {
            Add-Content $logfile "$date,$Name,$emailaddress,$daystoExpire,$expireson,$sent"
        }       
    }
   
} # End User Processing



# End

Script si stáhni a ulož ho jako .ps1

Pust ho na svém DC, možná si budeš muset povolit v CMD spouštění scriptů.

Když tak podle chybové hlášky použij google, teď z hlavy to bohužel nedám.

Kdyby něco nešlo, napiš mi na email JMedacek@seznam.cz

Měj se.

Pepa

Pepa

Re:Exchange 2010 - expirace hesla - email notifikace
« Odpověď #11 kdy: 08. 07. 2016, 22:38:24 »
Ahoj,

zrovna podobný problém řeším i já. Pokud by jsi měl k dispozici PS script usnadnilo by mi to na pár chvil práci.

Díky

Ahoj,

Omlouvám se, že píšu takhle pozdě, byl jsem mimo PC :)

Kód: [Vybrat]
$smtpServer="exchange.domena.cz" #tvuj email server
$expireindays = 21 # Pocet dni k expiraci
$from = "jmeno@domena.cz"
$logging = "Enabled" # Set to Disabled to Disable Logging
$logFile = "E:\Log\emaillog.csv" #cesta k logu
$testing = "Disabled" # Pokud mas disable, tak je to ostra verze
$testRecipient = "jmeno@domena.cz" # testovaci email, kdyz zapnes test, na tento email ti budou chodit maily
#
###################################################################################################################

# Check Logging Settings
if (($logging) -eq "Enabled")
{
    # Test Log File Path
    $logfilePath = (Test-Path $logFile)
    if (($logFilePath) -ne "True")
    {
        # Create CSV File and Headers
        New-Item $logfile -ItemType File
        Add-Content $logfile "Date,Name,EmailAddress,DaystoExpire,ExpiresOn,Notified"
    }
} # End Logging Check

# System Settings
$textEncoding = [System.Text.Encoding]::UTF8
$date = Get-Date -format ddMMyyyy
# End System Settings

# Get Users From AD who are Enabled, Passwords Expire and are Not Currently Expired
Import-Module ActiveDirectory
$users = get-aduser -filter * -properties Name, PasswordNeverExpires, PasswordExpired, PasswordLastSet, EmailAddress |where {$_.Enabled -eq "True"} | where { $_.PasswordNeverExpires -eq $false } | where { $_.passwordexpired -eq $false }
$DefaultmaxPasswordAge = (Get-ADDefaultDomainPasswordPolicy).MaxPasswordAge

# Process Each User for Password Expiry
foreach ($user in $users)
{
    $Name = $user.Name
    $emailaddress = $user.emailaddress
    $passwordSetDate = $user.PasswordLastSet
    $PasswordPol = (Get-AduserResultantPasswordPolicy $user)
    $sent = "" # Reset Sent Flag
    # Check for Fine Grained Password
    if (($PasswordPol) -ne $null)
    {
        $maxPasswordAge = ($PasswordPol).MaxPasswordAge
    }
    else
    {
        # No FGP set to Domain Default
        $maxPasswordAge = $DefaultmaxPasswordAge
    }

 
    $expireson = $passwordsetdate + $maxPasswordAge
    $today = (get-date)
    $daystoexpire = (New-TimeSpan -Start $today -End $Expireson).Days
       
    # Set Greeting based on Number of Days to Expiry.

    # Check Number of Days to Expiry
    $messageDays = $daystoexpire

    if (($messageDays) -gt "1")
    {
        $messageDays = "za " + "$daystoexpire" + " dny\dnů."
    }
    else
    {
        $messageDays = "dnes."
    }

    # Email Subject Set Here
    $subject="Vypršení Vašeho hesla $messageDays"
 
    # Email Body Set Here, Note You can use HTML, including Images.
    $body ="
    Milý/á $name,
    <p> Vašemu heslu skončí platnost $messageDays<br>
    Pro změmu hesla prosím navštivte tuto stránku: <br>
Po přihlášení nahoře vpravo klikněte na 'Možnosti' a 'změna hesla'. <br>
    <p>Děkuji, <br>
S pozdravem, <br>

 <br>
    </P>"

   
    # If Testing Is Enabled - Email Administrator
    if (($testing) -eq "Enabled")
    {
        $emailaddress = $testRecipient
    } # End Testing

    # If a user has no email address listed
    if (($emailaddress) -eq $null)
    {
        $emailaddress = $testRecipient   
    }# End No Valid Email

    # Send Email Message
    if (($daystoexpire -ge "0") -and ($daystoexpire -lt $expireindays))
    {
        $sent = "Yes"
        # If Logging is Enabled Log Details
        if (($logging) -eq "Enabled")
        {
            Add-Content $logfile "$date,$Name,$emailaddress,$daystoExpire,$expireson,$sent"
        }
        # Send Email Message
        Send-Mailmessage -smtpServer $smtpServer -from $from -to $emailaddress -subject $subject -body $body -bodyasHTML -priority High -Encoding $textEncoding   

    } # End Send Message
    else # Log Non Expiring Password
    {
        $sent = "No"
        # If Logging is Enabled Log Details
        if (($logging) -eq "Enabled")
        {
            Add-Content $logfile "$date,$Name,$emailaddress,$daystoExpire,$expireson,$sent"
        }       
    }
   
} # End User Processing



# End

Script si stáhni a ulož ho jako .ps1

Pust ho na svém DC, možná si budeš muset povolit v CMD spouštění scriptů.

Když tak podle chybové hlášky použij google, teď z hlavy to bohužel nedám.

Kdyby něco nešlo, napiš mi na email JMedacek@seznam.cz

Měj se.

Pepa

Tak jsem to nakonec dal :)

Spust CMD jako správce a napiš
Kód: [Vybrat]
powershell Set-ExecutionPolicy RemoteSigned
Pepa :)

Pepa

Re:Exchange 2010 - expirace hesla - email notifikace
« Odpověď #12 kdy: 08. 07. 2016, 22:40:54 »
Jo a ještě jsem zapomněl, spusť to v "Active Directory Module for Windows PoweShell"

Pokud chceš spouštět .bat --> powershell.exe -command import-module ActiveDirectory & "C:\cesta\k\scriptu\script.ps1"

:))))

kolemjdouci

Re:Exchange 2010 - expirace hesla - email notifikace
« Odpověď #13 kdy: 09. 07. 2016, 10:02:19 »
Jo a ještě jsem zapomněl, spusť to v "Active Directory Module for Windows PoweShell"
.....

Díky