<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Berkant</title>
    <description>The latest articles on DEV Community by Berkant (@berkanterbey).</description>
    <link>https://dev.to/berkanterbey</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F941247%2Fe064f44d-f997-487d-b777-beaaabfdf2fd.jpeg</url>
      <title>DEV Community: Berkant</title>
      <link>https://dev.to/berkanterbey</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/berkanterbey"/>
    <language>en</language>
    <item>
      <title>Nexus 002</title>
      <dc:creator>Berkant</dc:creator>
      <pubDate>Wed, 29 Oct 2025 20:11:53 +0000</pubDate>
      <link>https://dev.to/berkanterbey/nexus-002-28hf</link>
      <guid>https://dev.to/berkanterbey/nexus-002-28hf</guid>
      <description>&lt;p&gt;Sonatype Nexus ile ilgili ilk yazıya &lt;a href="https://dev.to/berkanterbey/nexus-001-kurulum-5e7o"&gt;buradan&lt;/a&gt; ulaşabilirsiniz.&lt;/p&gt;

&lt;h3&gt;
  
  
  Bu yazıda aşağıdaki konuları ele alacağız.
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Nexus u HTTPS Olarak Çalıştırma&lt;/li&gt;
&lt;li&gt;Docker Reposu Ayarlama&lt;/li&gt;
&lt;li&gt;Reverse Proxy Yapılandırması&lt;/li&gt;
&lt;li&gt;Nexus Sürümünü Güncelleme &lt;/li&gt;
&lt;li&gt;LDAP Bağlantısı&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  1) Nexus u HTTPS Olarak Çalıştırma
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Nexus web arayüzü varsayılan olarak 8081/tcp portundan http protokolü ile çalışıyor. Başka bir porttan HTTPS protokolü ile çalışabilmesi için &lt;strong&gt;SSL sertifikasına&lt;/strong&gt; ihtiyacımız var.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;nexus.pfx (Nexus Web Arayüzü için Kullanacağım SSL Sertifika)&lt;br&gt;
run &amp;gt; certlm.msc &amp;gt; Personal &amp;gt; All Tasks &amp;gt; Request New Certificate &amp;gt; Web Server Template &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Subject Bölümü&lt;/strong&gt;&lt;br&gt;
Subject Name &amp;gt; Common Name : nexus.alanadı&lt;br&gt;
Subject Name &amp;gt; Common Name : nexus&lt;br&gt;
Alternative Name &amp;gt; DNS : nexus.alanadı&lt;br&gt;
Alternative Name &amp;gt; IP(v4) : serverIP&lt;br&gt;
&lt;strong&gt;Private Key Bölümü&lt;/strong&gt;&lt;br&gt;
Key Options &amp;gt; Make Private Key Exportable&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbu0v5bsonqtig6lza5nc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbu0v5bsonqtig6lza5nc.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sertifika dosyasını (nexus.pfx) nexus u kurduğum sunucuya atıp keytool komutuyla nexus un kullanabileceği şekle getiriyorum.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;keytool -importkeystore -srckeystore nexus.pfx -srcstoretype PKCS12 -destkeystore nexus-jks.jks -deststoretype JKS&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;!!!keytool komutu için /opt/nexus/jdk/temurin_XYZ/jdk-XYZ/bin/ dizinini kullanabiliriz.&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Nexus web sunucusu olarak java tabanlı "Eclipse Jetty" kullanıyor. &lt;br&gt;
&lt;strong&gt;/opt/sonatype-work/nexus3/etc/nexus.properties&lt;/strong&gt; dosyasını aşağıdaki şekilde düzenliyorum(application-port-ssl ve nexus-args satırlarını ekledim)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;HTTPS protokolü için 9091/tcp portunu kullanacağım.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;nexus-args bölümünde de http yi devre dışı bırakıp https i kullanacağımızdan jetty-http yerine jetty-https yazıyoruz.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;

&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;




&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;/opt/nexus/etc/jetty/jetty-https.xml&lt;/strong&gt; dosyasında "password" geçen satırları , yukarıda keytool komutuyla girdiğimiz parolayla değiştiriyoruz.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;/opt/nexus/etc/ssl&lt;/strong&gt; dizinine daha önceden oluşturduğumuz nexus-jks.jks dosyasını keystore.jks olarak atıyoruz.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  2) Docker Reposu Ayarlama
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Blob Store Oluşturma
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Oluşturduğum repoların nereyi ve ne kadar alan kullandığını görebilmek ve yönetebilmek için blob store oluşturuyorum. &lt;/li&gt;
&lt;li&gt;Oluşturduğum blobstore u da ayrı bir bölüm olarak bağlıyorum (yeni bir lv oluşturup )sunucuma. Bu sayede sadece ilgili reponun blobstore unu büyütüp diğer yerleri etkilemeden devam ediyorum.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcd54rqw9xpj1br2rt11u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcd54rqw9xpj1br2rt11u.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Docker Repo Oluşturma
&lt;/h3&gt;

&lt;p&gt;Repository &amp;gt; Repositories &amp;gt; Docker (hosted) seçiyorum. Açılan sayfadan repo ismi , bağlayıcı (connector) , blob store u seçiyorum.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fantg5r76geoq9dnqcwwc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fantg5r76geoq9dnqcwwc.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Docker Reposuna Bağlanma
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;**docker login&lt;/em&gt;* komutuyla nexus üzerinden çalıştırdığım docker reposuna giriş yapıyorum.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[berkant@ol9gui ~]$ docker login nexus.linux.local:11011
Username: admin
Password: 
....
....
Login Succeeded
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;Sunucuda bulunan d49 numaralı imajı etiketleyip , nexusta barındırdığım docker reposuna yolluyorum.
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
berkant@ol9gui ~]$ docker image ls
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
nginx        alpine    d4918ca78576   39 hours ago    52.8MB
nginx        latest    9d0e6f6199dc   40 hours ago    152MB
busybox      latest    08ef35a1c3f0   13 months ago   4.43MB


[berkant@ol9gui ~]$ docker tag nginx:alpine nexus.linux.local:11011/docker/nginx:alpine

[berkant@ol9gui ~]$ docker image ls | grep nexus
nexus.linux.local:11011/docker/nginx   alpine    d4918ca78576   39 hours ago    52.8MB


[berkant@ol9gui ~]$ docker push nexus.linux.local:11011/docker/nginx:alpine
The push refers to repository [nexus.linux.local:11011/docker/nginx]
25906c27b84d: Pushed 
...
...
256f393e029f: Pushed 
alpine: digest: sha256:97a145fb5809fd90ebdf66711f69b97e29ea99da5403c20310dcc425974a14f9 size: 1989
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;Son olarak nexus üzerinde barındırdığımız docker repomuzdan imaj çekmeyi deneyelim.
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[berkant@ol9gui ~]$ docker image ls
REPOSITORY                             TAG       IMAGE ID       CREATED         SIZE
nginx                                  alpine    d4918ca78576   40 hours ago    52.8MB
nexus.linux.local:11011/docker/nginx   alpine    d4918ca78576   40 hours ago    52.8MB
....
....

[berkant@ol9gui ~]$ docker image rm d49 --force
Untagged: nginx:alpine
Untagged: nginx@sha256:b3c656d55d7ad751196f21b7fd2e8d4da9cb430e32f646adcf92441b72f82b14
Untagged: nexus.linux.local:11011/docker/nginx:alpine
Untagged: nexus.linux.local:11011/docker/nginx@sha256:97a145fb5809fd90ebdf66711f69b97e29ea99da5403c20310dcc425974a14f9
Deleted: sha256:d4918ca78576a537caa7b0c043051c8efc1796de33fee8724ee0fff4a1cabed9
Deleted: sha256:88af9f575d6a9fa7b5a16120f2a18f8113bbe9c8345586c40d360ba3042572a1
....
....
[berkant@ol9gui ~]$ docker pull nexus.linux.local:11011/docker/nginx:alpine
alpine: Pulling from docker/nginx
2d35ebdb57d9: Pull complete 
....
....
Digest: sha256:97a145fb5809fd90ebdf66711f69b97e29ea99da5403c20310dcc425974a14f9
Status: Downloaded newer image for nexus.linux.local:11011/docker/nginx:alpine
nexus.linux.local:11011/docker/nginx:alpine

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  3) Ters Vekil (Reverse Proxy) Ayarlama
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Şu an elimizde Nexus'un 9091/tcp portundan çalışan web arayüzü ve 11011/tcp portundan çalışan docker reposu var.&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Port karmaşasıyla uğraşmamak için nexus'un bulunduğu sunucuya bir nginx kurup , yapılandıralım.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;nexus.alanadı ile sunucumuza gidildiğinde sunucu o isteği 9091/tcp portuna yönlendirecek.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;nexus.alanAdı &amp;gt;&amp;gt; nexus.linux.local:9091 (Web Arayüzü)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;docker.nexus.alanadı ile sunucumuza gidildiğinde sunucu o isteği 11011/tcp portuna yönlendirecek.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;docker.nexus.alanAdı &amp;gt; nexus.linux.local:11011(Docker Reposu)&lt;/p&gt;

&lt;p&gt;

&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;





&lt;h2&gt;
  
  
  4) Nexus Sürümünü Güncelleme
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;/opt/sonatype-work dizini veri dizinimiz , /opt/nexus dizini ise kurulumun olduğu dizin. Bu dizin, arşiv dosyasından çıkardığımız sürüm numaralı dizine bağlantılı (nexus-3.84.1-01) e. Bunu eğer güncelleyeceğimiz sürüme ayarlarsak , başarıyla Sonatype Nexus'u güncellemiş oluruz.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[root@nexus opt]# ls -alh
total 852M
drwxr-xr-x.  5 root  root  4.0K Nov 23 19:25 .
dr-xr-xr-x. 19 root  root   250 Oct 30 14:51 ..
lrwxrwxrwx.  1 nexus nexus   15 Oct 20 23:30 nexus -&amp;gt; nexus-3.84.1-01
drwxr-xr-x.  6 nexus nexus   94 Oct 20 23:28 nexus-3.84.1-01
-rw-r--r--.  1 root  root  417M Nov 13 00:29 nexus-3.86.2-01-linux-x86_64.tar.gz
drwxr-xr-x.  3 root  root    20 Nov 11 23:09 sonatype-work
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Güncelleyeceğim sürümü arşivden çıkartıyorum. unlink ya da rm komutuyla bağlantıyı kesip yeni sürümü gösterecek şekilde bağlıyorum.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;tar -xzvf nexus-3.86.2-01.-linux_x86_64.tar.gz
unlink nexus
ln -s nexus-3.86.2-01 nexus
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Nexus kurulum dizininde önceki sürümde değiştirdiğim bir dosya varsa aynı değişikliği yapmalı, eklediğim bir dosya varsa yeni sürümün kurulum dizinine de eklemeliyim.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;-- /opt/nexus/etc/ssl/ dizininde jks dosyası varsa onu yeni sürüme de yerleştirmeliyim.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cp /opt/nexus-3.84.1-01/etc/ssl/keystore.jks /opt/nexus-3.86.2-01/etc/ssl/ -v&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;-- /opt/nexus/etc/jetty/jetty-https.xml dosyasında keystore için kullandığım parolalar varsayılandan farklıysa değiştirmeliyim, eski sürümdekiyle aynı olmalı.&lt;/p&gt;

&lt;p&gt;-- Son olarak nexus kullanıcısına yeniden sahiplik vermeliyim.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;chown -Rv nexus: /opt/nexus-3.86.2-01&lt;/code&gt;&lt;/p&gt;

</description>
      <category>nexus</category>
      <category>devops</category>
      <category>tutorial</category>
      <category>linux</category>
    </item>
    <item>
      <title>Vault İnce Ayarlar -- 002</title>
      <dc:creator>Berkant</dc:creator>
      <pubDate>Sun, 12 Oct 2025 18:40:17 +0000</pubDate>
      <link>https://dev.to/berkanterbey/vault-ince-ayarlar-002-3lga</link>
      <guid>https://dev.to/berkanterbey/vault-ince-ayarlar-002-3lga</guid>
      <description>&lt;p&gt;Vault kurulumunu yaptığım , ilk yazıya &lt;a href="https://dev.to/berkanterbey/vault-kurulumu-1ja1"&gt;buradan&lt;/a&gt; ulaşabilirsiniz.&lt;/p&gt;

</description>
      <category>ldap</category>
      <category>authentication</category>
      <category>vault</category>
      <category>linux</category>
    </item>
    <item>
      <title>Vault Kurulumu -- 001</title>
      <dc:creator>Berkant</dc:creator>
      <pubDate>Sun, 05 Oct 2025 19:16:11 +0000</pubDate>
      <link>https://dev.to/berkanterbey/vault-kurulumu-1ja1</link>
      <guid>https://dev.to/berkanterbey/vault-kurulumu-1ja1</guid>
      <description>&lt;h2&gt;
  
  
  Vault nedir
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Her türlü parola , sertifika , anahtarları vb. güvenle saklamamızı(store), belirli aralıklarla değiştirmemizi(rotate), sağlayan, bu işlemleri yaparken belli aktörlere (kullanıcılar, servis hesapları vb) erişim kısıtları tanımlayabilen(RBAC) bir araçtır. &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  1) /opt/vault dizinini ayrı bir yere alma
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Vault belgelerinde /opt/vault dizinin root bölümden ayrı tutulması öneriliyor. Sanal sunucuma yeni bir disk ekleyip, PV &amp;gt; VG &amp;gt; LV oluşturup , ardından /opt/vault olarak takacağım.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;

&lt;/p&gt;
&lt;div class="ltag_asciinema"&gt;
  
&lt;/div&gt;


&lt;br&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mkdir -vp /opt/vault/data /etc/vault.d
unzip vault_1.20.4_linux_amd64.zip
mv vault /usr/bin/ -v
chown -Rv root: /usr/bin/vault
sudo setcap cap_ipc_lock=+ep $(readlink -f $(which vault))


sudo useradd --system --home /opt/vault/data --shell /sbin/nologin vault

sudo chown -Rv vault: /opt/vault/data &amp;amp;&amp;amp; sudo chmod -Rv 750 /opt/vault/data
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  3) Sertifika Adımı
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Sertifika çıkartmak için AD yi kullanacağım. &lt;/li&gt;
&lt;li&gt;&lt;p&gt;AD den sertifika çıkarırken dikkat edilmesi gereken noktalardan biri bu web arayüzüne erişecek ortamların(ör:linux sunucu) truststore una AD nin root/CA sertifikasını da eklemem gerekiyor.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;rootcert.p7b (Sertifika Çıkardığım AD nin kök sertifikası)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;run &amp;gt; certlm.msc &amp;gt; Root Certificates &amp;gt; Kök sertifikayı seçip "copy to file" diyorum.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;openssl pkcs7 -inform DER -print_certs -in rootcert.p7b -out certificate.crt&lt;/code&gt;&lt;br&gt;
&lt;code&gt;sudo mv -v certificate.crt /etc/pki/ca-trust/source/anchors&lt;/code&gt;&lt;br&gt;
&lt;code&gt;sudo update-ca-trust&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiwkf8m2ei5ho5pph17rz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiwkf8m2ei5ho5pph17rz.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;vault.pfx (Vault Web Arayüzü için Kullanacağım SSL Sertifika)
run &amp;gt; certlm.msc &amp;gt; Personal &amp;gt; All Tasks &amp;gt; Request New Certificate &amp;gt; Web Server Template &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Subject &amp;gt; Subject Name &amp;gt; Common Name : vault.alanadı&lt;br&gt;
Subject &amp;gt; Subject Name &amp;gt; Common Name : vault&lt;br&gt;
Subject &amp;gt; Alternative Name &amp;gt; DNS : vault.alanadı&lt;br&gt;
Subject &amp;gt; Alternative Name &amp;gt; IP(v4) : serverIP&lt;br&gt;
Private Key &amp;gt; Key Options &amp;gt; Make Private Key Exportable&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
PFXFile="vault.pfx"

#We can extract the private key form a PFX to a PEM file
openssl pkcs12 -in $PFXFile -nocerts -out key.pem

#Exporting the certificate only:
openssl pkcs12 -in $PFXFile -clcerts -nokeys -out cert.pem

#Removing the password from the extracted private key:
openssl rsa -in key.pem -out server.key 

sudo mkdir /etc/certs
mv -v cert.pem server.key /etc/certs
sudo setfacl -R -m vault:rwx /etc/certs

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  4)Servis Dosyasını Hazırlama
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Vault'u servis olarak çalıştırabilmek için servis dosyamı hazırlıyorum. (/lib/systemd/system/vault.service) Bu dosyanın içinde web arayüzünün olup olmayacağı, hangi porttan yayımlanacağı vb ayarlar var.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;

&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;





&lt;h2&gt;
  
  
  4)Vault Ayar Dosyasını Hazırlama
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Vault ile ilgili ayar dosyamı hazırlıyorum (/etc/vault.d/vault.hcl)


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;sudo chown -Rv vault: /etc/vault.d/vault.hcl&lt;/code&gt;&lt;br&gt;
&lt;code&gt;sudo chmod -Rv 640 /etc/vault.d/vault.hcl&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  5) Web Arayüzü Ayarları
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Sunucumda firewall açıksa 8200/tcp portunun dışarıdan erişilmesine izin vermem gerekiyor.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;sudo firewall-cmd --permanent --add-port=8200/tcp&lt;/code&gt;&lt;br&gt;
&lt;code&gt;sudo firewall-cmd --reload&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sertifika çıkarttığım AD sunucusundan arayüze bağlanıyorum , 
&lt;a href="https://vault.alanadi:8200" rel="noopener noreferrer"&gt;https://vault.alanadi:8200&lt;/a&gt; şeklinde.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4uqo3nfsdlbtoat6bkbs.png" alt=" "&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Favx0hxx1z43v7vats45o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Favx0hxx1z43v7vats45o.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fey52a0h9rgh4lx2ov0pz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fey52a0h9rgh4lx2ov0pz.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmuvsto6e7d0178v450ye.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmuvsto6e7d0178v450ye.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Okuduğunuz için teşekkürler 🙂&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmedia2.giphy.com%2Fmedia%2Fv1.Y2lkPTc5MGI3NjExcGc1bW1lejMxd20yZmMzNDhxb3Vwb3h1MGI2MTAyN3ZydGF0bDI3bCZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw%2F2eCdHk95hNFkk5ThSL%2Fgiphy.gif" class="article-body-image-wrapper"&gt;&lt;img width="100%" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmedia2.giphy.com%2Fmedia%2Fv1.Y2lkPTc5MGI3NjExcGc1bW1lejMxd20yZmMzNDhxb3Vwb3h1MGI2MTAyN3ZydGF0bDI3bCZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw%2F2eCdHk95hNFkk5ThSL%2Fgiphy.gif"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>hashicorp</category>
      <category>vault</category>
      <category>linux</category>
      <category>secretmanagement</category>
    </item>
    <item>
      <title>Nexus 001 - Kurulum</title>
      <dc:creator>Berkant</dc:creator>
      <pubDate>Thu, 08 May 2025 18:01:37 +0000</pubDate>
      <link>https://dev.to/berkanterbey/nexus-001-kurulum-5e7o</link>
      <guid>https://dev.to/berkanterbey/nexus-001-kurulum-5e7o</guid>
      <description>&lt;h1&gt;
  
  
  Nexus Nedir?
&lt;/h1&gt;

&lt;p&gt;Sonatype Nexus Repository, temel olarak binary dosyalarından, çeşitli paketlere , AI modellerine kadar, geniş bir yelpazede merkezi bir saklama ve dağıtım aracıdır.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7oy6qtl3ede1klcsvk54.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7oy6qtl3ede1klcsvk54.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Desteklediği paketleri/tipleri &lt;a href="https://www.sonatype.com/products/language-and-package-support" rel="noopener noreferrer"&gt;şuradan&lt;/a&gt; görebilirsiniz.&lt;/p&gt;

&lt;h1&gt;
  
  
  Kurulum
&lt;/h1&gt;

&lt;p&gt;1) Nexus kurulum dosyasını indirelim.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://help.sonatype.com/en/download.html" rel="noopener noreferrer"&gt;Buradan&lt;/a&gt; indirme bağlantısını bulabiliriz.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;wget https://download.sonatype.com/nexus/3/nexus-3.80.0-06-linux-x86_64.tar.gz
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;2) /opt dizininde arşivi açalım. Sürüm numarası sizde farklı olabilir.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cp nexus-3.80.0-06-linux-x86_64.tar.gz /opt/
cd /opt
tar -xzvf nexus-3.80.0-06-linux-x86_64.tar.gz
ln -s nexus-3.80.0-06 nexus
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;3) nexus kullanıcısı oluşturup, önceki adımda arşivden çıkardığımız nexus ve sonatype-work dizinlerinde yetkilendirelim.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# --disable-login yerine shell olarak /sbin/nologin /bin/false da ayarlanabilir.
adduser --disabled-login nexus
echo 'run_as_user="nexus"' &amp;gt;&amp;gt;nexus.rc
chown -Rv nexus: /opt/nexus /opt/sonatype-work /opt/nexus-3.80.0-06
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;4) Servis dosyasını hazırlayalım&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;



&lt;p&gt;5) Servisi sunucu yeniden başlayınca açılacak şekilde(enabled) ayarlayıp, şimdi çalıştıralım(start)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;systemctl daemon-reload
systemctl enable --now nexus.service
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;6) Bir süre sonra 8081 portunu dinleyen bir java uygulaması(nexus) olacak sunucuda. ss ya da netstat komutu ile dinlenen portlara bakabiliriz.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;root@nexus:/opt# ss -tulpn | grep 8081
tcp   LISTEN 0      50                        *:8081            *:*    users:(("java",pid=2623,fd=37))     
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>nexus</category>
      <category>devops</category>
      <category>tutorial</category>
      <category>linux</category>
    </item>
    <item>
      <title>Kısa Notlar 001 - LDIF Dosyaları</title>
      <dc:creator>Berkant</dc:creator>
      <pubDate>Tue, 01 Nov 2022 17:48:53 +0000</pubDate>
      <link>https://dev.to/berkanterbey/kisa-notlar-001-ldif-dosyalari-34ba</link>
      <guid>https://dev.to/berkanterbey/kisa-notlar-001-ldif-dosyalari-34ba</guid>
      <description>&lt;p&gt;&lt;strong&gt;LDIF:&lt;/strong&gt; LDAP kayıtlarının düz metin biçimde ifade edildiği dosyalardır. LDAP taki bilgilerin tamamını içeribileceği gibi bir kısmını da içerebilir. Yeni kayıt ekleme,çıkarma, değiştirme işlemleri yapılabilir.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ldapadd -x -W -D "cn=admin,dc=cloudsio,dc=com" -f drivers.ldif&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yukarıdaki komutla bind dn olarak cn=admin,dc=cloudsio,dc=com kullanılarak driver.ldif dosyasındaki kayıtlar ekleniyor.&lt;/p&gt;

&lt;p&gt;Ldif dosyalarını ya da ldap kayıtlarınızı görselleştirmek için &lt;a href="https://marcin.owsiany.pl/ldif2dot-page" rel="noopener noreferrer"&gt;ldif2dot&lt;/a&gt; kullanabilirsiniz.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# dot , graphviz paketinden geliyor.
sudo apt update &amp;amp;&amp;amp; sudo apt install graphviz -y
chmod +x ldif2dot.py
# -b parametresi ile nereden başlayarak arama yapacağımızı belirtiyoruz.
ldapsearch -x -b 'dc=cloudsio,dc=com' | ./ldif2dot.py |       dot -o myDomain.png -Nshape=box -Tpng /dev/stdin
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4mmyqoq0h6wzgj59r2ff.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4mmyqoq0h6wzgj59r2ff.png" alt=" " width="800" height="1008"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>SSH Güvenliğini Arttırmak</title>
      <dc:creator>Berkant</dc:creator>
      <pubDate>Fri, 21 Oct 2022 07:56:07 +0000</pubDate>
      <link>https://dev.to/berkanterbey/ssh-guvenligini-arttirmak-d1o</link>
      <guid>https://dev.to/berkanterbey/ssh-guvenligini-arttirmak-d1o</guid>
      <description>&lt;h2&gt;
  
  
  Giriş
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Merhaba, Bu yazımda &lt;strong&gt;ssh-audit&lt;/strong&gt; aracıyla hedef makinedeki ssh bağlantı güvenliği açıklarını bulup, açıkları kapamak için gereken değişiklikleri &lt;strong&gt;Ansible&lt;/strong&gt; ile yapacağız.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  .sshd_config ve ssh_config Arasındaki Fark?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;sshd nin açılımı ssh daemondur. SSH Portuna gelen bağlantıları dinler. sshd_config bulunduğumuz makineye gelen bağlantıları karşılamada kullanılan ayarlardır.&lt;/li&gt;
&lt;li&gt;ssh_config de ise ssh istemcisi için yapılan ayarlar bulunur. Yani ssh_config başka makinelere bağlanırken kullanılan ayarlar içindir.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  ssh-audit ile Açıkları Bulmak
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;ssh-audit kurulur.&lt;/li&gt;
&lt;/ul&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;sshd_config ayarları yapılarak güvenliği arttırılacak makine taratılır. İster uzak bir makineden ister kendisinden taratabiliriz.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;ssh-audit localhost&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fberkanterbey.github.io%2Fimages%2F002.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fberkanterbey.github.io%2Fimages%2F002.png" title="ssh-audit komutunun çıktısı" alt="alt text" width="800" height="818"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fberkanterbey.github.io%2Fimages%2F003.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fberkanterbey.github.io%2Fimages%2F003.png" title="ssh-audit komutunun çıktısı" alt="alt text" width="800" height="468"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Çıkan sonuca göre anahtar değişim algoritmalarında (KexAlgorithms), HostKeyAlgoritms de, kullanılan şifreleme algoritmalarında (ciphers) ve mesaj kimlik doğrulama kodlarında yeşille belirtilen algoritmalar güvenli olduğundan kalacak, sarı ve kırmızı olanlar sshd_config den çıkartılacak.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ubuntu 20.04 Focal için örnek sshd_config dosyamız.&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Ansible ile Otomasyon
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Birden fazla sunucunun olduğu bir ortamda, teker teker bu ayarları dağıtmak çok fazla zaman alacağından &lt;strong&gt;Ansible&lt;/strong&gt; ile dağıtacağız.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ansible ile dağıtırken her işletim sistemi sürümüne göre desteklenen algoritmalarda değişiklikler olabilir. Bundan dolayı playbook umuza sunucuların işletim sistemini bakıp, sadece Ubuntu 20.04 (focal) için çalışacak şekilde ayarlanacak. Dilerseniz farklı işletim sistemlerinide benzer yöntemle ekleyebilirsiniz.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Aşağıdaki ekran görüntüsünde host02.txt dosyasında belirtilen makinelerde işletim sistemi kod adı bilgisine ulaşıyoruz.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fberkanterbey.github.io%2Fimages%2F004.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fberkanterbey.github.io%2Fimages%2F004.png" title="Ansible İşletim Sistemi tanıma" alt="alt text" width="800" height="136"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;Yapacağımız işlemi kısaca özetlersek

&lt;ul&gt;
&lt;li&gt;sshd_config hedef makineye kopyalamak (var olan izin ve sahiplikleri koruyarak)&lt;/li&gt;
&lt;li&gt;sshd_config de belirtilen hostkeyleri &lt;strong&gt;yoksa oluşturmak&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;ssh servisini yeniden başlatmak (&lt;strong&gt;değişiklik olmuşsa&lt;/strong&gt;)
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Bir sonraki yazımızda görüşmek üzere ;)&lt;/p&gt;

</description>
      <category>ssh</category>
      <category>security</category>
      <category>linux</category>
      <category>openssh</category>
    </item>
    <item>
      <title>Başlık Testi</title>
      <dc:creator>Berkant</dc:creator>
      <pubDate>Thu, 20 Oct 2022 18:26:43 +0000</pubDate>
      <link>https://dev.to/berkanterbey/baslik-testi-1oj1</link>
      <guid>https://dev.to/berkanterbey/baslik-testi-1oj1</guid>
      <description>&lt;p&gt;Deneme deneme&lt;/p&gt;

&lt;p&gt;Jump to "Header 1"&lt;br&gt;
Jump to "Header 2"&lt;br&gt;
Jump to "header3"&lt;br&gt;
Jump to "denene"&lt;/p&gt;

&lt;h1&gt;
  
  
  Header 1
&lt;/h1&gt;

&lt;p&gt;Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum&lt;/p&gt;

&lt;h1&gt;
  
  
  Header 2
&lt;/h1&gt;

&lt;p&gt;There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable. If you are going to use a passage of Lorem Ipsum, you need to be sure there isn't anything embarrassing hidden in the middle of text. All the Lorem Ipsum generators on the Internet tend to repeat predefined chunks as necessary, making this the first true generator on the Internet. It uses a dictionary of over 200 Latin words, combined with a handful of model sentence structures, to generate Lorem Ipsum which looks reasonable. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SSH Key Oluşturma &lt;div class="ltag_asciinema"&gt;
  
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The generated Lorem Ipsum is therefore always free from repetition, injected humour, or non-characteristic words etc.&lt;/p&gt;

&lt;h2&gt;
  
  
  Header3
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--w9T7Ia9C--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f5vwtb1811l96mbgk1id.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--w9T7Ia9C--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f5vwtb1811l96mbgk1id.png" alt="Image description" width="880" height="247"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  denene
&lt;/h2&gt;

&lt;p&gt;Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 an&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Lab001 - Linux Dağıtımlarında LDAP Üzerinden Kimlik Doğrulama</title>
      <dc:creator>Berkant</dc:creator>
      <pubDate>Tue, 11 Oct 2022 19:25:14 +0000</pubDate>
      <link>https://dev.to/berkanterbey/lab001-sunucularda-ldap-uzerinden-kimlik-dogrulama-3pik</link>
      <guid>https://dev.to/berkanterbey/lab001-sunucularda-ldap-uzerinden-kimlik-dogrulama-3pik</guid>
      <description>&lt;h1&gt;
  
  
  İçindekiler
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;Terraform ile Ortamın Kurulması&lt;/li&gt;
&lt;li&gt;Ansible ile Yapılandırma&lt;/li&gt;
&lt;li&gt;LDAP Adımları&lt;/li&gt;
&lt;li&gt;Lab Dosyaları&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Giriş
&lt;/h2&gt;

&lt;p&gt;Bu yazıda sadece &lt;strong&gt;LDAP Sunucusu&lt;/strong&gt; kurulumu anlatmayacağım. LDAP kurup, kayıtları ekleyip, kullanıcıların linux sunucularda LDAP üzerinden yetkilendirilmesini anlatacağım. Bunu yaparken ortam kurulumu için &lt;strong&gt;Terraform&lt;/strong&gt;, yapılandırma için de &lt;strong&gt;Ansible&lt;/strong&gt; kullanacağım.&lt;/p&gt;

&lt;p&gt;⚠️⚠️ Ekran görüntülerinde ve terminal kayıtlarında yazı içinde farklı IP adresleri görebilirsiniz. Bu yazıyı takip ederken LDAP Sunucusu mu yoksa istemci makineden mi bahsediliyor dikkat ediniz.&lt;/p&gt;

&lt;h2&gt;
  
  
  Terraform ile Ortamın Kurulması
&lt;/h2&gt;

&lt;p&gt;Bulut ortamlarından AWS yi seçtim bu lab için siz dilediğiniz bulut sağlayıcıda veya kendi yerelinizde bu ortamı kurabilirsiniz.&lt;/p&gt;

&lt;p&gt;AWS de varsayılan VPC nin içine iki sunucu(LDAP + Test Sunucusu) kuracağız. Bunlar aynı &lt;strong&gt;güvenlik grubuna&lt;/strong&gt;(security group) bağlı, güvenlik grubunda dışarıdan(VPC nin dışından) gelecek SSH ve LDAP bağlantılarına izin verecek iki kural var. Ayrıca sunuculara terraform da , açık anahtarımızı(public ssh key) tanıtacağız ssh bağlantısı için.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://learn.hashicorp.com/tutorials/terraform/install-cli" rel="noopener noreferrer"&gt;Terraform Kurulumu&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html" rel="noopener noreferrer"&gt;AWS CLI Kurulumu&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="//console.aws.amazon.com"&gt;AWS Console&lt;/a&gt; da IAM -&amp;gt; Users -&amp;gt; &lt;strong&gt;Add Users&lt;/strong&gt; bölümünden &lt;strong&gt;terraformUser&lt;/strong&gt; isimli kullanıcı oluşturuyoruz. Credential type için &lt;strong&gt;Access key&lt;/strong&gt; i seçiyoruz.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F43hdkspaawzkhi8ymata.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F43hdkspaawzkhi8ymata.png" alt=" " width="800" height="332"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Bir sonraki adımda Set Permissions ekranında &lt;strong&gt;Attach Existing policies directly&lt;/strong&gt; bölümünden aşağıdaki yetkiler seçilir. Yetkiler &lt;strong&gt;Filter Policies&lt;/strong&gt; ekranından aranarak bulunabilir.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AmazonEC2FullAccess , AmazonVPCFullAccess&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff5vwtb1811l96mbgk1id.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff5vwtb1811l96mbgk1id.png" alt=" " width="800" height="224"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Add tags&lt;/strong&gt; bölümünde herhangi bir seçim yapmamıza gerek yok. Bir sonraki adıma geçiyoruz.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3xn670utr2p9muffln56.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3xn670utr2p9muffln56.png" alt=" " width="800" height="209"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Review&lt;/strong&gt; bölümünde bize önceki adımlarda yaptığımız seçenekleri gösteriyor. Alttaki ekran görüntüsüyle karşılaştırıp doğrulamanız iyi olur.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1euvltefplcrdy1ip4zs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1euvltefplcrdy1ip4zs.png" alt=" " width="800" height="409"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Son adımda &lt;strong&gt;Download .csv&lt;/strong&gt; ile kimlik bilgilerinin olduğu dosya indirilir.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F95xb3inj0chig2r3dtok.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F95xb3inj0chig2r3dtok.png" alt=" " width="800" height="342"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Terraform dosyalarının AWS de yapıyı kurabilmesi için önceki adımlarda indirdiğimiz .csv dosyasındaki profili , aws cli da tanıtalım. Bu profili Terraformda tanımlayalım.&lt;/li&gt;
&lt;/ul&gt;


&lt;div class="ltag_asciinema"&gt;
  
&lt;/div&gt;
&lt;br&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;provider "aws" {
  region  = "us-east-1"
  profile = "terraformUser"
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;Oluşturacağımız sunuculara hem Ansible ın erişmesi için hem de ssh üzerinden erişebilmemiz için sunuculara açık SSH anahtarımızı Terraform ile yerleştiriyoruz.&lt;/li&gt;
&lt;/ul&gt;


&lt;div class="ltag_asciinema"&gt;
  
&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;resource "aws_key_pair" "myKey" {
  key_name   = "mySSHKey"
  public_key = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICT1k5NTCYPbi19DKDUvJQ8V9pkVFvCK8FZaXhv8bJty berkant@ryzen"
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;terraform fmt&lt;/strong&gt; komutuyla dosya varsayılan biçimde formatlanır. &lt;strong&gt;terraform validate&lt;/strong&gt; komutu ile oluşturulan ayarlar ve yapı geçerli mi diye kontrol edilir. &lt;strong&gt;terraform init&lt;/strong&gt; ile terraformun çalışması gereken çeşitli hazırlıklar yapılır(sağlayıcı dosyasını indirmek gibi). &lt;strong&gt;terraform plan&lt;/strong&gt; kurulacak yapı için gereken değişiklikleri gösterir. &lt;strong&gt;terraform apply&lt;/strong&gt; yapıyı kurar.&lt;/li&gt;
&lt;/ul&gt;


&lt;div class="ltag_asciinema"&gt;
  
&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Kaydın sonunda hata almasının sebebi AWS de Terraform tarafından oluşturulmayan bir kaynağı kullanmaya çalışmamız. Terraform dosyalarında varsayılan VPC yi kullandım. Bu kaynak Terraform tarafından oluşturulmadığı için , AWS deki o kaynağı içe aktarmamız lazım.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;resource "aws_vpc" "myVPC" {
  # Bu kaynak aws tarafından oluşturuldu.İçe aktarılacak.
  # Kullanmamız için bu tanımlama ve terraform import ile içe aktarılması yeterli
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="ltag_asciinema"&gt;
  
&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Tekrar &lt;strong&gt;terraform apply&lt;/strong&gt; yaptığımızda sorunsuz bir şekilde kurulacak. Terraform bölümünü bitirdik 🏁&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Ansible ile Yapılandırma
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Ansible ile kuracağımız iki sunucuda paket yükleme, ssh ayarlarını değiştirme, ayar dosyalarını atma işlemlerini yapacağız. Altta temel ansible-playbook komutunun açıklamaları var.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;ansible-playbook -i inventoryFile playbook.yaml --key-file keyFile&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;inventoryFile:&lt;/strong&gt; playbook.yaml daki kuralların hangi sunucularda işletileceğine yönelik bilgiler. Bu bilgilerle ssh bağlantısı sağlanacak. (IP adresi, sunucu, kullanıcı adı vb).  [] Köşeli parantezler içinde yazan ifade ansible dosyasında &lt;strong&gt;hosts&lt;/strong&gt; ile belirttiğimiz değişkene karşılık geliyor.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[LDAP]
XXX.XXX.XXX.XXX ansible_user=admin
[Client]
XXX.XXX.XXX.XXX ansible_user=admin

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;playbook.yaml:&lt;/strong&gt; Ansible kodlarının olduğu dosya.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;keyFile:&lt;/strong&gt; SSH ile bağlanırken kimlik doğrulama için anahtar dosyası.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;İhtiyacımız olan paketleri kurup, dosyaları kopyalayıp, ayar dosyalarında değişiklikler yaptık.
&lt;div class="ltag_asciinema"&gt;
  
&lt;/div&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  LDAP Adımları
&lt;/h2&gt;

&lt;h3&gt;
  
  
  LDAP Sunucusundaki Adımlar
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;LDAP sunucumuza giriyoruz, slapd ve ldaputils paketi ansible ile kurulmuştu. Varsayılan olarak kurulumda sunucu isminden dn(ayırt edici ad ~ distinguished name) almaya çalışıyor. Bu değerlere &lt;strong&gt;slapcat&lt;/strong&gt; komutuyla bakabiliriz.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Örneğin cloudsio ismindeki yapımız için cloudsio.com a karşılık gelecek şekilde kurduğumuzu düşünelim. LDAP ı &lt;strong&gt;sudo dpkg-reconfigure slapd&lt;/strong&gt; komutuyla yeniden yapılandırabiliriz. Adımlarda oluşturulan &lt;strong&gt;admin&lt;/strong&gt; hesabının okuma/yazma yetkileri var.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;LDAP ı yeniden yapılandırdıktan sonra &lt;strong&gt;drivers.ldif&lt;/strong&gt; dosyamızı ldap a ekleyelim alttaki komut ile. (.ldif uzantılı dosyalar ldap kayıtlarını düz metin olarak saklar.)&lt;br&gt;
👉👉&lt;a href="https://dev.toLDIF%20Dosyalar%C4%B1%20Hakk%C4%B1nda%20K%C4%B1sa%20Notlar"&gt;LDIF Dosyaları Hakkında Kısa Notlar&lt;/a&gt;👈👈&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;ldapadd -x -W -D "cn=admin,dc=cloudsio,dc=com" -f drivers.ldif&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;👉👉&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--FnCUiKCd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4mmyqoq0h6wzgj59r2ff.png" rel="noopener noreferrer"&gt;drivers.ldif in görselleştirilmiş hali&lt;/a&gt;👈👈&lt;/p&gt;


&lt;div class="ltag_asciinema"&gt;
  
&lt;/div&gt;


&lt;h3&gt;
  
  
  İstemci/Client ta Yapılacak Adımlar
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;LDAP sunucusunda yapmamız gerekenler adımlar bitti. Kimlik doğrulama işini LDAP a soracak sunucudaki(istemci / client) adımlara geçelim.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;sudo apt update &amp;amp;&amp;amp; sudo apt install libnss-ldapd libpam-ldapd ldap-utils -y&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Sunucuya &lt;strong&gt;libnss-ldapd , libpam-ldapd, ldap-utils&lt;/strong&gt; paketlerini yüklüyoruz. Paketlerin yüklenme adımında ldap sunucusu ile ilgili ve bulunduğumuz pam modülünün ayarları ile ilgili seçenekleri soruyor. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Son olarak &lt;strong&gt;/etc/pam.d/common-session&lt;/strong&gt; dosyasına , sunucuya giren kullanıcaların ev dizininin sunucuya girer girmez oluşturulması için aşağıdaki pam seçeneğini ekliyoruz.&lt;br&gt;
&lt;code&gt;session optional        pam_mkhomedir.so skel=/etc/skel umask=077&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;İlgili nscd ve nslcd servislerini yeniden başlatıyoruz.&lt;br&gt;
&lt;code&gt;systemctl restart nscd nslcd&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Kendi makinemizden yaptığımız bağlantılarda ssh servisinin &lt;strong&gt;MaxAuthTries&lt;/strong&gt; (varsayılan 6) değerini aştığımız için aşağıdaki gibi bir hata alabiliriz.&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;berkant@ryzen:~/LAB001/terraform$ ssh jbianchi@54.243.0.128
Received disconnect from 54.243.0.128 port 22:2: Too many authentication failures
Disconnected from 54.243.0.128 port 22
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Eğer başka bir makineden bağlanırsak, ya da &lt;strong&gt;/etc/ssh/sshd_config&lt;/strong&gt; &lt;strong&gt;MaxAuthTries&lt;/strong&gt; değerini yükseltip, ssh servisi yeniden başlatırsak sorun çözülür.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Kullanıcılar sunucuya girdi ama henüz sudo yetkileri yok. Ne yapmalıyız?

&lt;ul&gt;
&lt;li&gt;/etc/sudoers dosyasında değişiklik yapmamız gerekecek. 
&lt;code&gt;-r--r----- 1 root root 668 Oct 31 20:00 /etc/sudoers&lt;/code&gt; dosyanın izinleri bu şekilde olduğundan herhangi bir metin düzenleyici içine girip değişiklik yapamıyoruz.  sudoers dosyalarını düzenlemek için &lt;strong&gt;visudo&lt;/strong&gt; komutunu kullanabiliriz.
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo visudo
# Açılan sudoers dosyasında ilgili kullanıcının grubunu ekliyorum
%drivers   ALL=(ALL:ALL) ALL
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="ltag_asciinema"&gt;
  
&lt;/div&gt;



&lt;h2&gt;
  
  
  Lab Dosyaları
&lt;/h2&gt;

&lt;p&gt;👉👉&lt;a href="https://github.com/BerkantErbey/Linux-Dagitimlarinda-LDAP-Uzerinden-Kimlik-Dogrulama" rel="noopener noreferrer"&gt;Github Bağlantısı&lt;/a&gt;👈👈&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Okuduğunuz için teşekkürler&lt;/strong&gt; 🙂&lt;br&gt;
&lt;a href="https://i.giphy.com/media/h6Kc0amrAvn3Cnrkbd/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/h6Kc0amrAvn3Cnrkbd/giphy.gif" width="480" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Kaynaklar&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Kapak görseli -&amp;gt; Image by &lt;a href="https://pixabay.com/users/12019-12019/?utm_source=link-attribution&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image&amp;amp;utm_content=172770" rel="noopener noreferrer"&gt;David Mark&lt;/a&gt; from &lt;a href="https://pixabay.com//?utm_source=link-attribution&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image&amp;amp;utm_content=172770" rel="noopener noreferrer"&gt;Pixabay&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://wiki.debian.org/LDAP/PAM" rel="noopener noreferrer"&gt;https://wiki.debian.org/LDAP/PAM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://wiki.debian.org/LDAP/OpenLDAPSetup" rel="noopener noreferrer"&gt;https://wiki.debian.org/LDAP/OpenLDAPSetup&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.howtoforge.com/linux_ldap_authentication" rel="noopener noreferrer"&gt;https://www.howtoforge.com/linux_ldap_authentication&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.server-world.info/en/noteos=Debian_11&amp;amp;p=openldap" rel="noopener noreferrer"&gt;https://www.server-world.info/en/noteos=Debian_11&amp;amp;p=openldap&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://marcin.owsiany.pl/ldif2dot-page" rel="noopener noreferrer"&gt;https://marcin.owsiany.pl/ldif2dot-page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/ltb-project" rel="noopener noreferrer"&gt;https://github.com/ltb-project&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>linux</category>
      <category>ldap</category>
      <category>terraform</category>
      <category>ansible</category>
    </item>
  </channel>
</rss>
