original in es José Salvador González Rivera
es to en Georges Tarbouriech
en to tr:Erdal Mutlu
José Salvador González Rivera Meksika Linux kullanıcıları grubunun aktif uyelerinden biridir. Serbest yazılım ve özellikle Linux kullanımını teşfik eden etkinliklerde yer almaktadır. Kendisi henüz yeni Bilgisayar sistemleri mezunudur. Kendisiyle iletişimde bulunmak isterseniz, jsgr(at)tec.com.mx or veya jsgr(at)linuxpuebla.org adreslerini kullanabilirsiniz.
Günümüzde bilgiler sayısal olarak elektronik
ortamlarda saklanmaktadır ve durum böyle olunca, onlara
bilgisayar ağları aracılığıyla kolayca erişilebilir.
Verilerin türü ister finanslal, ister yönetsel, ister askeri,
ister sanayi ve ister ticari olsun, bunlara uzaktan erişmek artık
çok kolaydır. Ne yazık ki, bunlar kötü niyetli kişilerin verilere
erişme veya onları yok etmek için kolayca hedef olmaktadır.
Bunlara karşı yapabileceiğimiz pek fazla bir şey yoktur.
Bu kısa yazıda Debian GNU/Linux'ta saldırganları belirlemede ve
izlemede kullanılan teknikleri ve araçları gözden geçireceğiz.
Kullanıcı belgelerindekileri burada tekrarlamaktansa,
gerçek hayatta ne olabileceği üzerinde durmak istiyorum.
Linux dağıtımı seçimi yaparken, bir sürü dağıtımı gözönünde bulundurmamız gerekir. Conectiva (Brazilya), Hispa (İspanya), Mandrake (Fransa), SuSE (Almanya), Caldera vs gibi RedHat tabanlıdır ve RPM paket sistemini kullanan birçok Linux dağıtımı daha vardır. Bir de geleneksel Unix'ler gibi sadece .tgz arşivlerini kullanan ve böylece onlara daha yakın olmaya çalışan Slackware vardır. Bunların hemen hemen "hepsi" ticari şirketler tarafından geliştirilmektedir, ancak Debian için bu doğru değildir. Debian İnternet'teki güncellemeleri denetleyen ve bağımlılık denetimlerinde bulunabilen, DPKG adında bir paket yöneticisi sunmaktadır. Böylece, hem sistem yönetimini kolaylaştırmakta ve hem de güvenlik ile ilgili yamalar gözönünde bulundurulduğunda sistemin güncel kalmasını sağlamaktadır.
Debian ayrıca birkaç önemli özellik daha sunmaktadır:
1) Ticari bir amacı yoktur ve pazarın getirmiş olduğu baskıları
izlememektedir.
2) İyi bir hata izleme sistemine sahiptir ve hatalar 48 saatten daha
kısa bir süre içerisinde giderilmektedir.
3)Başından beri amacı, tam ve güvenilir bir işletim sistemi
geliştirmektir.
4) Tüm dünya üzerinde olan gönüllü geliştiriciler tarafından
geliştirilmektedir.
Dağıtımın her yeni sürümü yeni bir mimariyi daha desteklemektedir.
Şu anda desteklenmekte olan mimariler şunlardır:
Alpha, ARM, HP PA-RISC, Intel
x86, Intel IA-64, Motorola 680x0, MIPS, MIPS (DEC), Power PC, IBM
S/390, Sparc dır. Sun UltraSparc ve Hitachi SuperH üzerindeki
çalışmalar sürmektedir. En fazla donanım ortamını destekleyen sistem
Linux'dur.
Debian'ın var olan paketleri arasında, kötü niyetli bağlantıları gerçek zamanlı olarak sezebilecek araçlar da vardır. Bunlar, ağ üzerinden gelen saldırıyı ve belli bir bilgisayarın çalışmasını izleyen iki türdür.
Bağlantı noktaları tarayıcılarını sezimlemek için PortSentry'yi, sistemdeki değişiklikleri sezimlemek için TripWire'ı ve çetele dosyalarını incelemek için LogSentry'yi kullanmaktayız. Bunlardan birincisi ve üçüncüsü Psionic Technologies şirketinin TriSentry ürününün bir parçasıdır.
PortSentry sistemimizdeki bağlantı noktalarını
izlemekte ve bağlantı yapılmasını istemediğimiz bir
bağlantı noktasına bağlantı kurmaya çalışan olursa,
buna karşı belli bir işlemi (genelde bağlantıyı kesme) yerine
getirmektedir.
Programın sanaldoku sayfası
http://www.psionic.com/products/portsentry.html
adresindedir. Program, Solaris, BSD, AIX, SCO, Digital
Unix, HP-UX ve Linux altında çalışmaktadır.
Debian'da programı yüklemek için aşağıdaki komutları çalıştırmanız
gerekmektedir:
apt-get install portsentry
classic, stealth ve advanced (gelişmiş) olmak üzere üç farklı çalışma kipi
seçilebilir. Programın yapılandırma dosyası
/usr/local/psionic/portsentry/portsentry.conf dur.
Ana seçenekleri, José Torres Luque'in ES Linux Magazine'de
yayınlanan yazısında aşağıdaki gibi buldum:
TCP_PORTS, ile ister classic isterse stealth kipinde
olsun, denetlenmesini istediğiniz bağlantı noktaları
tanımlanmaktadır. Programı yazan kişi, güvenlik seviyesine
göre üç liste sunmaktadır. Kullanılabilecek en fazla bağlantı noktası
64'tür.
UDP_PORTS, UDP bağlantı noktaları için olup, bir önceki seçenek
gibidir.
ADVANCED_PORTS_TCP, ADVANCED_PORTS_UDP, gelişmiş (advanced) kipinde
kullanılacak en yüksek bağlantı noktası numarasını belirtmektedir.
Önceden devre dışı bırakılanların dışında, bu sayılardan küçük numaraya
sahip her bağlantı noktası denetlenecektir. En büyük sayı 65535
olabilir. Ancak, yanlış uyarı oluşmasına yol açmamak için, 1024'ün üstündeki
sayıları vermek pek önerilmez.
ADVANCED_EXCLUDE_TCP, ADVANCED_EXCLUDE_UDP devre dışı bırakılacak
bağlantı noktalarının listesidir. Bu bölümde bulunan bağlantı
noktaları gelişmiş (advanced) kipte izlenmeyeceklerdir.
Genellikle buraya, uzaktan erişim yapan istemcilerin bağlandıkları
noktaları ve ident gibi gerçek servis olmayanları yazabilirsiniz.
IGNORE_FILE'da izleme sırasında atlanacak IP'lerin yer aldığı
dosyanın yoltanımı belirtiliyor. Yerel ağ arayüzü, lo dahil
bu dosyada yer almalıdır. Eğer isterseniz, yerel IP numarasını da
ekleyebilrsiniz.
KILL_ROUTE'da saldırıyı yapan bilgisayarı durdurmak için
çalıştırılması gereken komutu yazabiliriz. Sözgelimi : iptables -I
INPUT -s $TARGET$ -j DROP. Buradaki $TARGET$, saldırıyı
gerçekleştiren bilgisayarı işaret etmektedir.
KILL_RUN_CMD'de saldırganın bilgisayarından olan erişimi
engellemeden önce çalıştırılması gereken komut yer alıyor.
SCAN_TRIGGER'de uyarıyı çalıştırmadan önce yapılması gereken deneme
sayısı belirtilmektedir.
PORT_BANNER, açık olan bağlantı noktalarında
bağlanma kipinde iken bir ileti göstermektedir.
Yapılandırma bittikten sonra programı, aşağıdaki üç çalıştırma
kipinden birinde başlatmanız gerekiyor. Bunun için kullanabileceğiniz
seçenekler: TCP için -tcp (temel kip), stealth kipi için -stcp
ve gelişmiş (advanced) kip için -atcp. UDP'ler için ise,
sırasıyla -udp, -sudp ve -audp kullanılabilir.
TripWire, dosya sistemi bütünşüğü denetlemesi yapmaktadır.
Programın sanaldoku yöresini
http://www.tripwire.org
adresinde bulabilirsiniz. Programı Linux için parasız ve Windows NT,
Solaris, AIX ile HP-UX için parayla elde edebilirsiniz.
Debian'da programı yüklemek için aşağıdaki komutu çalıştırmanız
yeterlidir:
apt-get install tripwire
Bilgileri saklamak için iki adet anahtara gerek vardır.
Birinci anahtar ('site key') yapılandırma dosya ve ilkeleri,
ikinci anahtar (yerel 'local key') ise, izlenmesi yapılmış
dosya durum bilgilerini kodlamada kullanılmaktadır.
Yapılandırmalar basitçe /etc/tripwire/twpol.txt dosyasında yapılmakta ve
hazır olunduğunda "yüklemek" için aşağıdaki komut çalıştırılır:
twadmin -m P /etc/tripwire/twpol.txt
Dosyaların son durumnu içeren veritabanını ilk defa oluştururken
aşağıdaki komut çalıştırılır:
tripwire -m i 2
Dosya sisteminin bütünlüğünü denetlemek istenildiğinde aşağıdaki
komut çalıştırılır:
tripwire -m c
Hangi dosyaların değiştiğini saldırganın tarafından öğrenilmesini engellemek için
aşağıdaki komut aracılığı ile yapılandırma dosyaları silinebilir:
rm /etc/tripwire/twcfg.txt /etc/tripwire/twpol.txt
Gerektiğinde tekrar yaratmak için aşağıdaki komut kullanılabilir:
twadmin -m p > /etc/tripwire/twpol1.txt twadmin -m f >
/etc/tripwire/twcfg.txt
LogCheck, LogSentry'nin bir parçasıdır ve çetele
dosyaların çözümlenmesinde kullanılmaktadır ve bu işi çok
etkin bir şekilde yapmaktadır, çünkü yapılan etkinlikler ve
okunması gereken oluşmuş hatalar hakkında raporlar hazırlamaktadır.
Dört farklı çeteleme seviyesi sunmaktadır: ignore (gözardı et),
unusual activity (sıradan olmayan etkinlik), violation of security
(güvenliğin ihlali) ve attack (saldırı).
Programın sanaldoku sayfasına
http://www.psionic.com/products/logsentry.html
adresinden ulaşabilirsiniz. Programın, Solaris, BSD, HP-UX ve Linux
için sürümleri vardır.
Programı Debian'da yüklemek için aşağıdaki komut çalıştırılabilir:
apt-get install logcheck
Bu, çözümlenmiş dosyaların listesini tutabilmek için logtail programını
/usr/local/bin dizinine yüklemektedir. Ayrıca, aşağıdaki dosyalar
da yüklenmektedir:
Logcheck.sh,
temel yapılandırmaları içeren betik programıdır.
Logcheck.hacking,
etkinlik seviyelerinin tanımlandığı kurallarını içerir.
Logcheck.ignore,
gözardı edilecek ifadeleri içerir.
Logcheck.violations,
güvenlik ihlali sayılacak ifadeleri içerir.
Logcheck.violations.ignore,
bu dosyada yer alan ifadeler gözardı edilecektir.
Çetele dosyalarını saat başı denetlemek için cron tablosuna :
0 * * * * /bin/sh /usr/local/etc/logcheck.sh
satırı eklenebilir.
Ağ üzerinden gelecek saldırıları sezimleyebilmek için Snort
kullanıyoruz. Snort'un sanaldoku yöresini
http://www.snort.org adresindedir
ve BSD, Solaris, AIX, Irix, MacOS ve Linux sistemleri için sürümleri
vardır.
Debian'da programı yüklemek için aşağıdaki komut çalıştırılabilir:
apt-get install snort
Program üç farklı kipte çalışmaktadır: sniffer (izleyici, dinleyici),
ağ paketleri çetele tutucu ve saldırı sezimleme.
Aşağıdaki parametreler kullanılabilir:
-l dizin
dosyaların saklandığı dizini göstermektedir.
-h IP
denetlemek istediğimiz ağ IP numarasını belirtiyor.
-b
tüm ağ paketlerini binary olarak yakalamaktadır.
-r dosya
binary dosyayı incelemektedir.
İzleme (sniffer) kipinde, ağ üzerinde dolaşan paketler
ekranda görüntülenirken, çetele tutma (logger) kipinde ise,
veriler bir dizindeki dosyaya yazılmaktadır.
Snort -v
IP başlıklarını göstermektedir.
Snort -dv
Aynı zamanda dolaşmakta olan verileri göstermektedir.
Snort -dev
Daha ayrıntılı bilgi vermektedir.
Bu kipte snort, bağlantı noktaları taraması, servisleri engelleme
saldırısı (DoS Deny of Service), güvenlik açıkları vs gibi olaylar
hakkında bizi bilgilendirmektedir. snort /usr/local/share/snort
dosyasında yer alan kurallarına dayanmaktadır. Saat başı güncellenen bu dosyayı,
programın İnternet sayfasından indirebilirsiniz.
Sadece ağ yapılandırma ve çalışma dizinleri bilgilerini
snort.conf yapılandırma dosyasında belirterek ve üzerinde çeşitli
değişiklikler yaparak, programın yapılandırılması kolayca
yapılmaktadır. Sadece IP numarasını değiştirin:
var HOME_NET IP
snort'u çalıştırmak için aşağıdaki komut kullanılabilir:
snort -c snort.conf
Saldırganlarının IP numaralarını de görebileceğimiz çetele dosyaları
/var/log/snort dizininde saklanmaktadır. Snort'la yapabilecekleriniz
bu kadarı ile sınırlı değil tabii. Daha fazla bilgi için snort
hakkındaki yazıları ve belgeleri okumanızı öneririm. Çeşitli
organizasyonların, dergilerin ve güvenlik gruplarının çoğu
saldırı sezimleme sistemleri arasında her UNIX veya Windows için
snort'un en iyisi olduğunu belirtmektedir. Silicon Defense ve Source
Fire gibi şirketler, ticari destek vermektedir. Sonuçları daha
çekici biçimde sergilemek için de grafik kullanıcı arayüzleri
de ortaya çıkmaktadır.
Bazen bir an önce çözülmesi gereken, öngörülmemiş ve daha ayrıntılı
çözümlenmesi gerekn acil durumlar ortaya çıkabilir.
Bu sorunlar kötü niyetli insanlar veya o veya
bu nedenden dolayı sunucularımıza erişmek,
sistemde daha fazla erişim haklarına sahip olmak için
izleme veya root-kit'ler yükleyerek o veya bu şekilde
sunucularımıza erişmek ve
böylece verilerimizi çalmak veya değiştirmek yada
bizim bilgisayarları kullanarak başkalarına saldırıda
kullanmak isteyen saldırganlar tarafından yapılmaktadır.
İzleyici (sniffer), ağ arayüzünü promiscuous kipine geçirerek, tüm ağ üzerindeki trafiği izlemek veya dinlemek isteyen araca denir. Ağ arayüzünün tüm bilgilerini ifconfig komutyla öğrenebilirsiniz.
eth0 Link encap:Ethernet HWaddr
00:50:BF:1C:41:59
inet addr:10.45.202.145 Bcast:255.255.255.255
Mask:255.255.128.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:7180 errors:0 dropped:0 overruns:0 frame:0
TX packets:4774 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:8122437 (7.7 MiB) TX bytes:294607 (287.7 KiB)
Interrupt:10 Base address:0xc000
Ancak, ifconfig komutu değiştirildiyse veya izleyiciler ağ'daki başka bilgisayardan çalışıyorlarsa, o zaman 'garip' adreslere e-ileti göndererek veya izleyicinin çetele dosyalarını bularak, dış bağlantıları denetlemek gerekecektir.
Ağ'daki promiscuous kipinde çalışan ağ arayüzlerinin
varliğini belirlemeye yarayan ve İspanyol kırıcılar tarafından
tasarlanan neped adında bir araç vardır. Bu Debian'nın paketleri
arasında yoktur, ama İntrenet'teki
ftp://apostols.org/AposTools/snapshots/neped/neped.c
adresinden indirebilirsiniz.
Not: Bu sunucu birkaç haftadır çalışmıyordu.
Bu programı çalıştırdığınızda, aşağıdaki gibi bir çıktı elde edilmektedir:
neped eth0
----------------------------------------------------------
> My HW Addr: 00:80:F6:C2:0E:2A
> My IP Addr: 192.168.0.1
> My NETMASK: 255.255.255.0
> My BROADCAST: 192.168.1.255
----------------------------------------------------------
Scanning ....
* Host 192.168.0.2, 00:C2:0F:64:08:FF **** Promiscuous mode
detected !!!
End.
191.168.0.1'den 192.168.0.2'ye bir IP paketi göndermek
istediğimizde, onun MAC adresini bilmemiz gerekir. İlgili IP
numarasının MAC adresini öğrenmek için, ağ'ya bir yayım (broadcast)
paketi gönderilmektedir. Ağ'daki tüm bilgisayarlar paketi aldıkları
halde, sadece doğru olan yani o IP numarasına sahip olan
bilgisayar cevap vermektedir.
Bu durumda neped ağ'daki her IP numarasını sorgulamaktadır,
ancak yayım paketi kullanmayarak, var olmayan bir IP
numarası kullanmaktadır. Ağ arayüzleri promiscuous kipinde
olan bilgisayarlar cevap verecektir, çünkü sadece onlar bu paketi
görebilmektedir.
Bu programı casus sezimleme hakkında olan, İnternet'teki bir yazıda okumuştum.
Yazıda benzer bir örnek vardı. Eğer, bu yazının adresini
biliyorsanız, lütfen bana bir ileti atın, çünkü yazıyı
kaybettim:-)
Rootkit'ler sıradan kullanıcıların sahip oldukları erişim haklarından daha fazlasını elde etmeye yaramaktadır. Genelde, sistemimizdeki çalışan programları, daha sonra sisteme erişim sağlayacakları başkaları ile değiştirmektedir. İşte bu yüzden, hala programların asıllarına sahip olup olmadığımızı chkrootkit programını kullanarak denetlemek zorundayız. Programı aşağıdaki gibi yükleyebilirsiniz:
apt-get install chkrootkit
www.chkrootkit.org adresinden programın sanaldoku yöresine ulaşabilirsiniz. Programın denetlediği dosyalar ise, şunlardır:
aliens, asp, bindshell, lkm, rexedcs, sniffer,
wted, z2, amd, basename, biff, chfn, chsh, cron, date, du, dirname,
echo, egrep, env, find, fingerd, gpm, grep, hdparm, su, ifconfig,
inetd, inetdconf, identd, killall, ldsopreload, login, ls, lsof,
mail, mingetty, netstat, named, passwd, pidof, pop2, pop3, ps,
pstree, rpcinfo, rlogind, rshd, slogin, sendmail, sshd, syslogd,
tar, tcpd, top, telnetd, timed, traceroute, w, write
Programı kullanmak için:
chkrootkit
komutu çalıştırılır. Böylece dosyalar denetlenmekte, bilinen izleyiciler ve
rootkitler aranmaktadır. Ağ arayüzünün promiscuous kipinde çalışıp
çalışmadığını bize söyleyen ifpromisc, çetele dosyalarının
değiştirilip değiştirilmediğini denetleyen chkwtmp ve
chklastlog gibi başka araçlar da vardır.
Man sayfalarını okumanızı öneriyorum. Size kullandığım
bazı referansların adresinini burada yazıyorum. E-ileti
adresime
Öneri ve düşüncelerinizi lütfen e-ileti adresime göndermekten
çekinmeyin.