Jan 23 2008

Linux sunuculari güvenlik püf noktalari

Category: debian,Fedora,Güvenlik,Linux/Unix,UncategorizedFatih Ekrem Genc @ 3:56 am

Yeni bir güvenlik acigi duyruldugu an merakli crakerlerin ilgili programin güvenlik acigi olan versiyonunu bir yerlerde bulabilmek icin bas vurduklari ilk arac arama motorlaridir. Ayni sekilde degisik admin panelerine arama motorlari üzerinden ulasip Bruce-force  atak denemeleri ile admin sifresini kirmayi denemek bilinen saldiri sekilerindendir.


Arada sirada /var/log/apache2/error.log
Dosyalarina göz atip durumun ne kadar ciddi oldugu konusunda ikna olabilirsiniz..
Asagida tipik bir deneme yanilma yönetimi ile phpmyadmin ara yüzü bulunmaya calisilmis..

[Sun May 06 14:24:35 2007] [error] [client 82.61.230.210] File does not exist: /var/www/phpMyAdmin
[Sun May 06 14:24:35 2007] [error] [client 82.61.230.210] File does not exist: /var/www/PHPMYADMIN
[Sun May 06 14:24:35 2007] [error] [client 82.61.230.210] File does not exist: /var/www/pma
[Sun May 06 14:24:35 2007] [error] [client 82.61.230.210] File does not exist: /var/www/PMA
[Sun May 06 14:24:36 2007] [error] [client 82.61.230.210] File does not exist: /var/www/PMA
[Sun May 06 14:24:37 2007] [error] [client 82.61.230.210] File does not exist: /var/www/mysql
[Sun May 06 14:24:37 2007] [error] [client 82.61.230.210] File does not exist: /var/www/admin
[Sun May 06 14:24:37 2007] [error] [client 82.61.230.210] File does not exist: /var/www/db
[Sun May 06 14:24:38 2007] [error] [client 82.61.230.210] File does not exist: /var/www/dbadmin
[Sun May 06 14:24:38 2007] [error] [client 82.61.230.210] File does not exist: /var/www/web
[Sun May 06 14:24:38 2007] [error] [client 82.61.230.210] File does not exist: /var/www/admin
[Sun May 06 14:24:39 2007] [error] [client 82.61.230.210] File does not exist: /var/www/admin
[Sun May 06 14:24:39 2007] [error] [client 82.61.230.210] File does not exist: /var/www/admin
[Sun May 06 14:24:39 2007] [error] [client 82.61.230.210] File does not exist: /var/www/mysql-admin
[Sun May 06 14:24:40 2007] [error] [client 82.61.230.210] File does not exist: /var/www/phpmyadmin2
[Sun May 06 14:24:40 2007] [error] [client 82.61.230.210] script ‘/var/www/mysqladmin/main.php’ not found or unable to stat
[Sun May 06 14:24:40 2007] [error] [client 82.61.230.210] File does not exist: /var/www/mysql-admin
[Sun May 06 14:24:41 2007] [error] [client 82.61.230.210] script ‘/var/www/main.php’ not found or unable to stat
[Sun May 06 14:24:41 2007] [error] [client 82.61.230.210] File does not exist: /var/www/phpMyAdmin-2.5.6
[Sun May 06 14:24:41 2007] [error] [client 82.61.230.210] File does not exist: /var/www/phpMyAdmin-2.5.4
[Sun May 06 14:24:42 2007] [error] [client 82.61.230.210] File does not exist: /var/www/phpMyAdmin-2.5.1
[Sun May 06 14:24:42 2007] [error] [client 82.61.230.210] File does not exist: /var/www/phpMyAdmin-2.2.3
[Sun May 06 14:24:42 2007] [error] [client 82.61.230.210] File does not exist: /var/www/phpMyAdmin-2.2.6
[Sun May 06 14:24:43 2007] [error] [client 82.61.230.210] File does not exist: /var/www/myadmin

DoS atagi engeliyebilecegimiz iptable yada pf gibi güvenlik duvarlari üzerinden yapabileceginiz gibi. Su sekilde de ssh servisini kismen güvence altina alabiliriz.
Bilindigi üzer ssh standart olarak 22 nolu portu dinler. Eger bu portu 1022 yaparsak
22 nolu porta baglanmaya calisan kullanici sonuc alamayinca vaz gecicektir.
Ilk önce 1022 portunuzun kullanilip kullanilmadigina göz atalim.

vs2052020:~# netstat -alnp | grep :22
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 29974/sshd
tcp 0 52 85.XX.XX.XX:22 89.56.XX.X:4392 ESTABLISHED18071/0

yukarida oldugu gibi 22 trafigi dinliyor. Hatta 4392’den ssh portuna uzaktan baglanmisim bilene.
Simdide 1022’ye bakalim. Evet orasi bos..

vs2052020:~# netstat -alnp | grep :1022
vs2052020:~#

vi /etc/ssh/sshd_config dosyasini acip
Port 22 yazili satirda gerekli degisikligi yaptikdan sonra ssh servisini yenden calistirmak kafi olucaktir.
/etc/init.d/sshd restart
bu arada ssh clientinizde standart 22 portunu 1022 yapmayi unutmayin.
Alernatif bir ssh güvenligi ise root kullanicisina ssh üzerinden baglanmayi engelemek süreci ile yapilabilir. Söyleki bir sisteme DoS atak ile ssh üzerinden baglanmaya calissaniz. Hangi kullanicin sifresini kirmayi denerdiniz tabiyki her sistemde olan ve en güclü kullanicinin yani root’un. Uzaktan erisimi sagliyabilmek icin ilk önce sisteminize 2. bir kullanici acin. ssh’ya daima bu kullanici ile baglanip sonra su – komutu ile root haklarini alin.
ssh’ya root olarak baglanmayi engelemek icin
vi /etc/ssh/sshd_config dosyasini acip
PermitRootLogin yes anahtarini no olarak degistirip
/etc/init.d/sshd restart
ssh hizmetini yeniden calistirmaniz kafi gelicektir.
Gelgelelim ftp hizmetimize. Proftp gibi ftp serverleri virtual ftp kullanicisi kullanma sansi taniyor. Mümkünse ftp serverinizi virtual ftp kullanicilari ile kullanin. Sistem kullanicilari ile ftp kullanicilarini ayni ise birde root ftp üzerinden sisteme baglaniyorsa. Hic hos olmayan durumlarla karsilasabilirsiniz.
Bunun ne kadar tehlikeli olabilecegini ngrep ile yapacagimiz ufak bir testle göstereyim. ngrep ile port 21 yani ftp komut portunu dinliyelim..

ngrep port 21
interface: venet0 (127.0.0.1/255.255.255.255)
filter: ip and ( port 21 )
#######
T 85.XX.XX.XX:21 -> 89.YY.YY.YY:3480 [AP]
220 ProFTPD 1.2.10 Server (ProFTPD) [85.25.52.20]..
#
T 89.YY.YY.YY:3480 -> 85.XX.XX.XX:21 [AP]
USER kara..
##
T 85.XX.XX.XX:21 -> 89.YY.YY.YY:3480 [AP]
331 Password required for kara…
#
T 89.56.135.77:3480 -> 85.XX.XX.XX:21 [AP]
PASS lahana..
#
T 85.XX.XX.XX:21 -> 89.YY.YY.YY:3480 [AP]
230 User kara logged in…

Peki yukarida ne oldu. Sirasi ile

1. client servere baglandi
2. client kullanici ismini yani kara’yi servere bildirdi
3. server parola talep etti
4. client parolayi yani lahana kelimesini bildirdi..
5. ve kara adli kullanici sisteme baglandi

Görüldügü gibi tüm sifre ve kullanici transferi acik olarak isliyor.
Client ile server arasindaki trafigi dinliyebilen herhangi birisi sisteminizin kullanici bilgileri ulasabilir. Dolayisi ile ftp ulasimi olan sistem kullanicilarini sisteme baglanmalarini engelememiz fayda var. Böylelikle ftp sifremiz bir sekilde ele gecirilmis olsa dahi budurum sistemimizin güvenligi icin sorun ihtiva etmez.
Simdi sistemimizin kullanici bilgilerini barindirildigi /etc/passwd dosyasini aciyoruz
Her kullanici icin bir satir oldugunu ve bagzi kullanicilarn /bin/false yada /bin/nologin gibi kabuklari kullandigini göreceksiniz. Bu kullanicilar sisteme baglanma haklari olmayan kullanicilardir. Örnek ftp kullanicimiz olan kara’nin da kabuk bilgisini asagida ki gibi /bin/false degistirince sisteme ssh üzerinden baglanmasini engelemis oluruz.
kara:x:65007:65007:,,,:/home/kara:/bin/false
Tabiyki sisteminize icin gerekli güvenlik önlemleri bunlarla sinirli degil. Bu yazida sadece kesinlikle bilinmesi gereken bir kac noktaya deyindim.
Fatih Ekrem Genc
Kaynakca:
http://www.fatihgenc.com/debian-uzerinde-apache2-icin-modsecurity-kurulumu/
http://www.sspace.de/archives/52-Mod-Security-Apache2-Debian-Sarge.html
http://www.google.com/support/webmasters/bin/topic.py?topic=8475
http://www.birumut.net/switch.php?modul=Parser

5 Responses to “Linux sunuculari güvenlik püf noktalari”

  1. ozan says:

    Selamlar
    “Arama motorlari üzerinden ulasip DoS atak denemeleri ile admin sifresini kirmayi denemek bilinen saldiri sekilerindendir.”

    DOs saldırısı ile nasıl parola kırılır ?
    Bildiğim kadarıyla DOS (Danial Of Servis) servis dışı bırakma saldırısıdır.Parola kımra işlemi, brute force , Dictionary vb. saldırı ataklarla yapılır.

    Rica etmse, DOS saldırı ile parola kırma işlemini biraz açabilir misiniz ?

  2. Fatih Ekrem Genc says:

    Acılacak bir nokta yok. yazıyı yazdigimda terminolojiye yeterince hakim degilmisim bruce force yerine DDOS yazmisim.
    duzeltme icin tesekkürler.

  3. ozan says:

    Selamlar,
    Hani DOS saldırıları konusunda bilmediğim bir nokta mı var diye sordum :)
    Teşekkürler

  4. B.C. says:

    Sadece ziyaret ettigimi görmeni istedim:D

  5. baurt says:

    Emeğin için teşşekkürler . marifet iltifata tabidir .