İçeriğe atla

SSH Server – Güvenlik

www.linux.org.tr sitesi altında tutulan, linux-ağ e-mail grubunda geçtiğimiz hafta güzel bir konu geçti. İlk soruya gelen emailler ve önerilen metodlar da, bence, bi kısmı hariç uygulanabilir, pratik çözümlerdi. E-mail gruplarında rahatsız eden bir konu olan, aynı sorunun tekrarlanması durumuna çözüm olması için, soruyu ve önerilen çözünmleri, uygulanabilirlik ve sorunu ortadan kaldırabilme oranlarına göre sıralayıp buraya eklemeye karar verdim.

Soru:
Merhabalar,

Yurt disinda kiralik bi sunucu uzerinde linux server var. devamli ssh ile baglanti kurup dictionary attack yapiyorlar. sabit bir ipden baglanmadigim icin bu sunucuya ssh serveri sadece bir ipden baglanti kabul edecek sekilde konfigure etmiyorum. buna ne gibi bir cozum onerirsiniz?

Mesela su bir cozum mudur?
ssh 3 defa hatali sifre girildikten sonra birdaha o ipden mesela 1 saat boyunca baglanti kabul etmesin?

Cevaplar:

  1. Port Knocking
    Diğer cevaplar güzel ve uygulanabilir olduğu için ben de email ile bişeyler eklemek istemedim ama bundan önce sitede yazdığım Port Knocking yazısı bu durum için çok uygun gözüküyor. Kısaca özetlemek gerekirse, 22. porttan bağlantı kurulabilmesi için, önceden bilinen başka portlara bağlantı denenmesi gerekiyor, eğer o şartlar sağlandıysa 22. porttan yapılmak istenen bağlantıya izin veriliyor.
  2. SSH Server’in Port Numarasını Değiştirmek
    Merhaba,
    Bunun yerine en kolay cozum olan SSH portunu degistirmeyi deneyebilirsiniz. Varsayilan portu degistirdikten sonra otomatize ataklarin cogu kesilecektir.
    Mehmet: Güvenlik alanında bu konu çok tartışılıyor. Security vs obscurity yani güvenlik vs gizlilik (engellemek yerine ulaşılmaması için önüne bir set daha eklemek, 22. port yerine 65522. portun kullanılması, diğer 65500 portu tarayıp, 65522. portu bulabilir). Bu olay tartışıla dursun, bence uzaktan erişim veren servislerin varsayılı gelen port numaraları (22,23,3389,5900) kullanıma başlanmadan evvel değiştirilmeli. Böylelikle en azından bilgisi olmayan (script kiddie) ve sadece şansını deneyen kişiler dışarda tutulabilir.
  3. Fail2BanBen fail2ban i kullaniyorum. Conf dosyasinda kac basarisiz attacktan
    sonra calisacak, ne kadar sure o ip yi kara listede tutacak vs gibi
    ayarlamalar yapabiliyorsunuz. Inceleseniz iyi olur bence.

    http://fail2ban.sourceforge.net/wiki/index.php/Main_Page

  4. Şifre yerine Sertifika
    En temiz yöntem sshd konfigürasyon dosyasýndan PasswordAuthentication seçeneğini kapatmak.
    Ondan sonra istedikleri kadar deneyip dursunlar. Siz mi nasıl bağlanacaksınız? Tabii ki özel anahtarınızı kullanarak ssh, ssh-keygen, ssh-agent man sayfaları size yok gösterecektir.
  5. Deny Hosts
    DenyHosts projesi sourceforge.net altında açılmış, kollektif bir çalışmanın ürünü. SSH sunucusuna brute force atak yapan kişileri kara listeyi almayı hedefliyorlar. Ama bu durum Türkiye gibi dinamik IP kullanan DSL kullanıcıları için pek uygun gözükmüyor.
  6. Dinamik DNSMerhaba,

    Eğer bu durumda olan fazla kişi yok ise, bizim eskiden uyguladığımız şöyle bir yöntemi önerebilirim.
    – dyndns.org’dan bir isim almıştım : xxx.dyndns.org
    – bir script aracılığıyla her 2 dakikada bir IPyi kontrol edip, IP değişmişse iptables ile o IPye izin veriyordu eskisini siliyordu.
    – bağlanacağım zaman dyndns hostunun IPsini düzeltiyordum ve servera ulaşıyordum.
    – tabii diğer bütün IPlere ssh kapalı idi.

  7. Hostname Bazlı SınırlamaEvet.Port scanner ile port degisse bile bulunabilir. Bana gore ssh’a sadece bir hostname den izin verebilirsiniz. Nasil diye sorarsan, 7/24 calisan bir linux makinanin hostnamemini verirsiniz.. AllowUsers’i da ekleyip sadece ssh baglantisi kurabilecek kullanicilara ssh acarsiniz. PermitRootLogin ‘nide no yaparsaniz daha iyi olur. iptables ‘e agelince.

    iptables ‘ile sadece bir ip’yi ssh a acmak için soyle bir kural ise yarayabilir..

    iptables -A INPUT -s 213.243.12.33 -p tcp –dport 22 -j ACCEPT

    Gelen her IP icin 60 saniyede sadece 3 baglanma şansı veriyor . 3 ssh baglanti siniri asilirsa bir 60 saniye o ip’yi dropluyor. -j LOG parametresi ile hersey loglara yaziliyor.Loglar /var/log/messages ‘de.

    *iptables -A INPUT -p tcp –dport 22 -m state –state NEW -m recent –set –name SSH -j ACCEPT
    *iptables -A INPUT -p tcp –dport 22 -m recent –update –seconds 60 –hitcount 4 –rttl –name SSH -j LOG –log-prefix “SSH_brute_force ”
    *iptables -A INPUT -p tcp –dport 22 -m recent –update –seconds 60 –hitcount 4 –rttl –name SSH -j DROP

    Ayrıca port scanner yapanlarda;

    iptables -A FORWARD -p tcp –tcp-flags SYN,ACK,FIN,RST RST -m limit –limit 10/h -j LOG –log-prefix ‘Port Scanner attack’

    kurali ile loglara dokebilirsiniz. loglari daha iyi gorebilmek için, iptables_logger_v0.4 kullanabilirsiniz.

SSH Server – Güvenlik” üzerine bir yorum

  1. Nejdet Kiral der ki:

    Harika paylaşımdı sağolasın.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Time limit is exhausted. Please reload CAPTCHA.

css.php