AHTAPOT CA Kurulumu ve Anahtar Yönetimi Bu dökümanda, Ahtapot bütünleşik güvenlik yönetim sisteminde kullanılan SSH anahtarları yöneten CA (Certificate Authority) sisteminin kurulması ve anahtar imzalama prosedürü anlatılıyor.
Gereken : 1. Pardus Temel ISO dan kurulumu tamamlanmış bir sunucu. İçerik Önemli Uyarılar CA Temel Anahtarı Oluşturma İmzalanacak Kullanıcı Anahtarı Oluşturma CA Anahtarı ile Kullanıcı Anahtarı İmzalama CA Anahtarı ile Sadece FWBuilder Kullanabilecek Anahtar İmzalama CA Anahtarı ile Kullanıcı Erişim Kısıtlama Ayarları Önemli Uyarılar 1. Kurulacak makina, PKI (Public Key Infrastructure) yapısının omurgasını teşkil edeceğinden kozmik korunacak sistemler arasında yer almalıdır. Bu makinada korunan CA imzalama anahtarı ele geçirilirse tüm yönetilen sistemlere erişim tehlikeye düşmüş olur. 2. Pardus Temel ISO ile birlikte, lab ve demo ortamlarında kurulumu kolaylaştırmak için sisteme ilk erişimi sağlamak üzere kurulumla birlikte bir CA (ahtapot.ca) dosyası dağıtılıyor. Canlı sistemde kullanılacak CA dosyası, canlı ortamın kurulumunda bu dökümanda tarif edilen yöntemlerle oluşturulmalı ve ilk adımlarla birlikte geçici ve güvensiz olan dosyanın yerine yerleştirilmeli. CA Temel Anahtarı Oluşturma UYARI : Aşağıdaki adımların çalıştırılacağı sistem Ahtapot CA sunucusu olmalıdır. Ahtapot CA Dökümantasyon v1.1 2
1. Pardus Temel ISO dan Pardus kurulumu tamamlandıktan sonra sistemde tanımlı bir kullanıcı ile (tercihen root) ile Ahtapot CA olacak sunucu sistemine login olunur. sshkeygen kullanılarak standart bir SSH anahtarı oluşturulur. Bu anahtarı dosya ismi olarak ahpapot_ca ön ekiyle oluşturuyoruz. SSH anahtarı oluşturulurken kullanılan şifrenin özenle saklanması gerekmektedir. bilgiops@bilgio:~/bilgio/lab> ssh-keygen -f ahtapot_ca Generating public/private rsa key pair. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in ahtapot_ca. Your public key has been saved in ahtapot_ca.pub. The key fingerprint is: ad:78:1c:b3:32:09:0d:d0:4e:3a:37:8a:fd:81:73:fd [MD5] bilgiops@lab.bilgio.com The key's randomart image is: +--[ RSA 2048]----+...o +. o +o. o =.o. S.. = o..+ = +.=.=. +E +--[MD5]----------+ 2. Yukarıdaki adım ile 2 adet dosya oluşturulur. Bu dosyalardan ahtapot_ca özenle korunması gereken gizli anahtar (Private Key), ahtapot_ca.pub dosyası ise her yere dağıtılabilen açık anahtar (Public Key) olarak kaydedilir. bilgiops@bilgio:~/bilgio/lab> ls -al total 8 drwxr-xr-x 1 bilgiops users 52 Oct 29 10:44. drwxr-xr-x 1 bilgiops users 274 Oct 29 10:34.. -rw------- 1 bilgiops users 1766 Oct 29 10:44 ahtapot_ca -rw-r--r-- 1 bilgiops users 405 Oct 29 10:44 ahtapot_ca.pub Ahtapot CA Dökümantasyon v1.1 3
İmzalanacak Kullanıcı Anahtarı Oluşturma UYARI : Aşağıdaki adımların çalıştırılacağı sistem Ahtapot Ansible merkezi yönetim sistemidir 1. Ahtapot sistemi adına tüm yönetimi gerçekleştirecek olan kullanıcı için, yönetimi gerçekleştirilecek olan sunucuda tamamen aynı şekilde başka bir anahtar oluşturulur. Bu anahtar otomatik sistemlerle kullanılacağından ötürü şifre verilmeden oluşturulmalıdır. bilgiops@bilgio:~/bilgio/lab> ssh-keygen -f kaptan Generating public/private rsa key pair. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in kaptan. Your public key has been saved in kaptan.pub. The key fingerprint is: 51:5c:40:e8:6e:3d:b4:6d:8f:49:7f:b3:ad:de:51:d6 [MD5] bilgiops@lab.bilgio.com The key's randomart image is: +--[ RSA 2048]----+ ++o...........so o E o + +... + =. o oo+.o+= +--[MD5]----------+ 2. Yukarıdaki adım ile 2 adet dosya oluşturulur. Bu dosyalardan kaptan özenle korunması gereken gizli anahtar (Private Key), kaptan.pub dosyası ise her yere dağıtılabilen açık anahtar (Public Key) olarak kaydedilir. bilgiops@bilgio::~/bilgio/test> ls -al Ahtapot CA Dökümantasyon v1.1 4
total 16 drwxr-xr-x 1 bilgiops users 84 Oct 29 10:45. drwxr-xr-x 1 bilgiops users 274 Oct 29 10:34.. -rw------- 1 bilgiops users 1766 Oct 29 10:45 kaptan -rw-r--r-- 1 bilgiops users 405 Oct 29 10:45 kaptan.pub 3. Yukarıda hazırlanılan kaptan.pub anahtar dosyası korunması gerekmez, yerel ağda rahatlıkla kopyalanabilir durumdadır. Öte yandan gizli anahtar olan kaptan dosyası oluşturulduğu makinadan hiç bir şekilde dışarıya çıkarılmaması gerekir. Rahatlıkla kopyalanabilecek olan kaptan.pub dosyasını Ahtapot CA ve ya USB ve ya network üzerinden SCP ile kopyalanabilir. Önerilen yöntem Ahtapot CA makinasının yalıtılmış (AIR GAP) bir sunucu şeklinde korunması olacağından dolayı imzalanması gereken anahtarların USB gibi bir taşıma yöntemiyle Ahtapot CA sunucusuna getirilmesi gerekir. NOT: Bu yöntem kullanılarak aşağıdaki kullanıcı listesi için farklı anahtarlar oluşturulmalıdır. ahtapotops git myshook gdyshook CA Anahtarı ile Kullanıcı Anahtarı İmzalama UYARI : Aşağıdaki adımların çalıştırılacağı sistem Ahtapot CA sunucusudur. 1. Kullanıcı anahtarının Ahtapot CA sunucusunda imzalama anahtarıyla aynı dizine taşınmasından sonra şu şekilde imzalama işlemi gerçekleştirilir. bilgiops@bilgio:~/bilgio/lab> ssh-keygen -s ahtapot_ca -I bilgiops@kaptan.bilgio.lab -n bilgio,bilgiops -O source-address=10.0.7.0/24 -O no-agent-forwarding -O no-port-forwarding -O no-x11-forwarding kaptan.pub Enter passphrase: Signed user key kaptan-cert.pub: id "bilgiops@kaptan.bilgio.lab" serial 0 for bilgio valid forever 2. Yukarıdaki adım ile kaptan.pub dosyası sadece 10.0.7.0/24 network bloğundan, sadece bilgio ve bilgiops kullanıcıları olarak bağlanacak şekilde kısıtlandırılarak imzalanır. Ayrıca SSH yaparken port forward etme, X11 protokolüyle erişim gibi özellikler de kısıtlanır. Bu dökümanın sonunda SSH anahtarı imzalanırken kullanılabilecek olan tüm opsiyonlar Ahtapot CA Dökümantasyon v1.1 5
detaylandırılmıştır. 3. Yukarıdaki komuta -V YYYYMMDDHHMMSS opsiyonu kullanılarak belli bir süreye kadar geçerli olma ayarlaması da yapılabilir. Örneğin, yukarıdaki anahtarı 1 Ocak 2016 dan 1 Ocak 2018 e kadar geçerli olacak şekilde oluşturmak için: bilgiops@bilgio:~/.ssh$ ssh-keygen -s ahtapot_ca -I bilgiops@kaptan.bilgio.lab -n bilgio,bilgiops -O source-address=10.0.7.0/24 -O no-agent-forwarding -O no-port-forwarding -O no-x11-forwarding -V"20160101:20180101" id_rsa.pub Signed user key id_rsa-cert.pub: id "bilgiops@kaptan.bilgio.lab" serial 0 for bilgio,bilgiops valid from 2016-01-01T00:00:00 to 2018-01-01T00:00:00 4. Oluşan imzalanmış anahtar dosyasının adı kaptan_cert.pub daki imzalanmış kısıtlamalara göz atmak için aşağıdaki komut kullanılır : bilgiops@bilgio:~/bilgio/ahtapot/os/keys> ssh-keygen -Lf kaptan-cert.pub kaptan-cert.pub: Type: ssh-rsa-cert-v01@openssh.com user certificate Public key: RSA-CERT 92:4b:a6:c5:8c:60:c5:c1:ab:37:a9:6f:64:22:1b:9e Signing CA: RSA 68:1c:65:34:85:10:d7:56:db:99:c5:31:43:4d:e5:24 Key ID: "bilgiops@kaptan.bilgio.lab" Serial: 0 Valid: from 2016-01-01T00:00:00 to 2018-01-01T00:00:00 Principals: bilgio bilgiops Critical Options: source-address 10.0.7.0/24 Extensions: permit-pty permit-user-rc 5. Yukarıda imzalanmış anahtar USB gibi bir taşıma yöntemiyle, ilk oluşturulduğu sunucuya, gizli anahtarın olduğu dizine kopyalanması gerekir. Bu varsayılan ayarlar için, anahtarın oluşturulduğu kullanıcının ev dizini altındaki.ssh dizini olmak durumundadır. NOT: Bu yöntem kullanılarak aşağıdaki kullanıcı listesi için farklı anahtarlar oluşturulmalıdır. ahtapotops git myshook gdyshook Ahtapot CA Dökümantasyon v1.1 6
CA Anahtarı ile Sadece FWBuilder Kullanabilecek Kısıtlı Kullanıcı Anahtarı İmzalama UYARI : Aşağıdaki adımların çalıştırılacağı sistem Ahtapot CA sunucusudur. 1. İmzalanacak Kullanıcı Anahtarı Oluşturma başlığında anlatıldığı adımlar kullanılarak, FWbuilder yönetme yetkisi verilecek kullanıcı için bir anahtar oluşturulur. Bu kullanıcının açık (Public) anahtarı Ahtapot CA makinasında imzalama anahtarının bulundugu dizine getirilir. Tercihen USB /CD gibi bir yöntem kullanarak, ağ kullanılmadan getirilmesi önerilir. 2. Kullanıcı anahtarının Ahtapot CA sunucusunda imzalama anahtarıyla aynı dizine taşınmasından sonra şu şekilde imzalama işlemi gerçekleştirilir. Aşağıda kaptan.pub dosyası içindeki kullanıcı açık anahtarı için kısıtlandırılmalı imzalama gerçekleştirilir. Force-command satırında /var/opt/gdysgui/gdys-gui.py parametresinden sonra kullanıcı adı bilgisi girilmelidir. (Örnekte kaptan olarak belirtilmiştir.) bilgiops@bilgio:~/ahtapot/ahtapot-gereksinimler/keys$ ssh-keygen -s ahtapot_ca -I bilgiops@bilgio.bilgio.lab -n ahtapotops -O permit-portforwarding -O permit-x11-forwarding -O force-command="/var/opt/gdysgui/gdysgui.py kaptan" kaptan.pub Signed user key kaptan.pub: id "kaptan@bilgio.bilgio.lab" serial 0 for ahtapotops valid forever 3. Oluşturulan anahtar bağlantı kurduğu sunucuda ahtapotops kullanıcı yetkilerine sahip olacak, X11 kullanabilecek ve sadece FWbuilder uygulamasına erişebilecek. FWbuilder uygulamasını başlatma komutumuz olan /var/opt/gdysgui/gdys-gui.py dışında herhangi başka bir komut çalıştıramaması SSH ve PKI alt yapısı tarafından garanti altına alınır. 4. Oluşturulan anahtarın kısıtlamalarına göz atmak için : bilgiops@bilgio:~/ahtapot/ahtapot-gereksinimler/keys$ ssh-keygen -Lf kaptancert.pub kaptan-cert.pub: Type: ssh-rsa-cert-v01@openssh.com user certificate Public key: RSA-CERT 34:cc:67:20:2f:01:74:2f:e7:3f:f8:ca:a9:3a:ec:77 Signing CA: RSA 62:56:a2:64:62:67:97:94:d2:9e:7b:5d:d9:35:95:0c Key ID: "kaptan@bilgio.bilgio.lab" Serial: 0 Valid: forever Ahtapot CA Dökümantasyon v1.1 7
Principals: ahtapotops Critical Options: force-command /var/opt/gdysgui/gdys-gui.py kaptan Extensions: permit-x11-forwarding permit-agent-forwarding permit-port-forwarding permit-pty permit-user-rc 5. Bu imzalanmış kaptan-cert.pub anahtar dosyasının bağlantının yapılacağı FWbuilder yönetiminin gerçekleştirileceği XWindows çalıştırabilen sunucuya transfer edilerek bağlantıyı kuracak kullanıcının gizli anahtarının da bulunması gereken home dizinindeki.ssh dizini içine kopyalanması gerekir. Kopyalanacak dosya ismi id_rsa-cert.pub olarak değiştirilmelidir. Dizinde bulunan dosyalar : bilgiops@bilgio:~$ ls -alh /home/bilgiops/.ssh/ total 112K drwx------ 1 bilgiops users 230 Dec 26 20:23. drwxr-xr-x 1 bilgiops bilgiops 638 Dec 27 10:14.. -rw-r--r-- 1 bilgiops users 1.3K Dec 27 12:33 config -rw------- 1 bilgiops users 1.8K Mar 25 2015 id_rsa -rw-r--r-- 1 bilgiops bilgiops 1.6K Dec 27 12:12 id_rsa-cert.pub -rw-r--r-- 1 bilgiops users 405 Mar 25 2015 id_rsa.pub -rw------- 1 bilgiops bilgiops 39K Dec 27 10:29 known_hosts 6. FWbuilder yönetilecek olan makinada SSH bağlantısının X11 yönlendirme yapacak olmasından dolayı performans ve kullanım kolaylığı için ssh_config (ssh sunucusu DEĞİL) ayarları yapılması gerekir. Bu ayarların bulunduğu dosya ismi /etc/ssh/ssh_config. Dosyayı vi gibi bir editörle editleyerek şu satırların bulunduğuna emin olunur : ForwardAgent Yes ForwardX11 Yes Port 22 Compression Yes HashKnownHosts Yes StrictHostKeyChecking Yes Ahtapot CA Dökümantasyon v1.1 8
7. Yukarıda editlenirken standard dışı portta dinleme yapması önerilen SSH sunucular için Port değerini değiştirilmesi gerekir. Bu işlemden sonra SSH sunucunun tekrar başlatılması gerekmez. Ahtapot CA Dökümantasyon v1.1 9
CA Anahtarı ile Kullanıcı Erişim Kısıtlama Ayarları clear force-command=command no-agent-forwarding no-port-forwarding no-pty no-user-rc no-x11-forwarding permit-agent-forwarding permit-port-forwarding permit-pty permit-user-rc permit-x11-forwarding source-address=address_list Clear all enabled permissions. This is useful for clearing the default set of permissions so permissions may be added individually. Forces the execution of command instead of any shell or command specified by the user when the certificate is used for authentication. Disable ssh-agent(1) forwarding (permitted by default). Disable port forwarding (permitted by default). Disable PTY allocation (permitted by default). Disable execution of ~/.ssh/rc by sshd(8) (permitted by default). Disable X11 forwarding (permitted by default). Allows ssh-agent(1) forwarding. Allows port forwarding. Allows PTY allocation. Allows execution of ~/.ssh/rc by sshd(8). Allows X11 forwarding. Restrict the source addresses from which the certificate is considered valid. The address_list is a comma-separated list of one or more address/netmask pairs in CIDR format. Ahtapot CA Dökümantasyon v1.1 10