Geçenlerde bir müşterimizin sunucusu ile yaşadığımız problemin çözümü konusunda çalışırken bu durumun yaygın olarak yaşanmakta olduğunu fark ettim.
Müşterimiz, servis sağlayıcısından uyarı almış; sunucusu üzerinden belirli bir IP aralığındaki tüm adreslere yönelik port 22 (SSH portu) saldırı denemesi yapılıyormuş.
Genelde sunucu üzerindeki herhangi bir kullanıcının giriş bilgilerini (login credentials) ele geçiren kötü niyetli biri veya bu bilginin yüklendiği bir “bot” (sunucuya yüklenen ve otomatik işleyen bir uygulama) bundan sorumlu oluyor.
Çözüm yolunda iki komut son derece yararlı oluyor (GNU/Linux için):
netstat -anp --inet
Bu komutta kullanılan “a” (“all”) parametresi tüm soketlerdeki bağlantıları görüntülüyor ki bu son derece kritik. “n” (“numeric”) parametresi IP adreslerinin görüntülenmesini sağlıyor. “p” (“programs”) parametresi ise her bir soketi kullanan programın PID’sini veriyor.
Çıktısı kabaca şöyle (kaynak IP adresi xxx’ler ile, hedef IP adresi yyy’ler ile değiştirilmiştir):
Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name ... tcp 0 0 xxx.xxx.xxx.xxx:53207 yyy.yyy.yyy.yyy:22 ESTABLISHED 12916/[khubd]
Bu komutun çıktısında göze çarpan sorunlu bağlantılardan (örneğin sunucunuzun rasgele bir portundan, tamamıyla ilgisiz bir IP’nin 22. portuna giden bağlantılar gibi) sorumlu uygulamayı bulmak için öncelikle çıktının son sütununda yer alan PID kodunu not edin (yukarıdaki örnekte 12916). Ardından;
ps -auxw
komutunu işletmeniz gerekiyor. Bir önceki komutu çalıştırdığınızda elde ettiğiniz PID’yi bu komutun çıktısındaki ikinci sütunda bulduğunuzda hem bu uygulamadan sorumlu kullanıcıyı hem de uygulamayı görebilirsiniz. Böylece üzerinde yoğunlaşmenız gereken spesifik uygulama ve kullanıcıyı izole etmiş olursunuz.