Günümüzde en çok kullanılan web sunucu türleri genel olarak Apache, ISS ve Nginx sunucu türleridir.
APACHE Web Sunucusu ve Log Kayıtları
Açık kaynak kodlu, esnek, sağlam ve performanslı olduğu için Apache en çok tercih edilen web sunucu türleri arasında bulunmaktadır. Çok kapsamlı ve esnek loglama imkanına sahiptir.
Apache Web Server da Error Log ve Access Log adlı iki günlük dosyası bulunmaktadır.
-
Access Log (Erişim Logları):
Web sunucusu üzerinde yer alan internet sitesine gelen ziyaretçilerin kayıt altına alındığı günlük dosyasıdır. Kullanıcıların hangi dizinlere eriştiği, web sunucuların kullanıcılardan gelen isteklere nasıl yanıt verdiği ve ziyaretçilerin hangi tür web tarayıcı bilgilerini kullandığını ve bir çok farklı bilgilere buradan ulaşabiliriz.
Erişim günlüğünün biçimi son derece yapılandırılabilir. Erişim günlüğünün konumu ve içeriği CustomLog yönergesi tarafından kontrol edilir . Varsayılan apache erişim günlüğü dosyası konumu:
- /var/log/httpd/access_log: RHEL / Red Hat / CentOS / Fedora Linux Apache erişim dosyası konumu bu günlük içerisinde bulunmaktadır.
- /var/log/apache2/access.log: Debian / Ubuntu Linux Apache erişim günlüğü dosyası konumu bu günlük içerisindedir.
- /var/log/httpd-access.log: FreeBSD Apache erişim günlük dosyası konumu ise bu günlük içerisinde bulunmaktadır.
Apache günlük dosyası konumunu bulmak için grep komutunu kullanabilirsiniz: Örnek kullanımı şu şekildedir;
- # grep CustomLog /usr/local/etc/apache22/httpd.conf
- # grep CustomLog /etc/apache2/apache2.conf
- # grep CustomLog /etc/httpd/conf/httpd.conf
- Aşağıda bir kaynaktan aldığım Apache web sunucusuna ait örnek bir Access log satırı bulunmaktadır.
“
88.238.104.122 – – [18/Jun/2017:21:15:31
+0300] “GET /hakkinda HTTP/1.1” 200 740“http://www.site.com/category/linux/” “Mozil
la/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/59.0.3071.104 Safari/537.36”
Bu log kayıtlarının ne anlama geldiğini sizlere kısaca açıklamaya çalışayım.
- 88.238.104.122- Gelen trafiğin IP adresini belirtir.
- 18/Jun/2017:21:15:31+0300- İsteğin oluştuğu andaki zaman dilimi ve sunucu saatini gösterir.
- GET- İstek yöntemi.
- /hakkinda- İstek yapılan URL adresi.
- HTTP/1.1- Protokol bilgisi.
- 200- Sunucunun isteğine dönen yanıt.
- 740- Yanıtın bayt cinsinden boyut büyüklüğü.
- http://www.site.com- İstek yapılan URL adresine nereden gelindiği (Referans) Eğer ” – ” işareti varsa referans yoktur ziyaretçiler siteye doğrudan giriş yapmışlardır.
- Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/59.0.3071.104 Safari/537.36- User Agent bilgisidir.
”
2. Error Log (Sunucu hata günlüğü):
Apache httpd tarafından istekleri değerlendirirken burada karşılaşılan hatalar ve tanıma bilgileri bu dosyaya iletilmektedir. Sunucu üzerinden herhangi bir sorun ile karşılaşıldığı zaman hatanın nerede olduğunu öğrenmek ve sorgulamak için bu dosyaya bakılmaktadır.
- /var/log/httpd/error_log:
- RHEL / Red Hat / CentOS / Fedora Linux Apache üzerinde hata dosyaları bu dosya üzerinde bulunmaktadır.
- /var/log/apache2/error.log: Debian / Ubuntu Linux Apache hata günlüğü dosyaları bu dosya günlüğü içerisinde bulunmaktadır.
- /var/log/httpd-error.log: FreeBSD Apache hata günlüğü dosyaları bu dosya günlüğü içerisinde bulunmaktadır.
Apache günlük dosyası konumunu bulmak için grep komutunu şu şekilde kullanabilirsiniz:
- # grep ErrorLog /usr/local/etc/apache22/httpd.conf
- # grep ErrorLog /etc/apache2/apache2.conf
- # grep ErrorLog /etc/httpd/conf/httpd.conf
- Yine bir kaynaktan aldığım Apache web sunucusuna ait Error log satırı şu şekildedir:
“
Sun Jun 18 20:20:09.961372 2017] [core:error] [pid 16637:tid 4328636416] [client
88.238.104.122 Dosya yok: /usr/local/apache2/htdocs/favicon.ic
”
ISS Web Sunucusu ve Log Kayıtları
- Windows tabanlı işletim sistemlerinde internet sitelerinin yayınlanması ve web uygulamalarının çalışmasını sağlayan Microsoft tarafından geliştirilen web sunucu yazılımına ISS denilmektedir.
- IIS uygulaması üzerinde yayın yapan internet sitelerine ait erişim log kayıtları değiştirilmediği takdirde “inetpub\logs\Logfiles” dizininde kayıt altına alınmaktadır.
- IIS uygulamasında log kayıtları farklı şekillerde kayıt altına alınabilir; IIS, NCSA, W3C… Herhangi bir değişiklik yapmadığımız takdirde varsayılan olarak W3C formatında kayıt altına alınmaktadır.
- Loglama konfigürasyonunun doğru bir şekilde yapılması olası bir saldırı sonrasında, saldırıyı inceleyebilmek ve anlamlandırabilmek için büyük önem arz etmektedir.
Bir kaynaktan bulduğum örnek bir ISS Log satırı şu şekildedir;
“”
#Software: Microsoft Internet Information Services 6.0
#Version: 1.0
#Date: 2002-05-24 20:18:01
#Fields: date time c-ip cs-username s-ip s-port cs-method cs-uri-stem cs-uri-query scstatus sc-bytes cs-bytes time-taken cs(User-Agent) cs(Referrer)
2002-05-24
20:18:01 172.224.24.114 – 206.73.118.24 80 GET /Default.htm – 200 7930 248 31 Mozil
la/4.0+(compatible;+MSIE+5.01;+Windows+2000+Server) http://64.224.24.114/
“”
NGİNX Web Sunucusu ve Log Kayıtları
- Nginx ilk olarak Rus mühendisler tarafından mail sunucu olarak geliştirilmiş ve sonrasında web sunucuları için uyumlu hale getirilmiştir.
- Performansı ile oldukça takdir toplayan bu web sunucu yazılımı, yüksek trafikli siteler
için oldukça idealdir. - Ayrıca apache ve litespeed ile yapılan kıyaslamalarda CPU kullanımının daha az olduğu görülmüştür.
- Varsayılan olarak, Nginx’de faaliyetlerini Apache gibi iki tür günlük üzerine yazar: Error log(hata günlüğü) ve Access log (erişim günlüğü).
- Linux, FreeBSD türevleri, Solaris, MacOS X, Windows vb. işletim sistemleri üzerinde
çalışabilir.
Varsayılan olarak error log ve access log aşağıda belirtilen dizinlerde bulunur.
• /var/log/nginx/error.log
• /var/log/nginx/access.log
- Örnek bir nginx web sunucusuna ait access.log satırı:
“”
88.238.104.122– – [23/May/2017:13:50:59 +0000] “POST /wordpress/wp-admin/post.php
HTTP/1.1” 200 2 “http://www.site.com/wordpress/wp-admin/post-new.php” “Mozilla/5.0
(Macintosh; U; Intel Mac OS X 10_6_4; en-US) AppleWebKit/534.3 (KHTML, like Gecko)
Chrome/6.0.472.25 Safari/534.3”
“”
- Örnek bir nginx web sunucusuna ait error.log satırı:
“” 2017/03/23 13:15:25 [error] 19997#0: *1 open ()“/var/www/nginx/phpmyadmin/scripts/index.php” failed (2: No such file or directory), client: 88.238.104.122, server: localhost, request: “GET /phpmy-admin/scripts/index.php HTTP/1.1”, host: www.site.com
“”