Active Directory kullanıcı şifre değiştirme yetkisi

Active directory de kullanıcıların şifre değiştirmesi için CannotChangePassword özelliği seçili olmaması gerekmekte.
Bunu tüm kullanıcıları kontrol ederek aktif eden powershell komutu

<#
#Author:Ramazan TÜFEKÇİ
#Website:https://ramazantufekci.com
#github:ramazantufekci
#aşağıdaki komutlar belirlenen tarihden sonra giriş yapan kullanıcının şifre değiştirme iznini kontrol ederek
#izni yoksa izin verilmesini sağlar
#object id kullanıcıları taşımak için gerekli
#ornek
#Move-ADObject -Identity $userObject.'obj_id' -TargetPath "OU=taşıma yapılacak ou,DC=dc,DC=local"
#>
$users = Get-ADUser -Server DC.local -Filter * | select SamAccountName
$kontrol_tarih = "01.01.2019 00:00:00"
foreach($user in $users)
{
$userInfo = Get-ADUser -Server DC.local -Properties * -Identity $user.SamAccountName
$userProp = @{
'Kullanıcı ismi' = $userInfo.SamAccountName
'Oluşturulma Tarihi' = $userInfo.whenCreated
'Şifre Değiştirme Tarihi' = $userInfo.PasswordLastSet
'Son Login Tarihi' = $userInfo.LastLogonDate
'obj_id' = $userInfo.ObjectGUID
'Şifre değiştirme izni' = $userInfo.CannotChangePassword

}
$userObject = New-Object PSObject -Property $userProp
#-gt kontrolu -le olarak değiştirildiğinde kontrol_tarih inden küçük olanları getirir
if($userObject.'Son Login Tarihi' -gt $kontrol_tarih){
if($userObject.'Şifre değiştirme' -eq $true){
#kullanıcının şifre değiştirme iznini değiştirir
Set-ADUser -Identity $userObject.'Kullanıcı ismi' -CannotChangePassword $false
#bilgileri export eder.
#$userObject | select 'Kullanıcı ismi','Oluşturulma Tarihi','Şifre Değiştirme Tarihi','Son Login Tarihi','obj_id','Şifre değiştirme'|Export-Csv -Append "Rapor.csv" -NoTypeInformation -Delimiter ";" -Encoding UTF8
}
}
}

Gerekli açıklamalar kodun içinde verilmiştir.

Mailbox audit log aktif etme

Office365 de hem güvenlik skorunu yükseltmek hemde kullanıcıların hareketlerini loglamak için audit logu aktif etmeliyiz.
Bunu powersell i yönetici olarak başlattıktan sonra aşağıdaki kodlar ile yapabiliriz.

$girisBilgi = Get-Credential
#Burada Exchange remote powershell service bağlantı yapıyoruz.
$oturum = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $girisBilgi -Authentication Basic -AllowRedirection
#oturumu import et
Import-PSSession $oturum
#Herkes için audit log u aktif eder.
Get-Mailbox -ResultSize Unlimited -Filter {RecipientTypeDetails -eq "UserMailbox" -or RecipientTypeDetails -eq "SharedMailbox" -or RecipientTypeDetails -eq "RoomMailbox" -or RecipientTypeDetails -eq "DiscoveryMailbox"} | Set-Mailbox -AuditEnabled $true -AuditLogAgeLimit 180 -AuditAdmin Update, MoveToDeletedItems, SoftDelete, HardDelete, SendAs, SendOnBehalf, Create, UpdateFolderPermission -AuditDelegate Update, SoftDelete, HardDelete, SendAs, Create, UpdateFolderPermissions, MoveToDeletedItems, SendOnBehalf -AuditOwner UpdateFolderPermission, MailboxLogin, Create, SoftDelete, HardDelete, Update, MoveToDeletedItems
#Kontrol etmek için.
Get-Mailbox -ResultSize Unlimited | Select Name, AuditEnabled, AuditLogAgeLimit | Out-Gridview

Active Directory User report

Powershell ile active directory den kullanıcı ile ilgili bilgilere ulaşmak için

Get-ADUser

komutu kullanılır.
Bir örnek vermek gerekirse

Get-ADUser -Server DC.local -Filter *

komutu active directory de bulunan kullanıcıları listeler.
Bu komutu kullanarak kullanıcıların en son ne zaman login olduğu şifresini ne zaman değiştirdiği gibi bilgileri alarak bulunduğu dizine csv dosyası olarak kaydeden script örneği.

Github Signing commits GPG kullanımı

Github da yapılan değişikliklerin doğrulanması
Github da yapilan değişiklikler commit edildiğinde verified olarak görünmez.
Verified olarak görünmesi için github hesabimiza şunları eklemiz gerekmekte

  • Gpg key
  • Ben bu yazıda github hesabımıza nasıl gpg key ekleyeceğimiz anlatmaya çalışacağım.
    ilk olarak windows işletim sistemi kullanıyorsak bilgisayarımıza gpg4win uygulamamızı kurmamız lazım.
    Bu programı kurduğumuz da hem gui olarak hemde komut olarak gpg key oluşturabiliyoruz.
    Yazımızın devamına video ile devam edelim.
    Kullanılan kodlar:

    git config --global commit.gpgsign true
    git config --global user.signingkey 19BCE90830430D5A
    git config --global gpg.program "C:\Program Files (x86)\GnuPG\bin\gpg.exe"

    gpg4win uygulaması ile komut satırından key oluşturmak için:

    gpg --full-generate-key
    gpg --list-secret-keys --keyid-format LONG
    gpg --armor --export key id

    Haftalık hava durumu uygulaması

    Merhaba arkadaşlar.
    Haftalık hava durumunu gösteren örnek uygulama kodlarına GitHub hesabımdan ulaşabilirsiniz.
    Bu uygulama da newtonsoftjson svg paketleri kullanıldı.
    Bu paketlere aşina olmayan arkadaşlar içinde güzel bir örnek olacaktır.
    Uygulama da control kullanmadım geliştirmek isteyen arkadaşlar ona dikkat etsin.
    Uygulama görseli:

    Bu linkten çalışır halini indirebilirsiniz.
    Yararlı olması dileğiyle.

    Windows search servisini yeniden kurmak

    Windows search servisini yeniden kurmanız gerekiyor.Fakat windows search servisi windows özellik aç kapat da görünmüyor.
    Nasıl yeniden kurulum yapacaksınız?
    Powershell i yönetici olarak açalım.
    Windows search servisini kaldırmak için aşağıdaki komutu kullanıyoruz.

    Dism /Online /Disable-Feature  /FeatureName:SearchEngine-Client-Package

    Tekrar aktif etmek için aşağıdaki komutu kullanıyoruz.

    Dism /Online /Enable-Feature  /FeatureName:SearchEngine-Client-Package

    Let’s Encrypt Free ssl sertifika kurulumu

    Merhaba arkadaşlar.
    Bugün sizlere let’s encrypt free ssl nasıl kurulur.Nasıl otomatik yenileme yapılır onu anlatacağim.
    Elimizde bulunan sunucuya ssh ile bağlanıyoruz.
    Sunucumuzda git kurulu değilse git i sunucumuza kuruyoruz.
    Let’s encrypt GitHub deposundan klon oluşturuyoruz.

    sudo git clone https://github.com/certbot/certbot /opt/letsencrypt(Siz kendinizin kullanmak istediği yolu yazabilirisiniz.)

    Klon oluşturduktan sonra klon oluşturduğumuz dizine geçiyoruz.

    cd /opt/letsencrypt

    Kurulum için aşağıdaki komutu kullanıyoruz.

    ./certbot-auto certonly --standalone

    küçük bir yükleme yapacak sonra size mail adresinizi ve ssl oluşturmak istediğiniz site adresini soruyor.Buraya kullanmak istediğiniz alan adını yazın.
    Örnek

    example.com, www.example.com

    Oluşturulan keyleri

    /etc/letsencrypt/live/domain ismi/

    dizininin altına oluşturuyor.
    Daha sonra kullandığınız webserver a göre ayarlarınızı yapmanız gerekiyor.
    Örnek olarak nginx de şu şekilde yapılır.

    server {
     #http ye geln istekleri https e yönlendiriyoruz.
           listen 80;
            server_name example.com www.example.com;
            return 301 https://$host$request_uri;
    }

    server {
            listen 443 ssl;
            server_name example.com www.example.com;

            ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
            ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
            ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
            ssl_prefer_server_ciphers on;
            ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';

            root /var/www/example.com;
            index index.php;
    #
           location / {
                    try_files $uri /index.php;
            }

            location ~ /.well-known{
                    allow all;
            }

            location ~ \.php$ {
                    try_files $uri =404;
                    fastcgi_pass unix:/var/run/php5-fpm.sock;
                    fastcgi_index index.php;
                    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                    include fastcgi_params;

            }
    }

    Ayarlarımızı yaptıktan sonra webserver restart ediyoruz.
    Sitemize tekrar giriş yaptığımızda https ile bağlantı yaptığımızı göreceksiniz.
    Gelelim ssl sertifikasının yenilenme ayarlarının yapılmasına.
    web serverimizda location izni veriyoruz.

    location ~ /.well-known{
                    allow all;
            }

    Aşağıdaki kodu kullanarak ayar dosyasının örneğini kopyalıyoruz.

    cp /opt/letsencrypt/examples/cli.ini /usr/local/etc/le-renew-webroot.ini

    Daha sonra editor ile ayar dosyamızı açıyoruz.

    nano /usr/local/etc/le-renew-webroot.ini

    içeriği şu şekilde olmalı

    rsa-key-size = 4096

    email = info@example.com(buraya sizin mail adresiniz gelecek)

    domains = example.com, www.example.com(Buraya sizin sertifika oluşturduğunuz domainler)

    webroot-path = /var/www/example.com(Buraya websitenizin dizini gelecek)

    Dizin olarak letsencrypt i indirdiğimiz dizine geçiyoruz.

    cd /opt/letsencrypt/

    Aşağıdaki komutu çalıştırıyoruz.

    ./letsencrypt-auto certonly -a webroot --renew-by-default --config /usr/local/etc/le-renew-webroot.ini

    Kontrol yapacak dosyayı curl ile indiriyoruz.

    curl -L -o /usr/local/sbin/le-renew-webroot http://do.co/le-nginx-renew

    Çalışma izni verelim.

    chmod +x /usr/local/sbin/le-renew-webroot

    Kaç gün kaldığını control etmek için indirdimiz komut dosyasını kullanacağız.

    le-renew-webroot

    Bunu cron la otomatik hale getirelim.

    crontab -e
    30 2 * * 1 le-renew-webroot >> /var/log/le-renewal.log

    Cron servisini tekrar başlatıyoruz.

    service cron restart

    işlemimiz tamamlanmıştır.
    yararlı olması dileğiyle.

    GitHub temel biçimlendirme sözdizimi

    Merhaba arkadaşlar.
    GitHub üzerinde basit söz dizimleriyle etkili belgeler oluşturun.
    Kullanabileceğiniz söz dizimleri başlıca şunlardır.

  • Headings
  • Styling text
  • Quoting text
  • Quoting code
  • Links
  • Section links
  • Relative links
  • Lists
  • Task lists
  • Mentioning users and teams
  • Referencing issues and pull requests
  • Using emoji
  • Paragraphs and line breaks
  • Ignoring Markdown formatting

  • Başlıklar(Headings):
    Başlıklarda # işareti kullanılır.# işaretinden sonra boşluk bırakıyoruz başlık olabilmesi için.# işaretini html deki h1 tag ı gibi düşünebilirsiniz.
    Bir # işareti en büyük başlık iki ## işareti bir alt başlık üç ### işareti onun bir altı diye devam eder.
    Örnek vermek gerekirse

    # Birinci başlık
    ## ikinci başlık
    ### üçüncü başlık

    Yazıları biçimlendirme(Styling text):

    Stil Söz dizimi Klavye kısayolu Örnek Çıkış
    Kalın ** ** veya __ __ command/ctrl +b **Kalın yazı örneği** Kalın yazı örneği
    italik * * veya _ _ command/ctrl +i **italik yazı örneği** italik yazı örneği
    Üstü çizili ~~ ~~ ~~çizili yazı örneği~~ çizili yazı örneği
    Kalın ve italik ** ** ve _ _ **Kalın ve _itailk_ yazı** Kalın ve itailk yazı

    Metni alıntı yapma(Quoting text):
    Metnin alıntı olduğunu göstermek için başına > işareti koyuyoruz.

    > Metin alıntısı

    | Metin alıntısı


    Kod alıntı yapma(Quoting code):
    Kod alıntısı yapmak için ` ` işareti kullanılır.
    Örnek vermek gerekirse

    Bu gün günlerden `Kod yazma` günü

    Bu gün günlerden kod yazma günü

    Satır birden fazla olacaksa

    Kod yazmak
    ````
    Sabır
    Emek
    Dikkat
    ````
    ister.

    Liste kullanımı (Lists):
    GitHub belgelerinde liste yapmak için – veya * işareti kullanılır.
    Eğer listeyi tab tuşu yaparak girintili bir şekilde yazarsanız gruplayarak yazar.

    - ekmek
    - su
    - peynir
  • ekmek
  • su
  • peynir

  • Görev listesi (Task lists):
    Görev listeleri oluşturmak için – [] işareti kullanılır.
    Tamamlanmış görev için – [x] yazın.
    Örnek

    - [x] ekmek alındı
    - [] su al
    - [] peynir al
  • ekmek alındı
  • su al
  • peynir al

  • Mention kullanma (Mentioning users and teams):
    GitHub belgelerinde mention kullanmak için @ işareti kulanmalısınız.
    Örnek

    @gitHub/ramazantufekci
    Issue ve pull isteklerine referans verme (Referencing issues and pull requests):
    Belge de referans vermek istediğiniz ıssue ve pull isteklerin numarasının başına # işareti koyuyoruz.

    Emoji kullanmak (Using emoji):
    Belgelerde emoji kullanmak için iki nokta(:emoji: ) arasına kullanmak istediğimiz emojiyi yazıyoruz.
    Örnek

    :shipit:

    Paragraf ve satır sonları (Paragraphs and line breaks):
    Satırlar arası boş bir satır bırakarak paragraf oluşturabilirsiniz.
    Örnek

    Bu bir satırdır.

    Bu ikinci satırdır.

    Escape işlemi (Ignoring Markdown formatting):
    Özel karekterlere izin vermek için başına \ işareti kullanıyoruz.

    Windows komut satırından mail atmak

    Merhaba arkadaşlar
    Windows makinelerde kontroller için yazdığımız batch lerin işini yaptıktan sonra mail atmasını istiyoruz.Bunun için farklı yollar olsada(powershell vb) ben onlarla uğraşmak yerine C# da kendim kodladım.
    Programın kullanımı basit yazdığınız batch de mail atmak istediğiniz yere aşağıdaki kodları yazmanız yeterli.

    mailto.exe konu="konu kısmı" msj="mesaj içeriği" alici="ramazan@example.com;info@example.com;tc@example.com"

    Alıcı mail adreslerini ; ile ayırırsanız tek seferde birçok kişiye mail atabilirsiniz.
    Kurulumu yok batch I oluşturduğunuz klasörün içine program dosyalarını atmanız yeterli.
    Aşağıdaki link den indirebileceğiniz zip dosyasının içinde bulunan ayar.xml dosyasını kendi mail ayarlarınıza göre düzenlemelisiniz.
    Mailto programını indir.
    Uygulamnın kaynak kodlarına bu adresden ulaşabilirsiniz.