TR | Linux SSH Sıkılaştırma
SSH Nedir
SSH (Secure Shell) güvenli veri iletimi için kriptografik ağ protokolüdür. SSH bağlantısı bilgisayar-bilgisayar, bilgisayar-sunucu, sunucu-sunucu arasında yapılabilir. SSH uzak kabuk üzerinde yetkili bir metin tabanlı arayüz sağlar. SSH bağlantısı kurulduktan sonra, yerel terminal yazdığınız tüm komutlar şifreli SSH tüneli aracılığıyla uzak sunucuya gönderir ve terminal komutlarınız orada yürütülür. SSH istemci-sunucu modelini kullanır. Standart TCP portu olan 22 SSH bağlantısı için atanmıştır.
Bu kılavuzda, SSH sıkılaştırması için en iyi olan bazı temel güvenlik uygulamaları hakkında örnekler yer alacaktır.
SSH Bağlantısı Nasıl Kurulur?
Temelde iki bağlanma yöntemi mevcuttur. Bunlardan birincisi kullanıcı adı ve şifre ile oturum sağlandığı yöntemdir, ikincisi ise SSH key ( SSH açık / gizli anahtar ) yardımı ile oturumun sağlandığı yöntemdir. Şifre oturumları yeni kullanıcılar için anlaşılması kolaydır. Ancak, otomatik botlar ve kötü niyetli kullanıcılar genellikle art arda şifre denemeleri ile güvenlik tavizlerine yol açabilir. Bu yöntem yerine SSH anahtarı yardımı ile oturum sağlanmasını öneriyoruz. Bu yöntemde özel ve genel anahtar çifti kimlik doğrulama öncesinde oluşturulur. Ortak anahtar herkes ile paylaşılabilirken, özel anahtar kullanıcı tarafından güvende tutulmalıdır.
Bu bağlantı yöntemleri dışında SSH versiyonuna göre oturum sağlamak için kullanılabilecek birkaç yöntem daha bulunmaktadır.
( Solda SSH v2, sağda ise SSH v1’i görmektesiniz. )
SSH Sıkılaştırması Yöntemlerinden Bazıları
- Standart portu değiştirmek
- SSH kurulumu ile birlikte gelen ayarlarında servis 22. porttan istekleri yanıtlamaktadır. SSH portunu değiştirmek sıkılaştırmanın ilk adımı olarak düşünülebilir.
- Port yönlendirmelerini kapatmak
- Port yönlendirmeleri SSH üzerinden diğer servisler ( X11 gibi ) aracılığı ile uzak masaüstü bağlantıkları yapılabilir, bunları kapatabilirsiniz.
- Şifre ile SSH bağlantılarını engellemek
- Otomatik port tarayan ve ard arda şifre deneyen (brute-force) kötü niyetli yazılımların hedefinden çıkmamıza yardım edecek adımdır. Portu değiştirmekde bu yöntemi destekleyecektir. Şifre ile oturum sağlanması yerine SSH anahtarları ile oturum sağlayacağız.
- Root erişiminin kapatılması
- Sistemdeki en yetkili kullanıcı olan root’a SSH oturumu açılmasını engellemek, sisteme bir şekilde erişim kazanan kötü niyetli kod veya kullanıcıyı yetkisiz kılacaktır. Bu şekilde verilebilecek zarar kısıtlanmış olur.
- Ana bilgisayar tabanlı kimlik doğrulaması kapatılmalıdır
- Bulunduğunuz ağda ana bir bilgisayar tarafından sisteme erişimi kapatmanız, ana sisteme yapılan bir saldırıda sunucunuza erişimi engelleyecektir. Bu yuzden ana bilgisayar tabanlı bir kimlik doğrulaması kullanmayacağız.
- Chroot SSHD (Kullanıcıları kendi ana dizinlerine kilitlemek)
- Her kullanıcıyı kendi ana dizinlerine hapsederek ( /home/cagatay gibi ) yetkilerini kısıtlayabilirsiniz. Fakat ufak bir google araması ile bypass edilebilir. Amacımız saldırganı yıldırmak 🙂
- İki aşamalı oturum doğrulama yöntemini kullanın
- Port knocking kullanın
- Port spoofing kullanın
- Bu yöntemler aracılığı ile ssh servisinizi diğer servisler arasında kamufle edip ssh servisinizi daha güvenli hale getirebilirsiniz.
SSH Sıkılaştırması Uygulaması
Öncelikle elimizdeki sunucuya veya ev bilgisayarına SSH bağlantımızı açalım.
Örnek komut:
ssh [email protected]
SSH oturumundayız, klavuzda Ubuntu 14.04.5 LTS kullanacağım, komular işletim sistemine göre farklılık gösterebilir. Sistemde cagatay adlı bir kullanıcı olduğunu varsayıyoruz. Kullandığınız sistemde kendi isteğiniz doğrultusunda ismini yazabilirsiniz.
- Open SSH servisi kurulu değilse kuralım
sudo apt-get install openssh-server
- Kurulum ile beraber gelen standart ayarları yedekleyelim:
Terminalden:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.factory-defaults sudo chmod a-w /etc/ssh/sshd_config.factory-defaults
- Düzenleme yapmak üzere ayar dosyamızı açalım:
Terminalden:
sudo vi /etc/ssh/sshd_config
Ayarlarımıza sırasıyla standart portu değiştirerek başlıyoruz:
- Port 22 yazan satırdaki 22 standart SSH portunu bağlanmak istediğiniz porta yerleştirebilirsiniz.
- Protocol yazan satır SSH versiyonunuzu söylemektedir. 2 olduğundan emin olun:
- Şifre ile oturum açmayı engelleyelim:
Yorum satırı halinde olan ( ‘#’ yorum satırı anlamına gelmektedir ) PasswordAuthentication yes satırını yorum’dan çıkartıp yes olan parametreyi no yapıyoruz.
- Port yönlendirmelerini kapatalım:
- X11Forwarding’i no olarak değiştirin
- Hangi kullanıcıların SSH kullanacağını belirleyin
- Root erişimini kapatın
PermitRootLogin’i no olarak değiştirerek yapabilirsiniz.
- SSH anahtarı ile giriş yapmak için gerekli ayarlamalarımızı yapalım:
Yeni bir terminal sayfasında: ( SSH oturumunu kapatmayınız )
ssh-keygen -t rsa -b 4096
Yukarıdaki komut kendi bilgisayarınızda açık ve gizli olmak üzere iki anahtar üretecektir. Açık anahtarı şu şekilde bulabilirsiniz:
cat ~/.ssh/id_rsa.pub
Yukarıdaki anahtarı görüntülediğimiz terminal’den sunucuda SSH oturumumuz olan terminal’e geçiyoruz, aşağıdaki ayarlamayı yapıyoruz.
AuthorizedKeysFile satırını yorum satırı durumundan çıkartıyoruz.
Kendi açık anahtarımızı SSH dizinindeki authorized_keys’e ekliyoruz.
Terminalden: ( Sunucuda )
sudo vi ~/.ssh/authorized_keys
Açık anahtarımızı kaydedip çıkıyoruz.
- Kullanıcıları kendi ana dizinlerine kilitleyelim
/etc/ssh/sshd_config dosyasını tekrardan açıyoruz
Terminalden: ( Sunucuda )
sudo vi /etc/ssh/sshd_config
Aşağıdaki kodları dosyanın en altına ekliyoruz.
Subsystem sftp internal-sftp Match group sftponly ChrootDirectory /home/%u X11Forwarding no AllowTcpForwarding no ForceCommand internal-sftp
Yukarıda verilen yöntemler sayesinde SSH oturumu açmış kullanıcıların kendi dizinlere etkiyebilmesini sağladık. Standart olarak SSH 22. porttan çalışmaktaydı, onu değiştirdik. Şifre ile oturum açmayı engelledik bu giriş yöntemi yerine daha güvenli olarak önerilen SSH anahtarını kullandık. Sistemimize tünelleme aracılığı ile sağlanabilecek uzak masaüstü bağlantılarını engelledik. Hiyerarşik bir ağ yapısında olduğu varsayılan sunucumuza daha yetkili üst makinalardan erişimi kısıtladık. Sisteme kullanıcı olarak oturum elde etmiş kullanıcıların root yetkilerine erişimini engelledik. SSH bağlantınızı daha güvenli hale getirmek için port spoofing, port knocking ve two factor authentication ( iki aşamalı oturum onayı ) kullanabilirsiniz.
- Fiziksel / GRUB Güvenliği
- Disk Güvenliği
- Dosya Güvenliği
- Kullanıcı Güvenliği
- Root Güvenliği
- Gereksiz Servislerin Kapatılması
- PAM Modülü
- IP Tables
- TCP Wrappers
- ssh Sıkılaştırması
- History Formatının Düzenlenmesi
- BASH Aktivitelerinin Loglanması
- Varnish
- Mod Evasive
- Apache Sıkılaştırması
- PHP Sıkılaştırması