Merhaba meslektaşlarım,

Yakın zamanda sunucularımızdan birinde şüpheli hareketler fark etmemiz üzerine kapsamlı bir güvenlik kontrolü gerçekleştirdik.

Bu yazıyı hem yaşadığımız süreci açıklamak hem de sunucu yöneten arkadaşların benzer bir durumda nelere dikkat etmesi gerektiğini göstermek amacıyla hazırlıyoruz.


SALDIRI İLK OLARAK NE YAPTI?

Yaptığımız incelemelerde sunucumuza internet üzerinden çok sayıda otomatik SSH giriş denemesi yapıldığını gördük.

Saldırganlar sadece "root" kullanıcısını denemiyordu.

Ubuntu, pi ve farklı rastgele kullanıcı isimleri kullanılarak kısa süre içerisinde çok sayıda parola denemesi gerçekleştiriliyordu.

Logları geriye doğru incelediğimizde bunun tek seferlik bir giriş denemesi olmadığını, otomatik sistemler tarafından sürekli olarak yapılan bir tarama ve brute-force saldırısı olduğunu gördük.

Bunun üzerine sadece başarısız SSH girişlerine bakmak yerine sunucunun tamamını incelemeye karar verdik.


SUNUCUDA NELERLE KARŞILAŞTIK?

İncelemeyi genişlettiğimizde bazı sistem ve başlangıç dosyalarında normal kullanımımızdan farklı görünen müdahaleler tespit ettik.

Özellikle sunucuya giriş yapıldığında otomatik çalışan bazı dosyalarda şüpheli komutlar bulunuyordu. Bu bizim için önemliydi.

Çünkü bir saldırıda yalnızca o anda çalışan zararlı işlemi kapatmak yeterli değildir.

Saldırgan sisteme tekrar erişebilmek veya yaptığı değişiklikleri yeniden aktif hale getirebilmek için başlangıç dosyalarına, zamanlanmış görevlere veya sistem servislerine eklemeler yapmış olabilir.

Bu nedenle olayı sadece "SSH'ye saldırı yapılıyor" şeklinde değerlendirmedik.

Sunucuda kalıcılık sağlanmaya çalışılmış olabileceğini düşünerek çok daha kapsamlı bir tarama gerçekleştirdik.


NELERİ KONTROL ETTİK?

Sunucuda tek tek;

- SSH giriş kayıtlarını
- Çalışan işlemleri
- Açık portları
- Aktif internet bağlantılarını
- Sistem servislerini
- Zamanlanmış görevleri
- SSH yetkilendirme anahtarlarını
- Root kullanıcısının başlangıç dosyalarını
- Geçici klasörleri
- Sonradan oluşturulmuş dosyaları
- Yönetim servislerimizi

kontrol ettik.

Ayrıca sunucuda bulunan bazı dosyaların ne zaman oluşturulduğunu ve hangi servisler tarafından kullanıldığını da incelemeye başladık.

Bu sayede kendi kullandığımız servislerle gerçekten şüpheli olan dosyaları birbirinden ayırmaya çalıştık.


İLK ALDIĞIMIZ ÖNLEM: SSH GÜVENLİĞİ

En önemli değişikliklerden birini SSH tarafında yaptık.

Daha önce parola ile gerçekleştirilebilen SSH erişimini kaldırarak SSH Key sistemine geçtik.

Basit şekilde anlatmak gerekirse artık sunucuya girmek için sadece kullanıcı adı ve parolayı bilmek yeterli değil.

Yetkili bilgisayarda bulunan özel SSH anahtarına da sahip olmak gerekiyor.

SSH Key sisteminin düzgün çalıştığını doğruladıktan sonra parola ile SSH girişini tamamen kapattık.

Böylece saldırganların sürekli parola deneyerek sunucuya erişmeye çalışmasının önüne büyük ölçüde geçmiş olduk.


SSH PORTUNU DEĞİŞTİRDİK

İkinci olarak varsayılan SSH portunu kullanımdan kaldırdık.

Burada önemli bir ayrıntı var:

SSH portunu değiştirmek tek başına güvenlik sağlamaz.

Saldırgan port taraması yaparak yeni portu yine bulabilir.

Biz bunu esas güvenlik önlemi olarak değil, varsayılan SSH portlarını sürekli tarayan otomatik botların oluşturduğu gereksiz trafiği azaltmak için yaptık.

Asıl güvenliğimizi SSH Key sistemi ve parola girişinin kapatılması sağlıyor.


FIREWALL KURALLARINI YENİDEN KONTROL ETTİK

Daha sonra firewall yapılandırmasını baştan sona kontrol ettik.

Kullanmadığımız veya dış dünyaya açık olması gerekmeyen portları inceledik.

Sadece kontrol panelinde görünen ayarlara güvenmek yerine işletim sisteminin gerçekten hangi bağlantılara izin verdiğini kontrol ettik.

Yeni SSH bağlantımızın düzgün çalıştığından emin olduktan sonra eski SSH portunu tamamen devre dışı bıraktık.


KENDİ YÖNETİM SİSTEMİMİZİ DE İNCELEDİK

Sunucumuz merkezi yönetim sistemimizle haberleşen kendi geliştirdiğimiz bir agent kullanıyor.

Güvenlik incelemesi sırasında "Bu bizim yazılımımız, sorun olmaz." demedik.

Onu da diğer servisler gibi incelemeye aldık.

Agent'ın hangi yetkilerle çalıştığını, hangi bağlantıları yaptığını ve internete hangi servisleri açtığını kontrol ettik.

Burada önemli bir güvenlik prensibini tekrar gördük:

Bir servisin bize ait olması onun otomatik olarak güvenli olduğu anlamına gelmez.

Özellikle yüksek yetkilerle çalışan yönetim yazılımlarının internete mümkün olduğunca az servis açması gerekiyor.

Bu nedenle kendi yönetim altyapımızdaki erişimleri de daha kısıtlı hale getirmeye başladık.


SUNUCUDA KALICILIK KONTROLÜ YAPTIK

En fazla önem verdiğimiz konulardan biri buydu.

Bir saldırganın sunucuya erişimini engellemek başka, saldırganın daha önce bıraktığı bir şeyi temizlemek başka bir konudur.

Bu nedenle saldırganın tekrar erişim sağlayabilmek amacıyla sisteme bir şey bırakıp bırakmadığını kontrol ettik.

Başlangıç dosyaları, sistem servisleri, zamanlanmış görevler, SSH anahtarları ve geçici klasörler dahil olmak üzere birçok noktayı taradık.

Şüpheli gördüğümüz dosya ve komutları tek tek incelemeye aldık.

Kendi sistemimize ait olduğunu doğruladığımız dosyalara dokunmadık.

Kaynağı belirsiz veya normal sunucu davranışına uymayan kayıtları ise ayrıca değerlendirdik.


ŞU ANDA DURUM NEDİR?
Yaptığımız güvenlik çalışmalarından sonra SSH erişimimizi ciddi şekilde sıkılaştırdık.
Şu anda;
- SSH Key ile giriş kullanıyoruz. - SSH parola girişini kapattık. - Varsayılan SSH portunu kullanmıyoruz. - Gereksiz açık portları kontrol ediyoruz. - Firewall kurallarını yeniden düzenledik. - Başlangıç dosyalarını kontrol ettik. - Sistem servislerini kontrol ettik. - Zamanlanmış görevleri kontrol ettik. - SSH yetkilendirme anahtarlarını kontrol ettik. - Aktif bağlantıları ve çalışan işlemleri inceledik. - Kendi yönetim agent'ımızı ayrıca güvenlik incelemesine aldık. - Sunucu loglarını takip etmeye devam ediyoruz.

BU OLAYDAN NE ÖĞRENDİK?
Bizim açımızdan bu olayın en önemli sonucu şu oldu:
"Sunucu çalışıyor, demek ki sorun yok." düşüncesi kesinlikle doğru değil.
Bir sunucu normal şekilde web sitelerini yayınlamaya devam ederken arka tarafta yüzlerce SSH saldırısı alıyor olabilir.
Daha önemlisi saldırgan bir şekilde sisteme erişmişse, tekrar dönebilmek için kalıcılık mekanizmaları bırakmaya çalışabilir.
Bu nedenle sadece güçlü parola kullanmak yeterli değil.
Sunucu güvenliği birçok katmandan oluşmalı.
Biz artık sistemi şu mantıkla değerlendiriyoruz:
SSH Key +
Parola girişinin kapatılması +
Firewall +
Gereksiz portların kapatılması +
Log takibi +
Çalışan servislerin kontrolü +
Kalıcılık kontrolleri +
Kendi yazılımlarımızın güvenlik denetimi

SUNUCU YÖNETEN ARKADAŞLARA TAVSİYEMİZ
Özellikle hosting, VPS, dedicated veya cPanel sunucusu yöneten arkadaşların zaman zaman şu noktaları kontrol etmesini tavsiye ediyoruz:
- SSH loglarınızı kontrol edin. - Başarısız giriş denemelerini takip edin. - Açık portlarınızı kontrol edin. - Gereksiz servisleri internete açmayın. - Mümkünse SSH Key kullanın. - Parola ile root girişini kapatın. - authorized_keys dosyanızı kontrol edin. - Cron görevlerini kontrol edin. - Systemd servislerini kontrol edin. - Root başlangıç dosyalarını kontrol edin. - Tanımadığınız processleri araştırın. - Sunucunun yaptığı aktif internet bağlantılarını kontrol edin.
Özellikle internete açık her servis için kendinize şu soruyu sorun:
"Bu servisin gerçekten dışarıdan erişilebilir olması gerekiyor mu?"
Gerekmiyorsa kapatmak en doğru çözümlerden biridir.

SONUÇ
Yaşadığımız olay sonrasında yalnızca saldırı girişimlerini engellemekle kalmadık.
Sunucumuzun güvenlik yapısını baştan sona gözden geçirerek saldırı yüzeyini mümkün olduğunca küçültmeye başladık.
Ayrıca bu olay bize kendi geliştirdiğimiz sistemlerin bile düzenli olarak güvenlik denetiminden geçirilmesi gerektiğini gösterdi.
Sunucu güvenliği bir kere yapılıp unutulacak bir işlem değil.
Logların, servislerin, portların ve erişim yetkilerinin düzenli olarak kontrol edilmesi gerekiyor.
Biz de bundan sonraki süreçte altyapımız üzerinde düzenli güvenlik kontrolleri gerçekleştirmeye devam edeceğiz.
Bu paylaşımı yapmamızın amacı saldırının teknik yöntemlerini yaymak değil, benzer sistemleri yöneten kişilerin nelere dikkat etmesi gerektiği konusunda farkındalık oluşturmaktır.
Umarız yaşadığımız süreç başka sunucu yöneticilerine de faydalı olur.