Eki 16 2009

En Önemli 20 OPENSSH Server Güvenlik İyileştirmesi

Category: FreeBSD,Gezegen,Güvenlik,LinuxBayram Karagöz @ 16:13

Belkide tüm sistem yöneticileri için en önemli konulardan olan güvenlik meselesine değineceğiz bu konumuzda. Güvenlik açıklıkları eminim ki bir çok sistemin ve sistemcinin başının belası olmakla kalmayıp uykularımızı dahi kaçırabilmektedir. Her sistem yöneticisi sistemini kurduktan sonra evine gidip rahatça uyuyabilmek ve kurduğu sistemi artık unutmak ister. Ama bunu başarabilmek için yeterince gayret gösterir mi?. İşte tam size göre bir belge. Artık rahatça uyuyabilirsiniz :) Çünkü OpenSSH sizin için herşeyi düşünmüş ama kendini hemen ele vermemiş gizli tutmuş. Sloganından da belli değilmi zaten Don’t Tell Anyone That I’m Free :)

Openssh bir SSH protokolü uygulamasıdır. Genellikle uzaktaki sunuculara güvenli olarak bağlanma, yedek alma, scp vey sftp ile uzaktan dosya transferi ve daha birçok uygulamada kullanılır. SSH güvenlik protokolu iki network arasındaki iletişimlerde en güvenli yoldur. En önemli avantajları server authentication tabanlı olması ve public key şifrelemesi mantığı ile çalışabilmesidir. Aynı zamanda bu güvenlik yazılımının açık kaynaklı olmasından dolayı programda bulunan herhangi bir bug aynı gün içerisinde duyurulmakta ve onarılmaktadır.

Default konf dosyaları ve SSH portu

  • /etc/ssh/sshd_config – openssh server konfigürasyon dosyası
  • /etc/ssh/ssh_config – openssh client konfigürasyon dosyası
  • ~/.ssh/ – kullanıcıların ssh konf klasörü
  • ~/.ssh/authorized_keys – kullanıcılarının hesaplarına login olabilmelerini sağlayacak public keylerin listelendiği dosya ( RSA veya DSA )
  • /etc/nologin – eğer bu dosya varsa sshd servisi root dışındaki giriş isteklerini reddeder.
  • /etc/hosts.allow ve /etc/hosts.deny – tcp wrappers tarafından kullanılan giriş kontrol dosyalarıdır. ( tcp wrappers ile alakalı bilgi için http://www.bayramkaragoz.org/?s=tcp+wrappers )
  • SSH default port – TCP 22 portudur.

Aktif durumdaki bir ssh bağlantısı yukarıda görülmektedir.

Şimdi teker teker iyileştirmelerimizi sıralayalım;

1- Kullanmayacaksanız OPENSSH serverını kapatın veya kaldırın

Eğer kullandığınız sistemde SSH ile dosya transferi, güvenli login işlemleri gibi servisleri hiç kullanmayacak iseniz SSHD serverının açık olmasının hiçbir mantığı olmayacaktır. Dolayısıyla bu durumda işe yaramıyorsa at gitsin felsefesinden yola çıkarak kapatın veya kaldırın gitsin.

CentOS / RHEL / Fedora Linuxlarda kaldırmak için;

# chkconfig sshd off
# yum erase openssh-server

Debian / Ubuntu Linuxlarda ise;

# apt-get remove openssh-server

kaldırma işlemlerinizi yaptıktan sonra firewall kullanıyorsanız değişiklerin aktif olması için;

# service iptables restart
# service ip6tables restart

2- Sadece SSH Protokol 2 yi kullanın

SSH protokolu 1 versiyonunda SSH-1 man-in-the-middle atakları problemi ve birçok güvenlik açığının olduğu bilindiği için sshd_config dosyasında allttaki ifadenin aktif olduğunu kontrol edin.

Protocol 2

3- Kullanıcıların Girişlerini Limitleyin

Default olarak tüm sistemlerde bütün kullanıcılar için giriş açıktır. Bazı durumlarda sadece bazı kullanıcıları örneğin ftp servisini veya e-mail servislerini kullanmasını isteyebilrisiniz. Fakat bu durumda ftp kullanımı için açmış olduğunuz kullanıcı bilgileri ile sisteme SSH girişi de yapılabilir. Girişle birlikte kullanıcılar birçok toolu kullanabilme, bazı scripting dilleri ile (PERL, PYTHON) açık portları kullarak fantazisi bol işler yapabilirler.

Mesela geçenlerde bir kullanıcım sistemime ssh ile bağlanarak hazırlamış olduğu PHP scripti ile başka kullanıcılar oluşturmaya çalışmış fakat loglara takılınca hemen ağıma düşmüş oldu. Allahtan aşağıdaki konfigürasyonu yapmıştım :)

Sadece root, forza ve bayram kullanıcılarının ssh ile sisteme login olmalarını sağlamak için sshd_config dosyasına aşağıdaki satırı ekleyelim;

AllowUsers root forza bayram

Alternatif olarak bazı kullanıcıları da yasaklayabilirsiniz;

DenyUsers saroj anjali foo

4- SSH Kullanıcısı IDLE Log Out Olma Zamanını Ayarlayın

SSH kullanıcıları sisteme giriş yapıp uzun süre herhangi bir işlemde bulunmadıkları zaman sistem belirli bir süre sonunda bu kullanıcıları dışarı atmalıdır. Aksi takdirde uzun süre login kalan kullanıcılar pc nin başından ayrıldıklarında kötü niyetli başka kullanıcılar sisteme zarar verebilirler veya istenmeyen işlemler yapabilirler. Bu yüzden boşta bekleyen ssh bağlantılarının belirli bir süre sonunda sonlandırılması için bir süre girelim. sshd_config dosyasına aşağıdaki ifadeyi eklemiş olursak bu süreyi 300 sn (5 dk) olarak ayarlamış oluruz.

ClientAliveInterval 300
ClientAliveCountMax 0

5- .rhosts Dosyasının Okunmasını Engelleyin

Kullanıcıların ~/.rhosts veya ~/.shosts dosyalarını ssh servisinin okumasını engelleyin. Çünkü SSH artık fazla kullanılmayan RSH komutlarını çalıştırabilme yeteneğine sahiptir. Bu yüzden RSH ile güvensiz girişleri engelleyelim.

IgnoreRhosts yes

6- Host Tabanlı Authentication ı Kapatalım

sshd_config de aşağıdaki tanımlamayı yaparak host-based authentication ı kapatalım.

HostbasedAuthentication no

7- ***Direk Olarak ROOT ile Login Olmayı Kapatalım!!!

Belkide yapılacak en önemli işlem sistemlere direk olarak yapılan root loginlerin engellenmesidir. FreeBSD de default olarak bu erişim kapalı olmasına rağmen çoğu linux dağıtımlarında erişim default olarak açıktır. Özellikle brute force ataklarında tahmin edilmesi kolay bir root şifresi sisteme atanıp erişim default olarak açıldığında makinenizi tamamen kötü niyetli kişilere teslim etmiş olursunuz. Ayrıca genelde kullanıcılar kendi kullanıcı bilgileri ile sisteme login olup illede root haklarına sahip bir komut çalışmaları gerektiğinde sudo ile işlemlerini yapabilmektedirler. Bu sayede hem yanlışlıkla geridönüşü olmayan önemli ve zararlı olabilecek bir komut çalışmaktan kaçınıyorlar yani kişilerin sorumlulukları azalıyor hem de hangi kullanıcının root komutu çalıştırdığını rahatça takip edebiliyorsunuz.

sshd_config dosyasına aşağıdaki ifadeyi ekleyelim;

PermitRootLogin no

8- Uyarı Banner ını Aktif edin

uyarı banner ını ayarlayın. Böylece kulanıcılar login olmak istediklerinde kullanıcı adını yazdıktan sonra kullanıcılara uyarı yazısı gösterebilirsiniz.

Banner /etc/issue

örnek issue dosyasının içeriği;

----------------------------------------------------------------------------------------------
You are accessing a XYZ Government (XYZG) Information System (IS) that is provided for authorized use only.
By using this IS (which includes any device attached to this IS), you consent to the following conditions:

+ The XYZG routinely intercepts and monitors communications on this IS for purposes including, but not limited to,
penetration testing, COMSEC monitoring, network operations and defense, personnel misconduct (PM),
law enforcement (LE), and counterintelligence (CI) investigations. 

+ At any time, the XYZG may inspect and seize data stored on this IS.

+ Communications using, or data stored on, this IS are not private, are subject to routine monitoring,
interception, and search, and may be disclosed or used for any XYZG authorized purpose.

+ This IS includes security measures (e.g., authentication and access controls) to protect XYZG interests--not
for your personal benefit or privacy.

+ Notwithstanding the above, using this IS does not constitute consent to PM, LE or CI investigative searching
or monitoring of the content of privileged communications, or work product, related to personal representation
or services by attorneys, psychotherapists, or clergy, and their assistants. Such communications and work
product are private and confidential. See User Agreement for details.
----------------------------------------------------------------------------------------------

9- SSH 22. Portu Firewall da Tanımlayalım

Genellikle 22. portun erişiminin iptables veya pf firewall da tanımlanması gerekir. Sadece kendi ipnizden erişim için yetki verebilirsiniz.

Netfilter (Iptables) Ayarı

örneğin /etc/sysconfig/iptables dosyasına sadece 192.168.1.0/24 ve 202.54.1.5/29 iplerinden SSH erişimi ile ilgili yetkiyi verelim;

-A RH-Firewall-1-INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -s 202.54.1.5/29 -m state --state NEW -p tcp --dport 22 -j ACCEPT

*BSD PF Firewall Ayarı

/etc/pf.conf dosyasına aşağıdaki ifadeyi ekleyelim;

pass in on $ext_if inet proto tcp from {192.168.1.0/24, 202.54.1.5/29} to $ssh_server_ip port ssh flags S/SA synproxy state

10- SSH Portunu Değiştirin ve IP Binding Limitlemesi Yapın

Default olarak ssh servisi tüm aktif ethernet interface ve IP leri dinler. Bu sebeple SSH dinleme iplerini sınırlandıralım ve dinleme portunu değiştirelim. Özellikle brute force yapan programların ssh için 22 potunu kullandıklarını düşünürsek port değiştirme çok uygun bir yöntemdir;

Port 300
ListenAddress 192.168.1.5
ListenAddress 202.54.1.5

Yukarıdaki örnekte sadece 192.168.1.5 ve 202.54.1.5 ile birlikte sadece 300 portu dinleniyor.

11- Güçlü Şifre ve Passphrase Kullanın

Brute force ataklarında sözlük saldırıları artık sıkça yapılan ve basit şifreleri olan sistemleri kısa sürede ele geçirmektedir. Bu yüzden tahmin edilmesi zor şifreler kullanmak artık bir ihtiyaçtır. Bu sebeple aşağıda hazırlanmış olan rastgele şifre oluşturma scriptini ~/bashrc dosyanıza girebilirsiniz.

genpasswd() {
	local l=$1
       	[ "$l" == "" ] && l=20
      	tr -dc A-Za-z0-9_ < /dev/urandom | head -c ${l} | xargs
}

aşağıdaki gibi çalıştırın;

genpasswd 16

komut çıktısı aşağıdaki gibidir;

uw8CnDVMwC6vOKgW

12- Public Key Bazlı Authentication Kullanın

Public/Private Key çiftini kullarak tam güvenlik sağlayın. Bunun için http://www.cyberciti.biz/tips/ssh-public-key-based-authentication-how-to.html ve http://www.cyberciti.biz/faq/ssh-password-less-login-with-dsa-publickey-authentication/ linklerindeki dökümanlarını kullanabilirsiniz. Fakat kesinlikle bu şifreleme sistemini passphrase şifresini girmeden denemeyiniz!!!

13-Chroot SSHD ( kullanıcıları kendi home dizinlerine kilitleyin)

Default olarak kullanıcılar istedikleri klasörlere(/etc/ , /var/ ,…) girme haklarına sahiptir. Sistemlerin kendine özgü chroot özellikleri ile ssh kullanıcılarını kendi home dizinlerine kilitleyebilirsiniz. http://www.debian-administration.org/articles/590 linkindeki döküman ile chroot ile kullanıcıları home dizinlerine kilitlemeyi kendi sisteminize uygulayabilirsiniz.

14- TCP Wrappers Kullanın

TCP Wrapper host bazlı bir network ACL sistemidir. Internete yapılacak network girişlerini filtreleme yapabilmektedir. OpenSSH bu uygulamayı desteklemektedir. /etc/hosts.allow dosyasına aşağıdaki bilgileri ekleyerek ssh erişimlerimlerini 192.168.1.2 ve 172.16.23.12 iplerinin dışındaki tüm ipler için engelleyebilirsiniz.

sshd : 192.168.1.2 172.16.23.12

TCP Wrappers uygulaması ile alakalı ayrıntılı bilgi için http://www.bayramkaragoz.org/?s=tcp+wrappers ve http://www.cyberciti.biz/faq/tcp-wrappers-hosts-allow-deny-tutorial/ linklerini inceleyebilirsiniz.

15-Boş Parola Girebilme Özelliğini Kapatın

sshd_config dosyasına aşağıdaki satırı ekleyerek boş parola girişini engelleyin.

PermitEmptyPasswords no

16-SSH Şifre Kırıcılardan Korununuz ( Brute Force Attack)

Brute force yöntemi, belli bir sunucu üzerine kullanıcı adı ve parola olarak oldukça geniş aralıkta ihtimalleri deneyerek sisteme giriş yapabilme yöntemidir. Bu yöntemden korunabilmek amacıyla aşağıdaki programları kullanabilirsiniz.

  • DenyHosts is a Python based security tool for SSH servers. It is intended to prevent brute force attacks on SSH servers by monitoring invalid login attempts in the authentication log and blocking the originating IP addresses.
  • Explains how to setup DenyHosts under RHEL / Fedora and CentOS Linux.
  • Fail2ban is a similar program that prevents brute force attacks against SSH.
  • security/sshguard-pf protect hosts from brute force attacks against ssh and other services using pf.
  • security/sshguard-ipfw protect hosts from brute force attacks against ssh and other services using ipfw.
  • security/sshguard-ipfilter protect hosts from brute force attacks against ssh and other services using ipfilter.
  • security/sshblock block abusive SSH login attempts.
  • security/sshit checks for SSH/FTP bruteforce and blocks given IPs.
  • BlockHosts Automatic blocking of abusive IP hosts.
  • Blacklist Get rid of those bruteforce attempts.
  • Brute Force Detection A modular shell script for parsing application logs and checking for authentication failures. It does this using a rules system where application specific options are stored including regular expressions for each unique auth format.
  • IPQ BDB filter May be considered as a fail2ban lite.

17- Port# 22 ye Gelen Bağlantı Isteklerini Limitlendirin

iptables ve pf firewall uygulamaları ile ssh bağlantı denemelerini kısıtlayabilirsiniz.

Iptables Örneği

aşağıdaki kural 22. porta 60 saniye içinde 5 den fazla yapılan bağlantı isteklerini reddetmek için yazılmıştır.

#!/bin/bash
inet_if=eth1
ssh_port=22
$IPT -I INPUT -p tcp --dport ${ssh_port} -i ${inet_if} -m state --state NEW -m recent  --set
$IPT -I INPUT -p tcp --dport ${ssh_port} -i ${inet_if} -m state --state NEW -m recent  --update --seconds 60 --hitcount 5 -j DROP

yukarıdaki scpripti iptables uygulaması tarafından çalıştırınız. Farklı bir konfigürasyon;

$IPT -A INPUT  -i ${inet_if} -p tcp --dport ${ssh_port} -m state --state NEW -m limit --limit 3/min --limit-burst 3 -j ACCEPT
$IPT -A INPUT  -i ${inet_if} -p tcp --dport ${ssh_port} -m state --state ESTABLISHED -j ACCEPT
$IPT -A OUTPUT -o ${inet_if} -p tcp --sport ${ssh_port} -m state --state ESTABLISHED -j ACCEPT
# another one line example
# $IPT -A INPUT -i ${inet_if} -m state --state NEW,ESTABLISHED,RELATED -p tcp --dport 22 -m limit --limit 5/minute --limit-burst 5-j ACCEPT

*BSD PF Örneği

aşağıdaki örnekte kaynak başına max. 20 deneme yapılmak üzere 5 sn içerisinde en fazla 15 deneme yapabilmek üzere yapılan ayarlamadır. bu kuralı abusive_ips tablomuza girelim.


sshd_server_ip="202.54.1.5"
table <abusive_ips> persist
block in quick from <abusive_ips>
pass in on $ext_if proto tcp to $sshd_server_ip port ssh flags S/SA keep state (max-src-conn 20, max-src-conn-rate 15/5, overload <abusive_ips> flush)

18 – Port Knocking Kullanın

Port knocking methodu firewall uygulamalarında kapalı olan portlara belirli bir zaman dilimi içerisinde belli sayıda bağlantı isteği göndererek ilgili portu açma yöntemidir. Yani kabaca tarif edecek olursak evin içinde bulunan ev sahibi kapıya gelen misafiri kapıyı belli sayıda çalmasıyla tanıyor gibi düşünebiliriz. Aşağıdaki örnekte iptables ta uygulanabilecek bir port knocking konfigürasyonu görülmektedir.

$IPT -N stage1
$IPT -A stage1 -m recent --remove --name knock
$IPT -A stage1 -p tcp --dport 3456 -m recent --set --name knock2

$IPT -N stage2
$IPT -A stage2 -m recent --remove --name knock2
$IPT -A stage2 -p tcp --dport 2345 -m recent --set --name heaven

$IPT -N door
$IPT -A door -m recent --rcheck --seconds 5 --name knock2 -j stage2
$IPT -A door -m recent --rcheck --seconds 5 --name knock -j stage1
$IPT -A door -p tcp --dport 1234 -m recent --set --name knock

$IPT -A INPUT -m --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A INPUT -p tcp --dport 22 -m recent --rcheck --seconds 5 --name heaven -j ACCEPT
$IPT -A INPUT -p tcp --syn -j doo

diğer port knocking uygulamaları aşağıdadır;

  • fwknop is an implementation that combines port knocking and passive OS fingerprinting.
  • Multiple-port knocking Netfilter/IPtables only implementation.

19- Log Analyzer Kullanın

logwatch veya logcheck uygulamaları logları daha kolay bir şekilde takip edebilmenizi ve girdiğiniz kriterler ölçüsünde sizi bilgilendirmeye yaramaktadır. Bu uygulamalarda ssh bilgilerini de görmek isterseniz sshd_config dosyasında LogLevel değerinin INFO veya DEBUG olarak girilmiş olduğuna emin olun.

LogLevel INFO

20 – İşletim Sistemini ve OpenSSH Servisini Sürekli Güncel Tutun

yum, apt-get, freebsd-update gibi araçları kullanarak sürekli sisteminizi güncel ve patchlenmiş tutun. Böylece işletim sisteminin veya OpensSSH ın yayınlanmış farklı açıklıklarını da kapatmış olacaksınız.

Dökümanın ingilizce hazırlanmış versiyonunu buradan indirebilirsiniz.

Kaynaklar;

  • http://www.cyberciti.biz/tips/linux-unix-bsd-openssh-server-best-practices.html
  • yukarıdaki linkin yararlandığı tüm kaynaklar…
VN:F [1.9.3_1094]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.3_1094]
Rating: 0 (from 0 votes)
  • Share/Bookmark
PDF Printer    Makaleyi PDF formatında gönder


Eyl 11 2009

SSL Sertifikasının Apache Web Sunucusuna Yüklenmesi

Category: Apache,GüvenlikBayram Karagöz @ 12:39

Uzun bir uğraştan sonra RapidSSL den almış olduğum SSL sertifikasını apache servera yüklemeyi başardım. Uzun olmasının sebebi de sertifikayı google “SSL sertifika satın al” yazıp önüme çıkan hiç bilinmeyen bir hosting firmasından satın alıp tam 4 gün beklemem oldu. Burdan alınacak en büyük ders bilmediğim yerle iş yapmamak oldu. RapidSSL in kendi sitesinden baktığımda yıllık sertifika fiyatlarının 79$ dan başladığını gördüm. Fakat bilinmeyen hosting firmalarından aldığınız SSL sertifikalarına 29$ ödeyerek 1 yıllığına satın alabiliyorsunuz.

Verisign firmasının SSL sertifikalarını incelerseniz fiyatların çok daha fazla olduğunu göreceksiniz. Fiyatlar arasında büyük farklar olmasının çeşitli nedenleri var tabiiki. Bu fiyat farklarını belirleyen 3 önemli nokta;

1. Verdikleri teminat bedelleri. Verisign algoritmasına güvenir, 1.000.000 $ garanti verir. Rapidssl de güvenir fakat 10.000 $ verir. Baktığınızda bu iki protokol üzerindeki bilgiler 3. şahısların eline hiç bir zaman geçmediği için bu rakamları bu güne kadar alanda olmamıştır.
2. İstenilen resmi belgelerde bu rakamı etkiler. Siz rapidssl i almak için CSR kodunu gönderip mail adresinize gelen doğrulama mailini tıkladıktan sonra sertifikanızı hemen sunucunuza kurabilirsiniz. Fakat verisign da sizden bazı resmi belgeler istenir. Bu sürenin uzamasına yol açar ve baktığınızda sizinle ilgilenen kişiler olmuştur. Rapidssl de ise herşey otomasyonlarla yapılır. Bunlarda maliyeti arttıran en önemli faktörlerdir.

3. Marka… Verisign ismini sitenizde ve sertifikanızda göstermeniz halinde, siteniz hiç duyulmamış bir site bile olsa bile insanlar sitenize güvenebilir. Bunu şöylede düşünebilirsiniz. Ufak çaplı bir firma açtığınızda ister esnaf ve sanatkarlar odasına isterseniz de ticaret odasına kayıt olursunuz. Aralarında gözle görülür bir fark yoktur. Ama örneğin, esnaf vso na 50 lira verirken Ticaret odasına 200 lira verirsiniz. Aradaki ödediğiniz fark ise imajınızın daha güvenilir ve kurumsal olmasını sağlar. Genel olarak fiyat arasındaki farklar bunlardır.

Sözü çok fazla uzatmadan kurulum aşamasına geçelim;

SSL sertifikasının alınması için gerekli ön koşullar vardır.

1. sertifikanın yükleneceği serverda .csr ve .key uzantılı 2 adet key oluşturulması gerekmektedir.
2. oluşturulan .csr uzantılı key SSL sertifikası için istek keyidir ve içerisinde bazı bilgiler saklıdır. ilerleyen kısımlarda daha detaylı açıklanacaktır.
3. .csr key ile herhangi bir sertifika veren firmaya başvurduğunuzda size .crt uzantılı sertifikanızı gönderecektir. Bu sertifikayı sunucuya yükledikten sonra sertifikanızı kullanmaya başlayabilirsiniz.

Sertifikanın alınması;

1.
yukarıdaki 1. madde dediğimiz gibi öncelikle .csr ve .key uzantılı keyler oluşturmamız gerekiyor. Fakat bundan önce apache sunucunuzda openssl kurulu ve apache nin mod_ssl modülünün aktif olması gerekiyor. gerekli ön koşulları sağladıktan sonra öncelikle .key uzantılı keyimizi oluşturalım. dosyamızın ismi sertifikayı almak istediğimiz domain adı (Fully Qualified Domain Name (FQDN)) olmalıdır. ÖR: www.bayramkaragoz.org.key

aşağıdaki komutu konsola yazalım;


openssl genrsa -rand messages:messages.0.bz2:messages.1.bz2:messages.2.bz2:messages.3.bz2 -out www.bayramkaragoz.org.key 1024

buradaki -rand kısmından sonraki : işareti ile ayırdığım messages dosyaları, keyin oluşturulmasına yardımcı olacak log dosyalarıdır. İsterseniz farklı dosyalarda seçebilirsiniz. Fakat keyin oluşturulması aşamasında sisteminizde boyutları fazla olan ve sıkçe değişen 5 adet dosyanın yerini yazmanız keyin güvenliğinin daha yüksek olması açısından çok önemlidir.

komutun çıktısı;


0 semi-random bytes loaded
Generating RSA private key, 1024 bit long modulus
......++++++
....++++++
e is 65537 (0x10001)

key dosyasının içeriğini göstermek istersek aşağıdaki gibidir;


-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQDWngCM+Bl+pf/YH4ZXpGWqgdwjqBAhYFse8QoRFDQxrSQ1o2Ga
L01gSGAJfu4yk3/vvYJ5CdzWBIcA1YLzxPRoTiHR3CLPYKcYPg27rwJfPDI/Gj1n
Qcd2pF5Qnsxmd6SJQRoBy2UhIU3fZgpU8GwVTs3ansj+L5fbONACI2lx/QIDAQAB
AoGANADFEWNsigufGrdIziO/nrkoplsqzWuTqMOvNMQ4gXD6vSSBmeKsVRA0dRiU
jxy+e1DoNHv3TsR6EfGqcXbf4ZSxjyzRsidfVyrdDmeyY3sFpvh9BcJv3CVdUvy8
P+IunMqVlQ/e1PH4tlOTSQlLcpxUBsVgL+oB6h4tKfXi7AECQQDuHYXVTGGjKpzH
77xwXDU3VacrxcX2mUpuw91NtB+jTZQO02WWwwjOuI2FQ+gFzLqps+rTCTYlBoRL
y5MiAlOhAkEA5ryoZLY0ExivZlCpJZ3b6BVvmEC33yTo7ufTPDblfAV3kCAvAusD
Sbjo9WJFw/0t5Zter2SlL0s+a6y70h9A3QJBAKV11l3VabNcFP3J1QOuzzvYRQXh
tCIbeuFlMQ6hr6pmag+zTdBpTmF3VL/Z5AzDqqHp568lo34u/Rc+KstjGoECQFoV
oB0p8ezev2RP66ovFrNm4xnrcp5hd7wGsLcaq8AfFk4j8pbOEIuQ8QsU4i4hw/CY
F4Cc580uMGGzn+TqpNUCQHgIuP7itqNFLw4D8byx4cmIsxSjsEAkMbAkuDXF/Qcv
yVG+MzDrP6bpyyuJM/MKXeY3gbS4ZtCPZXNeNhg6pVU=
-----END RSA PRIVATE KEY-----

2.
keyi oluşturduktan sonra .csr dosyasını oluşturmak gerekmektedir. dosyamızın adı yine domain name olmak zorundadır.


openssl req -new -key www.bayramkaragoz.org.key -out www.bayramkaragoz.org.csr

komutu yazdıktan sonra bizden bazı bilgiler istenecektir. Burada önemli olan nokta `Common Name (eg, YOUR name)’ sorusuna domain adınız ne ise onu yazmanız gerektiğidir. Kendi isminizi yazmayacaksınız. Diğer bilgileri aşağıdaki şekilde kendinize uygun bilgileri yazabilirsiniz;


You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:TR
State or Province Name (full name) [Some-State]:Turkey
Locality Name (eg, city) []:Istanbul
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Outlier
Organizational Unit Name (eg, section) []:VoIP
Common Name (eg, YOUR name) []:www.bayramkaragoz.org
Email Address []:bayram@bayramkaragoz.org

Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

csr dosyasını içeriği aşağıdaki şekildedir;


-----BEGIN CERTIFICATE REQUEST-----
MIIB3DCCAUUCAQAwgZsxCzAJBgNVBAYTAlRSMQ8wDQYDVQQIEwZUdXJrZXkxETAP
BgNVBAcTCElzdGFuYnVsMRAwDgYDVQQKEwdPdXRsaWVyMQ0wCwYDVQQLEwRWb0lQ
MR4wHAYDVQQDExV3d3cuYmF5cmFta2FyYWdvei5vcmcxJzAlBgkqhkiG9w0BCQEW
GGJheXJhbUBiYXlyYW1rYXJhZ296Lm9yZzCBnzANBgkqhkiG9w0BAQEFAAOBjQAw
gYkCgYEA1p4AjPgZfqX/2B+GV6RlqoHcI6gQIWBbHvEKERQ0Ma0kNaNhmi9NYEhg
CX7uMpN/772CeQnc1gSHANWC88T0aE4h0dwiz2CnGD4Nu68CXzwyPxo9Z0HHdqRe
UJ7MZnekiUEaActlISFN32YKVPBsFU7N2p7I/i+X2zjQAiNpcf0CAwEAAaAAMA0G
CSqGSIb3DQEBBAUAA4GBAAd8heG4YiQ3WHU0p+rEL7AZlg5hb5kBxeP88sKR5QHw
OVtXfeI21oeEGT0O9CYMHpZb29QgviZGxxdNqgXXDfZKRkSrzWGyCIsSN7WE+MLz
ox5O+Rna9Ztcs3Fr03e76IQ53yF1+zglNAphKsELGXTtf57GGAGge3x3vApunE+i
-----END CERTIFICATE REQUEST-----

3.
elde etmiş olduğumuz csr key ile ssl sertifikası veren firmaya başvurduğumuzda bizden bu istek .csr sertifikasını isteyecek ve bize .crt uzantılı sertifikamızı gönderecektir.

gelen sertifikayı yine domain_adi.crt olarak kaydedelim.

gelen sertifikanın örnek içeriği aşağıdaki gibidir;


-----BEGIN CERTIFICATE-----
MIICrzCCAhgCCQCdyYGDSkyQiDANBgkqhkiG9w0BAQQFADCBmzELMAkGA1UEBhMC
VFIxDzANBgNVBAgTBlR1cmtleTERMA8GA1UEBxMISXN0YW5idWwxEDAOBgNVBAoT
B091dGxpZXIxDTALBgNVBAsTBFZvSVAxHjAcBgNVBAMTFXd3dy5iYXlyYW1rYXJh
Z296Lm9yZzEnMCUGCSqGSIb3DQEJARYYYmF5cmFtQGJheXJhbWthcmFnb3oub3Jn
MB4XDTA5MDkxMTA5MTUyNloXDTA5MTAxMTA5MTUyNlowgZsxCzAJBgNVBAYTAlRS
MQ8wDQYDVQQIEwZUdXJrZXkxETAPBgNVBAcTCElzdGFuYnVsMRAwDgYDVQQKEwdP
dXRsaWVyMQ0wCwYDVQQLEwRWb0lQMR4wHAYDVQQDExV3d3cuYmF5cmFta2FyYWdv
ei5vcmcxJzAlBgkqhkiG9w0BCQEWGGJheXJhbUBiYXlyYW1rYXJhZ296Lm9yZzCB
nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA1p4AjPgZfqX/2B+GV6RlqoHcI6gQ
IWBbHvEKERQ0Ma0kNaNhmi9NYEhgCX7uMpN/772CeQnc1gSHANWC88T0aE4h0dwi
z2CnGD4Nu68CXzwyPxo9Z0HHdqReUJ7MZnekiUEaActlISFN32YKVPBsFU7N2p7I
/i+X2zjQAiNpcf0CAwEAATANBgkqhkiG9w0BAQQFAAOBgQCKqgdpQ8vDyVTTH+Dm
6w6Yfz6rWpQdEWlpv8hEON9zlWQOhJvTKmPoCsIDrAWj6+6w5xaBTwgIxtEpTxLr
AP79Yj4V1AqIRTTD446UsCLIxnJDTkj3Q7xv0VhXQfeK7Zv4s+ejrUVTmG5xxgRL
plDO+65mjtbi9GDpEENnMOcFkQ==
-----END CERTIFICATE-----

İstediğimiz takdirde orjinal sertifikamız gelene kadar kendimiz geçici bir sertifika oluşturabiliriz. Aşağıdaki komut ile kendi domain adımız için geçici bir sertifika oluşturabiliriz.


openssl x509 -req -days 30 -in www.bayramkaragoz.org.csr -signkey www.bayramkaragoz.org.key -out www.bayramkaragoz.crt

komutun çıktısı;


Signature ok
subject=/C=TR/ST=Turkey/L=Istanbul/O=Outlier/OU=VoIP/CN=www.bayramkaragoz.org/emailAddress=bayram@bayramkaragoz.org
Getting Private key

sertifikanın alınması işlemi tamamlandı ise şimdide kurulum aşamasına geçelim;

sertifikanın aktif edilmesi;

.csr , .key ve .crt uzantılı 3 adet keyiminizi apache altına ssl sertifikalarının olduğu yerlere taşıyalım. FreeBSD de sertifikaların olduğu kısım /usr/local/etc/apache/ssl.* dir. Örneğin www.bayramkaragoz.org.csr keyini /usr/local/etc/apache/ssl.csr/ altına, www.bayramkaragoz.org.key dosyasını /usr/local/etc/apache/ssl.key altına, www.bayramkaragoz.org.crt dosyasını da /usr/local/etc/apache/ssl.crt altına taşıyalım.

Daha sonra apache sunucuda virtual hostlarla alakalı bize ait olan virtual host tanımlamasının bulunduğu httpd.conf dosyasındaki ilgili kısıma aşağıdaki ifadeleri girerek kendi virtual hostumuz için sertifikaların yerini belirmiş olacağız;


SSLCertificateFile /usr/local/etc/apache/ssl.crt/www.bayramkaragoz.org.crt
SSLCertificateKeyFile /usr/local/etc/apache/ssl.key/www.bayramkaragoz.org.key

tanımlamayı yaptıktan sonra apache de ssl mod aktif ise apache yi restart ederek, aktif değil ise apache yi durdurup ssl mod ile çalıştırarak sertifikanın aktif olmasını sağlayabiliriz.


apachectl stop
apachectl startssl

Artık sunucu ile tüm istemciler arasındaki web haberleşmesi şifreli olarak yapılabilecektir.

Kaynaklar:

http://www.verisign.com/support/tlc/csr/modssl/v00.html

http://www.rh.com.tr/cozumler/ssl/ssl-kurulumu/apache_ssl_kurulumu.aspx

http://www.trustcenter.de/installation_instruction_for_intermediate_ca_certificate.htm#Apache

http://www.cozumpark.com/forums/thread/12906.aspx

VN:F [1.9.3_1094]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.3_1094]
Rating: 0 (from 0 votes)
  • Share/Bookmark
PDF Creator    Makaleyi PDF formatında gönder

Etiketler: , ,