29 Şubat 2016

28 Şubat 2016

Linux ve Apache Syslog Konfigürasyonu

Syslog çoğu linux dağıtımında kurulu gelen genel amaçlı bir loglama uygulamasıdır. Bütün programlar loglanmış bilgilerini syslog'a gönderir, syslog konfigurasyon dosyasına başvurarak bulduğu eşleşmelere göre yapılması beklenen eylemi gerçekleştirir (gerekli yerlere yazmak veya göndermek). Rsyslog için ana konfigurasyon dosyası '/etc/rsyslog.conf' dur. Bu dosya içerisinde global directives,modules ve rules bölümleri vardır. Rules ismi verilen kurallar filter ve action bölümlerinden oluşur. Filter kısmı belli bir syslog mesaj kümesini seçmek için, action kısmı ise o mesaj kümesi için yapılacak eylemi belirlemek için kullanılır. Bu dosya içerisinde bir rule tanımlamak için; filter ve action aralarında boşluk olacak şekilde bir satırda yazılmalıdır.

Formatı aşağıdaki gibidir (Bir selector ve bir action) :

lpr.info /var/log/lpr.log
mail.* /var/log/mail.log
ftp.* /var/log/ftp.log
auth.* @prep.ai.mit.edu
auth.* root,amrood

'*' işareti 'all' manasında kullanılır.

Filtreleme işlemi için 3 yöntem vardır :Facility/Priority-based, Property-based, ve Expression-based.

Facility/Priority tabanlı filtreleme en yaygın kullanılanıdır. Filtrelemeyi iki parametre ile yapar ve aralarına nokta konularak yazılır: facility.priority

Facility logu üreten uygulamayı belirlerken, severity mesaj içeriğinin türünü belirlemede kullanılır.

Facility-levels :
auth:messages related to authentication (login)
cron: messages related to scheduled processes or applications
daemon:messages related to daemons (internal servers)
kernel:messages related to the kernel
mail:messages related to internal mail servers
syslog:messages related to the syslog daemon itself
lpr:messages related to print servers
ftp:messages relating to the ftp daemon
local0 - local7: messages defined by user (local7 is usually used by Cisco and Windows servers)

Severity(Priority) levels :
emerg:Emergency - 0
alert:Alerts - 1
crit: Critical - 2
err:Errors - 3
warn:Warnings - 4
notice:Notification - 5
info:Information - 6
debug:Debugging - 7
None

Propery-based filtreleme kullanılabilecek bir diğer yoldur ve ':' işareti ile başlar.Syslog mesajlarını seçilen property'e göre filtreler.Propert olarak;msg,hostname, programname, syslogfacility, syslogseverity, timereported gibi seçenekler kullanılır. Formatı

:PROPERTY, [!]COMPARE_OPERATION, "STRING" şeklindedir.

Compare-operations: contains (stringi içeriyor mu), isequal(string ile eşit mi), startswith(string ile başlayan bir metin mi), regex (basic regex kullanmak için), isempty (boş mu) gibi parametreler alır.

Property-based filtreleme örnekleri

:msg, contains, "error" :Mesaj kısmında 'error' stringini içeren syslog mesajları
:hostname, isequal, "host1" :İsmi host1 olan hosttan gelen mesajlar
:msg, !regex, "fatal .* error" :Fatal ve error kelimelerini içeren (aralarında başka text veya boşluk olabilir) mesajlar

Expression-based filter ile daha kompleks filtrelemeler yapılabilir.Formatı if EXPRESSION then ACTION else ACTION şeklindedir. Örnek filtreleme ve action:

if EXPRESSION then ACTION else ACTION şeklindedir. Örnek filtreleme ve action:

if $programname == 'prog1' then {
action(type="omfile" file="/var/log/prog1.log")
if $msg contains 'test' then
action(type="omfile" file="/var/log/prog1test.log")
else
action(type="omfile" file="/var/log/prog1notest.log")
}

Action'lar ile filtre tarafından yakalanan mesajlar için yapılacak eylemlerin belirtildiğinden bahsedilmişti.[filter] [action] formatında yazılmış bir rule için action ilgili logun yazılacağı veya gönderileceği destination belirtir.Destination, lokalde bir dizin olabileceği gibi remote host IP adreside verilebilir.Yada geçerli bir DNS sunucusu varsa domain ismi yazılabilir. '@' işareti UDP , '@@' işareti TCP bağlantısı kullanmak için yazılır. Örnek filtre ve actionlar:

Kern.* @192.168.1.25:514 ## bütün kernel mesajlarını UDP ile remote server'a gönder
ftp.* @@191.168.56.101:514 ## bütün ftp mesajlarını TCP ile remote server'a gönder

Rsyslog Daemon'ın istemci olarak ayarlanması

Syslog kurulu olan bir linux cihaz'ı syslog client haline getirebilmek için /etc/rsyslog.conf konfigurasyon dosyası açılarak en sonuna aşağıdaki şekilde bir satır eklenmelidir:

[facility-level].[severity-level] [destination]

Destination, lokalde bir dizin olabileceği gibi remote host IP adreside verilebilir.Yada geçerli bir DNS sunucusu varsa domain ismi yazılabilir. '@' işareti UDP , '@@' işareti TCP bağlantısı kullanmak için yazılır. Eğer tcp bağlantısı sağlanacaksa Server tarafınında gelen mesajları tcp ile alacak şekilde ayarlanmış olması gerekmektedir. Syslog default olarak UDP 514 portunu kullanır.

*.* @192.168.1.25:514
kern.* @192.168.1.25:514
ftp.* @@191.168.56.101:514 ## TCP

Sadece bir programın loglarını göndermek

Bu senaryoda ise Örneğin cihazımızda 'foobar' isimli bir program çalışıyor ve '/var/log/foobar.log' şeklinde log dosyası üretiyor olsun. Sadece bu log dosyalarını remote server'a aktarmak istiyorsak rsyslog içerisinde imfile modülü kullanılarak yapılabilir. Imfile modülünü yüklemek için : module(load="imfile" PollingInterval="5") satırı kullanılır. Daha sonra log dosyası için path belirtilmelidir:

input(type="imfile"
File="/var/log/foobar.log"
Tag="foobar"
Severity="error"
Facility="local7")

Son olarak local7 olarak oluşturulan Facility remote syslog servera yönledirilir:

local7.* @192.168.1.25:514

Windows Bilgisayarın Syslog istemcisi olarak ayarlanması

Datagram Syslog Agent (http://www.syslogserver.com/download.html) kullanılarak Windows bir makinenin Syslog server'a log göndermesi sağlanabilir. Program arayüzünde remote server adres ve portu yazılıp sırasıyla install ve start butonlarına tıklandığında çalışmaya başlar. Ayrıca konfigürasyon yapma ve sadece belirli programların logunu gönderme seçenekleride mevcuttur.


Rsyslog Daemon'ın sunucu olarak ayarlanması

Linux sistemlerde Rsyslog daemon default olarak kapalı gelmektedir. Rsyslogun external mesajları kabul etmesini akfit etmek için:

Adım-1) '/etc/rsyslog.conf' dosyasında aşağıdaki satırların başındaki yorumlar kaldırılmalıdır , böylece 514 UDP portundan mesaj kabul etmesi gerektiğini belirtmiş olduk:

$ModLoad imudp
$UDPServerRun 514

* Udp yerine Tcp bağlantısı kullanmak istiyorsak için gerekli komutlar :
$ModLoad imtcp
$InputTCPServerRun 514

Adım-2) Remote mesajlar için bir template oluşturulmalı ve rsyslog'a client cihazlardan gelen log dosyalarını nasıl kaydetmesi gerektiğini belirtmeliyiz. Konfigürasyon dosyasında GLOBAL DIRECTIVES bloğundan önce aşağıdaki satırlar eklenir:

$template RemoteLogs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log" *
*.* ?RemoteLogs
& ~

İlk satır RemoteLogs şeklinde oluşturuduğu yapı ile kayıt edileceği yeri belirliyor, İkinci satırda yine facility ve severity özellikleri istenilen şekilde ayarlanabilir.

Adım-3) # service rsyslog restart (rsyslog servisinin yeniden başlatıması)
Syslog server olarak çalışan cihaza düşen client logları:


Apache Loglarının Syslog Server'a Yönlendirilmesi

Lokal sistem üzerinde tutulan apache logları:

  • Access Logs : /var/log/apache2/access.log
  • Error Logs : /var/log/apache2/error.log

Bu dizinlerin rsyslog servisi tarafından gözlenmesi için konfigurasyon yapılması gereklidir. Syslog tarafından dizin belirterek belirli bir log dosyasını almak için 'imfile' modulü kullanılır.

  • Konfigurasyon Dosyası: /etc/rsyslog.conf

Bu konfigurasyon dosyasının en altına aşağıdaki parametreler eklenmelidir:

$MODLOAD IMFILE
$INPUTFILEPOLLINTERVAL 10
$PRIVDROPTOGROUP ADM
$WORKDIRECTORY /VAR/SPOOL/RSYSLOG

# APACHE ACCESS FILE:
$INPUTFILENAME /VAR/LOG/APACHE2/ACCESS.LOG
$INPUTFILETAG APACHE-ACCESS:
$INPUTFILESTATEFILE STAT-APACHE-ACCESS
$INPUTFILESEVERITY INFO
$INPUTFILEFACILITY local5
$INPUTRUNFILEMONITOR

#APACHE ERROR FILE:
$INPUTFILENAME /VAR/LOG/APACHE2/ERROR.LOG
$INPUTFILETAG APACHE-ERROR:
$INPUTFILESTATEFILE STAT-APACHE-ERROR
$INPUTFILESEVERITY ERROR
$INPUTFILEFACILITY local5
$INPUTRUNFILEMONITOR

Daha sonra bir alt satırda logların yönlendirileceği Remote Server Adresi yazılır.
Boş olan facility'lerden birisi seçilebilir. Biz yukarıda local5 facility'sini seçmiştik.Yönlendirme işlemi için en sona aşağıdaki komut da eklenir.

local5.* @192.168.56.101:514

Apache'yi local5'e aldığımız ve onu yönlendirdiğimiz için sadece apache logları gider.Sistemdeki tüm logları göndermek için '*.*' yazılır.

Örneğin : *.* @192.168.56.101:514


Bu makale İstanbul Teknik Üniversitesi Bilgisayar Mühendisliği Bölümü öğrencisi stajyerimiz Cemal Türkoğlu tarafından geliştirilmiştir.

21 Şubat 2016

Windows Log Konfigürasyonu

Meydana gelen güvenlik problemlerini analiz edebilmek için log dosyaları analiz edilir,ancak şu unutulmamalıdır ki sağlıklı bir sonuç alabilmek için en başta log konfigürasyonlarının doğru yapılmış olması gerekir. Tüm eylemlerin logunu tutmak ciddi büyüklükte veri birikmesine sebep olurken aynı zamanda yönetmesi zorlaşır ve ekstra maliyet getirir. Bu yüzden başlangıçta hangi olaylar hakkında log dosyasında kayıt tutulacağı iyi planlanmalı ve belirlenen seçenekler için gerekli ayarlar yapılmalıdır.

14 Şubat 2016

MySQL Nasıl Hacklenir

Bir client MySQL bağlantısını TCP 3306 portu ile gerçekleştirir.MySQL tarafından kullanılan network protocolü Oracle'a kıyasla daha basit yapıdadır. SSL-enabled versiyonları da (4.0 ve üzeri) aynı port üzerinden bağlantı sağlar. MySQL bağlantı kurarken banner mesajında versiyon bilgisi yazılmaktadır bu durum versiyon bilgisinin kolaylıkla öğrenilmesini sağlar, hatta bazı durumlarda işletim sistemi hakkında ipucu taşır. Dolayısıyla banner inceleyen TCP port tarayıcıları yüksek ihtimalle versiyonu doğru bir şekilde bulmaktadır.

07 Şubat 2016

Oracle Nasıl Hacklenir

Oracle en yaygın kullanılan veritabanlarından biridir. Bu makale için test ve eğitim amaçlı ücretsiz dağıtımı olan 11g Express Edition(XE) sürümü kullanılmıştır. Oracle Express Edition'lar için artık güvenlik patch'leri yayınlamamaktadır, bu dağıtım kullanılacak ise güncellemelerin özel olarak talep edilmesi önerilir. XE mimarisinde veritabanı ve HTTP Listener aynı cihaz üzerinde çalışır, bu tehlikeli bir durumdur ve bulunan bir açıklık sistemin tümünü tehdit eder.

Oracle Penetration Test Aşamaları
  • Oracle Server çalışan sistemin tespiti
  • Oracle versiyon bilgisinin öğrenilmesi.
  • Oracle SID.
  • Tahmin/Bruteforce USERNAME/PASS.
  • Yekti yükseltilmesi.
  • İşletim Sisteminde Kod Çalıştırma/Post Exploitation.