Linux sunuculari güvenlik püf noktalari

ByCrauSeRs

Kıdemli Üye
22 Eyl 2007
2,641
9
THT KaLıcı KonutLarı
eni 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 DoS 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


Daha kolay bir yöntem arama motorlari üzerinden phpmyadmin gibi herhangi bir programin internet üzerinde biraktigi izleri aramak. Mesela biraz önce bir kac google aramasi ile söyle bir arama kelimesi buldum. "phpmyadmin/css" "Index of"

Buraya tıklayarak oldukca fazla phpmyadmin arayüzüne ulasabilirsiniz.

Bu yazinin amaclarindan biriside olasi saldirilarin ne kadar ciddi olabilecegi konusunda sistemcileri biraz korkutmak. Buraya kadar okuduklarinizdan yola cikarak siz dahi kafanizda ufak bir korunma yöntemi gelistirmis olabilirsiniz. Mesela .htaccess kullanarak kimlik sorgulamak gibi. Bu .htaccess konuda ayrintiya girmiyecegim merak edenler google’den arastirsin.

Yeni yeni kullanilmaya baslayan diger bir yöntemse arama motorlarina webserverinizin beli basli dizinlerini indexlememesini rica etmek. Bunu domaninizin köküne koyacaginiz robots.txt dosyasi ile yapabilirsiniz.

Asagidaki robots.txt dosyasinin icine yazacaginiz ibare ile /temp , /logfiles ve phpmyadmin dizinlerinin google ve diger arammotorlari tarafindan indexlenmesini engelemis olursunuz. robots.txt ile yapabilecekleriniz bunlarla sinirli degil. Ayrinti icin kaynak olarak vermis oldugum linkere bakabilirsiniz.
# Alle Robots ausschließen
User-agent: *
Disallow: /temp/
Disallow: /logfiles/
Disallow: /phpmyadmin/
Ancak burda dikkat edilmesi gereken bir nokta var. Sistemizine nokta atisi yapmak isteyen kisi direk http://mydomain.com/robots.txt dosyasini okudugunda sizin nahmahrem dizinlerinizin neresi oldugu görecektir. Daha zekice bir yöntemle bütün girilmesini istemediginiz dizinlerinizi /gizli/ adli bir dizinin altina tasiyip robots.txt’nin iceriginide söyle tutabilirsiniz.

# Alle Robots ausschließen
User-agent: *
Disallow: /gizli/
/gizli/ adli dizinin icine index.html dosyasi korayak bu dizinin icine direk erisimi engelemis oluruz.
Bircok programlama dilinde mevcut olan system() gibi fonksiyonlari web programlarken kullanmamaya calisin. Eger bunu yapmak zorundaysaniz statik icerik yazmaya yada system(), eval(), popen() v.s. icine yazdiginiz degiskenleri iceriklerini inceletikten sonra fonsiyonu cagirmak gibi güvenlik önlemleri alinabilir. Özelikle system() gibi fonksiyonlar icine global degiskenler kullanmamaya özen gösterin.
Php güvenlik üzerine daha ayrintili bilgi icin Lnkini kaynakca altinda bulabileceginiz “PHP Güvenlik El Kitabı” mutlaka okuyun. Bunu disinda imkaniniz varsa apache serverinize mod security kurun. Dolayisi ile istenmeyen url komutlarini serveriniz üzerinde calistirilmasini engelemis olursunuz. debian üzerinde apache2 icin modsecurity su sekilde kurabilirsiniz.
Ilk önce apt-get ile mod security kuralim
apt-get install libapache2-mod-security kendinizde gelisitirip günceleyebileceginiz mod security icin düsünülmüs kurallari surdan indirebilirsiniz.
cd /etc/apache2/ wget http://fatihgenc.com/upload/filter.conf apache2 mod-security ile gelen conf dosyasina filter.conf dosyasini include ile ekliyoruz
vi /etc/apache2/mods-available/mod-security.conf
SecFilterDebugLevel 0
SecFilterDebugLog /var/log/apache2/modsec_debug_log
# Include rules
Include /etc/apache2/modsecurity/filter.conf
enson olarak mod secury aktive edip apacheyi yeniden calistiralim.
a2enmod mod-security
/etc/init.d/apache2 restart
Asagidaki url’yi kendi kendi domaininiz icin uyarlayip internet gezgininizden cagirarak apache error.log’larini inceleyin..
http://yourdomain.com/?query=”insert into users (id, name) values (1,’stefan’)”
mod secur calisiyor ise bunu loglardan konrtol edebilirsiniz. ayriyetten sayfa bulunamadi seklinde 404 hatasi verilir…

ssh serverinde de durum farkli degil oradan da degisik saldirilara magzur kalabilirsiniz..
Asagida degisik kullanici adlari ile sisteme baglanmaya kalkisilmis. Cracker muhtemelen beli bir ag maskerini tariyarak sayisiz deneme ile herhangi bir servere baglanmayi denemis olsa gerek.

grep -i "Invalid user" /var/log/auth.log
May 13 13:07:25 mail sshd[28338]: Invalid user andrew from 218.69.18.143
May 13 13:07:30 mail sshd[28341]: Invalid user adam from 218.69.18.143
May 13 13:07:35 mail sshd[28344]: Invalid user trial from 218.69.18.143
May 13 13:07:45 mail sshd[28347]: Invalid user calendar from 218.69.18.143
May 13 13:07:55 mail sshd[28350]: Invalid user poq from 218.69.18.143
May 13 13:08:10 mail sshd[28356]: Invalid user fluffy from 218.69.18.143
May 13 13:08:25 mail sshd[28359]: Invalid user admin from 218.69.18.143
May 13 13:08:40 mail sshd[28365]: Invalid user guest from 218.69.18.143
May 13 13:08:45 mail sshd[28368]: Invalid user webmaster from 218.69.18.143
May 13 13:09:00 mail sshd[28374]: Invalid user oracle from 218.69.18.143
May 13 13:09:10 mail sshd[28377]: Invalid user library from 218.69.18.143
May 13 13:09:20 mail sshd[28380]: Invalid user info from 218.69.18.143
May 13 13:09:35 mail sshd[28383]: Invalid user shell from 218.69.18.143

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.XX: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
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.