Archive for the 'Linux' Category

Rootkit Saldırılarına Dikkat!

Dün akşam telefondaki “serverde bir şeyler oluyor, ne olduğunu anlamıyorum bir bakar mısın hocam” ile başlayıp gecenin büyük bir kısmını alt üstü eden trojan saldırısından belki sizinden başınız yanabilir diye, yapmanız gerekenleri yazıyorum.

1. mrtg grafiğinize bakın. Gördüğünüz veri akışı normal mi?

12.4 MB/sn lik bir veri akışı saat 10 da başlamış (GMT -8), ben müdahil olduğumda saat 22 idi ve dışarıda bir yerlere çok ciddi trafik gidiyordu.

2. Sisteme illegal giriş olup olmadığını kontrol ettim. last root (bilinmeyen bir giriş yok)

3. Shell access i olabilecek kullanıcıları tespit ettim (cat etc/passwd) onların sisteme giriş tarihlerine baktım, yine problem yok.

4. netstat -an | more , burada web sunucusuna bir çok bağlantı gözüküyor, fakat o da ne, 149 la başlayan bir IP adresinin 7000 no lu portuna hızlı bir veri akışı var!.

5. top ile sistem proseslerine göz gezdirdiğimde 2 perl prosesinin uzunca bir süredir sistem kaynaklarını sömürdüğünü gördüm. Demek şu anda sistemde illegal çalışan bir program var.

6. “Bu proses cron ile kendini yeniden başlatıyordur” tahmini ile /var/spool/cron klasöründeki root ve nobody dosyalarına baktım. nobody dosyasının içinde * * * * * /tmp/components/y2kupdate >/dev/null 2>&1 satırı aslanlar gibi duruyor!

7. y2kupdate programının ne olduğu, nerden geldiği ve ne iş yaptığını google da biraz araştırdıktan sonra, tmp deki tüm dosyaları temizledim. Ancak ./ ile gizlenmiş klasörler de duruyor.Dosyaları rm -rfv * ile sildiğinizden emin olun. Gizli dosyaları de silecektir.

8. Bu dosyalar permission u bozuk ya da bir exploit içeren bir scriptten geliyor olmalıydı. find /home -name c99* -print ile c99 shell upload edilen dosyaları arattığımda warez edilmiş bir scriptin açtığı cache klasörünün içine bu shell in yerleştirildiğini gördüm. Bu klasörü de rm -rfv ile sildim.

9. Ancak acaba sistemde başka börtü böcek olup olmadığı konusunda emin değildim. rkhunter programı ile sistemi bir check etmenin faydalı olacağını düşünerek:

wget http://kent.dl.sourceforge.net/sourceforge/rkhunter/rkhunter-1.3.0.tar.gz
tar zxvf rkhunter-1.3.0.tar.gz
cd rkhunter-1.3.0
sh installer.sh  –layout default –install
rkhunter –checkall

ile tüm sistemde başka bir zararlı olmadığından emin oldum.

10. En ilginci de, sisteme IPTables tabanlı bir firewall kurulmamış olmasıydı. Kendi sistemimdeki IPtables scriptini cpanel için uyarlayarak firewall u install ettim. (Bu firewall bir başka yazının konusu)

11. Sistemi restart ederek aktiviteleri izlemeye başladım. apache nin domain logları, sistem logları, mrtg nin trafik iletileri, netstat verileri… her şey normal gözüküyordu.

12. Bugünkü kontrollerimde yine her şey normaldi.

Başınıza böyle bir şey geldi ise yapmanız gerekenleri bir de kitabından özetlemek gerekirse:

1. /tmp, /var/tmp, /dev/shm, /var/spool/samba, /var/spool/vbox, /var/spool/squid, and  /var/spool/cron  klasörlerine ls -lab çekin. Böylece Gizli dosyaları da göreceksiniz. Özellikle ./ ile gizlenmiş dosyaların varlığını kontrol edin.

2. ps -efl ya da ps-auwx ile normal dışı proses olup olmadığını kontrol edin. Özellikle sistem kaynaklarını çok kullanan program var mı bakın.

3. Clam antivirüs ile —infected ve —recursive anahtarları ile “clamscan –infected –recursive” olası PHP ve PERL shell lerini arayın.

4. http://www.chkrootkit.org/ http://www.rootkit.nl/ http://www.ossec.net/en/rootcheck.html herhangi bir ile rootkit leri taratın.

Tags: , , , ,

Linux - RAM kullanımını izlemek

Tux Bireysel dedicated sunucu yönetmek zorunda kalanların en büyük şikayetlerinden biri de sistem kaynaklarını izlemektir.

Hele bir de VPS* iniz varsa, problemler sistem kaynaklarının yetersizliğinden mi yoksa başka bir sorundan mı kaynaklanıyor anlamakta zorlanırsınız.

tail -f /var/log/messages

Nov 19 11:01:22 zephyr kernel: __alloc_pages: 0-order allocation failed (gfp=0×1d2/0)
Nov 19 11:01:23 zephyr kernel: __alloc_pages: 0-order allocation failed (gfp=0×1d2/0)

ya da bir Xen tabanlı VPS te:

swapper: page allocation failure. order:0, mode:0×20
[<c01303a4>] __alloc_pages+0×327/0×3e3

 tail -f /var/log/messages | grep failed ile messages log dosyası içinde failed kelimesi arayabilirsiniz.

benzer mesajlar alıyorsanız sistem RAM i yetersiz demektir. Şu andaki RAM kullanımını görmek içinse:

[root@zephyr /]# free -m
                 total       used       free     shared    buffers     cached
Mem:          2010       1844        166          0         12       1290
-/+ buffers/cache:        541       1469
Swap:         3967          0       3967

Total başlığı sistemdeki toplam RAM miktarını, used başlığı ise kullanılan miktarı göteriyor. Ancak buradaki asıl önemli konu cache in ne kadarının kullanıldığı. Çünkü uygulamaların ne kadar hafıza kullandığı bu değerden anlaşılır. En iyi performans için, kullanılan cache miktarı toplam bellekten daha az olmalıdır. (541 < 2010)

İşletim sistemleri RAM canavarlarıdır, sistemde ne kadar çok RAM varsa o kadar geniş geniş çalışırlar. Örneğin benim sistemimdeki 2 GB RAM’in 1.8 GB ı kullanılmış durumda. 1 GB iken de yaklaşık 900 MB. ı kullanımda idi. Yani işletim sistemi RAM kullanımında “ayağını yorganına göre uzatıyor”.

ps -aux komutu ile çalışan uygulamaların sistem kaynağı kullanımını (o an için) görebilirsiniz.

mysql    31373 26.4  3.0 230528 63692 ?      Sl   11:55   1:42 /usr/sbin/mysqld –basedir=/ –datadir=/var/lib/mysql –user=mysql –pid-file=/var/lib/mysql/..

mysql prosesi toplam RAM belleğin %26.4 ünü kullanıyor!

vmstat komutu takas belleği* kullanılıyorsa, ilgili istatistikleri görüntüler.  (swap, Takas Bellek, sistem belleğinin yetişmemesi durumunda sabit disk üzerinde bir bölümün RAM bellek gibi kullanılması)

[root@ip2 ~]# vmstat 1 2
procs ———–memory———- —swap– —–io—- –system– —-cpu—-
 r  b   swpd   free   buff      cache      si   so    bi    bo   in    cs us sy id wa
 0  0    796 126092  13336 1207884    0    0    90   142    8    17 21  8 68  3
 0  0    796 124428  13368 1208372    0    0   100     0 1109   403 11 10 72  7

vmstat 1 2 -> 1 değeri 1 sn aralıkla, 2 ise 2 kez güncel değerleri getirir.

si (swap in) ve so (swap out) değerleri 2–3 interval in ardından 0 a inmeliler. bi (swap e giren byte, byte in) ve bo (byte out) değerleri ise çok büyük değerlerde olmamalı. Sondan bir önceki sütundaki id (CPU idle, cpu nun boşta olma zamanı) değeri ise 100 e ne kadar yakında o kadar iyidir. (İşlemcinin o kadar serbest olduğunu gösterir)

Peki kullanılan sistem kaynaklarını azaltmak için ne yapılmalı? Bu başlı başına farklı bir yazının konusu, ancak temel prensip kullandığınız sunucu yazılımların en son stable sürümlerini kullanmak ve ilgili optimizasyonları düzenli olarak yapmak olmalıdır.

*VPS: Virtual Private Server – Sanal Özel Sunucu, Bir sunucu/bilgisayar üzerine yazılım ile birden fazla sanal bilgisayar oluşturarak, kaynakları ve yönetimi ayrı bilgisayarlarmış gibi, mevcut kaynakları daha iyi kullandıran ve dedicated sunucuyu ucuzlatan sistem. Bugünlerde 10$ seviyesinde bir rakamla mütevazi bir VPS kiralayıp kendi sunucunuzun root u olabilirsiniz.