Upload
ahmet-han
View
948
Download
15
Embed Size (px)
Citation preview
Her Yönüyle Linux Sistem ve Network Güvenliği 1
Lynis İle Sistem Güvenlik ve Bütünlük Kontrollerinin Yapılması Open source ve ticari versiyonları bulunan lynis sistem bütünlük ve güvenlik kontrollerinin yapılmasında pratik faydalar sağlamakla birlikte farklı sistemlere entegre edilebilmektedir. Bu yazımızda sıfırdan kurulmuş bir Centos 7 işletim sistemi üzerinde kurulumu gerçekleştirip basit olarak test edilecektir. Test aşamasına geçmeden önce temel linux bilgisi ve komutlarına hakim olmanız gerekmektedir. Bir network yada sunucu sistemlerinin bulunduğu bir ortamda yada gerçekleştirilmekte olan penetrasyon testleri sırasında birden fazla güvenlik kontrolü yapmak uzun süreler alabilmektedir. Böyle durumlarda test süresini kısaltmak ve birden fazla kontrolü gerçekleştirmek amacıyla lynis ve benzeri araçları kullanmakta yarar vardır. Genel kullanım olarak üç temel kullanım seçeneği bulunmata ve bu işlemler için süreçleri hızlandırmaktadır. ** Security Auditing ** Vulnarability Scanning ** System Hardening Kurulum İçin Gereksinimler: Centos 7 veya türevi bir linux dağıtımı, Wmware Sanallaştırma Uygulaması, Ssh Bağlantı için(Putty) Sunucu yapılandırması için (1 Nat Wm0 bacağı ve 1 Brigde Modda Wm2 bacağı) Not: Dağıtım için fresh bir minamal sürüm kullanıldığı için öncelikle gerekli güncellemeleri yaptıktan sonra nano, development tools, wget gerekebilmektedir. Sisteminizde eksikse aşağıdaki komutla mutlaka bu kurulumu gerçekleştiriniz.
# yum groupinstall "Development Tools"
Eksik kurulum ve güncellemeler gerçekleştikten sonra lynis kurulumuna geçebiliriz. Öncelikle wget ile o anki yada hangi sürümü güncelse biz bu yazıda 1.5.8 sürümünü kullanıyoruz, indirilir.
1 Her Yönüyle LinuxSistem ve Network Güvenliği Ahmet HAN Free Ebook
# wget http://cisofy.com/files/lynis1.5.8.tar.gz
Daha sonra tar komutu ile dosyalar çıkartılır.
# tar xvf lynis1.5.8.tar.gz
Daha sonra ilgili dizine geçilir.
# cd lynis1.5.8.tar.gz
Denetimi başlatmak için aşağıdaki komut verilir ve audit başlatılır. 2
# ./lynis auditor BGA c
Bu komutttan sonra test işlemi başlayacaktır. Test bitene kadar aşağıdaki test işlemlerini tablodan görebilirsiniz.
[ Lynis 1.5.8 ] ################################################################################ Lynis comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under the terms of the GNU General Public License. See the LICENSE file for details about using this software. Copyright 20072014 Michael Boelen, http://cisofy.com Enterprise support and plugins available via CISOfy http://cisofy.com ################################################################################ [+] Initializing program Detecting OS... [ DONE ] Clearing log file (/var/log/lynis.log)... [ DONE ]
2 Her Yönüyle LinuxSistem ve Network Güvenliği Ahmet HAN Free Ebook
Program version: 1.5.8 Operating system: Linux Operating system name: CentOS Operating system version: CentOS Linux release 7.0.1406 (Core) Kernel version: 3.10.0123.el7.x86_64 Hardware platform: x86_64 Hostname: localhost Auditor: BGA Profile: ./default.prf Log file: /var/log/lynis.log Report file: /var/log/lynisreport.dat Report version: 1.0 Plugin directory: ./plugins [ Press [ENTER] to continue, or [CTRL]+C to stop ] Checking profile file (./default.prf)... Program update status... [ SKIPPED ] [+] System Tools Scanning available tools... Checking system binaries... Checking /bin... [ FOUND ] Checking /sbin... [ FOUND ] Checking /usr/bin... [ FOUND ] Checking /usr/sbin... [ FOUND ] Checking /usr/local/bin... [ FOUND ] Checking /usr/local/sbin... [ FOUND ] Checking /usr/local/libexec... [ FOUND ] Checking /usr/libexec... [ FOUND ] Checking /usr/sfw/bin... [ NOT FOUND ] Checking /usr/sfw/sbin... [ NOT FOUND ] Checking /usr/sfw/libexec... [ NOT FOUND ] Checking /opt/sfw/bin... [ NOT FOUND ] Checking /opt/sfw/sbin... [ NOT FOUND ] Checking /opt/sfw/libexec... [ NOT FOUND ] Checking /usr/xpg4/bin... [ NOT FOUND ] Checking /usr/css/bin... [ NOT FOUND ] Checking /usr/ucb... [ NOT FOUND ] Checking /usr/X11R6/bin... [ NOT FOUND ] [ Press [ENTER] to continue, or [CTRL]+C to stop ] [+] Plugins (phase 1)
Plugins enabled [ NONE ] [+] Boot and services Checking boot loaders Checking presence GRUB... [ NOT FOUND ] Checking presence LILO... [ NOT FOUND ] Checking boot loader SILO [ NOT FOUND ] Checking boot loader YABOOT [ NOT FOUND ] Check running services (systemctl)... [ DONE ] Result: found 20 running services Check enabled services at boot (systemctl)... [ DONE ] Result: found 22 enabled services Check startup files (permissions)... [ OK ] [ Press [ENTER] to continue, or [CTRL]+C to stop ] [+] Kernel Checking default runlevel... [ runlevel 3 ] Checking CPU support (NX/PAE) CPU support: PAE and/or NoeXecute supported [ FOUND ] Checking kernel version and release [ DONE ] Checking kernel type [ DONE ] Checking loaded kernel modules [ DONE ] Found 78 active modules Checking Linux kernel configuration file [ FOUND ] Checking default I/O kernel scheduler [ FOUND ] Checking core dumps configuration... [ DISABLED ] Checking setuid core dumps configuration... [ DEFAULT ] [ Press [ENTER] to continue, or [CTRL]+C to stop ] [+] Memory and processes Checking /proc/meminfo... [ FOUND ] Searching for dead/zombie processes... [ OK ] Searching for IO waiting processes... [ OK ] [ Press [ENTER] to continue, or [CTRL]+C to stop ] [+] Users, Groups and Authentication Search administrator accounts... [ OK ] Checking for nonunique UIDs... [ OK ] Checking consistency of group files (grpck)... [ OK ] Checking non unique group ID's... [ OK ]
Checking non unique group names... [ OK ] Checking password file consistency... [ OK ] Query system users (non daemons)... [ DONE ] Checking NIS+ authentication support [ NOT ENABLED ] Checking NIS authentication support [ NOT ENABLED ] Checking sudoers file [ FOUND ] Check sudoers file permissions [ OK ] Checking PAM password strength tools [ OK ] Checking PAM configuration file (pam.conf) [ NOT FOUND ] Checking PAM configuration files (pam.d) [ FOUND ] Checking PAM modules [ FOUND ] Checking user password aging [ DISABLED ] Checking Linux single user mode authentication [ WARNING ] Determining default umask Checking umask (/etc/profile) [ SUGGESTION ] Checking umask (/etc/login.defs) [ OK ] Checking umask (/etc/init.d/functions) [ SUGGESTION ] Checking LDAP authentication support [ NOT ENABLED ] [ Press [ENTER] to continue, or [CTRL]+C to stop ] [+] Shells Checking shells from /etc/shells... Result: found 6 shells (valid shells: 6). Session timeout settings/tools [ NONE ] [ Press [ENTER] to continue, or [CTRL]+C to stop ] [+] File systems Checking mount points Checking /home mount point... [ SUGGESTION ] Checking /tmp mount point... [ SUGGESTION ] Checking LVM volume groups... [ FOUND ] Checking LVM volumes... [ FOUND ] Checking for old files in /tmp... [ OK ] Checking /tmp sticky bit... [ OK ] ACL support root file system... [ DISABLED ] Checking Locate database... [ NOT FOUND ] [ Press [ENTER] to continue, or [CTRL]+C to stop ] [+] Storage Checking usbstorage driver (modprobe config)... [ NOT DISABLED ] Checking firewire ohci driver (modprobe config)... [ NOT DISABLED ]
[ Press [ENTER] to continue, or [CTRL]+C to stop ] [+] NFS Check running NFS daemon... [ NOT FOUND ] [ Press [ENTER] to continue, or [CTRL]+C to stop ] [+] Software: name services Checking default DNS search domain... [ NONE ] Checking search domains... [ FOUND ] Checking /etc/resolv.conf options... [ NONE ] Searching DNS domain name... [ UNKNOWN ] Checking nscd status... [ NOT FOUND ] Checking BIND status... [ NOT FOUND ] Checking PowerDNS status... [ NOT FOUND ] Checking ypbind status... [ NOT FOUND ] Checking /etc/hosts Checking /etc/hosts (duplicates) [ OK ] Checking /etc/hosts (hostname) [ OK ] Checking /etc/hosts (localhost) [ SUGGESTION ] [ Press [ENTER] to continue, or [CTRL]+C to stop ] [+] Ports and packages Searching package managers... Searching RPM package manager... [ FOUND ] Querying RPM package manager...
Test işlemleri esnasında aşağıdaki kontrolleri yapmakla birlikte cd /var/log dizini altında lynis.log dosyasından gerekli rapora ulaşabilirsiniz. Ayrıca bu dizinde birde lynisreport.dat rapor dosyası oluşturmaktadır. ** System Tools Kontrolü ** Plugin Kontrolü ** Boot and Service ** Kernel ** Memory and Process ** Users, Group and Authentication ** Shells
** File Systems 3
** Storage ** NFS ** Name Services : [Software] ** Port and Package ** Networking ** Printers and Spools ** Email and messaging: (Software test) ** Firewall ** Webserver audit ** Ssh Support ** Snmp Support ** Database ** LDAP Services ** Php, Squid Desteği ** Log ve Dosya Denetimi ** İnsecure Servisleri ** Banners and identification Sistem bütünlük kontrolünün sağlanması için yukarıdaki servisleri test etmekte ve durumu hakkında bilgi sağlamaktadır. Daha detaylı bilgi almak için aşağıdaki komutu verdikten sonra çıktısı adım adım incelenmelidir.
# ./lynis auditor BGA c
Kontrol başladıktan sonra örnek ekran alıntıları:
3 Her Yönüyle LinuxSistem ve Network Güvenliği Ahmet HAN Free Ebook
Şekil 1
Şekil 2
Not :Daha fazla bilgi ve kullanım amacıyla yazının sonunda bulunan referanslar kısmından bilgi edinebilirsiniz.
Bilgi Güvenliği Açısından Trafik Analizi ve Önemi 4
Tcp ve ip yapısında haberleşme gerçekleşirken belirli standartlar ve protokoller arayıcılığı ile gerçekleşmektedir. Bu yüzden port kavramı, üç yollu el sıkışma, veri haberleşmesi kavramları, OSI referans modeli ve en azından wireshark ile yada benzeri diğer araçlar ile trafik analizi çok çok önemlidir. Çünkü zararlı bir yazılım bilgisayarınıza bulaştığı zaman farklı yöntemler ile internete çıkmaya çalışacak, diğer indirmesi gereken farklı komuta kontrol yazılımları varsa indirmeye çalışacak, yada bilgisayarınızda bulunan verileri dışarıya sızdırmaya çalışacak, dolayısı ile belirli amacı olacağı için bir şekilde dış Dünya(internet) ile bağlantı kurmaya çalışacaktır. Vikipedia’ki tanıma göre tcp protokolünün yazılış amacı veri haberleşmesi gerçekleştirilirken kayıpsız veri iletişimin sağlanması amacıyla yazıldığını belirtir. Detaylı bilgiye ulaşmak için lütfen buradaki linki okuduktan sonra devam edeniz. Okuduktan sonra tcp yapısında A bilgisayarından B bilgisayarına şöyle bir durum gerçekleşir.
A bilgisayarı B bilgisayarına TCP SYNchronize mesajı yollar B bilgisayarı A bilgisayarının isteğini aldığına dair bir TCP SYN+ACKnowledgement
mesajı yollar A bilgisayarı B bilgisayarına TCP ACK mesajı yollar B bilgisayarı bir ACK “TCP connection is ESTABLISHED” mesajı alır.
4 Her Yönüyle LinuxSistem ve Network Güvenliği Ahmet HAN Free Ebook
Üç yollu el sıkışma adı verilen bu yöntem ile tcp bağlantısı sağlanmış olur. Veri değişimi ise bundan sonra standartlara göre devam eder. Burada tcp işaretçileri(tcp flag) olarak bilinen bayrak değerleri (6 bit) bilinmesi çok önemlidir. Esasen sadece bunlar değil zararlı trafiğin analizi açısından farklı bir önem arz etmektedir. Bunu şu şekilde açıklamaya çalışacağım. Öncelikle yukarıda bahsedilen konular hakkında temel olarak bilgi sahibi olmama rağmen bir trafiği daha önce detaylı analiz etme imkanım olmamıştı. Ama öğrenmem gerektiğini de biliyordum. Çünkü elbet bir gün lazım olacaktı. Bende hemen işe koyuldum. İnternetten bulduğum farklı pcap dosyalarının analizi nasıl yapıldığını öğrenmek için. Bir CTF yarışmasında kullanılan örnek bir trafiği indirdim. Sizde buradan indirebilirsiniz. Üç yollu el sıkışmada kullanılan ve wireshark ile trafik analizi yapacağınız için tcp flag keylerini en azından ihtiyaç olduğunda bilmekte fayda var. Hexadecimal değerleri şekildeki gibi.
0x00 NULL 0x01 FIN 0x02 SYN 0x03 FINSYN 0x08 PSH 0x09 FINPSH 0x0A SYNPSH 0x0B FINSYNPSH 0x10 ACK 0x11 FINACK 0x12 SYNACK 0x13 FINSYNACK 0x18 PSHACK 0x19 FINPSHACK 0x1A SYNPSHACK 0x1B FINSYNPSHACK 0x40 ECE 0x41 FINECE 0x42 SYNECE 0x43 FINSYNECE 0x48 PSHECE 0x49 FINPSHECE 0x4A SYNPSHECE 0x4B FINSYNPSHECE 0x50 ACKECE 0x51 FINACKECE 0x52 SYNACKECE 0x53 FINSYNACKECE 0x58 PSHACKECE 0x59 FINPSHACKECE 0x5A SYNPSHACKECE
0x5B FINSYNPSHACKECE 0x80 CWR 0x81 FINCWR 0x82 SYNCWR 0x83 FINSYNCWR 0x88 PSHCWR 0x89 FINPSHCWR 0x8A SYNPSHCWR 0x8B FINSYNPSHCWR 0x90 ACKCWR 0x91 FINACKCWR 0x92 SYNACKCWR 0x93 FINSYNACKCWR 0x98 PSHACKCWR 0x99 FINPSHACKCWR 0x9A SYNPSHACKCWR 0x9B FINSYNPSHACKCWR 0xC0 ECECWR 0xC1 FINECECWR 0xC2 SYNECECWR 0xC3 FINSYNECECWR 0xC8 PSHECECWR 0xC9 FINPSHECECWR 0xCA SYNPSHECECWR 0xCB FINSYNPSHECECWR 0xD0 ACKECECWR 0xD1 FINACKECECWR 0xD2 SYNACKECECWR 0xD3 FINSYNACKECECWR 0xD8 PSHACKECECWR 0xD9 FINPSHACKECECWR 0xDA SYNPSHACKECECWR 0xDB FINSYNPSHACKECECWR
Bu ctf oyununda bulunması istenen şey bir bilgisayar diğer bilgisayara port taraması yapıyordu. Ve açık olan portların bulunması isteniyordu. Burada yapılması gereken çözüm portlar açık olduğun zaman dinlenmiş bir trafik analizi ile anlaşılıyor. Yukarıdaki dosyayı analiz için wireshark ile açtığınız zaman karşınıza 130.000++ üretilmiş paket çıkıyor. İşte bu noktada vurgulamak ve belirtmek istediğim önemli olan kısım veri haberleşmesini iyi bilip bu tarz durumlarda nasıl bir çözüm geliştirilebilir ona bakmak. Wireshark bu kadar paketi gösterirken aynı zamanda filtreleme yaparak istediğiniz paketleri getirmenize olanak sağlıyor. Örneğin bu dosyada udp paketlerini öğrenmek isterseniz filter kısmına udp yazıp paketlerin gelmesini beklemek.
Port taramasında synack cevabı portların açık olduğunu göstermektedir. Wireshark ile bir filter yazılarak 130.000 paket içersinde synack cevabı dönen portları tespit edebilirsiniz. synack flag değeri 0x12 yukarıdan bakabilirsiniz. Ona göre şu şekilde bir yazım bize tüm synack cevaplarını getirecektir.
Bu şekilde çözüme ulaşılmış olur. Dediğim gibi buradaki yazılanları öğrenmek amacıyla araştırdım ve uygulamaya çalıştım. Sizde kendiniz bu şekilde benzer örneklerden başlangıç seviyesinde iseniz başlamakta fayda var. Çünkü bilgi güvenliğinin hemen hemen her alanında trafik analizi çok önemli bir durum teşkil ediyor. Bu aşamadan sonra hemen aklıma şöyle bir senaryo geldi. Hemen bilgisayarıma bir vpn sunucu kurup belirli bir süre Wireshark ile trafiği analiz edip neler gerçekleştiğine bakmak. Kurmadan da trafik olurdu ama denemek istedim. Evde LAN ağına sahip olduğumuz için gelen misafirler olsun, evdeki telefon, bilgisayar olsun ve de birde vpn kurulumu ile birlikte 20 dk analiz için yeterli trafiğin oluşmasına imkan tanıdı. Daha sonra kaydı durdurup analiz için yola koyuldum ve hemen get gerçekleştirilen methodları listelettim. Çünkü bu method ile bir zararlı resim dosyası, başka zararlı bir dosya indirilmesi denenebilirdi.
Neyseki buraki çoğu get methodunda çağırılan istekler bannerlar, vpnden dolayı açılan zararlı reklamlar arayıcılığı ile oluşmuş olduğunu küçük bir araştırma ile öğrenmiş oldum. Ve daha sonra bu çağrılara ok yanıtı ile dönen cevap olup olmadığına baktım. Sonuç şekildeki gibiydi.
Daha önce Virus totalin analiz özelliği biliyordum, ama pcap dosyaları için olduğunu bilmiyordum. Hemen dosyaları upload etmeyi denedim. Örnek dosyaya ve analiz sonuçlarına detaylı buradan ulaşabilirsiniz. Gördüğüm sonuca inanamadım. Çünkü Virus Total snort ve suricata ile birlikte bir çok olduğu alertlarını veriyordu.
Gece analiz edip yazıyı yazarken 12 saat sonra gönderdiğim için yeniden analizde de sonuç değişmedi. Daha sonra dosya detaylarına baktığım zaman vpn’den dolayı bir çok gerçekleşen get isteklerinde farklı url’lere yönlendirerek çekmeye çalıştığı dosyayı buradan görmüş oldum.
Daha sonra vpn kullanımının güvenli olduğunu düşünürdüm. Google’da şunları arattım. Vpn threats, vpn vulnerabilities, is vpn safe, kinds of vpn threats gibi tonlarca analiz, pdf, döküman vb. ortaya çıktı. İşin garip tarafı 20 dk’lık bir local ağ trafiği için virus total üzerinden yapılan taramada çıkan alert’lar şöyleydi.
SourceFire Snort Alarmları
Suricata emergency threats
Daha sonra bu trafik dosyasını bir kaç defa rarlayarak bir daha analize gönderdim. Daha önce sanırım Mert Sarıca’ hocam bundan bahsetmişti. Çıkan sonuç burada temiz hiç bir alert yok. Hemen bu alertların çıkmasını araştırdım ve virus total blogunda
VirusTotal += PCAP Analyzer adı altında bir yazı
yayımlamışlar. Burada bu faktörlerden bahsedip örnekler
vermişler. Buradan çıkartılabilecek sonuca gelicek olursak, Vpn Cihazları bazıları ücretsiz ve masum gibi görünebilir ama arka planda kazanç için farklı şeyler döndürebilirler(hotspotshield kullandım .;)) Ne kadar ips/ids, firewall’nuzda olsa farklı encoding ve şifreleme yöntemleri ile bypass edilip kurum içi zararlı çalıştırılıp farklı amaçlar güdebilir. Veri haberleşmesi kavramları, temel network bilgisi önemlidir. SOME’ler için ayrı bir öneme sahip.(Seniorlar için bahsetmiyorum.) Zincirin en zayıf halkası insandır, mantığı bu açıdan hala önemini korumaktadır. En önemlisi bugün burayı(açık) kapattık güvendeyiz mantığı değil, güncel kalmak gerekli tebrirleri almak, güncelleştirmeleri yapmak, tüm her şey tamam dediğinizde ortaya çıkabilecek bir zeroday ile birlikte her şeyin en başına dönmesi ve tekrar uygulanması ile düzenli penetrasyon testleri…
Tüm bunları yaptıysanız güvende miyiz sorusunun cevabını hem güvendesiniz hem değilsiniz. Bu sorunun cevabı schödingerin kedisi deneyindeki sorunun cevabı ne zaman bulundu o zaman cevap bulacağını düşünüyorum.
Dos Ddos Saldırıları ve Arasındaki Farklar 5
Geçtiğimiz yıl yapılan saldırıların genel olarak yüzdesine bakıldığında dos ve ddos saldırıları hala önemini korumakla birlikte zaman zaman yapılan hedef odaklı bu saldırılarda sistemler çalışamaz hale getirilmektedir. Sadece 2014 yılının ocak ve nisan ayları arasında gerçekleştirilen saldırılara bakıldığı zaman bu oran %10++ civarında olduğu görülmektedir. Yine 2015 yılının ocak ayında yapılan araştırmalarda bu saldırıların %33’ünü Ddos saldırıları oluşturmaktadır. Sosyal medya ve haber sitelerinde bu saldırıların hacking olduğu büyük bir yanlışlıkla duyurulmaktadır. Dos ve ddos saldırıları bir hacking yöntemi olmamakla birlikte amaç sistemleri çalışamaz, yorarak işlem görmesine engel olma amaçlı yapılan saldırılardır. Küresel siber güvenlik raporlarından anlaşılacağı üzere bu yılın ilk ayında başta haber, endüstri, hükemet, askeri kurumlar hedef alınmakla birlikte çeşitli kurumlar hedef alınmıştır. Dos Saldırıları: Bu saldırı türünde bir saldırgan ve victim(kurban) adı verilen bir makina bulunmakta olup kurban makineye saldırgan tarafından büyük miktarda veri aktarılmaktadır. Ddos Saldırıları: İnternet üzerinden çok sayıda istemci bilgisayar kullanılarak yapılan saldırı çeşitlerinden birisidir. Genel olarak kurban bilgisayara virüs, trojan bulaştırılarak çok sayıda istemci makinanın(zombi hale gelmiş); bir sunucuya eş zamanlı ve mümkün olduğunca çok fazla sayıda istek göndererek, sunucunun kapasitesinin aşılması hedeflenmektedir.
6
5 Her Yönüyle LinuxSistem ve Network Güvenliği Ahmet HAN Free Ebook 6 http://tr.wikipedia.org/wiki/Denialofservice_attack
Ping of Death Saldırısı: Ping programı genel olarak bir makinaya 32 baytlık bir icmp paketi gönderir ve bu paketin geri gelmesini bekler. Bu saldırı türünde bir hosta maxsimum boyutttan fazla (65535 bayt) ping paketi kullanılarak yapılan bir dos saldırı türüdür. Farklı işletim sistemleri gelen fazla paket sayısını anlayamaz hale gelir. bu saldırı türü ilk işletim sistemlerinde yagın olmakla birlikte bazıları patch’lenmiştir.
Teardrop Saldırıları: Gözyaşı saldırıları olarakda bilinmektedir. Tcp/İp, Osi referans modelinde veri iletilirken parçacıklar halinde yani fragmente edilerek gönderilmektedir. Paketler ise verelere ayrıştırılacağı zaman paketlerde bulunan ofset değerleri kullanılır. Gözyaşı saldırılarında paketi gönderen saldırgan paketler üst üste gelecek şekilde ofsetler ekler. bu paketleri alan bilgisayarlar ayır edemez hale gelir.
Syn Flood Saldırıları: Tcp referans modelinde üç yollu el sıkışma( Three Way Handshake) gerçekleştirilirken yapılan bir saldırı türüdür. Syn paketleri bir sunucu ile istemci arasında haberleşmenin başlaması için gönderilen ilk paketlerdir. İstemcinin gönderdiği syn paketlerine sunucu ack paketi gönderir. Bundan sonra ise istemci syn/ack yanıtı gönderek haberleşmenin gerçekleşmesi sağlanır. Tüm bu işlemlerin gerçekleşmesi için hafızada belirli bir yer ayrılması gerekir. İşte syn flood saldırısında amaç çok fazla syn paketi gönderilmesi sağlanarak hafızanın dolması amaçlanır.
Smurf Saldırısı: Bu saldırı türünde saldırgan hedef bilgisayardan ping isteğinde bulunmayı amaçlar. Burada saldırgan ping paketini hedef bilgisayarın ipsinden gelecek şekilde ayarlar. Ağda bulunan diğer cihazlar her istek attığında bu makineye gönderileceğinden bu bilgisayar ağdan düşer ve bütün isteklere yanıt veremez hale gelir. Saldırgan kullandığı ip adresi aslında spoof edilmiş ip adresidir.
Fraggle Saldırısı: Smurf saldırısı türlerinden birisi olup tek farkı udp echo paketlerinin içersinde icmp echo paketkerini içermesi prensibine göre yapılır.
Amplification Saldırıları: Son zamanlarda genel olarak dns ve ntp servisi kullanılarak gerçekleştirilen saldırı türlerindendir. Ddos saldırılarında amaç çok fazla ve farklı sistem üzerinde belirlenen hedeflere belirli sayıda paket gönderimi amaçlanarak yapılır. Amplification tipi saldırılarında ise trafik kapasitesi yüksek aracı sistemler kullanarak saldırgan sahip olduğu bandwidth miktarından çok daha fazlasını hedef sisteme yönlendirir. 7
Dns amplification saldırılarında öncelikle saldırgan küçük dns sorguları gönderir. Daha sonra birden fazla alan adına sahip bir dns kaydı için parametreyi any olarak ayarlar. Ve tüm kayıt listesini ister. Gönderilen paketler 60 byte civarındayken dönen cevaplar 35 kb ları bulabilir. Bu şekilde 5060 kat daha fazla trafik üretilmiş olur. Ek olarak saldırgan küçük istekleri Recursive Dns sunucuya yönlendirirse kurbana büyük miktarda trafik yönlendirmiş olucaktır.
7 http://blog.bga.com.tr/2014/03/ntpservisikullanarakgerceklestirilen.html
Ddos saldırılarını önlemek için farklı yöntemler bulunmasına rağmen kesin çözüm bulunmamaktadır. Dinamik bant genişliği yönetimi, saldırı tespit sistemleri, yük dengeleme(load balancing), güvenlik duvarları ve İSS ler artık bu saldırılar ile belirli bir yere kadar başa çıkmaktadır.
Nagios ile Sistem ve Network Monitoring 8
Nagios open source bir yazılım olup sistem, network ve altyapınızı monitor etmenize imkan tanımaktadır. Bu bölümde Centos 7 yada Redhat 7 üzerinde kurulum anlatılıp bazı faktörlerinden bahsedilecektir. Sizde test amaçlı minimal bir centos sunucu hazırlayıp öncelikle gerekli programları yüklemeniz gerekmektedir. Nagios sunucularınızı, switchlerinizi, uygulamalarınızı ve servislerinizi monitor etmenize imkan tanır.
8 Her Yönüyle LinuxSistem ve Network Güvenliği Ahmet HAN Free Ebook
Nagios Kullanım Faktörleri: ** Monitoring ** Alerting ** Response ** Raporlama(Reporting) ** Maintanence(Bütünlük) ** Planlama(Planning) Kurulum Gereksinimleri: ** LAMP Server
# yum install gd gddevel gcc glibc glibccommon wget
Gereksinimleri tanımladıktan sonra diğer aşamalara geçebiliriz. Kullanıcı ve Grup Oluşturma: Kullanıcı
# useradd m nagios passwd [şifre]
Grup
# groupadd nagcmd usermod a G nagcmd nagios usermod a G nagcmd apache
Kullanıcı ve grup oluşturma işlemleri tamamlandıktan sonra nagios ve pluginlerini indirebiliriz.
# wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios4.0.8.tar.gz
# wget http://nagiosplugins.org/download/nagiosplugins2.0.3.tar.gz
İndirme işlemleri tamamlandıktan sonra artık kurulum kısmına geçebiliriz.
# tar xzf nagios4.0.8.tar.gz
# cd nagios4.0.8
# ./configure withcommandgroup=nagcmd
# make all
# make install
# make install init
# make install config
# make install commandmode
Temel kurulum işlemlerinden sonra web arayüz kurulumuna geçebiliriz.
# make installwebconf
Daha sonra web arayüzden giriş için bir kullancı ve parolası oluşturulım.
# htpasswd c /usr/local/nagios/etc/htpasswd.users nagiosadmin
Bu işlemlerden sonra httpd (Apache) servisini yeniden başlatalım.
# systemctl restart httpd
Artık nagios pluginlerini kurmaya başlayabiliriz.
# tar xzf nagiosplugins2.0.3.tar.gz
# cd nagiosplugins2.0.3
Kurulum için devam edelim.
# ./configure withnagiosuser=nagios withnagiosgroup=nagios
# make
# make install
Nagios için temel konfigürasyon atarlarına geçebiliriz. Nagios konfügürasyon dosyaları /usr/local/nagios/etc dizininde bulunmaktadır. Alert’ları alabilmemiz için mail adresimizi yerleştirmemiz gerekmektedir. Dolayısı ile aşağıdaki gibi vi yada nano metin editörü ile dosyamızı açalım.
# nano /usr/local/nagios/etc/objects/contacts.cfg
Şekildeki gördügünüz mail adresinin olduğu yere isteğiniz mail adresini yazabilirsiniz.
Mail adresinden sonra hangi ip aralıklarında çalışacağımız şekildeki gibi düzenlenmelidir.
# vi /etc/httpd/conf.d/nagios.conf
[...] ## Şekilde görülen yerlere sharp(#) işareti yerleştirilir. ## # Order allow,deny # Allow from all ## Şekilde görüldüğü gibi yorumsatırları kaldırılmalıdır. ## Order deny,allow Deny from all Allow from 127.0.0.1 192.168.1.n/24 [...]
Daha sonra apache servisi yeniden başlatılır. systemctl restart httpd
Bu aşamadan sonra herhangi hata olup olmadığını kontrol etmelisiniz.
# /usr/local/nagios/bin/nagios v /usr/local/nagios/etc/nagios.cfg
Hata yoksa şekildeki gibi bir çıktı alıcaksınız.
Artık servisi başlatabiliriz.
# systemctl start nagios chkconfig add nagios chkconfig nagios on
Doğru çalışıyorsa aşağıdaki gibi çıktı olucaktır.
Selinux kurallarıda şekildeki gibi düzenlenir.
# nano /etc/config/selinux
[... SELINUX=permissive [...]
Kurulum başarı ile tanımlanmıştır. Artık web arayüze bağlanabiliriz. Taracınızı açarak aşağıdaki gibi bağlanmaya çalışın. Firefox kullanmanız fayda var. Zira google bazen güvenlik amaçlı web arayüzden bağlanılmaya çalışırken çeşitli problemler çıkartabiliyor.
Bu aşamadan sonra nagios kullanıma hazır. Şekilde home sayfasını görmektesiniz.
Buradan event log bilgilerine bakalım. Ve görelim.
Buradan raporlar kısmına giderek geçmiş günlerin özetine ve loglarına bakalım.
Son olarakta servisler ile ilgili bilgi alalım. Sizde farklı entegrasyonları ve sisteminiz ile ilgili farklı bilgileri almak isterseniz diğer farklı kısımlara bakabilirsiniz.
Zabbix İle Network Monitoring 9
Zabbix bir network monitoring uygulaması olmakla birlikte sisteminizdeki switch, sunucu gibi cihazlarınızı monitor etmenize yarayan bir uygulamadır. Farklı uygulamalar için template oluşturabilmekle birlikte, örneğin ossec ile beraber entegre edebilirsiniz. Default olarak 10050 portunu kullanmakta olup farklı şekilllerde agentless yapıdada kurabilirsiniz. Yazıda temel kurulum ve yapılandırma işlemlerine değinilecektir. Test && Kurulum işlemleri Centos 7 Minimal Server üzerinde gerçekleştirilecektir. ** Gereksinimler Centos 7(Monitoring Amaçlı) : Bir Nat ve Bridge Ayağı Centos 7(Agent Amaçlı) : Bir Nat Ve Bridge Ayağı Wmware Workstation 10++ Sürümü Putty Yazılımı LAMP Kurulumu Epel yada kurulum için gerekli repolar libssh2 fping
9 Her Yönüyle LinuxSistem ve Network Güvenliği Ahmet HAN Free Ebook
libcurl libiksemel netsmtp openIPMI İlk olarak Monitoring amaçlı zabbix kurulumu analatıcaktır. Daha sonra agent kurulumu anlatıcaktır. Kuruluma geçmeden önce Centos 7 defaultta eksik gelen modülleri indirdikten sonra işlemlere geçmenizde fayda var!
# yum install wget nano “development tools”++
# yum update
LAMP Kurulumu: İlk olarak Apache servisini kuruyoruz.
# yum install httpd
# systemctl start httpd
Servis başlatıldıktan sonra şekildeki gibi bir çıktı alıcaksınız. Firewall portları şekildeki gibi açılmaldır.
# firewallcmd zone=dmz addport=80/tcp permanent #firewallcmd reload
Ama öncelikle tarayıcınıza şekile belirtildiği gibi sunucu ip adresinizi girmeli ve firewallcmd kurallarını göre portları açmalısınız.
# http://Centos_7_Sunucu_İpadresi
Boot edilene kadar açık bırakalım.
# systemctl enable httpd.service
Bundan sonra mysql(mariadb) kurulumuna geçebiliriz.
#sudo yum install mariadbserver mariadb
# sudo systemctl start mariadb
Buradan itibaren güvenli kuruluma geçelim.
# sudo mysql_secure_installation
Bir kaç farklı soru sorucaktır. Root şifresini girdikten sonra diğer Y şeçeneği ile devam edelim.
# Enter current password for root (enter for none): OK, successfully used password, moving on... Setting the root password ensures that nobody can log into the MariaDB root user without the proper authorization.
New password: Şifreniz Reenter new password: Şifreniz Password updated successfully! Reloading privilege tables.. ... Success!
# sudo systemctl enable mariadb.service
Mariadb kurulumu tamam. Php modülllerini kuruluma geçebiliriz.
# sudo yum install php phpmysql
httpd servisini bu aşamadan sonra yeniden başlatmamız gerekecektir.
# systemctl restart httpd.service
# yum install phpfpm
Not: Sisteminizde o anki eksik tüm php modülleri mutlaka kurulu olmalıdır.
# phpbcmath.x86_64 : A module for PHP applications for using the bcmath library phpcli.x86_64 : Commandline interface for PHP phpcommon.x86_64 : Common files for PHP phpdba.x86_64 : A database abstraction layer module for PHP applications phpdevel.x86_64 : Files needed for building PHP extensions phpembedded.x86_64 : PHP library for embedding in applications phpenchant.x86_64 : Enchant spelling extension for PHP applications
Modüllerinizin hepsi tamamsa php çalışması ile ilgili test yapalım.
# nano /var/www/html/info.php/
Daha bu dosyanın içersine aşağıdaki yazıp kaydedelim.
# <?php phpinfo(); ?>
Tarayıcımıza gidip yazalım.
# http://Centos7_Sunucu_ip_adresi/info.php
Eğer herhangi bir şey gelmez ise firewall portlarını kontrol edelim.
#sudo firewallcmd permanent zone=public addservice=http #sudo firewallcmd permanent zone=public addservice=https #sudo firewallcmd reload
Lamp kurulumu tamam artık Zabbix kurulumuna geçebiliriz.
# yum update
Repoları ekleyelim ve diğer gereksinimleri kuralım.
# rpm import http://repo.zabbix.com/RPMGPGKEYZABBIX
rpm Uv http://repo.zabbix.com/zabbix/2.4/rhel/7/x86_64/zabbixrelease2.41.el7.noarch.rpm
# yum install mysqlserver zabbixservermysql zabbixwebmysql zabbixagent
zabbixjavagateway
Bu aşamadan sonra tablodaki dizine gidelim. Ve yorum satırırı şekildeki gibi olmasınısını sağlayarak timezonu düzenleyelim.
# /etc/httpd/conf.d/zabbix
Daha sonra httpd servisini yeniden başlatalım. Ve veritabanı oluşturalım.
# # mysql u root p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.5.35 MySQL Community Server (GPL) by Remi
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> create database zabbix;
Query OK, 1 row affected (0.05 sec)
mysql> GRANT ALL ON zabbix.* TO zabbix@localhost IDENTIFIED BY
'zabbixpassword';
Query OK, 0 rows affected (0.02 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
mysql> exit
Bye
Bu aşamdan sonra ise zabbix templatelerini import edelim.
# mysql u zabbix p zabbix < /usr/share/doc/zabbixservermysql2.0.6/create/schema.sql
# mysql u zabbix p zabbix < /usr/share/doc/zabbixservermysql2.0.6/create/images.sql
# mysql u zabbix p zabbix < /usr/share/doc/zabbixservermysql2.0.6/create/data.sql
Bu aşamadan sonra servisler başlatılır ve kuruluma geçilebilir.
# systemctl start zabbixserver
Tarayıcıya şu şekilde girilerek yükleme işlemine başlanılır.
Daha sonra ikinci aşamda şekildeki gibi tüm eksikleri kendisi kontrol etmekte. Eksik bir servis var ise başlamamaktadır. Adım adım giderek takip ediniz.
Veritabanı bağlantılarını şekildeki gibi düzenlemeniz gerekmektedir.
Ardından test connection ile bağlatıyı kontrol ediniz.
Son yapılandırmayıda şekildeki gibi yapalım.
Kurulumun son hali şekildeki gibi yapılandırılmaları göstermektedir.
Finishten sonra login sayfasına geçebiliriz.
Kurulum tamamlanmıştır.
Bu aşamdan sonra agent kurulumuna geçelim.
# rpm import http://repo.zabbixzone.com/centos/RPMGPGKEYzabbixzone
rpm Uv http://repo.zabbixzone.com/centos/zabbixzonerelease0.01.noarch.rpm
yum install zabbixagent y
chkconfig zabbixagent on
mv /etc/zabbix/zabbix_agentd.conf /etc/zabbix/zabbix_agentd.default
sed 's/Server=127.0.0.1/Server=Centos7_Server_İp/' /etc/zabbix/zabbix_agentd.default
> /etc/zabbix/zabbix_agentd.conf
service zabbixagent start
Şekildeki gibi agent yapılandırmasından sonra artık zabbix’iniz hazır.
İcinga ile Network Monitoring Edilmesi ve Konfügürasyonu 10
İcinga open source olarak kullanılan sistem ve network monitoring uygulamasıdır. Nagiosttan forklanmış bir uygulamadır. Nagios benzeri bir uygulama olup bazı pozitif yönleri ile nagiostan farklılık göstermektedir. Bu yazımızda Centos 7 minimal bir dağıtım üzerinde icinga kurulum ve konfügürasyonunu anlatıyor olacağız. Sizde nagios, zabbix, icinga gibi open source alternatifleri test edip zamanla en uygun bulduğunuz çözümü kullanabilirsiniz. Ticari ürünler bazen kurumlar için çok gerekir olsalarda önemli olan open source ürünleri kullanıp kurumunuzun IT giderlerini düşürebilirsiniz. Bu noktada open source araçların önemi büyüktür. Özellikle network security, network security monitoring, high availability gibi konularda. Sistem için en temel nano,wget, development tools’ kurulu olmasında dışarıdan ssh ile ulaşım sağlıyorsanız openssh server kurulu olmasında ve web arayüze ulaşım için firewall portlarını açmakta yarar var. Ön gereksinimler:
# yum install httpd gcc glibc glibccommon gd gddevel # yum install libjpeg libjpegdevel libpng libpngdevel # yum install netsnmp netsnmpdevel netsnmputils
Ön gereksinimler kurulduktan sonra kullanıcı ve grup oluşturma işlemlerine geçilir.
# useradd icinga
Bu aşamadan sonra web arayüze bağlanabilmek için aşağıdaki düzenlemeler yapılmalıdır.
# groupadd icingacmd # usermod a G icingacmd icinga # usermod a G icingacmd apache
Kurulum İçin gerekli paketleri indirmeden önce gerekli dizini oluşturalım.
# mkdir ~/icinga # cd icinga/
10 Her Yönüyle LinuxSistem ve Network Güvenliği Ahmet HAN Free Ebook
İcinga ve nagios pluginlerini indirelim.
# wget https://github.com/Icinga/icingacore/releases/download/v1.11.5/icinga1.11.5.tar.gz # wget http://www.nagiosplugins.org/download/nagiosplugins2.0.3.tar.gz
Daha sonra gerekli dosyaları şekilde belirtildiği gibi dizine çıkartalım.
# tar zxvf icinga1.11.5.tar.gz # tar zxvf nagiosplugins2.0.3.tar.gz
Bu aşamadan itibaren artık kuruluma geçebiliriz.
# cd icinga1.11.5 # ./configure withcommandgroup=icingacmd disableidoutils
Kurulum tamamlanana kadar biraz beklemelisiniz ve aşağıdakine benzer bir çıktı almalısınız.
*** Configuration summary for icingacore 1.11.5 06202014 ***: General Options: Icinga executable: icinga Icinga user/group: icinga,icinga Command user/group: icinga,icingacmd Apache user/group: apache,apache Embedded Perl: no Event Broker: yes Enable compressed logs: yes Enable Performance Data: no Build IDOUtils: no Install $prefix: /usr/local/icinga Lock file: $prefix/var/icinga.lock Temp file: /tmp/icinga.tmp Chk file: $prefix/var/icinga.chk HTTP auth file: $prefix/etc/htpasswd.users Lib directory: $exec_prefix/lib Bin directory: $exec_prefix/bin Plugin directory: $exec_prefix/libexec Eventhandler directory: $exec_prefix/libexec/eventhandlers Log directory: $prefix/var Check result directory: $prefix/var/spool/checkresults
Temp directory: /tmp State directory: $prefix/var Ext Cmd file directory: $prefix/var/rw Init directory: /etc/rc.d/init.d Apache conf.d directory: /etc/httpd/conf.d Apache config file: /etc/httpd/conf.d/icinga.conf Mail program: /bin/mail Host OS: linuxgnu Environment Prefix: ICINGA_ Web Interface Options: HTML URL: http://localhost/icinga/ CGI URL: http://localhost/icinga/cgibin/ Main URL: http://localhost/icinga/cgibin/tac.cgi Review the options above for accuracy. If they look okay, type 'make all' to compile the main program and CGIs. !!! Please take care about the upgrade documentation !!!
Kurulum tamamlanması için aşağıdaki komutları giriniz.
# make all # make fullinstall # make installconfig
Bu aşamadan sonra aşağıdaki dizine gidip şekildeki gibi mail adresinizi girmeniz gerekmektedir.
# # vim /usr/local/icinga/etc/objects/contacts.cfg
Web bileşenlerini yüklemeye geçebilirsiniz.
# make cgis # make installcgis # make installhtml # make installwebconf
Artık kurulum tamamlandı. Web arayüzden erişim sağlamak için kullanıcınıza bir parola oluşturmalısınız.
# htpasswd c /usr/local/icinga/etc/htpasswd.users icingaadmin New password: Retype new password: Adding password for user icingaadmin
Şimdi ise icinga servisini başlatalım.
# systemctl start httpd.service
Servis herhangi bir error vermeden başladıysa problem yoktur. Pluginlerin kurulumunu ise aşağıdaki komutları çalıştırarak devam edebilirsiniz.
# cd ~/icinga/nagiosplugins2.0.3 # ./configure prefix=/usr/local/icinga withcgiurl=/icinga/cgibin withnagiosuser=icinga withnagiosgroup=icinga # make # make install
Sistem boot edilirken servisin aktif olmasını isterseniz şekildeki komutu girmenizde yarar var.
# /usr/local/icinga/bin/icinga v /usr/local/icinga/etc/icinga.cfg
Çıktı şekildeki gibi ise kusursuz bir kurulum gerçekleşmiştir.
# chkconfig add icinga # chkconfig level 35 icinga on
# systemctl start icinga.service
Kurulum tamamlandı. Tarayıcınıza gelip icingayı başlatabilirsiniz.
# http://Sunucunu_İp/icinga
Bu işlemden sonra kullanıcı adımız ve daha önceden belirdeğimiz şifre ile login olalım. İlk başlamış ekranımız şekildeki gibidir.
Yan taraftaki sekmelerden örnek olması amacıyla servis detayları sekmesine gidelim ve çıktıları inceleyelim.
Buradan reporting kısmına gidelim ve olay loglarını (event logs) görelim.
Geniş çaplı bilgi almak isterseniz raporlama imkanıda sunmaktadır. Test amaçlı diğer özelliklerine göz atmanızda fayda var.
Packetfence Open Source NAC Yapılandırması 11
Packetfence open source nac(network access control) uygulamasıdır. Küçük ve geniş networkler için farklı kullanılmasının yanı sıra captive portallar, cihazların izole edilmesinde, wired and wireless yönetimindede kullanılmaktadır. İds, İps sistemler ile entegre edilbilmekte ve aynı zamanda DLAP gibi farklı servisler ile kullanabilirsiniz. Ticari amaçlı destek hizmetleride sunmaktadır. Şekildeki resim desteklediği bileşenleri göstermekte olup official sitesinden alınmıştır. Desteklediği bileşenler şekildeki gibidir. 12
Mimari olarak ise şekildeki gibi işlemekte olup örnek ve yazı bütünlüğü, okuyucu açısından bu resim official siteden alınmıştır.
11 Her Yönüyle LinuxSistem ve Network Güvenliği Ahmet HAN Free Ebook 12 http://www.packetfence.org/fileadmin/images/pf/components.png
13
Kullanım alanları: Bankalar, Kolejler, Üniversiteler, Mühendislik Şirketleri, Oteller, Medical Center ve Hastahaneler, Telekominikasyon Şirketleri, Manufacturing Şirketleri… Gereksinimler: Ubuntu 12.04 Server Wmware Nat ve Bridge Bacağı Putty Openssh server
13 http://www.packetfence.org/fileadmin/images/pf/network.png
Kurulum: Kuruluma geçmeden öncelikle Ubuntu işletim sistemi ön gereksinimlerinin kurulması gerekmektedir.
# sudo aptget install buildessential apache2 apache2.2common apache2utils openssl opensslblacklist opensslblacklistextra phplog snort mysqlserver libapache2modproxyhtml libapache2modphp5 phppear php5mysql php5gd
Daha sonra packetfence çalışabilmesi için gerekli olan bazı Perl modüllerini kurmanız tavsiye edilir.
# sudo aptget install perlsuid libapachehtpasswdperl libbitvectorperl libcgisessionserializeyamlperl libconfiginifilesperl libtimedateperl libapachedbiperl libdbdmysqlperl libfiletailperl libnetworkipv4addrperl libiptablesparseperl libiptableschainmgrperl liblistmoreutilsperl liblocalegettextperl libloglog4perlperl liblwpuseragentdeterminedperl libnetmacvendorperl libnetmacperl libnetnetmaskperl libnetpcapperl libnetsnmpperl libsnmpperl libnettelnetciscoperl libparserecdescentperl libregexpcommonemailaddressperl libregexpcommontimeperl libperlcriticperl libreadonlyxsperl libhtmltemplateperl libtermreadkeyperl libtestperlcriticperl libtestpodperl libtestpodcoverageperl apache2mpmthreadpool libthreadpoolsimpleperl libuniversalrequireperl libuniversalexportsperl libnetrawipperl libwwwperl
Gereksinimler ve modüllerin kurulmasından sonra packetfence kuruluma hazır hale getirilir. Bunun için packetfence şekildeki gibi repolar eklenmesi sağlanır.
# $ sudo nano /etc/apt/sources.list.d/packetfence.list
Bu dosyaya şekildeki satır eklenilir.
# deb http://inverse.ca/downloads/PacketFence/ubuntu precise precise
Daha sonra şekildeki komut ile birlikte GPG key eklenilmesini sağlanılır.
# $ sudo aptkey adv keyserver keys.gnupg.net recvkey 0x810273C4
Bu noktadan itibaren ise gerekli güncellemeyi sağlanarak kuruluma geçilir.
$ sudo aptget update $ sudo aptget install packetfence
Bu biraz zaman alabilir biraz beklemeniz gerekmektedir. Kurulum tamanlandıktan sonra konfigürasyon işlemlerine geçebiliriz. Bunun için web tarayıcınıza gidip ip adresi ve default olarak tanımlanmış 1443 portunu yazarak packetfence’se ulaşmaya çalışın.
# https://Sunucu_İp_adresi:1443/configürator
Artık yapılandırma işlemlerine geçilebilir. Web arayüz ile bağlantıda sıkıntı yaşamak istemiyorsanız 80,443,1443 gibi portları firewall kuralları ile açmanızda fayda var. Şekildeki gibi İnline enforcement sekmesini seçerek işe koyulalım.
Daha sonra eth0 arayüzü için şekildeki resimdeki gibi temel gereksinimleri ayarlayarak devam edelim.
Gerekli yapılandırmaları sizde kendi networkünüze göre oluşturmanızda ve yapılandırmanızda fayda var. Bu aşamdan sonra sonra bir sonraki aşamada arayüzleri şekildeki gibi örnek olması açısından yapılandıralım.
Veritabanı konfigürasyonu ve packetfence kullanıcı hesabı oluşturalım.
Domain, hostname ve diğer bilgileri şekildeki gibi girelim.
Son olarak yönetici hesabı ve şifresini şekildeki gibi girelim.
Packetfence çalışmaya hazır. Start seçeneği ile şekildeki tüm servisleri başlatalım.
Farklı ağ şekillerine göre farklı yapılandırma şekilleri bulunmakta olup sizde kendi ağınızın durumuna göre çok kısa bir sürede packetfence’ i yapılandırabilirsiniz.
Ngix 101 14
Ngix nginx [engine x], Igor Sysoev tarafından yazılan bir HTTP, reverse proxy ve mail proxy 15
sunucusudur. 5 yıldır, özellikle Rus sitelerinde yoğun bir şekilde kullanılmaktadır. Örneğin;
Rambler (RamblerMedia.com). Netcraft'a göre, nginx, Nisan 2010 itibari ile %4.70 oranında
kullanılmaktadır. Bazı başarı hikayeleri (İngilizce):FastMail.FM, Wordpress.com.
Kaynak kodu, 2clause BSDlike license lisansı altındadır.
Bu makalemizde ngix kulllanım alanlarına değinmekle birlikte en basit anlamda Centos 6.2 bir
server üzerine kurulumunu test edeceğiz. Zira kullanım imkanı olarak apache’ye göre daha
hızlıdır. Eğer siteniz 512 kullanıcıdan daha fazla ziyaretçi çekiyorsa bu farkı çok rahat
performans olarak görebilirsiniz. Farklı yapılandırmalar ile ilgili official sitesine bakıp load
balancing, güvenlik ile ilgili tavsiyeleri, ölçeklenebilirliği, sistem kaynak analizi gibi farklı
14 Her Yönüyle LinuxSistem ve Network Güvenliği Ahmet HAN Free Ebook 15 http://nginx.org/tr/#basic_http_features
işlevlerini test edebilirsiniz. Yüksek trafiğe sahip bir çok site, Dünyanın önde gelen, Ngix
kullanmaktadır.
Temel Http Özellikleri:
** SSL ve TLS SNI desteği
** Statik ve index dosyalarının sunumu, otomatik indeksleme; açık dosya açıklayıcı önbellek
** Önbellek ile hızlandırılmış reverse proxying; basit yük dengeleme ve hata toleransı;
** Uzak FastCgi sunucularının önbelleklenmesi ile hızlandırılmış destek; basit yük dengeleme
ve hata toleransı;
** Modüler yapı. Gzip, byte aralıkları, yığın cevaplar (chunked responses), XSLT, SSI, imaj
boyutlandırma gibi filtreler. FastCGI veya proksilenmiş sunucular ile tek bir sayfada çoklu SSI
içermelerinin paralel işlenmesi.
Sağladığı Diğer Http Özellikleri:
** Ad ve İp tabanlı Sunucular
** KeepAlive ve Pipelined Bağlantı Desteği
** Esnek Yapılandırma
** İstemci işlemlerinde kopma olmadan yeniden yapılandırma ve online güncelleme
** Erişim kayıt log formaları,tamponlamış kayıt yazımı ve hızlı kayıt devri
** 3xx5xx hata kod yönlendirmeleri
** rewrite modülü
** İstemcinin ip adresine dayalı erişim kontrolü ve Http kimlik denetleme
** put, delete, copy, move komutları
** FLV streaming
** Hız sınırlama
** Gömülü Perl
** Bir adresten gelen eş zamanlı bağlantı ve talepleri sınırlama
Mail proxy sunucu özellikleri:
** Harici bir HTTP kimlik denetleme sunucusunu kullanarak, kullanıcıyı IMAP/POP3 backend’ine
yönlendirme;
** Harici bir HTTP kimlik denetleme sunucusunu kullanarak, kullanıcıyı SMTP backend’ine
yönlendirme ve kullanıcı kimlik denetlemesi;
** Kimlik denetleme methodları:
POP3: USER/PASS, APOP, AUTH LOGIN/PLAIN/CRAMMD5;
IMAP: LOGIN, AUTH LOGIN/PLAIN/CRAMMD5;
SMTP: AUTH LOGIN/PLAIN/CRAMMD5;
** SSL desteği;
** STARTTLS ve STLS desteği.
Yapı ve Ölçeklenebilirlik:
* Bir ana işlem (main process) ve çok sayıda işçi işlemleri (workers). İşçiler, imtiyazsız kullanıcı
olarak yürütülürler;
* Uyarı methodları: kqueue (FreeBSD 4.1+), epoll (Linux 2.6+), rt signals (Linux 2.2.19+),
/dev/poll (Solaris 7 11/99+), event ports (Solaris 10), select ve poll;
** Çeşitli kqueue özellikleri desteği: EV_CLEAR, EV_DISABLE (event’i geçici olarak
etkisizleştirir), NOTE_LOWAT, EV_EOF, olanaklı data sayısı, hata kodları;
** Sendfile (FreeBSD 3.1+, Linux 2.2+, Mac OS X 10.5), sendfile64 (Linux 2.4.21+), ve sendfilev
(Solaris 8 7/01+) desteği;
** File AIO (FreeBSD 4.3+, Linux 2.6.22+);
** Acceptfilters (FreeBSD 4.1+) ve TCP_DEFER_ACCEPT (Linux 2.4+) desteği;
** 10,000 inaktif HTTP keepalive bağlantısı yaklaşık 2.5M hafıza kullanır;
** Data kopyalama operasyonları minimum düzeydedir.
Test Edilen Platformlar ve İşletim Sistemleri:
FreeBSD 3 — 8 / i386; FreeBSD 5 — 8 / amd64;
Linux 2.2 — 2.6 / i386; Linux 2.6 / amd64;
Solaris 9 / i386, sun4u; Solaris 10 / i386, amd64, sun4v;
MacOS X / ppc, i386;
Windows XP, Windows Server 2003.
Not: Dökümanının buraya kadarki olan kısmıda konu ve bütünlük açısından official siteden faydalanılmıştır. Dipnottan orjinal notlara ulaşabilirsiniz.
16
Kurulum:
# nano /etc/yum.repos.d/ngix.repo
Daha sonra açılan dosyaya şekildeki tablodaki bilgiler eklenir.
# [nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
Artık yum ile kurulum işlemlerine geçilebilir.
# yum install ngix y
16 http://nginx.org/tr/#basic_http_features
Kurulum tamamlandıktan sonra aşağıdaki dizindeki dosya açılır.
# nano /ngix/conf.d/default.conf
Şekildeki gibi düzenleme yapılır.
# location /
#root /usr/share/nginx/html;
root /var/www/html/nginxweb;
index index.html index.htm;
Daha sonra bir index dosyası oluşturulur.
# nano /var/www/html/nginxweb/index.html
Şekildeki bilgiler oluşturulan bu dosyaya eklenir.
# <html>
<body>
<div style="width: 100%; fontsize: 40px; fontweight: bold; textalign: center;">
Test Page for nginx web server
</div>
</body>
</html>
Artık ngix servisi kurulumu tamamlandı. Şekildeki komutla başlatalım ve oluşan performansı
zamanla gözlemeleyelim.
# service ngix start
Ubuntu 12.04 LTS Üzerine Suricata Kurulumu 17
Suricata open source bir proje olup, snort’un kullandındığı kural setlerini desteklemesi
sayesinde geniş bir kullanım alanı bulmuştur. (Open Information Security Foundation ) OISF
adlı bir vakıf tarafından geliştirilmektedir. Snort’a benzer olarak; imza ve kural tabanlı
çalışmaktadır. Birden fazla cihaz ile (Multithread olarak çalışabilmektedir.)
Suricata İşleyiş şekli ve ekosistemi aşağıdaki resimde anlatılmıştır.
Bu yazımızda screenshootlar ile birlikte Suricatanın Ubuntu 12.04 LTS üzerine adım adım kurulumunu anlatacağız.
17 Her Yönüyle LinuxSistem ve Network Güvenliği Ahmet HAN Free Ebook
Kuruluma başlamadan önce Ubuntu 12.04 TLS dağıtımızı ilk sefer kurduysanız sudo aptget update ve sudo apt get upgrade komutları ile gerekli güncellemeleri, sistem gereksinimlerini yükledikten sonra kuruluma geçebilirsiniz. Suricata farklı dağıtımlarda eksik kütüphaneler ya da paketler olması nedeniyle kurulumdan sonra test aşamasında hata verebilmektedir. Bu yüzden kurulum esnasında tüm komutları eksiksiz girmeniz gerekmektedir. Gerekli ön bilgiden sonra artık kuruluma geçebiliriz. Aşağıdaki komutlar verilerek öncelikle gerekli python ve suricata repoları yüklenmesi gerekmektedir.
Daha sonra aşağıdaki komutla suricata’ yüklenmesi gerekmektedir.
Debugging paketlerininde yüklenmesi için aşağıdaki komut verilmelidir.
Yükleme tamamlandıktan sonra aşağıdaki komutlar ile yeniden update ve upgrade işlemi yapılır.
Bu işlemler gerçekleştirildikten sonra basit yükleme ve konfigürasyon işlemlerine geçilir. Logların tutulması için aşağıdaki komut ile log dizini oluşturulmalıdır.
Bu dizin oluşturulduktan sonra /etc dizini altına suricata dizini oluşturulmalıdır.
Bu işlem tamamlandıktan sonra aşağıdaki şekilde konfigürasyon dosyalarının düzenlenmesi gerekmektedir.
Eğer sisteminizde aşağıdaki belirtilen kütüphaneler yoksa yükleme yapmadan önce bu kütüphaneleri de yüklemeniz gerekmektedir.
Htp otamatik olarak sisteme yüklenmektedir. Fakat herhangi bir soruna karşı manuel olarak yüklemek isterseniz aşağıdaki komutları kullanmalısınız.
Suricata default olarak IDS olarak gelmektedir. IDS ve IPS modda kullanmak isterseniz aşağıdaki komutu çalıştırmanız gerekmektedir.
Temel kütüphane ve basit konfigürasyon işlemleri tamamlandıktan sonra otomatik yükleme işlemine
geçebilirsiniz.
Basit yükleme işlemi burada tamamlanacaktır.
Daha sonra Suricata motorunu (engine) kurulum için önce aşağıdaki komutla indirmeniz
gerekmektedir.
Diğer IPS yeteneklerini kullanabilmek için aşağıdaki komutları da girmeniz gerekmektedir.
Bu işlemleri yaptıktan sonra kuralların aşağıdaki şekillerdeki gibi düzenlenmesi gerekmektedir.
threshold dosyasının ilgili dizinde oluşturulması gerekmektedir.
Bu işlemlerden sonra suricata.yaml dosyası kontrol edilerek aşağıdaki ayarların default’ ta resimde görüldüğü şekilde düzenlenmesi gerekmektedir. nano ya da vi editörü ile dosya içine
girdikten sonra yapılandırma ayarlarının şekildeki gibi olması gerekmektedir.
Kurulum tamamlanmıştır. Artık test aşamasına geçebiliriz. eth0 arayüzünden ağa bağlı olduğumuz ve kurulumun wmware üzerinde sanal makinada tek arayüze sahip makinada
gerçekleştirilmiştir.
Yukarıdaki komut ile suricata’nın çalışıp çalışmadığını test edebilirsiniz. Bazı hatalar vermektedir. Bu hatalar dağıtımdan dağıtıma farkılık göstermekte olup, suricata’nın official
sitesinde common error adı altında resimdeki gibi toplanmıştır. Buradan yaşadığınız sorunları suricata.yaml dosyasını kontrol ederek düzeltebilirsiniz.
Daha sonra test sonucunu snorby olmadan tutulan logları görmek isterseniz var/log/suricata dizinine geçmeniz gerekmektedir.
cat http.log komutu ile log dosyasını açtığımız zaman aşağıdaki gibi tutulan ip adresi değerlerini, yapılan atak türünün çalıştığını görebiliriz.
Ya da test amaçlı aşağıdaki komutu çalıştırabiliriz.
GPL attack response gibi bir log oluşacaktır. Resimde görebilirsiniz.
Diğer unifiedalert dosyaları içersinde hızlılık ve performans açısından değerlendirilmesi içinfarklı ascii formatında değerler bulunmaktadır. Bu değerleri normal alert olarak görebilimek için snort
ya da suricata’ ya snorby kurulumunu gerçekleştirmeniz gerekmektedir.
Snorby kurulumuna başka bir yazımızda değineceğiz. unified alert dosyasını açarsak şekildeki gibi görünmektedir.
İps/ İds sistemleri temelde layer2 mirroring yapan saldırı tespit ve önleme sistemleri olarak geçmektedir. Bilinen açıkları ve bunlar için oluşturulmuş kurallar dahilinde çalışırlar. Ortaya çıkan yeni bir açığa karşı savunmazsızdırlar. Taki o açıkla ilgili kural listesi güncellene kadar.
Kurulum tamamlandıktan sonra dosya, işleyiş sistemini bilmek konfigürayon açısından önemlidir. Ağınıza bu tür saldırı tespit sistemlerini yapılandırırken tam anlamıyla
yerleştireceğiniz ips/ids sistemini bilmek, gerekirse dns tunneling, ssh attacklarına ve diğer bilinen yeni açığa çıkan heardbleed attackları gibi farklı türden ataklara özel kurallar yazmanız
gerekebilir. Belki o anda tanımlı emerging threats kuralları çok olsada manuelde kurallar yazmanız gerekecektir.
Genel olarak kural yazımı yukarıdaki ve aşağıdaki resimdeki gibidir.
Son zamanda ortaya çıkan kurumsal firmaları, bankacılık, finans sektörü gibi daha bir çok sektörü etkileyen zeus, cryptolocker, hesporbot gibi özelleşmiş hedef odaklı saldırılara karşıda
kendimiz local kurallar ekliyebiliriz.
Farklı kuralları görmek için /etc/suricata/rules dizinine geçerek bu kuralları görebilirsiniz.
Sadece belirli başlı kurallar ile kalmayıp toplamda yaklaşık 20.000’e yakın kural içermekle birlikte, birden fazla bilgisayarın bulunduğu ve yüksek trafik boyutlarında da esneklik sağlayarak
ağınız bir kale gibi korumanıza olanak sağlamaktadır.
Snorby arayüz tespit edilen attackların kural bilgilerini görebilirsiniz.
Saldırı Tespit Sistemlerinin Konumlandırılması 18
Her şeyden önce internette bazı iş ilanlarına baktığım zaman ilgili uzmanlık alanında saçma sapan bir çok şey görür olduk bu sıralar. Anlatmaya gerek yok açıp ilanlara baksanız mezun mu arıyorlar yoksa mezun olunca 510 yıllık tecrübeli her şeyi bilmenizi isteyen bir amele gibi kullancak birisini mi arıyorlar belli değil. Ama neyse ki bu işin içinden gelen firmalarımızda yok değil. Çok sade ama etkili ilanlarda var, ama neyse bu konu uzar gider şimdi esas olarak bu yazının önemine geçmek istiyorum. Hazır kariyer mevzusundan yazıya başlamışken belirtmek istediğim başka bir noktada ileride bir network güvenlik uzmanı olmak isteyen birisi olarak güvenlik konuları ile uğraşıp, network topolojisini ya da network mimarisini bilmem gerektiğini düşünerekten bu yazı dizisini hazırlamaya karar verdim. Öğrendiğim her yeni şeyi farklı tiplerde güvenlik ile ilgili cihazları, yazılımları, sunucu, hub, swicht router gibi farklı donanım ve yazılımların konumlandırılması(deployment) bu tarz resimler hazırlayarak anlatmaya çalışacağım. Belki bu sayede hem kendi bilgilerimin şekillenmesi, hem de network tarafında yeni çalışmaya başlayacak arkadaşlara faydalı olması için bir şeyler yapabilmiş olabilirim diye ümit ediyorum. Öncelikli olarak ağ güvenliği ile ilgili bilmem gereken en önemli şeyin saldırı tespit sistemlerinin konumlandırılması, network’ün sağlıklı bir biçimde çaışabilmesi için gerekliliğini düşünerekten buradan başlamak istedim.
18 Her Yönüyle LinuxSistem ve Network Güvenliği Ahmet HAN Free Ebook
Çizdiğim şekiller aslında basit ama 20 kullancılı küçük bir şirketten 100.000 çalışanın olduğu bir şirkete kadar hepsi bu noktada farklı ağ topolojileri farklı çözümler, proxy sunucuları, ips, idscihazları, hub..++ gibi farklı şekilde bir çok mimari kullanmaktadırlar. Bunun için iyi bir ağ güvenliği uzmanının hurafelerle değil reel ve dışarıdan veya içeriden gelebilecek tehditlere karşı hazırlıklı olması gerektiğinden saldırı tespit sistemlerinin konumlandırılması önem arz etmektedir. Şekilde ise basit olarak bir network’e snort yada suricata (ips/ids) sistemlerinin konumlandırılması ile ilgili topolojiyi görebilirsiniz. Sistemde basit olarak iç ağda bulunan bilgisayarlar bulunmakta olup, bir güvenlik duvarı ve birde router bulunmaktadır. Snort ile gelen ve giden loglar tutulmaktadır. Burada ise span mirror portu üzerinden monitor edilmektedir. (Bakınız Şekil 1:)
Şekil 1
Yukarıdaki temel ve genel örnekleri verdikten sonra biraz da karmaşık örnekler hazırlamaya çalışalım. Kurumumuzda sunucularımız olabilir. Vpn, Ddos koruyucu cihazlar olabilir. Web server’ımız, şirket bilgileriniz tuttuğumuz bir veritabanımız olabilir. Bazen sadece ips/ids cihazlarını sadece bir yere konumlandırmak yerine birden fazla yere konumlandırıyor olabiliriz. Şekildeki örnekleri inceleyelim. Detaylı olarak her şeyi düşünmemiz gerekmektedir. Fakat bunu kurumsal ağımıza göre gerçekleştirilecek haberleşmeye göre ve sistemlerin çeşitliliğine göre kurumdaki yetkili uzmanın bilmesi gerekmektedir.
Aşağıdaki ise internetten hemen önce konumlandırılmış NIDS(Network Intrusion Detection System)’lerini görebiliriz. Erken saldırısı tespiti amaçlı deployment(yerleştirme) yapılmıştır.
Şimdi ise promisc modda snort’un nasıl yerleştirilebileceği iel ilgli örnek bir senaryo hazırlayalım. Bazı terimleri internetten araştırmanız gerekmektedir. Yazılar hazırlanırken ilgili konu üzerinde durulmak istenmiştir.
Şimdi ise birazda farklı bir yapı düşünerek işe koyulalım. Bu seferde işyerinizde biraz daha kapsamlı bir SOC(Security Operation Center) kurmak istediğinizi düşünelim. Ve honeypotlarda kullanalım. Snort’u ise bu sefer inline modda konumlandıralım.
İptables Kurallarının Kullanılması
İptables netfilter tafafından geliştirilen ve bir çok destekleyicisi olan bir güvenlik duvarı yazılımıdır. Linux çekirdeği ile haberleşerek ağ üzerinde paket süzme kurallarının belirlenmesine olanak sağlamaktadır. Linux sistemlerde default olarak atanmış, servislerin geçtiği portlarda engelleme yapılabilmesine, port yönlendirme gibi pratik işlevlere sahiptir. Eğer kurulu olarak gelmiyorsa belirli dağıtım içersinde bunu kullandığımız işletim sisteminin türüne göre kurulumunu gerçekleştirmemiz gerekmektedir.
# yum install iptables
Kurulum gerçekleştikten sonra aşağıdaki komutu vererek kayıtlı gelen kuralları temizleyebilirsiniz. Bu önemlidir. Çünkü sunucunuzun güvenliğini sağlamak istediğiniz ssh portuna uzaktan erişim verilmiş olabilir. Kullandığınız bir port default olarak çalıştığında sizi tehlikeye sokuyor olabilir.
# iptables F yada iptables flush
iptables kuralları default olarak trafiği accept olarak kabul etmişlerdir. Fakat farklı komutlar kullanarak gelen ve giden trafik hakkında farklı parametleri kullanabiliriz. ** Drop paketlerin geçisine izin verilmemesi durumu. ** Accept paketlerin geçisine izin verilmesi durumu. ** Reject paketlerin erişimi geri çevrilir, acılı bu red ile ilgili bilgilendirilir. ** Return Zincirin son kısmına gönderilir. ** Queue paketlerin kullanıcı alanlarına gönderilmesi sağlanır.
Not: input,output,forward, post ve prerouting kuralları büyük harflerle yazılır.
/* Ön ayarlı kuralların yüklenmesi */ iptables P INPUT DROP iptables P FORWARD DROP iptables P OUTPUT DROP
Eğer gelen ve giden trafik için bir kural tanımlamanız gerekirse iki tane kural tanımlaması yapılması gerekmektedir. Eğer iç ağdaki kullanıcılarınıza güveniniz varsa üçüncü kuralı tanımlamamıza gerek yoktur. Not: Bazı sunucu birimlerine grafik arayüzden erişerek de bu kuralları denetleyebiliriz.(Redhat) ** Belirli bir ip adresinin bloklanmasını şu şekilde sağlayabiliriz.
# iptables A INPUT s “n.n.n.n” j DROP /* n.n.n.n > blocklanmasını istediğimiz ip*/
Bu kullanışlı komut İncident Response olaylarında, ya da herhangi başka bir acil durumda çok faydalı olabilmektedir. Örneğin belirli bir ip adresinden gelen isteklerin sonlandırılmasında. Bir başka kullanım yöntimide birden fazla farklı arayüze sahip olabiliriz. Bu arayüzlerden gelen herhangi bir süpheli ip adresi tespit ettiğimizde log dosyalarından o arayüz ile ilgili şekildeki komutu vererek yine ip blocklamasını gerçekleştirebiliriz.
# iptables A INPUT i eth0 s “n.n.n.n”j DROP
# iptables A INPUT p tcp i eth0 s “n.n.n.n” j DROP
iptables L
Şekildeki komutu kullanarak yazmış olduğumuz komutları görebiliriz.
** ssh port 22 üzerinden güvenli haberleşme sağlayan ve sunucularımıza erişmemize olanak tanıyan veri iletimi için kriptografik ağ protokolüdür. Geçtiğimiz dönemlerde gerçekleştirilen saldırıların çoğu bu port üzerine yapılan brute force saldırıları şeklinde olmuş olup hala en çok yapılan saldırı türleridir. Bu nedenle çok önemlidir. Örneğin sunucumuz o an ssh ile iletişine izin vermek istiyorsak şekildeki gibi bir komut girebiliriz.
#iptables A INPUT i eth0 p tcp s 192.168.x.x dport 22 m state state NEW,ESTABLIDHED j ACCEPT #iptables A OUTPUTi eth0 p tcp s 192.168.x.x dport 22 m state state NEW,ESTABLIDHED j ACCEPT
Belirli bir networkten gelen ssh trafiğine izin vermek amacıyla aşağıdaki kuralı da kulllanabiliriz.
# iptables A INPUT i eth0 p tcp s 192.168.x.x/24 dport 22 m state state NEW,ESTABLISHED j ACCEPT
# iptables A OUTPUT i eth0 p tcp s 192.168.x.x/24 dport 22 m state state NEW,ESTABLISHED j ACCEPT
Benzer şekilde http ve https bağlantılarına da izin verebiliriz.
# iptables A INPUT i eth0 p tcp s 192.168.1.x dport 80 m state state NEW,ESTABLISHED j ACCEPT
# iptables A OUTPUT i eth0 p tcp s 192.168.1.x dport 80 m state state ESTABLISHED j ACCEPT
Linux Sistemler İçin Kullanışlı 10 Open Source Güvenlik Duvarı 19
Bu kısımda open source firewalllar üzerine olacaktır. Bugün piyasada satılan güvenlik cihazlarını örneklendirecek olursak palo alto, sonicwall, fortinet, checkpoint, fireeye gibi bir çok ürün bulunmaktadır. Bunlar genel olarak hardware şeklinde olabileceği gibi software şeklinde de olabilmektedir. Günümüz iş ilanlarına baktığımız zaman bu cihazların yönetimi, kurum politikalarına uygun bir şekilde çalıştırılması gibi bir çok farklı taleple karşılaşmaktayız. Yukarıda ismini verdiğimiz ve ticari olanlar minimum 55.000 $ seviyesinden başlayıp ürünün işlevlerine göre farklı fiyatlarda olabilmektedir. Bir öğrencinin bu tarz cihazlara ulaşması biraz zor olabilir. Ama open source ürünler üzerinde kendini birazcık geliştirirse ilerleyen zamanlarda çalışacağı pozisyona göre ve yönetecek olacağı güvenlik cihazına göre, üzerine kurum içi ve dışı network yapılandırmalarında farklı görevler düşücek olabilir. Her cihazın farklı özellikleri bulunmakla beraber bu o anki şartlarda o cihaz ile uğraşılmasına bağlıdır denebilir. Bu yüzden öğrencilerin aşağıdaki adı geçen Dünya çapında kullanılan open source ürünler ile haşır neşir olması ilerdeki çalışma hayatlarında faydalı olucaktır. Kitabın ilerleyen kısımlarında vakit olursa bu ürünlerin kurulum, konfigürasyon, web filtering gibi konular üzerine de değinilecektir. ** İptables ** IPcop Firewall ** Pfsense ** Shorewall ** UFW Uncomlicated Firewall ** Vuurmuur ** IPfire ** SmoothWall && SmoothWall Express ** Endian ** ConfigServer Security Firewall
19 Her Yönüyle LinuxSistem ve Network Güvenliği Ahmet HAN Free Ebook
Docker İle Sanal İmagelerinizi Yönetin 20
Günümüz bilgi çağında son yıllarda yaşanılan gelişmeler ile birlikte bir network’ün yönetilmesi, geliştirilen yazılımların test edilmesi, bt süreç modellemelerinin işlemesi, sistem altyapı çözümlerinin yapılandırılaması gibi kavramları daha çok duyar olduk. 2020 yılına kadar yapılan öngörülerde cihaz sayısının hızla artıcak olması; bu cihazların haberleşmesi, konumlandırılması BT sistem mühendislerine ekstra yükler getirmektedir. Bu noktada sanallaştırmaya alternatif çözümler sayesinde gerek test süreçleri, gerek networkte yapılacak optimizasyonlar daha kısa sürede fazla maliyet gerektirmeden yapılabilmektedir. Docker’da bu çözümlerden birisidir. Docker ile birlikte türkçesi LXC(Linux Containers) ve sanal imageleri yönetmek, data center bulut hizmeti ile verilen işletmelerin yönetilmesi, sunucu optimizasyonları daha kolay olabilmektedir.Önceden deniz taşımacılığında kullanılan sıkıntılardan sonra daha korunaklı bir yapı sunan şimdiki konteynırların taşınması ile daha korunaklı bir yapı sunuluyor. Bu yapı içersinde yapılan işlemler durdurulmadan servis edilebiliyor. İşte tam bu noktada docker’ın kullandığı temel felsefe buradan geliyor. Sanal imagelerinizi processler devam ederken bile çalıştırılabilmesine olanak sağlıyor. Olurduğumuz bir docker konteynır her zaman diğer çalıştırılabilecek sistemlere hazır olarak bekliyor. Sitesinde ise What is Docker açıklamasında kısaca şöyle özetliyor: “ Docker is an open platform for developers and sysadmins to build, ship, and run distributed applications. Consisting of Docker Engine, a portable, lightweight runtime and packaging tool, and Docker Hub, a cloud service for sharing applications and automating workflows, Docker enables apps to be quickly assembled from components and eliminates the friction between development, QA, and production environments. As a result, IT can ship faster and run the same app, unchanged, on laptops, data center VMs, and any cloud. “ Daha detaylı bilgi almak için sitesini ziyaret edebilirisiniz. Türkçe yapacağınız araştırmalar ile temel bilgi almak mümkün olabilir. Kurulum Kurulum için debian, redhat, rhel, ubuntu, centos, windows, mac os x, oracle linux ve bir çok farklı ortamda dökümantasyon sağlıyor. Sizde optimize etmek istediğiniz dağıtımınıza göre bunu şekillendirebilirsiniz. Biz test amaçlı Ubuntu 14.04 LTS dağıtımın en güncel halini kullanıyoruz.
20 Her Yönüyle LinuxSistem ve Network Güvenliği Ahmet HAN Free Ebook
# sudo aptget update # sudo aptget install docker.io # sudo ln sf /usr/bin/docker.io /user/local/bin/docker # sudo sed i ‘$acomplete F _docker docker’ /etc/bash_compeletion.d/docker.io # source /etc/bash_compeletion.d/docker.io
İlk olarak kontrol etmemiz gereken apt komutumuzun https bağlantı destekleyip desteklememesi.
# /usr/lib/apt/methods/https
Sisteminizde bulunuyorsa destekliyordur. Bir sonraki adıma geçebilirsiniz. Desteklemiyorsa aşağıdaki komutla yükleyebilirsiniz.
# aptget update && aptget install apttransporthttps
Daha sonra ise lokal domain anahtarlarımıza repository ekleyebiliriz.
# sudo aptkey adv keyserver hkp://keyserver.ubuntu.com:80 recvkeys
36A1D7869245C8950F966E92D8576A8BA88D21E9
Bundan sonraki aşamada ise lxcdocker paketinizi yükleyemeniz gerekmektedir.
$ sudo sh c "echo deb https://get.docker.com/ubuntu docker main\
> /etc/apt/sources.list.d/docker.list"
$ sudo aptget update
$ sudo aptget install lxcdocker
Bu işlemler tamamlandıktan sonra doğrulama amaçlı çalışıp çalışmadığı ile ilgili komutla şekildeki gibi kontrol edebilirsiniz.
# sudo docker run i t ubuntu /bin/bash
Bundan sonra gerçekletirilen indirme sonrası istediğimiz şekilde çalışabiliriz. Bu kısımdan sonra herhangi bir problem ile karşılaşmadıysanız docker online tutorial platformu üzerinde ve kendi dağıtımımızdaki örnekler ile devam edeceğiz. Bir docker motoru iki part içermektedir. 21
Server ve client olarak. Bir server tüm konteynırlarımızın yönetilmesi, client ise uzaktan konrol sağlaması..
# docker version
İlk olarak docker version komutu ile içerdiği özellikleri görelim.
İşlem yapmayan başlamak için öncelikli olarak imageleri arayabiliriz. Aşağıdaki komut ile sisteminizde kullanıma hazır konteynırları görebilirsiniz. Aslında bu komut docker hub’un bir image aramamızada yarar.
# docker search <string> > [aranacak image]
21 https://www.docker.com/tryit/#0
Konteynır imagelerini basit komutlarla indirebilirsiniz. Ubuntu için bizde deneyelim.
# docker pull ubuntu
Sistemimizde daha önceden kurduğumuz için böyle bir çıktı verdi.
Ama normalde farklı bir sistemde denenmiş ekran alıntısı aşağıdaki şekilde benzer olucaktı.
Konteynırları bir kutu içersinden çalışan processler olarak nitelendirebiliriz. Kendi içersinde dosya sistemi, shell, kütüphanleri vardır. Ama default olarak çalışmaz konteynırlar. Dolayısı ile bazı komutları kullanarak kendimizin çalıştırması gerekmektedir. Örneğin basit bir hello world yazdırmak isteyelim.
# docker run learn/tutorial echo “ahmethan”
Çıktısı şekildeki gibi olucaktır.
Bir başka örnekle devam edelim. Konteynırımıza başka bir program yükleyelim. Komutumuz aşağıdaki gibi olmalıdır. Konteynıra yeni şeyler yükleme bu şekilde olmaktadır.
# docker run learn/tutorial aptget install y ping
# Reading package lists... Building dependency tree... The following NEW packages will be installed: iputilsping 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. Need to get 56.1 kB of archives. After this operation, 143 kB of additional disk space will be used. Get:1 http://archive.ubuntu.com/ubuntu/ precise/main iputilsping amd64 3:201010061ubuntu1 [56.1 kB] debconf: delaying package configuration, since aptutils is not installed Fetched 56.1 kB in 1s (50.3 kB/s) Selecting previously unselected package iputilsping. (Reading database ... 7545 files and directories currently installed.) Unpacking iputilsping (from .../iputilsping_3%3a201010061ubuntu1_amd64.deb) ... Setting up iputilsping (3:201010061ubuntu1) ...
Çıktı tablolardaki gib olucaktır. Bu örnek üzerinden devam edelim. Bu komutla değişiklikler yapıldıktan sonra kaydedilmesini isteyebilirsiniz. Bunun için bir id değeri atanması gerekmektedir. O zaman nasıl yapılacağını görelim.
# docker ps l
Birinde yazdırdığımız basit bir echo örneği, diğerinde de apt komutunun çalıştırılması örneğini görebilirsiniz. Bu yaptığımız değişiklikleri kaydetmemiz için bir id değeri atayabiliriz. Kaydı yaptıktan sonra docker yeni bir id değeri döndürmektedir. Yukarıdaki ping komutu için id değeri 698 ile örneğimizi yapalım. Çünkü o şekilde başlıyor. O şekilde kayıt yaparsak bize yeni bir id değeri oluşturacaktır. Diğer türlü ise hata verecektir.
# docker commit 698 learn/ping
Çıktı ise aşağıdaki gibi olucaktır.
# effb66b31edb
Artık bundan sonra yeni image ile çalışabiliriz. Şekildeki komutu bizde deneyelim.
# docker run learn/ping ping www.google.com
Aşağıdaki gibi bir çıktı alıyorsanız herhangi bir problem yoktur.
PING www.google.com (74.125.239.129) 56(84) bytes of data. 64 bytes from nuq05s02inf20.1e100.net (74.125.239.148): icmp_req=1 ttl=55 time=2.23 ms 64 bytes from nuq05s02inf20.1e100.net (74.125.239.148): icmp_req=2 ttl=55 time=2.30 ms 64 bytes from nuq05s02inf20.1e100.net (74.125.239.148): icmp_req=3 ttl=55 time=2.27 ms 64 bytes from nuq05s02inf20.1e100.net (74.125.239.148): icmp_req=4 ttl=55 time=2.30 ms 64 bytes from nuq05s02inf20.1e100.net (74.125.239.148): icmp_req=5 ttl=55 time=2.25 ms 64 bytes from nuq05s02inf20.1e100.net (74.125.239.148): icmp_req=6 ttl=55 time=2.29 ms 64 bytes from nuq05s02inf20.1e100.net (74.125.239.148): icmp_req=7 ttl=55 time=2.23 ms 64 bytes from nuq05s02inf20.1e100.net (74.125.239.148): icmp_req=8 ttl=55 time=2.30 ms 64 bytes from nuq05s02inf20.1e100.net (74.125.239.148): icmp_req=9 ttl=55 time=2.35 ms > This would normally just keep going. However, this emulator does not support CtrlC, so we quit here.
Konteynırlarımızın ne durumda olduğunu kontrolünü yapmak istersek şu şekilde yapabiliriz. Çalışan konteynırlar listenecektir.
# docker ps a
Yukarıda şekide herhangi birisi ile ilgili detaylı bilgi almak istiyorsak bu komutu kullanalım. Tüm conteynır idsini yazmaya gerek yok ilk dört karakter yazılabilir.
# docker inspect 35.. Bu komutla bilgiler json formatında listelenecektir. Daha detaylı bilgi için kendi deneyeceğiniz ve aşağıdaki çıktıya bakınız.
[2013/07/30 01:52:26 GET /v1.3/containers/efef/json "ID": "efefdc74a1d5900d7d7a74740e5261c09f5f42b6dae58ded6a1fde1cde7f4ac5", "Created": "20130730T00:54:12.417119736Z", "Path": "ping", "Args": [ "www.google.com" ], "Config": "Hostname": "efefdc74a1d5", "User": "", "Memory": 0, "MemorySwap": 0, "CpuShares": 0, "AttachStdin": false, "AttachStdout": true, "AttachStderr": true, "PortSpecs": null, "Tty": false, "OpenStdin": false, "StdinOnce": false, "Env": null, "Cmd": [ "ping", "www.google.com" ], "Dns": null, "Image": "learn/ping", "Volumes": null, "VolumesFrom": "", "Entrypoint": null , "State": "Running": true, "Pid": 22249, "ExitCode": 0, "StartedAt": "20130730T00:54:12.424817715Z", "Ghost": false ,
Çıktının devamı şekildeki gibidir.
"Image": "a1dbb48ce764c6651f5af98b46ed052a5f751233d731b645a6c57f91a4cb7158", "NetworkSettings": "IPAddress": "172.16.42.6", "IPPrefixLen": 24, "Gateway": "172.16.42.1", "Bridge": "docker0", "PortMapping": "Tcp": , "Udp": , "SysInitPath": "/usr/bin/docker", "ResolvConfPath": "/etc/resolv.conf", "Volumes": , "VolumesRW":
Tüm bu işlemler tamamlandıktan sonra artık image’miz hazır hale geldiğini kontrol ettikten sonra artık yayımlamaya hazırız. Fakat baştan beri kullanmakta olduğumuz öğrenme amaçlı learn/tutorial’in bulunduğunu doğrulayalım.
# docker push learn/ping
İşlemlerin tamamlandığını şekildeki çıktı ile görebilirsiniz.
The push refers to a repository [learn/ping] (len: 1) Processing checksums Sending image list Pushing repository learn/ping (1 tags) Pushing 8dbd9e392a964056420e5d58ca5cc376ef18e2de93b5cc90e868a1bbc8318c1c Image 8dbd9e392a964056420e5d58ca5cc376ef18e2de93b5cc90e868a1bbc8318c1c already pushed, skipping Pushingc tags for rev [8dbd9e392a964056420e5d58ca5cc376ef18e2de93b5cc90e868a1bbc8318c1c] on https://registry1.docker.io/v1/reposito ries/learn/ping/tags/latest Pushing a1dbb48ce764c6651f5af98b46ed052a5f751233d731b645a6c57f91a4cb7158
Pushing 11.5 MB/11.5 MB (100%) Pushing tags for rev [a1dbb48ce764c6651f5af98b46ed052a5f751233d731b645a6c57f91a4cb7158] on https://registry1.docker.io/v1/reposito ries/learn/ping/tags/latest Docker’ın yapabilecekleri sadece bununla sınırlı değil daha fazlasını yapabilirsiniz. Farklı örnekleri deneyebilirsiniz. Sanallaştırma çözümlerinde kullanacağız alternatif bir yaklaşım.
# docker run t i ubuntu /bin/bash Yukarıdaki komutla bir docker’ın içersine girip bash shell’ini kullanıyoruz. Buradan çıkmak için ise ctrl+p, ctrl+q seçeneklerini kullanarak çıkabiliriz. Bu komutlar ile yapılan işlemlerin durdurulması da mümkün olmaktadır. Attach işlemi ile herhangi bir konteynırımızı aşağıdaki komutla attach işlemi yapabiliriz. Bu komut on bize lazım olan konteynırımızdaki özelliklerden yararlanmak için kullanılabilmesini sağlayacaktır.
# docker attach 9c09a5dölciabga7
Kitabın bu kısmına kadar olan yerde docker ile ilgili yapılabilecek en temel kısımları hallettik. Daha sonrası için sizde farklı çözümleri kurumunuzda uygulayacağınız şekilde test ediniz. Docker komutu ile farklı kullanabileceğiniz seçenekleri görüntülüyebilirsiniz.
# docker
attach Attach to a running container build Build a container from a Dockerfile commit Create a new image from a container's changes diff Inspect changes on a container's filesystem export Stream the contents of a container as a tar archive history Show the history of an image images List images import Create a new filesystem image from the contents of a tarball info Display systemwide information insert Insert a file in an image inspect Return lowlevel information on a container kill Kill a running container login Register or Login to the Docker registry server logs Fetch the logs of a container port Lookup the publicfacing port which is NATed to PRIVATE_PORT ps List containers pull Pull an image or a repository from the Docker registry server push Push an image or a repository to the Docker registry server restart Restart a running container rm Remove a container rmi Remove an image run Run a command in a new container search Search for an image in the Docker index start Start a stopped container stop Stop a running container tag Tag an image into a repository version Show the Docker version information wait Block until a container stops, then print its exit code
Farklı yapabileceğimiz tüm opsiyonları listelemektedir. Docker imagesleri listelemek için şu komut yeterli olmakta ve listelemektedir.
# docker images
Ayrıca işlemleri yapacağımız zaman image’mize farklı bir ip adres atanması gerçekleşmektedir. Bu sayede ağ tarafındada çalışan uygularmalarda çıkcak problemlerin önüne geçilmiş olunur.
Tcpdump ile Network Paket Analizi Komutları 22
Bu yazımızda Ubuntu işletim sistemi üzerinde konsolda network paket analizi işlemlerinin yapılmasını anlatacağız. Tcpdump çoğu unix sistemde çalışan, network paket analizini yapmamızı sağlayan bir komut satırı aracıdır. Windows,mac gibi farklı işletim sistemleri için geliştirilmiş versiyonlarıda bulunmaktadır. eth0 ağ arayüzünün trafiğinin, örnek tcpdump komutları çalıştırılarak anlatıcaktır. Kaydedilmiş dosyalarda tcpdump ile görülebilir. Kaydedilen pcap dosyalarının wireshark ile okunmasını sağlayabilir. Belirli bir arayüzden trafiğin
22 Her Yönüyle LinuxSistem ve Network Güvenliği Ahmet HAN Free Ebook
yakalanması için [tcpdump i eth0,++] komutunu kullanabiliriz. eth0 arayüzünden dinlenen trafiğin standart çıktısı şekildeki gibidir.
#tcpdump i eth0
Herhangi bir bağlantı kurulunca, trafik hareketi olunca şekildeki gibi tüm trafiği görebiliriz. Belirli sayıda trafiğin yakalanmasını istiyorsak şekildeki gibi bir komut girebiliriz. [ tcpdump c paketsayısı i eth0 ]
# tcpdump c 2,3,4,n i eth0
Eğer paketleri ASCII formatında görmek istersek [tcpdump A i eth0] komutunu vererek şekildeki gibi görebiliriz.
# tcpdump A i eth0
Bazı kullancılar hem ascıı formatında hemde hex formatında paketlerin analiz edilmesini isteyebilmektedirler. [tcp XX i eth0 ] komutu ile bu formattta çıktı alabiliriz.
# tcpdump XX i eth0
Dinlenen trafik ileride analiz edilecek bir trafik olabilir. [tcpdump w kayıt.pcap i eth0 ] bir tafik kayıt edilebilmektedir. Fakat dosyaların uzantısının .pcap formatında olması gerektiğini unutmayınız.
# tcpdump w kayıt.pcap i eth0
Şimdide kayıtlı olan .pcap dosyalarını şekildeki komut ile okuyalım. [tcpdump tttt r kayıt.pcap]
# tcpdump tttt r kayıt.pcap
Yukarıda gösterdiğimiz örneklerde paketleri Dns adresleri ile birlikte gösteriyordu. Şimdi ise ip
adreslerini içeren bir komut çalışıtıralım.
# tcpdump n i eth0
Uygun timestamp ile paketlerin okunmasının sağlanması için [ tcpdump n tttt i eth0] komutunu kullanabiliriz.
# tcpdump n tttt i eth0
Greater komutu kullanarak belirli bir boyut ile ilgili daha fazla yakalanan paketleri kaydetmek istersek [tcpdump w test.pcap greater 1024] komutunu kullanabiliriz. Sonra tekrardan bunu yine yukarıdaki örnekte vermiş olduğumuz şekilde kayıtlı dosyayı tekrardan okuyabiliriz.
# tcpdump w test.pcap greater 1024
Sadece belirli bir protokol üzerindeki trafiği yakalamak istiyorsanız şekildeki komutu kullanabilirsiniz. [tcpdump i eth0 arp ]
# tcpdump i eth0 arp
Belirli bir boyuttan daha az şekilde trafiği kaydetmek istiyorsak [ tcpdump w deneme.pcap less 1024]
# tcpdump w deneme.pcap less 1024
Paketleri düzenli bir porttan almak istiyorsanız, [ tcpdump i eth0 port 22 ] komutunu kullanabilirsiniz.
# tcpdump i eth0 port 22
Bütün paketleri bu komut ile yakalayailirsiniz.
# tcpdump i eth0 not arp and not rarp
İki ayrı makina arasında bir tcp protokolü ile haberleşme yapıyorsanız; şekildeki komut ile paketleri yakalayabilirsiniz. Şekildeki ip adresi örnek amaçlı verilmiş olup sizde istediğiniz ip adresini verebilirsiniz.
# tcpdump w host1.pcap i eth0 dst 192.168.1.x and port 22
Bu aynı komut ile dst ip adresindeki paketlerin yakalanmasıda sağlanmış olmaktadır. tcpdump ile ilgili örnek komutların çalıştırılmasını bu yazımızda anlattık. Başka bir yazımızda detaylı olarak paket analizini analatacağız. Farklı örnek komutları sizde kendiniz herhangi bir dağıtımınızda test ediniz. [man tcpdump] komutu ile bu araç ile ilgili terminalden daha fazla bilgiye ulaşmanız mümkün.
# man tcpdump
Linux Performans Monitoring Araçları 23
Kurumsal bir ağ olduğumuzu düşünelim. Belirli sayıda bilgisayarımız, bir dmz bölgemiz, linux sunucularımız, firewall cihazımızın, ips/ids gibi çok katmanlı güvenlik önlemleri aldığımızı düşünelim. Kurum içi haberleşmenin sağlıklı gerçekleşmesi, loglamada sıkıntı yaşanmaması, dışarıya veri sızdırılmaması bir çok etken… İyi yapılandırılmamış cihazlar, sağlıklı haberleşmenin gerçekleşmediği ağda verilimlik açısından sürekli problem yaşanacaktır. Bu yazımız linux performans monitoring araçlarının komut satırında kullanımı ile ilgili olacaktır. Kullanılan linux dağıtımı Centos 6.5 olup putty programı üzerinden ssh servisi ile linux server’a bağlanılıp komut satırında kullanılan performans moitoring araçlarından bahsedilip basit örnekler ve ekran çıktıları ile döküman desteklenecektir. Öncelikle Centos 6.5 Oracle Virtual Box üzerinde, minimal iso pratiklik açısından kurulu olması gerekmektedir. ssh servisi ile putty üzeirnden 22’ inci porttan bağlantı için server ip adresinin bilinmesi gerekmektedir. ifconfig komutu ile server ip adresimizi bilmeniz gerekmektedir.
23 Her Yönüyle LinuxSistem ve Network Güvenliği Ahmet HAN Free Ebook
Daha sonra putty programına server’ınızın ip adresi ile bağlanmanız gerekmektedir.
Open seçeneğinden sonra ekran şekildeki gibi görünecektir. Buradan kullanıcı adınız ve şifreniz ile girişten sonra kullanıma hazır.
Artık komutlarımızı kullanmaya başlayabiliriz ilk olarak top komutunu kullanacağız. Top komutu tüm çalışan sıralı aktif dizin ve işlemleri görmemize yarayan bir komuttur. Linux ve unix sistem yöneticileri tarafından sıklıkla kullanılmaktadır. Cpu kullanımı, bellek kullanımı, takas bellek, ön bellek boyutu, tampon boyutu, süreç pid ve daha fazlasını görebilirsiniz. Yüksek bellek çalışan işlemlerde bellek ve Cpu kullanımını göstermektedir.
# top
Bu komutu verdikten sonra ekran çıktısı aşağıdaki gibi olacaktır.
Diğer sık kullanılan bir komutumuz lsof komutu. Tüm açık dosya ve işlemlerin listesini görüntülemek için çok sık kullanılan linux/unix komutudur. Disk dosyaları, network soketlerini, pipes, araçları ve süreçleri görüntüleyebilirsiniz. Bu komutun en önemli özelliği diskte unmouted olan dosya hatalarını, kullanılan dosyaları ve açılıyor olanları gösterir.
Tcpdump en çok kullanılan network paket analiz aracı ya da sniffer olarak linux/unix sysadminleri, bilgi güvenliği uzmanları tarafından sıklıkla kullanılmaktadır. Herhangi network arayüz trafiğini dinleyebilirsiniz. Çoğu linux dağıtımında sıklıkla kullanılmakla birlikte yum install tcpdump komutunu kullanarak Centos server’ınıza yükleyebilirsiniz.
Netstat komutu komut satırında kullanılan gelen ve giden ağ paketleri istatistiklerini kullanır. Netstat ( Ağ İstatistikleri) ağa gelen ve giden paketlerin yanı sıra; yönlendirme tablolarını inceleyen ve izleme yapan bir komut satırı aracıdır. Netstat tüm Unix benzeri işletim sistemlerinde ve aynı zamanda Windows işletim sistemi üzerinde de mevcuttur. Ağ sorun giderme ve performans ölçümü açısından çok yararlıdır. Haberleşmede kullanılan portların dinlenmesinde ;en temel ağ ayıklama araçlarından birisidir. Linux ağ yöneticilerinin yanı sıra sistem yöneticileri için de çok yararlıdır.
htop sıklıkla kullanılan real time monitoring yapılmasına imkan veren araçtır. Son kullanıcıya yönelik, kullanıcı dostu bir araç olup; farklı arayüz ve süreçleri yönetmemizi sağlayan 3.parti bir yazılımdır. yum install htop komutu ile yükleyebilirsiniz.
iotop komutu htopve top komutuna benzemekle birlikte, gerçek zamanlı disk input ve output ve süreçleri görüntülememizi sağlayan önemli bir araçtır. 3. parti bir yazılım olup yine yum install iotop komutu ile yükleyip putty consolda çalıştırmanız gerekmektedir.
# iotop
iostat komutu input ve output depolama sistemini gösteren bir komut satırı aracıdır. Araçları, yerel diskteki verileri, uzak diskteki verileri ve NFS dosyalarını gösterir.
iptraf open source, consol tabanlı, gerçek zamanlı ip lan monitoring aracı olarak kulalnılmaktadır. ip trafik monitoring işlemi yaparak çeşitli ağlardan, tcp flag bilgilerini; icmp detaylarını, tcp/ip trafik hatalarını kırılamalarını(breakdown), tcp bağlantılarını hesaplamaktadır.
Genel olarak bilgi toplamakla birlikte; tcp,udp, ip, icmp, nonip, checksum hatalarını interface hatalarını ve birçok şeyi göstermektedir. Detaylı bilgiye buradan ulaşabilirsiniz.
collectl güçlü ve zengin komutlara sahip olan; linux sistem kaynakları hakkında bilgi toplayan, cpu kullanımı, memory kullanımı, network, process, nfs, tcp, soketler hakkında bilgi toplayan bir araçtır.
suricata, snort, nagios, nmon, monitorix vb. gibi özelleşmiş open source farklı araçlar bulunmaktadır. Bu yazımızda yukarıda bahsedilen araçların basit kullanımı 101 eğitimi nitelinde detaya inilmeden anlatılmıştır. Araçları sizde farklı komutlar ile test ediniz. Komut satırı kullanışlık olarak esneklik sağlamakla birlikte kullandıkları yer önem arzetmektedir.
SSH Brute Force Saldırıları 24
Ssh iki cihaz arasında güvenlik kanalıyla veri değişimine imkan sağlayan, izin veren bir network protokolüdür. Birincil olarak linux ve unix gibi protokollerin kabuk hesaplarına ulaşabilmek için kullanılmıştır. Telnet gibi güvensiz protokollerin yerini almak amacıyla dizayn edilmiştir.
24 Her Yönüyle LinuxSistem ve Network Güvenliği Ahmet HAN Free Ebook
Telnet protokolü şifresiz bir biçimde veri alışverisinde paralolarınız görülebilecek şekilde tasarlanmıştır. Ssh protokolü ile veriler şifrelenerek gönderildiği için daha güvenli veri aktarımına olanak tanımaktadır. Ssh sunucusu default olarak tcp port 22 üzeriden haberleşme sağlamkatadır. Ssh client ssh server arasında gerçekleşen haberleşme sonucu bağlantı kurulmaktadır. Bir çok işletim sistemi tarafından desteklenmektedir. ssh bir çok uygulama ile beraber kullanılan bir protokoldür. Bazı uygulamalar sadece ssh serer ve ssh client programlarına ihtiyaç duyarak çalışırlar. Bu noktada sssh bağlantılarının önemi büyüktür.
** Port yönlendirme için kullanılabilir. ** Uzak kullanıcı ile kabuğa bağlanılabilmektedir. ** Lokal bilgisayardan uzak bilgisayara dosya gönderilebilmektedir. ** Ftp ile dosya gönderimine alternatif bir güvenlik önlemi sağlanmış olur. ** Openssh ile şifrelenmiş vpn bağlantılarının oluşmasına imkan tanır. ** Uzaktan sunucu kontrolünün sağlanmasına imkan tanımaktadır.
ssh protokolünü linux sunucuların yönetimide kullandığımızı daha önce belirtmiştik. Hackerlar yada sızma testi uzmanları hedef sisteme erişim sağladıklarında root kullanıcı bile olabilirler. Eğer gerekli önlemler alınmamışsa. Hedef sistem keşif çalışmalarında ya da bilgi toplam aşamasında ssh prtokolünün sistemede keşfedildiği sırada bu protokole yönelik ssh brute force (kaba kuvvet) saldırıları deneyebilir. Deneme yanılma saldırıları olarakta adlandırılmaktadırlar.
Temel olarak saldırı işleyiş modeli aşağıdaki şekildeki gibidir.
Zayıf şifrelere sahip olduğunuzda rastgele şifreler denenerek brute force saldırıları gerçekleştirilebilmektedir. İnternette wordlist diye adlandırılan kelime listeleri ile otomatize araçlar ile brute force saldırıları denenebilmektedir. Genel olarak brute force saldırıları olsun, ya da ssh brute force saldırıları olsun bu saldrı tipleri ile ilgili bir çok araç bulunmaktadır. Hydra, Medusa, Ncrack, Metasploit, HttpBrute gibi daha bir çok farklı saldırı yapmamıza imkan tanıyan araç bulunmaktadır. Şimdi örnek bir senaryo ile ssh brute force saldırısını gerçekleştirelim ve bunu tespit edelim. Lab ortamı için üç farklı dağıtım gerekmektedir. ** Ubuntu Desktop(Saldırı yapılacak sürüm önemli değil) ** Kali linux Atak amaçlı kullanılacak ** Security onion saldırı tespit amaçlı [Snort,Suricata,Bro,Argus,Elsa,Snorby] Saldırı işleyiş biçimine gelicek olursak; Öncelikle vmware sanal makinalarda bulunan dağıtımlarımız aktif edilir. Daha sonra ubuntu desktop makinamızın ifconfig komutu ile ip adresini öğreniriz. [ 192.168.221.133 ip adresimiz ]
Daha sonra kali linux üzerinde bulunan hydra aracı üzerinden şekildeki komut çalıştırılacak şekilde verilir. Artık kelime listesinde bulunan şifreler denenmektedir.
Bu komutal bulamadı. Fakat common.txt dosyası diye bir wordlist olupturup içine yazdığımız şifreler ile deniyoruz. En sonuna ise gerçek şifremiz 1 değerini yerleştiriyoruz.
Atak gerçekleştirme işlemi başladı. Biraz zaman alıcaktır. Yazdığımız kelime listesine göre ama şekilden görebilirsiniz. İşlem başarı ile tamamlandı.
Şifrenin 1 olduğunu ve tespit edildiğini gördük. Security onionda aktif olarak çalışan snort ise bu durumu tespit etmiştir. snorby arayüzdende yapılan bu atakla ilgili düşen logları görmek mümkündür. Saldırının yapıldığı kaynak ve hedef ip adresi tespit edilmiştir.
Linux Sunucularda Bandwitch Monitoring Araçları 25
25 Her Yönüyle LinuxSistem ve Network Güvenliği Ahmet HAN Free Ebook
Bu dökümanda network kullanımında komut satırı araçlarının terminalde kullanılması ve bu araçlarda hakkında bilgi edinilmesi amaçlanmıştır. Dağıtım olarak Linux Centos 6.5 minimal iso tercih edilmiş; Oracle Virtual Box uygulaması ile sanal makina image’ ikullanılmıştır. Putty programı ile terminale bağlanılmış komutlar ssh protokolü üzerinden çalıştırılmıştır. Sanal makinamızda çalışan dağtımızın ip adresini öğrenip ssh protokolü ile putty ile bağlanacağız. Önce ifconfig ile ip adresimizi görelim.
Daha sonra ip adresimizi putty programını çalıştırıp şekildeki gibi linux dağıtımımıza bağlantı kurabiliriz.
Her Yönüyle LinuxSistem ve Network Güvenliği Ahmet HAN Free Ebook
Bağlantı yapıldıktan sonra şekildeki gibi bizden login olmamızı isteyecektir. Başlangıçta root kullanıcı ve belirlediğimiz komutla login olmamız faydalı olacaktır. root kullanıcı linux sistemlerde en yetkin kullanıcı olduğu için komutları kullanmamız izinler açısından herhangi bir sıkıntı oluşturmayacaktır.
Dağıtmımızın internete çıkıp çıkmamağını öğrenmek için ping google.com sorgu atıyoruz ve ekranda göründüğü gibi icmp echo cevapları dönüyor yani makinamız internete çıkıyor.
Linux komut satırı araçları ve diğer network security monotoring araçları çoğu gelen ve giden ağ trafiğinin dinlenmesi, hackerların veya attackerların dışarıdan yaptıkları saldırıların anlaşılması, tcp/ip paket analizi açısından önemlidir. Linux makinalarda bazı kullanışlı komutlar bandwicth kullanımımızı detaylı olarak anlamaya yarar. Farklı mekanizmalara sahip olan komut satırı araçları özel bir ağ trafik raporu çıkarmamıza imkan tanırlar. pcap kütüphanesini kullanarak bütün trafiği bile yakalayabilmektedirler. Ve bu trafik boyutunu hesaplayabilmektedirler. Komutların ve komut satırı araçlarının kullanım alanlarına göre aşağıdaki gibi sıralanmıştır. Herbiri yapılacağı test ortamına göre farklılık gösterebilmektedir. ** Tüm bandwidht nload,bmon,slurm,bwmng,cbm,speedometer,netload ** Tüm bandwidht (output ile birlikte) vnstat,ifstat,dstat,collectl ** Bandwidht her process için nethogs ** Bandwidht her soket bağlantısı için iftop,iptraf,tcptrack,pkstat,netwacht,trafshow ** nload nload basit bir komut satırı aracı olup gelen ve giden ağ trafiğinin denetlenmesi adına önemlidir. Ek olarak paketleri göstermek için bir grafik çizerek daha iyi anlamıza imkan tanımaktadır.
Kullanımı basittir. Farklı opsiyonları desteklememektedir. bandwicht kullanımı ile ilgili özel processlerin monitoring edilmesi için bu aracı kullanabilirsiniz.
Ayrıca Centos Epel repolarından yüklendiğini unutmayınız. ** iftop Nload tan farklı olarak iftop komutu örnek bir veri şeması ile soket bağlantılarının gösterimine de imkan tanır. Network adaptörü dinlenerek, pcap kütüphanesi ile trafiğin yakalanmasına imkan tanır. Toplam bandwicht kullanımı hesaplar. Bandwicht kullanılmasını hesaplamasına rağmen process isimlerini ve süreçlerini göstermemektedir. pcap kütüphanesi sayesinde trafiğin filtrelenmesi, bandwicht kullanılmı şeçili hostlara göre yapılmasına imkan tanımaktadır.
iftop komutununun yüklenmesi için yine epel reoplarının dağıtımınızda olması gerekmektedir. Sanal makina ve ana bilgisayarımız olduğun için sadece ikisinin ip adreslerini görebiliyoruz. Başka sanal makina imageniz varsa internet çıktığını buradanda görebilirsiniz. Vmware sanal makinamızda kurulu olan Ubuntu’yu çalıştırdığımızdaki örnek ekran alıntısı.
** iptraf iptraf interaktif ve renkli ip Lan monitoring aracı. Bağlantıları göebilmemize olanak tanımaktadır. Hosttaki bağlantılar bunlar. Bunun yanı sıra data flow oluşturmaktadır. konsoldan iptraf komutunu veriyoruz.
Devam etmek için herhangi bir tuşa basıyoruz. Ve karşımıza monitoring yapmak istediğimiz araçlar gelmektedir. İstediğiniz seçeneği seçebilirsiniz. Biz örnek olması açısından ip traffic monitor seçeneğini seçiyoruz. Siz de kurduğunuz zaman diğer seçenekleri test ediniz.
Farklı arayüzleri komut satırından görebilirdik. Ama bir tane eth0 arayüzümüz var. All interfaces seçeneği ile devam ederek gidiyoruz.
Artık tüm arayüzlerin monitoring işlemi başlamıştır. Şekildeki gibi ekran çıktısını sizde denediğiniz zaman almalısınız.
** nethogs nethogs aracı küçük bir “net top” aracı olarak; önemli processleri, en öenmli top komutu çıktılarını kısaltarak listelemektedir. Centos Desktop ya da farklı bir desktop kullanıyorsanız aşağıdaki gibi bir çıktı alabilirsiniz. Sunucu tarafında pek kullanışlı değildir. Centos 6.5 teki örnek ekran alıntımız.
** Bmon Bmon(Bandwicht monitor) olarak adlandırılan bu araç nload benzeri bir araçtır. Bütün arayüzlerdeki network trafiğini ve oturum bildilerini “packet level “ detaylarını görmemize yarar. ** vnstat vnstat network trafik monitor aracı olmakla birlikte diğer araçlardan biraz farklıdır. Background serviste çalışan ve data transfer,, boyutunu gösteren komut satırı aracıdır. yum install vnstat komutu ile öncelikle Centos 6.5 indirmeniz gerekmektedir. Daha sonra service vnstat status komut ile çalışıp çalışmadığını öğrenmeniz gerekmektedir.
Daha sonra çalıştığını öğrendikten sonra vnstat l i eth0 komutu ile dinlenecek ağ trafiği komutu girilmelidir.
Belirli bir süre ağ trafiği dinlendikten sonra aşağıdaki gibi ekran çıktısını görebiliriz.
Trafik istatistikleri şekildeki gibidir. max, ort, min ve bytes bilgileri ** Bwmng
Bwmng (Bandwidth Monitor Next Generation) yeni nesil monitoring aracı olup gerçek zamanlı monitoring yapılmasına imkan tanımaktadır. Verilerin transferini, bütün netwrok arayüzlerini denetleyebilme gibi yeteneklere sahip bir araçtır.
** Trafshow trafshow komutu netwacth ve pkstat araçlarına benzer; aktif bağlantıları görmemizi sağlar. Bağlantıların protokolleri, veri transfer hızlarını,gösterir. Sadece tcp bağlantılarının monitoring yapılmasını sağlar. Ayrıca dış bağlantıları pcap kütüphanesini kullanarak filtreler. Öncelikle komut satırından trafshow i eth0 tcp komutu ile dinleme yapalım.
# sudo trafshow i eth0 tcp
Daha sonra aktif bağlantıları aşağıdaki gibi görebiliriz.
** dstat dstat python ile yazılmış çok yönlü bir araç olmakla birlikte, farklı sistemlerin monitor istatistiklerini görmemizi sağlamaktadır. Bu örnek network bant genişliğini bildirmek için dstat nasıl kullanılacağını göstermektedir.
** collectl collectl aracı dstat benzer bir şekilde bir araç olmakla birlikte, çeşitli sistem kaynaklarıdan istatistikleri toplamaktadır. Örneği cpu, memory, network gibi. Aşağıda basit bir network/bandwicht kullanım istatistiği bulunmaktadır.
Linux sistemlerde ister bandwicht olsun, ister network security monitoring araçları olsun ya da basit komut satırı araçları olsun kullanıldığı yer önemlidir. Forensic, Monitoring, Malware analizi, saldırı tespit ve önleme sistemleri gibi güvenlik sınır bileşenlerinin önemli olduğu noktalarda önem arz etmektedir. Bu yazımız Linux Komut Satırı 101 niteliğinde olup araçları farklı komutlar ile test edebilirsiniz. Basit ama kullanışlı olmakla birlikte kullanmanız önemlidir. Enterprise tarafında farklı güvenlik çözümleri için özelleşmiş monitoring araçlarıda bulunmaktadır.
Centos 6.5 Minimal İso Sürümü Oracle Virtual Box ‘a Kurulması 26
Centos Redhat firmasının dağıtımı olan Red Hat Enterprise Linux(Rhel) kaynak kodları üzerine kurulu ve bu dağıtım ile uyumlu bir linux dağıtımıdır. Bağımsız bir topluluk olan The Community ENTerprise Operating System tarafından geliştirilmiştir. Bu yazımızda Centos 6.5 minimal iso sürümünün oracle virtual box üzerine kurulumunu anlatacağız. Yabancı ve yerli kaynaklarda benzer kurulum ve yapılandırılmasını bulabilirsiniz. Öncelikle Oracle Virtual Box Vm Yönetici çalıştırılır ve daha sonra şekildeki gibi yeni şeçeneğine tıklandıktan sonra sanalda oluşturulacak makina ayarları yapılandırılır.
26 Her Yönüyle LinuxSistem ve Network Güvenliği Ahmet HAN Free Ebook
Adı, dağıtım türü, sürümü şekildeki gibi şeçildikten sonra bir sonraki aşamaya geçelim. Bellek boyutu girmemizi istemektedir. Fiziksel makinanızın özellliklerine göre siz de istediğiniz boyutu girebilirsiniz.
Daha sonra sabit disk oluşturulma aşamasına geçiyoruz. Şimdi sanal disk oluştur seçeneği ile devam edelim.
Sabit disk dosyası türü, virtual disk kalıbı seçeneği ve ileri seçeneği ile devam edilir.
Sabit disk boyutunu istediğiniz gibi seçebilirsiniz. Değişken olarak ayrılan şeçeneği ile devam edelim.
Dosya yeri ve boyutunu istediğiniz şekilde seçerek devam edebilirsiniz.
Bu aşamadan sonra yöneticiye tekrar dönelim. Ve başlat programına dönelim.
Daha sonra iso dosyamızın bulunduğu dizinden kuruluma devam edelim.
Bizim bilgisayarımızda şekildeki gibi görünmektedir.
Yine şekildeki gibi düzenleyerek devam edelim.
Artık sanal makina yapılandırma işlemleri tamamlandıktan sonra Centos 6.5 kurulumuna geçebiliriz. Şekildeki gibi ekran karşımıza çıkacaktır. En üstteki seçenek ile devam edelim.
Kurulum devam etmektedir…
Kurulum medyası içerik doğrulama ekranı. skip diyerek kuruluma devam ediyoruz.
Daha sonra next seçeneği ile devam edelim.
Ardından yapılandırmak istediğiniz dil seçeneği ekrana gelmektedir. Birisini seçerek devam edebilirsiniz.
Şimdi de klayve dilini sormaktadır. Türkçe olarak şeçip kuruluma devam edelim.
Depolama alanı olarak nasıl bir kurulum istediğimizi sormaktadır.İlk seçeneği seçerek kurulumumuza devam edelim.
Ardından yine yes discard any data seçeneğini seçerek devam edelim.
Bilgisayarınıza herhangi bir hostname’i vererek devam edebilirsiniz bu noktadan itibaren.
Locasyon bilgisini sormaktadır. İstanbul olarak şeçip devam edelim.
Daha sonra root kullanıcının password oluşturma işlemini gerçekleştirerek yine devam edelim.
Şifrenizi basit bir şifre koyarsanız şekildeki gibi bir hata alabilirsiniz. Güçlü şifreler oluşturmaya çalışın.
use all space seçeneğini seçerek kuruluma devam edelim.
write changes to disk seçeneği ile devam edelim.
Kurulum işleminin sonuna gelmiş bulunmaktayız bu noktadan sonra kurulumun tamamlanmasını beklemeliyiz.
Kurulum başarıyla tamamlanmıştır. Yeniden başlatma işlemini tamamladıktan sonra dağıtmınız artık kullanıma hazır hale gelmiştir.
GDB İle Tersine Mühendisliğe Giriş 27
Bu yazımız linux sistemlerde tersine mühendisliğe giriş niteliğinde olup; temel olarak basit bir C programı ile debugging yöntemleri üzerine olacaktır. Ön bilgi olarak temel C programlama dili syntax’ı, linux komut satırı ve gcc, gdb araçları ile ilgili araştırma yapmanız gerekmektedir. Koyu renkli linklemelere tıklayarak konu ile ilgili referans gösterilen kaynaklara ulaşabilirsiniz.
27 Her Yönüyle LinuxSistem ve Network Güvenliği Ahmet HAN Free Ebook
Bilgisayarda bir uygulama veya donanım için hataları tespit etmek, kodları incelemek ve binary düzeyde gerçekleştirdiği sistem çağrılarını izlemek güvenli yazılım geliştirme açısından önemlidir. Reverse enginneering’e giriş için öncelikle PE(Portable Executable) yada ELF gibi dosya formatları bilinmelidir. Örnek verecek olursak Windows’ta bir uygulamayı(exe) çalıştırdığımız zaman; bir süreç(process) oluşturulur ve bu süreçlere bir sanal hafıza (virtual memory) tahsis edilir. Sürecin hafıza blokları kullanılarak uygulama çalışır. Process hafızası üç ana bileşenden oluşur. Bunlar Code Segment, Data Segment ve Stack segment katmanlarıdır. Code segment(.txt) insanların yazdığı kodların bulunduğu kısım; Data segment(.data) global ve statik değişkenleri içeren,sanal adres alanının bir bölümü, Stack segment geçici değerlerin bulunduğu hafıza kısmıdır.
Temel dosya işleyiş yapısı bilgisini verdikten sonra önce [ctrl + alt + T] komutunu kullanarak
linux terminalimizi açalım. Daha sonra ise root(linux sistemlerde en yetkili kullanıcı) değilsek;
[sudo su root] komutunu kullanarak root kullacı olalım. Daha sonra nano editörünü basit bir C
uygulaması oluşturalım. Bunun için [nano ornek.c] komutunu kullanabilirsiniz. Açılan nano
editörü ekranında resimdeki gibi bir küçük C uygulaması hazırlayalım. Ardından ctrl+r(dosyayı
oku) ve ctrl+o(dosyaya yaz) komutlarını kullandıktan sonra ctrl+x(cıkıs) komutu ile nano
editöründen cıkalım.
Yazdığımız basit C programının nano editöründen kaynak görüntüsü aşağıdaki gibidir. Basit bir
isaretçi tipinde çağrı yapılan bir fonksiyon ve main fonksiyonundan oluşmaktadır.
Şimdi yazdıklarımızı [gcc o yeni yeni.c] komutu ile derleyelim. Herhangi bir hata yoksa ve
derleme işlemi başarılı ise yukarıdaki yeşil renkli executable(çalıştırılabilir) dosyayı görebilirsiniz.
[file yeni] komutu ile yeni çalıştırılabilir dosyası ile ilgili bilgilere bakabilirsiniz.
.
Daha sonra dosyamızı [./yeni] komutunu vererek çalıştıralım. Programın cıktısı resimdeki gibi
olucaktır. Uygulamamızın calıstığını ekran cıktısı ile görebilirsiniz. Şimdi ise [gdb yeni] komutunu
vererek çalıştıralım. Daha sonra (gdb) run olacak olacak şekilde yeniden deneyelim ve
çalıştığını görebilirsiniz.
Assembly kodlarını görmek için gdb içersine iken [layout asm] komutunu verelim. Daha sonra
[printf "%s\n", 0x80484f8] komutunu verelim ve Merhaba Dünya yazısındaki M yi görebilirsiniz.
Tersine mühendislik ile ilgili bir çok hex editör, komut satırı aracı ve değişik tool bulunmaktadır.
Burada önemli olan gerekli toolları reversing yaparken gerektiği zamanda kullanmaktır. [readelf
h yeni] komutunu verdiğiniz zaman elf dosya formatı objelerine ulaşabilirsiniz.
Debugging, Reverse enginneering’ te çok kullanılan bir araçta hexdump aracıdır. Örnekte
belirttiğimiz dosyamıza [hexdump C n 100 yeni ] komutunu vererek dosya ile ilgili hexadecimal
olarakta görüntüleyebilirsiniz.
Tersine mühendislik kavramı stuxnet kavramından sonra daha da önem kazandı. İran’da
bulunan Siemens Scada sistemlerinin belirli modülülünün belirli bir ürününde ortaya çıkan
stuxnet vakasında, APT(Advanced Persistent Threat), hedef odaklı gelişmiş ileri düzey bir
tehdit olduğu için sadece bilgisayar bilimlerinde değil; elektronik, mekatronik, makina bir çok
sistemin farklı şekillerde istismarının düşünüldüğü söylenmektedir. Tersine mühedislik kavramı
sadece scada sistemler, bilgisayar, yazılım tarafında düşünülmemelidir.
Security Onion 101 Eğitim Dökümanı 28
Bu dökümanda özelleşmiş bir linux dağıtımı olan security onion’dan bahsedilecektir. Troubleshooting olayları ile içersinde bulunan gerçek zamanlı network security monitoring araçları ile birlikte çıktıları yorumlanacak; oracle vm virtualbox ve wmware üzerinde kurulumları ile pratik örnekleri anlatılacaktır. Bu işlemlere başlamadan önce temel linux komutlarını bilmenizde fayda var. Security onion, smoothsec, selks gibi network security monitoring yapılmasına imkan tanıyan farklı araçlar bulunmaktadır. Bu dağıtımların özellemiş olma sebepleri içersinde bulunan araçların kurulum ve manuel olarak yapılandırılam zorluklarından kaynaklanmaktadır. Bu nedenler bu zorlukların üstesinden gelmek amacıyla open source proje olarak başlamışlar daha sonra commercial destekde sağlayarak Dünya’daki büyük IT şirketleri tarafından destekde bulmuşlarıdır. Hızla geniş kitleler tarafından kullanılmaya başlanmışlardır. Security onionda bulunan bazı önemli araçlar. ** snort ** suricata ** squil ** squert ** xplico ** argus ** snorby ** elsa ** tcpdump ** wireshark ** netsniffng ** Prads Geçtiğimiz yıllarda gerçekleştirlen hedef odaklı saldırılar, zararlı yazılımlar, advenced persistent threat( gelişmiş ileri düzey tehditler), stuxnet, duqu, zeus, hesperpot ve diğer kurumsal firmalara ve devlet kurumlarına yönelik saldırılar farklı bir boyuta ulaştı. Ülkemiz Ağustos ayında yapılan bir açıklamaya göre Avrupa da olmak üzere bu bankacılık zararlılarının en çok hedef aldığı ülke oldu. Resimde en son Ağustos 2014 verilerine bakabilirsiniz.( Kaynak: Atlas Arbor Network)
28 Her Yönüyle LinuxSistem ve Network Güvenliği Ahmet HAN Free Ebook
Yukarıdaki ve aşağıdaki resimde tehlike kaynakları arasında kaçıncı olduğumuz ve hangi tür tehlikeler yayıldığını görebilirsiniz.
Farklı saldırıların gerçekleşmesi ve her gün bir yenisinin daha ortaya çıkması gibi etkenlerden dolayı özelleşmiş network security monitoring araçları ve incident response kavramı bir kez daha önemini korumaktadır. ** Malware C&C’s ** Phishing domains ** Mule Siteler ** Piracy ** Antigovernment siteler ** Cinsel İçeriğe sahip siteler Çeşitli zararlı yazılım dağıtan sitelerdendir. Öte yandan botnetlerin dağıtıldığı sunuculara ev sahipliği yapan top 20 ülke arasında ülkemizde bulunmaktadır. Standart bir ağ yapısını düşünecek olursak şekildeki gibidir.
Bu noktada ips/ids sistemlerin yerleştirileciği konum çok önemlidir. Örnek olarak şekildeki resimde verildiği gibi ips/ids yada bunları barındırıan dağtımların konumlandırılması adına önemlidir.
Monitoring yapılacak ağın türüne göre farklılık gösterebilmektedir. Temel olarak ids/ips ve son zamanlarda gerçekleştirilen attaklarla ilgili daha fazla bilgi edinmek için referanslar kısmındaki linkleri ziyaret edebilirsiniz. Doug Burks tarafından 2008 yılında open source bir proje olarak başlandı. Bize ne gibi esneklikler sağlamaktadır. Security Onion Nedir? ** Ücretsiz olarak dağıtılan bir Linux Dağıtımı ** Saldırı Tespit Sistemi ** Network Security Monitoring Sistemi
** Log Yönetim Sistemi Ücretsiz bir linux dağıtımı olan security onion log yönetimi, network security moniyoring ve saldırı tespit gibi farklı seçenekler sunmaktadır. Yukarıda anlattığımız farklı network yapılarında ve incident response ekipleri tarafından sistem yöneticileri de dahil kullanmaktadır. Log Yönetimi ve Faydaları ** Kullanıcı aktivitelerinin İzlenmesi ** IT Troubleshooting ve Network Operasyonlarının başarı le sonuçlanması ** İhtiyaçların Sürekli olarak belirlenmesi ** Forensic analizi ** Zararlı Network olaylarının erken tespiti ** İncident Response Kolaylı ** Cobıt, ISO, ITIL, pratiklerinin yapılması ** Uygulama Performansların Testi ** Bölümlere Gerçekleşen Olayların Raporlarının Yapılması İncident response açısından, zararlı network aktivitelerinin izlenmesi açısından log yönetimi büyük önem taşımaktadır. Farklı modlarda kullanılabilmektedir. Fakat biz dökümanın ilerleyen bölümlerinde standalone temel olarak step by step mantığıyla kurulumunu anlatacağız. ** Server mod, ** Sensor mod, ** Standalone mod Farklı türlerde veri tiplerini anlayabilmemize olanak sağlamaktadır. Security Onion farklı türlerde veri tiplerini anlamamıza olanak tanımaktadır. ** Alert Data NIDS alarmları Snort ve Suricata’dan HIDS alarmları Ossec’ten ** Asset data’ları Bro ve Prads’tan ** Session(Oturum) dataları Argus, Bro, Prads’tan
** Full Content data netsniffng ** Transaction data( http/ftp/dns/ssl/diğer Bro’dan gelen loglar) Farklı modlarda yerleştirilecebileceğinden bahsetmiştik. ** Sensor Modda Bro, Elsa Logları(Log Node), Snort/Suricata, Full Paket Yakalama ** Server Modda Elsa Web Node Ağ trafiğinin dinlenmesi ve paket trafiği analizi açısından önemi büyüktür. Temel bilgileri verdikten sonra artık oracle virtual box üzerinde kurulumuna geçebiliriz. Kuruluma geçmeden önce virtual network adaptör konusunu gerek virtual boxta gerekse wmare üzerinde araştırmanız sizin açınızdan faydalı olacaktır. Çünkü monitoring yapılacak arayüzün seçilmesi, yönetim amaçlı arayüzün seçilmesi önemlidir. Gereksinimler, ** 3 Gb Ram ** Vmware ya da Oracle Virtual Box ** 32 bit / 64 bit Security Onion Iso Dosyası ** Network Arayüz kartları (NIC) ** Depolama için Yeterli Bellek alanı(Full Paket Capture Verileri) Kurulumda biz Oracle Virtual Box kullanacağız. Bilgisayarınıza kurulu olması gerekmektedir. Daha sonra adım adım aşağıdaki adımları takip etmelisiniz.
Öncelikle Oracle Vm VirtualBox Manager başlatılır.
Daha sonra new butonuna basılarak devam edilir. Şekildeki bir ekran görüntüsü gelmektedir. Burada dağtımı ismi kısmını isteğiniz ismi verebilirsiniz, türü linux ve versiyon bilgisi olarak
Ubuntu 64 Bit ya da Debian 64 Bit kullanarak devam edebilirsiniz. Daha sonra next butonuna basarak ilerleyelim.
Ardından kullanacağımız sanal makina için ram boyunu şeçmeye. Biz 4 Gb fiziksel makinamızın durumuna göre verdik. Sizler de fiziksel kullandığınız makinanın durumuna göre bunu ayarlayabilirsiniz. Ram boyunu ayarladıktan sonra next seçeneği ile devam ediyoruz.
Burada ise create a virtual hardrive seçeneğini seçerek devam ediyoruz. Ardından create butonuna basıp devam ediyoruz.
Hard drive sürücü türünü Virtual Box Disk İmage olarak seçtikten sonra next seçeneği ile devam ediyoruz.
Hafıza tipini dinamik olarak seçtikten sonra next ile devam edelim.
Dosya lokasyonu ve boyutu seçildeki gib seçerseniz işinize yarayacaktır.
Sanal makinamız için temel ayarlar tamam. Start ile devam edelim.
Burada dağıtımınızın bulunduğu dizindeki iso dosyasına ulaşmanız gerekmektedir. Ve şekilde görüldüğü gibi olması gereklidir.
Kurulumu başlatmadan önce network adaptörlerinide ayarlayalım.
Network Adaptörlerini ayarladıktan sonra artık start edip kuruluma geçebiliriz.
En üst kısımda bulunan seçenek ile devam etmeniz gerekmektedir. live boot the live system seçeneği seçilir. Seçmesenizde otomatik olarak kendisi seçmektedir.
İlk boot işlemi tamamlandıktan sonra aşağıdaki gibi açılış ekranı gelmektedir. Burada masa üstünde bulunan yükleme seçeneğine tıklanarak yükleme işlemine geçilir.
Bu aşamadan sonra dil seçiminizi isteyecektir. Kulllanmak istediğiniz dil seçimini yaparak devam edebilirsiniz.
Güncelleştirmelerin ve üçüncü parti yazılımların yüklenmesi seçenekleri işaretlerenerek devam edilir.
Erase disk and İnstall Security onion seçeneği ile devam edilir.
Seçilecek sürücü sanal makina üzerinde test yaptığımız için farketmeyecektir. İnstall now seçeneği ile devam edilir.
Ardından lokasyon bilgisi seçilerek devam edilir.
Klayve seçeneklerini klavyenizin türüne göre istediğiniz şekilde seçebilirsiniz.
Ardından kullanıcı bilgilerinizi şekildeki gibi girmeniz gerekmektedir.
Continue seçeneği ile devam edilmesi gerekmektedir. Gerekli paketler indirilip yüklenmektedir.
Bu paketler yüklendikten sonra yeniden başlatmanız gerekmektedir.
Yeniden başlatma işlemi tamamlandıktan sonra şekildeki gibi bir güncelleme bildirimi gelmektedir. Şimdilik bunu atlayabilirsiniz.
Bundan sonra terminal açılarak sudo i komutu yada sudo su root komutu ile root kullancı olarak aptget update dağıtımı ile güncelleme işlemi yapılır.
Biraz beklemeniz gerekmektedir. Güncelleme şekildeki gibi devam etmektedir.
sudo ruleupdate komutu ile snort ve suricata için kural setleri güncellenmiş olur.
Bu işlemleri tamamladıktan sonra artık security onion’u standalone modda yapılandırmaya geçebiliriz.
Bu işleme geçmeden önce tekrar terminalden diğer bir güncelleme işleminide yapalım.
Bu işlemide tamamlandıktan sonra setup seçeneği ile tekrar yapılandırmaya devam edelim. İlk başta belirlediğimiz şifre ile devam edelim.
Yes continue seçeneği ile devam edilir.
Network arayüzü konfigürayon ayarlarına geçebiliriz. Yes configure /etc/network/interfaces seçeneği ile devam edilir.
Burada yönetim amaçlı seçtiğiniz arayüzü sormaktadır. Biz eth1 seçeneği ile devam etmemiz gerekmektedir.
Bu şeçimi yaptıktan sonra eth1 adresinin static yada dinamik seçmek istediğiniz seçeneği sormaktadır. Biz dinamik olarak seçiyoruz. Fakat statik olarak seçersiniz ip,gateway, subnetmask dns server gibi ayarlarını yapılandırmamız gerekmektedir.
Ardından yes configure monitor interfaces seçeneği ile devam edelim.
Şimdi ise sniffing yapılacak arayüzü sormaktadır.
Yaptığımız konfigürasyonları bizden istemektedir. Bu noktadan sonra doğrulayarak devam edelim. yes make changes seçeneği şeçilir.
Bu ayarların tamamlanması için tekrardan başlatmanız gerekmektedir.
Restart işleminden sonra tekrar setup seçeneği ile kuruluma geçilir. Bu sefer network konfigürasyon kısmını bitirdikten sonra bu aşamayı geçebilirsiniz.
Burada şunu belirtmekte fayda var. Gelişmiş yükleme seçeneği daha fazla seçenek sunduğu için gelişmiş bir şekilde kuruluma devam ediyoruz.
Seçenekler istenirken hangi modda kuruluma devam etmek istediğiniz sormaktadır. standalone modda devam etmelisiniz.
squil için sizden kullanıcı adınızı girminizi istemektedir.
Kullanıcı adınızı girdikten sonra snorby giriş paneli için bizden email adresimizi istemektedir.
Şimdi ise monitoring araçlarına login olurken kullanmamız gereken şifreyi istemektedir.
Ardından sizden şifreyi doğrulamanızı istemektedir.
Squil veritabanının kaç gün veri tutması gerektiğini sormaktadır. Default olarak 30 gün olarak gelmektedir.
Kaç günde bir veritabanını kontrol edilmesi gerektiğini sormaktadır. Default olarak 7 gün olarak gelmektedir. Siz istediğiniz günü belirleyebilirsiniz.
Bu aşamada snort ya da suricata hangi ids motorunu kullanmak istediğimizi sormaktadır.
Kullanmak istediğimiz imzaları sormaktadır. Bir ücretsiz kural setleri olan en üsttekini seçiyoruz.
Pfring mininum slot ile ilgili değer girmemizi istemektedir.
Monitoring yapılması gereken network adaptörünü sormaktadır.
IDS Motorlarını görünür olarak yapmak için yes seçeneği ile devam edilir.
Bro İds aktif olması için yine yes seçeneği ile devam edilir.
File extraction seçeneği yes ile devam edilerek aktif edilir.
yes http agent seçeneği seçilerek devam edilir.
Argus şeçilen arayüzdeki log session bilgilerini ve arayüzü dinlemektedir. Argus agent’ada izin verilerek devam edilir.
Prads’ ta seçilen arayüzü dinleyerek squil için session bilgilerini sağlamaktadır. İzin verilerek devam edilir.
Full packet capture monitoring yapılan tüm trafiği diske yazmaktadır. Bunada izin verilerek devam edilir.
Aşağıdaki resimde pcap dosyalarına ne kadar yer ayırmak istediğinizi sormaktadır. Default olarak 150 MB olarak belirtilmektedir. Ama siz yine istediğiniz boyutu vererek devam edebilirsiniz.
nmap aracını sniffing için kullanmak isteyip istemediğinizi sormaktadır. yes, enable seçeneği ile devam edelim.
pcap dosyaları için bir buffer alan istemektedir. Default olarak 64 Mb olarak gelmekle birlikte istediğiniz boyutu fiziksel makinanızın durumuna göre kendiniz belirleyebilirsiniz.
Loglar için yüzdelik olarak ne kadar disk alanı kullanmak istediğinizi sormaktadır. Default olarak 90 olarak gelmektedir.
Sensor kullamında yardımcı olması için salt seçeneğinin kullanılır olması gerekmektedir. yes enable salt seçeneği ile devam edelim.
splunk’ın ücretsiz versiyonu olan elsa dağıtım içersinde bulunan ips/ids motorlarının yakaladığı logların web arayüzde görüntülenmesini sağlamaktadır.
Elsada üretilen logların depolanması için bellek alanı ayırmanız gerekmektedir. Daha sonradanda istediğiniz şekilde bellek alanını şekilde belirtilen dizinden sonradanda değiştirebilirsiniz.
Bu işlemleri tamamladıktan sonra değişikliklerin katdedilmesini sormektadır. Şimdiye kadar ki aşamalarda herhangi bir hata yapmadıysanız yes seçeneği ile devam ediniz.
Artık yükleme devam etmekte değişiklikler kaydedilmektedir.
Buradan sonra kurulum bilgileri yapılandırılan uygulama dizinleri ile ilgili bilgiler vermektedir. Bunları bilmenizde fayda bulunmaktadır. İleride fiziksel ağınıza göre burada konfigürasyon ve düzenleme yapabilirsiniz. Bu noktada referanslar kısmında belirtilen google tartışma gruplarında ileride yaşayacağınız herhangi bir problemle ilgili bir çok soru bulunmaktadır. Buradan sizde yaşayacağınız herhangi bir problemle ilgili sıkıntılara bakabilir sorularınız sorabilir cevap alabilirsiniz.
İşlemler burada tamamlanmaktadır. Aşağıdaki gibi kural güncellmesi yapılır.
sudo i komutu ile root kullanıcı olunur ve ardından ise ifconfig komutu ile network ayarlarının tamamlanıp tamamlanmadığına bakılır.
Temel kurulum ayarları tamamlanmıştır. Standalone modda dağıtımımız kullanıma hazırdır. Şekildeki gibi network security monitoring araçlarımızın çalısıp çalışmağını görebilirsiniz. Örnek komut : service nsm status komutu çalıştırılmalıdır.
Şekildeki gibi eth0 arayüzünde promissicious modda çalışan yapılandırdığımız araçları görebilirsiniz. Buraya kadar olan kısımda standalone modda temel ayarlar ve konfigürasyonlar yapılandırılmıştır. Bundan sonraki dökümanın ilerleyen kısımında server ve sensor modda kurulum ve yapılandırma işlemleri anlatılacaktır. Ona geçmeden önce standalone modda içersinde bulunan araçlar ekran alıntıları, düşen loglar, temel erişim kontrolleri anlatılatılcaktır. Dağıtım ile ilgili güncellemeleri referanslar kısmında gösterilen kaynaklardan takip edebilirsiniz. Kurulum bitiminde bazı uygulamaların bulunduğu dizinlerle ilgili bilgi alabilirsiniz. İleride ips/ids testleri için kendi kurallarımızı yazarken lazım olacaktır. Bu dizinlerin bilinmesi bu açıdan önemlidir.
Artık dağıtımımızın test işlemlerine başlayabiliriz. İlk olarak cd /opt/samples dizinine gidiyoruz. Burada bulunan örnek zararlı dosyaların pcap formatında zararlı trafik kayıtlı haldedir. Resimdeki gibi dosyaları görebilirsiniz.
Eğer farklı bir zararlının davranışını incelemek isterseniz resimdeki gibi yada internette malicious pcap files yazarak bulduğunuz dosyaları çalıştırıp deneyebilirsiniz. Örnek resime bakabilirsiniz.
Şimdide test amaçlı tcprepaly ile şekildeki eth0 arayüzüne bu resimden bir önceki resimde gördüğümüz zararlı dosyaları çalıştıralım ve araçlarımıza düşün logları yorumlayalım.
Bu komuttan sonra bazı uyarılar vermektedir. Bazı paketler gönderilememekte yada çalışmamaktadır. Problem değil çalışan zararlı trafiği içersinde bulunan loglama araçları ile görelim.
Öncelikle masaüstünde google chrome amblemi üzerinde snorby yazan ikona tıklamanız gerekmektedir. Daha sonra konfigürasyon sırasında belirttiğiniz kullanıcı emaili ve şifreniz ile login olmanız gerekmektedir. Bu işlemler gerçekleştirilirken tcpreplay bir taraftanda zararlı trafiği arka planda çalıştırmaktadır. Resimdeki gibi yüksek, orta ve düşük uyarıları aldığımızı görebiliriz.
Ardından events sekmesine tıkladığımız zaman zararlı trafiği görebiliriz. Yüksek tehlikeye sahip olan uyarılar kırmızı, orta seviye riske sahip olanlar turuncu, düşük seviyeye sahip olanlar yeşil renkte gösterilmiştir.
Ardından event signature signature kısmında kullanılan kuralıda görebiliriz. Tespit edilen alert burada belirtilmektedir. Şekilde dinlenen sensorleri de görebilirsiniz.
Algılanan tehditle ilgili bilgilere şekildeki gibi ulaşabilir, detaylara ulaşabilirsiniz.
Burada ip header bilgilerine, kaynak ip, hedef ip, imza bilgilerine, payload kısmına, kaynak port hedef port bilgilerine… ulaşılabilmektedir. Aşağıdaki resimde renkli belirttiğimiz kısımda son gerçekleşen olayları görünütülüyebilirsiniz.
Biraz önceki resimde belirtilen pencere detection kural bilgilerine de ulaşabilirsiniz.
Eğer olayları farklı formatlarda raporlamak veya çıktılarını almak istiyorsanız şekildeki sekmeden isteğiniz seçeneği seçebilirsiniz.
Paket yakalama ilgili seçenekleride istediğiniz gibi yönetebilirsiniz.
Tekrardan hatırlatalım. Çalışan servisleri görebilmemize olanak sağlar.
Snorby ile ilgili temel bilgileri verdikten sonra squil kullanımına geçelim. Öncelikle masaüstünde bulunan squil ikonunun üzerine tıklıyoruz. Ardından sekildeki gibi bir pencere açılıyor karşımıza.
Burada kullanıcı adımızı ve şifremizi girerek ok tuşuna basıyoruz. Aşağıdaki şekildeki gibi eth0 ve ossec acent seçildikten sonra start squil seçeneği ile devam edilir.
Daha sonra şekildeki gibi squil ekranı açılmıştır. Burada escalated events ve real time events olmak üzere iki sekmeyi görebilirsiniz.
Sensor, alert id, zamanı, kaynak ip, hedef port, hedef ip, kaynak port, event mesajı gibi farklı bilgilere şekildeki gibi kategorilendirlmiş olaylara ulaşabilirsiniz.
Yine detaylı raporları farklı formatlarda kullanabilirsiniz.
Squil ile ilgili temel bilinmesi gereken özellikleri verdikten sonra ardından squert’e geçebiliriz. Yine masaüstünde bulunan squert google ikonununa tıklıyoruz. Ardından karşımıza şekildeki gibi bir pencere gelmektedir. Bilgilerimizi girerek devam edelim.
Girdikten sonra karşımıza şekildeki gibi squert ekran gelmektedir. yine burada diğer loglama araçları gibi kapsamlı bilgilere ulaşabilirsiniz.
İlgili alertın imzasına bakarak şekildeki gibi ilgili uyarının imzasına ulaşabilrsiniz.
Bir başka imzada burada.
Hemen yan tarafta bulunan pencerede diğer istatistiklere ulaşmak mümkün. Resme dikkatli bakabilirsiniz.
Daha sonra summary sekmesine tıkladığınız zaman şekildeki gibi bir pencere açılmaktadır.
Daha sonra networkte bulunan agentsları şekidlen görebilirsiniz.
tcpreplay ile çalıştırdığımız zararlılardaki top ip adresi bilgilerini görerek saldırıların geldiği lokasyon bilgilerine ulaşabilirsiniz.
Burada ise top kaynak port ve top hedef port bilgilerine ulaşılabilmektedir.
Daha detaylı bilgiler için diğer sekmeleride ziyaret edebilirsiniz. Masaüstünde elsa sekmesine tıkladığımız zaman şekildeki gibi login ekranı gelmektedir. Bilgilerimizi girerek devam edelim.
Ekranda gönderdiğimiz paketler ile ilgili detaylı bilgilere ulaşabiliriz.
Önemli bağlantılar, ip adresleri, dns, files, ftp bilgileri vb. gibi queryleri gerçekleştirebiliriz. Aşağıdaki resimde snort’un yakaladığı mesajları görebilirsiniz. Türleri de belirtilmektedir.
Bir diğer sorguda snort’un yakaladığı top ip adreslerini yine buradan görmek mümkündür.
Buradanda top hedef ip histesine yine ulaşabilmek mümkündür.
Şimdide başka bir örnek senaryo deneyelim. Bunu kendiniz deneyiniz. Öncelikle malicious pcap file traffic yazıp googleden analizini yapmak istediğiniz zafiyet ya da istismar olayı ile ilgili pcap dosyasının indiriyorsunuz.
Daha sonra indirdiğimiz dosyayı sıkıştırılmış dosya formatında herhangi bir dizine çıkartıyoruz. Burada mkdir /opt/samples/apt/ dizinine çıkartmayı tercih ediyoyorum. Daha sonra tcpreplay i eth0 /opt/samples/apt/*.pcap komutu ile çalıştırıyoruz.
Artık istediğiniz araçtan düşen loglara bakabilir yukarıdaki anlatılan diğer araçlar sayesinde yapılan atttackla ilgili kapsamlı bilgi sahibi olabilirsiniz. Şekilde çalıştırılan zeus botneti ile ilgili imzayı görebilmek mümkün.
Yine imza ile ilgili kapsamlı bilgileri görebilirsiniz. Buraya kadar ki olan kısımda standalone modda kurulum temem konfigürasyonlarını anlatmıştık. Şimdide sensor modda kurulum için makinamızı yapılandıralım. Burada sensor modda kurulum için ayarlar belli bir yere kada aynı olduğu için ekran alıntılıarı olmadan anlacatacağız. 1. Öncelikle virtual box ayarları olsun diğer ayarlar olsun boot işlemine ve ilk boot işlemini başlanana kadar standalone modda ayarladığımız gibi yapılandırılır. Burada dikkat edilmesi gereken nokta virtual network adaptör ayarlarının fiziksel network’ünüze göre yapılandırılması gerektiğidir. 2. Gerekli boşluk ayrılır, bağlantılar, güncelleştirmeler kontrol edilir, üçüncü parti yazılımlar yükleme seçenekleri standalone moddaki gibi ayarlanır. 3. erase the disk to install SO → seçeneğine kadar devam edilir. 4. Daha sonra kulllanıcı adı, bilgisayar ismi ve şifre gibi diğer işlemler gerçekleştirilir. 5. aptget update; aptget upgrade; aptget distupgrade; komut işlemleri gerçekleştirilir. Ardından reboot işlemini gerçekleştirip server olarak yapılandırma işlmelerine geçebiliriz. Ardından settings kısmından seçeneklerden network connections kısmına tıklanır.
Açılan bağlantıda wired connection1 kısmından edit sekmesine tıklanır.
İpv4 settings kısmından manuel seçeneğine geçilir.
Manuel olarak seçim yapıldıktan sonra ip adresi, netmask’esi, gateway ve dns server bilgileri ile birlikte aranılacak domaın kaydı girilmelidir. Daha sonra save seçeneği ile kaydedilerek ayarlar yapılandırılmış olur. Şekildeki ip adresi ve yapılan bilgiler örnek lab ortamı amacıyal hazırlanmıştır. Sizde oluşturmak istediğiniz ağaın yapısına göre kendi ip adres ve diğer bilgileriniz olucak şekilde giriniz. Bu işlemleri bitirdikten sonra bütün çalışan uygulamaları kapatı tekrardan reboot işlemini gerçekleştirmeniz gerekmektedir.
Bu işlemden sonra konfigürasyon için diğer ayarlara geçebiliriz. 1.Masaüstündeki setup ikonuna tekrardan basılır. Ve ilk başta kurulumda kullandığımız kullanıcı adı ve şifre ile devam edilir. 2. Tekrardan network konfigürasyonu yapmak isteyip istemediğimizi sormaktadır. Hayır seçeneği ile devam edilir. 3. Bunlardan sonra advanced setup seçeneği seçilerek devam edilir.
4. Şekideki gibi server modda kurulum şeçilerek devam edilir. Daha sonra squil kullanıcı adı, snorby için isim standalone moddaki gibi email adresi seçimi, snort yada suricata şeçimi benzer şekilde yapılarak tüm seçenekler dökümanın önceki sayfalarında anlattığımız şekilde yapılandırılır ve tamamlanır. Bu kısımda sadece Security Onion bir server olarak yapılandırıldığı için network security monitoring araçları çalışmayacaktır. Snorby konsoldan girip test edebilirsiniz. Sensor modda kurulum yapana kadar hiçbir veri göremeyebilirsiniz. Server modda kurulumu tamamladıktan sonra artık sensor modda kurulum için Security Onion’u yapılandırmaya başlayabiliriz. Yine hızlıca kurulum için standalone modda kuruluma benzemektedir. Standalone modda iyi hakim olmanızda fayda var. 1. Öncelikle virtual box ayarları olsun diğer ayarlar olsun boot işlemine ve ilk boot işlemini başlanana kadar standalone modda ayarladığımız gibi yapılandırılır. Burada dikkat edilmesi gereken nokta virtual network adaptör ayarlarının fiziksel network’ünüze göre yapılandırılması gerektiğidir. 2. Gerekli boşluk ayrılır, bağlantılar, güncelleştirmeler kontrol edilir, üçüncü parti yazılımlar yükleme seçenekleri standalone moddaki gibi ayarlanır. 3. erase the disk to install SO → seçeneğine kadar devam edilir. 4. Daha sonra kulllanıcı adı, bilgisayar ismi ve şifre gibi diğer işlemler gerçekleştirilir. 5. aptget update; aptget upgrade; aptget distupgrade; komut işlemleri gerçekleştirilir. Ardından reboot işlemini gerçekleştirip server olarak yapılandırma işlmelerine geçebiliriz. 6. Yukarıdaki gibi uzun uzun komut çalıştırmak yerine soup komutu ile tüm bu işlemleri tek seferde tamamlayabiliriz. Bu işlemleri tamamladıktan sonra Security Oninon sensor modda kurulumu tamamlanmıştır. Geniş networkler için burada statik ip adresi kullanarak yapılandırılması gerekmektedir. Reboot ettikten sonra diğer yapılandırma aşamasına geçilerek devam edilir. Masaüstünde setup ikonuna basılarak login olunur. Yes continue seçeneği ile devam edilir. Bu aşamadan sonra yönetim amaçlı eth0 adresi seçilir. Statik ip adresi konfigürasyonu yapıldıktan sonra sniffing amaçlı ise eth1 adresi seçilir.
Değişiklikler kaydedilerek reboot işlemi yapılır. Sistem reboot işlemi yapılırken sensor modda konfigürasyon işlemleri devam etmektedir. Reboot işlemi tamamlandıktan sonra tekrar masaüstünde bulunan setup ikonuna tıklanarak diğer aşamalara geçilir. Başlangıçta network konfigürasyonlarını tamamladığımız için normal işlemler ile devam edilerek bir sonraki aşamaya geçilir.
Şekildeki gibi sensor modda seçim yapıldıktan sonra bir sonraki aşamaya geçilir. Bir sonraki aşamda bağlantı kurulacak ip adresini istemektedir. Şekildeki adres örenk bir ip adresi olup siz kendi makinanızın durumuna göre şekillendiriniz. Burada ip adresi olarak diğer sanal makinamda çalışan ubuntu server’ın ip adresini vereceğiz.
Bundan sonra ise squil server’a bağlanacak ssh kullancı ismi istemektedir.
Bu işlemide gerçekleştirdikten sonra monitoring yapılacak arayüzü sormaktadır. Bu noktadan itibaren sorulan sorulan standalone modda, server moddaki gibi olmakla birlikte bu işlemler aynı şekilde fiziksel makinanın durumuna göre yapılandırılarak sensor modda olması sağlanır. Şimdiye kadar olan kısımda temel yapılandırma işlemlerini anlatmıştık. Bundan sonra ise bir lab ortamı ile ssh brute force saldırısı, ddos saldırısını gerçekleştireceğiz. Öncelikle fiziksel lab ortamı için gerekli donanım aşağıdaki gibi olmalıdır. *** Ubuntu Server yada Desktop (512 Mb Ram yeterli yada 1 gb) *** Kali Linux herhangi güncel sürümü ( 2 GB ve üzeri Ram) *** Standalone modda yapılandırılmış Security Onion (4 GB ve üzeri Ram yeterli) *** Wmware 10.04 ya da güncel sürümü (Virtual Box ta kullanabilirsiniz.) Öncelikle lab ortamı gereklilikleri (en önemli olan kısım) Ubuntu için Wmnet0 nat olarak yapılandırılır. Daha sonra ifconfig eth0 promisc modu ile sniffing için aktif hale getirilir.
#ifconfig eth0 promisc
Aktif olduğu aşağıdaki gibi görebilirsiniz.
Ubuntu Yapılandırılmıştır. Şimdide kali linux’u yapılandıralım. VMnet0 da nat olarak yapılandırıldıktan sonra normal modda internete çıkmaktadır.
Şimdi ise security onion dağıtımının yapılandırılması işlemlerine geçelim. Burada standalone moddaki gibi yapılandırılır. eth0 mod sniffing amaçlı yapılandırılırken Wmnet8 management
amaçlı internet çıkması sağlanır. Standalone moddaki tüm konfigürasyon işlemlerinin buraya kadar tamamlanmış olması gerekmektedir.
Bu işlemlerden sonra üç fiziksel makinada teste başlamak için çalıştırılır. Test amaçlı üçününde internete çıktığından emin olmak ve modlarını kontrol ederek ping ve ifconfig komutlarını çalıştırarak test etmenizde fayda var. Bu ayarlar yapıldıktan sonra artık kali üzerindeki hydra aracı ile ssh brute force saldırısını şekildeki gibi başlatalım. Saldırını tespit edilip edilmediğini anlamak amacıyla secuirty onion üzerideki snorby’i ye login olmamız gereklidir.
Artık attackları yapmaya başlamıştır. Burada dikkat etmeniz gereken nokta ip adresi verirken Ubuntu server’ımızın ip adresini vermiş olmamız önemlidir.
Şekildeki gibi snorby üzeride ssh atağı ile ilgili uyarıyı görebilirsiniz. Kaynak ip bilgileri ve hedef ip bilgilerine dikkat ederseniz ubuntu ve kali linux ip adresleridir.
Yakalayan imza bilgileride şekildeki gibidir. Dökümanın başında belirttiğimiz gibi bir çok bilgiye ulaşmak mümkün.
Genel görünün itibari ile bu şekilde aşağıdaki diğer loglarda test amaçlı şöyle bir senaryo düşündük. Zararlı yazılımların tespit edildiği Dünya çapında açık kaynak siber istihbarat ağları
bulunmaktadır. MalwareDomainlist adlı sitede bunlardan bir tanesidir. Ubuntu Desktop arayüzde bu siteye girip zararlı ip adreslerine ulaşmaya çalıştığımızda bizi etkileyecek diğer zararlı loglar tespit edilmektedir.
Snorby’e farklı zararlılar barından sitelerden gelen atak türleride düşmektedir. Buradan network secuirty monitoring işlemlerinin başarılı bir şekilde devam ettiğini göstermektedir.
Şimdide ddos saldırınıs gerçekleştirelim. Snort’un yakaladığı logları snorby’de gözden geçirelim. Test için anonymous tarafından yazılan populer ddos aracını kullanıyoruz. Şekilde görüldüğü gibi Ubuntu dağıtmımızın ip adresini giriyoruz. Udp 53 Dns portu olarak ayarlıyoruz. Ardından işlemi başlatarak atak yapmaya başlıyoruz.
Kural bilgilerini snorby’den görmek mümkün.
Yaklaşık 5 dakika devam eden atak sonrası kritik seviye olarak ilgili dns kuralı logları şekildeki gibidir.
Ddos ve ssh brute force atağının dışında diğer log bilgileri malware domain list sitesinde ziyaret ettiğimiz zararlı sitelerden dolayıdır.
SshGuard İle Brute Force Saldırılarını Önleme 29
Küçük bir program olan sshguard servisleri izleyerek gelebilecek brute force saldırılarına karşı firewall kuralları ile birlikte bu saldırıları önler. Birden fazla servisin monitoring edilerek, farklı servisler ve dağıtımlar için kullanılabilmektedir. Log dosyası mesajlarına bakarak zararlı davranıştı bulunulan ip adresinin engellenmesinde görev almaktadır. Sadece ssh ataklarının önlenmesinde değil, farklı servislere görede yapılandırılabilmektedir. Bu servislerden bazıları: ** sshd ** sendmail ** dovecot ** exim ** cucipop ** vsftpd ** pureftpd ** proftpd ** FreeBsd ftpd ** Pop, İmap… ** Cyrus Atak imzaları:
6.6.6.0: Saldırgan(Mallory)
127.0.0.1 Bob’un local adresi
mario Sistemdeki bir kullanıcı
inexu Sistemde olmayan bir kullanıcı
XYZ Alakasız bir string Dipnot: Yukarıki kulllanıcılar için aşağıdaki tabloya bakınız!
29 Her Yönüyle LinuxSistem ve Network Güvenliği Ahmet HAN Free Ebook
Servis Tehlike Tehlike Mesajı
sshd default Invalid user inexu from 6.6.6.0
sshd default User mario from 6.6.6.0 not allowed because XYZ
sshd default Failed XYZ for XYZ from 6.6.6.0 port 14423 ssh2
sshd default error: PAM: authentication failure for mario from 6.6.6.0
sshd default
reverse mapping checking getaddrinfo for XYZ [6.6.6.0] XYZ POSSIBLE BREAKIN ATTEMPT!
sshd default Did not receive identification string from 6.6.6.0
sshd default Bad protocol version identification XYZ from 6.6.6.0
Cucipop default authentication failure XYZ 6.6.6.0
Exim default
XYZ auth_plaintext authenticator failed for XYZ [6.6.6.0]:14432 I=XYZ : 535 Incorrect authentication data (set_id=test)
Sendmail default Relaying denied. IP name lookup failed [6.6.6.0]
dovecot default imaplogin: Aborted login (auth failed, 6 attempts): XYZ rip=6.6.6.0, lip=127.0.0.1
UWimap default Login failed user=XYZ auth=XYZ host=XYZ [6.6.6.0]
Cyrus IMAP default badlogin: XYZ [6.6.6.0] XYZ SASL XYZ checkpass failed
FreeBSD ftpd default FTP LOGIN FAILED FROM 6.6.6.0, XYZ
ProFTPd default foo.com (foo.com [6.6.6.0]) XYZ no such user XYZ
PureFTPd default ([email protected]) [WARNING] Authentication failed for user XYZ
vsftpd default XYZ FAIL LOGIN: Client "6.6.6.0"
30
Kurulum:
# wget http://flexbox.sourceforge.net/centos/5/i386/sshguard1.52.el5.i386.rpm
# rpm ivh http://flexbox.sourceforge.net/centos/5/i386/sshguard1.52.el5.i386.rpm
İp tables kurallarını kullanarak, multiport kapsayan bir örnek yapalım!
# iptables N sshguard
# iptables A INPUT j sshguard
# iptables A INPUT m multiport p tcp destinationports 110,21,22 j sshguard
# service iptables save Kurallar kaydedikten sonra yukarıdaki portlar için sshguard çalışmaya hazırdır.
Saldırı Tespit Sistemleri [Suricata] 31
Bilgisayar güvenliği kullanılan saldırı tespit sistemleri, bilgisayar ve ağ faaliyetlerini izleme; sistemlere gerçekleşen sızma faaliyetlerini aramak için bu olayların analiz süreçlerini ifade eder. Saldırı tespit sistemleri genel olarak yerel ağdan veya dışarıdan gelecek tehditlere karşı, yapılan atakları ve tehditleri önlemeye karşı tasarlanmış sistemlerdir. Bu yazımızda temel olarak; yüksek performanslı ağ, IDS, IPS ve ağ güvenliği izleme motoru olan Suricata’nın kurulumu üzerine olacaktır. Bu yazıda Ubuntu işletim sistemi üzerinde kurulum anlatılmıştır. Diğer open source sistemler üzerine kurulumunu referanslar kısmından bulabilirsiniz.
30 http://www.sshguard.net/docs/reference/attacksignatures/ 31 Her Yönüyle LinuxSistem ve Network Güvenliği Ahmet HAN Free Ebook
Suricata açık kaynak ve kar amacı gütmeyen bir kurum olan Open Information Security Foundation(OISF), destekleyicileri ile birlikte geliştirilmiştir. Bilinen tehditler, politika ihlalleri ve kötü niyetli davranışlar üzerinde tam bir imza dili uygular. Ağ üzerindeki anomalileri de tespit edecektir. Kurulum: Öncelikle kuruluma başlamadan önce sistemde en yetkin kullanıcı yani root kullanıcı olunması gerekmektedir. Aşadaki komutla en yetkili kullanıcı olabilirsiniz. sudo su root Daha sonra kuruluma başlamadan önce sistemin inşa edilebilmesi için aşağıdaki komut çalıştırılmalıdır. sudo aptget y install libpcre3 libpcre3dbg libpcre3dev \ buildessential autoconf automake libtool libpcapdev libnet1dev \ libyaml02 libyamldev zlib1g zlib1gdev libcapngdev libcapng0 \ make libmagicdev Sisteminizin durumuna göre bu işlemin gerçekleştirilmesi biraz zaman alıcaktır. Debian ve FreeBsd sistemlerde Sudo komutunu kullanamazsınız bu yüzden htp kütüphanesi yüklenirken bazı hatalarla karşılaşabilirsiniz. Aşağıdaki komutları çalıştırarak konfigürasyon ayarlarını tamamlayabilirsiniz. wget http://www.openinfosecfoundation.org/download/libhtp0.2.3.tar.gz tar xzvf libhtp0.2.3.tar.gz cd libhtp0.2.3 ./configure make make install Suricata default olarak IPS olarak çalışmaktadır. Eğer Suricata’yı bir IPS ve IDS programı olarak çalıştırmak isterseniz aşağıdaki komutu çalıştırmanız gerekmektedir. sudo aptget y install libnetfilterqueuedev libnetfilterqueue1 libnfnetlinkdev libnfnetlink0 Yüklemeden önceki konfigurasyon ayarları tamamlandıktan sonra Suricata’yı yükklemek ve diğer ayarlara geçmek amacıyla aşağıdaki komut çalıştırılmalıdır.
wget http://www.openinfosecfoundation.org/download/suricata2.0.2.tar.gz tar xvzf suricata2.0.2.tar.gz cd suricata2.0.2 Suricata’yı bir IPS yeteneklerini kullanmak isterseniz aşağıdaki komut çalıştırılmalıdır. ./configure --enable-nfqueue --prefix=/usr --sysconfdir=/etc --localstatedir=/var ya da ./configure prefix=/usr sysconfdir=/etc localstatedir=/var Daha sonra yeni komutla devam edilmelidir. ./configure prefix=/usr sysconfdir=/etc localstatedir=/var make sudo make install sudo ldconfig Otomatik Kurulum : Eğer yukarıdaki gibi fazla komutla ve konfigürasyonla uğraşmak istemiyorsanız : Örneğin: ./configure && make && make installconf make installconf make install olarak yüklemek istersek, suricata.yaml dosyası için dizinlerin oluşturulması sağlanacaktır. ./configure && make && make installrules make installrules Emerging Threats dosyalarının otamatik indirilmesi ve make install için aşağıdaki komut çalıştırılmalıdır. ./configure && make && make installfull Son olarak make install full komutu ile otamatik kurulum tamamlanmış olur.
Basit Kurulum: Debian ya da FreeBsd sistemlerde kurulum gerçekleştirlirken bir çok faktörü manual olarak yapılandırmanız gerekmektedir. Öncelikle bir log dizin dosyası oluşturulmalıdır. sudo mkdir /var/log/suricata Daha sonra /etc dizini altında bir Suricata’ya ait bir dizin oluşturulmalıdır. sudo mkdir /etc/suricata Ardından bazı konfigürasyon dosyalarının düzenlenmesi için /etc/suricata dizininde aşağıdaki komutlar girilmelidir. Basit kurulum tamamlanmışıtır. sudo cp classification.config /etc/suricata sudo cp reference.config /etc/suricata sudo cp suricata.yaml /etc/suricata Basit kurulum tamamlanmışıtır.
Mysql Veritabanı İmport/Export İşlemleri 32
Linux && Unix sistemlerde sıklıkla kullanılan network security monitoring araçlarının çoğu sıklıkla mysql veri tabanını kullanmaktadır. Dolayısı ile bu yazımızda mysql veritabanı işlemlerinin linux komut satırında import/export işlemleri basit şekilde anlatılacaktır. Sizde farklı araçlar kullanırken bazı templete oluşturken vb gibi farklı işlemler yaparken pratik olarak kullanmaya özen gösteriniz. Export İşlemleri:
# mysqldump u kullanıcı_ismi p veritabanı_ismi > filename.sql İmport İşlemleri:
# mysqldump u kullanıcı_ismi p veritabanı_ismi < filename.sql
32 Her Yönüyle LinuxSistem ve Network Güvenliği Ahmet HAN Free Ebook
Linux’taki Yazılım Lisanslarının Değerlendirilmesi 33
Günümüzde yaşanan bilgi teknolojilerindeki güncel gelişmeler ve değişimler bir takım gereksinimleri beraberinde getirmektedir. Yazılımlar bir takım ihtiyaçlar doğrutusunda firmalar tarafından geliştirilmektedir. Bunlardan bazıları ücretli olmakla birlikte bazıları da yazılımların ücretsiz olmalarını savunan community(topluluklar) sayesinde ücretsiz dağıtılmaktadır. Linux dağıtımları ve bazı ücretsiz open source(açık kaynak) yazılımlar bu şekilde dağıtılmaktadır. Açık kaynak kodlu veya ücretsiz dağıtılması bir takım lisanslar ile sağlanmaktadır. Ücretsiz olanlarının bazıları değerlendirme amaçlı trial sürümler olması veya bir süre sonra tam sürüm için premium kullanıma geçmesini isteyebilmektedir. Bazı firmalar ise ticari sürümlerini satmakta, bazıları ise bireysel kullanımlar için ücretsiz dağıtmaktadır. Farklı bir örnek vericek olursak, Security Onion adlı dağıtım içersinde snort, suricata ve daha fazlası gibi araçları bulundurmaktadır. Dışarıdan gelen saldırıların tespit edilmesinde belirli bir yere kadar belirlenmiş saldırıları tespit edebilmekte daha fazlası için premium kuralları satın almanız gerekmektedir. Bu yazımızda linux’taki yazılım lisanslarından bazılarına değinilecektir.
BSD Lisansı:
Yazılım üzerinde hiç bir kısıtlama ve sınırlama olmaksızın istediğiniz gibi kullanabilirsiniz. İstediğiniz gibi geliştirip kodları kapatarak ticari ürünler sunabilirsiniz. Örneğin; Network güvenli konusunda ve diğer sistem tarafında bazı firmalar freebsd tcp/ip kodlarını kullanarak ticari ürünler çıkarmaktadır.
GNU Free Documentation License (FDL):
Özgür yazılım vakfı tarafından tasarlanmıştır. Eğitim amaçlı olarak kullanılabilir. Kopyalanıp çoğaltılabilir. Ama ön tanımlı olarak dökümanların değitirilmemesi gerekir. Birden fazla kopya
33 Her Yönüyle LinuxSistem ve Network Güvenliği Ahmet HAN Free Ebook
üretilcekse eğer ilerisi için lisansın ilerleyen zamanlarda değiştirilebilir şekilde olması gerekmektedir.
GNU General Public License (GPL):
Bir çok yerde kullanılan özgür yazılım lisansıdır. Richard Stalmann tarafından yazılmış olup günümüzde kullanılan milyonlarca yazılım bu lisansı kullanmaktadır. Kullanım olarak avantajlıdır. Ücretli olup olmaması kullanıcıların istediğine bağlı kalmıştır. İsterse bir firma geliştirdiği ürün için ücret talep edebilir. Copyleft yazılım türlerinde çok kullanılmaktadır. Bu kavram bir yazılımı geliştirilmiş tüm ürün özellikleri ile birlikte kullanmak anlamına da gelmektedir. Zaten mantıklı olanda budur.
GNU Lesser General Public License (LGPL):
Farklı versiyonları bulunmaktadır. Genellikle kütüphaneler ile kullanılmaktadır. Kapalı kodlara sahip yazılımlarda kullanmak isterseniz o kısımları lgpl ile lisanslamanız gerekmektedir. Gpl’e göre avantajlı olması glp bir yazılımın tümünün gpl kodlanmasını şart koşmaktadır. Bu noktada daha az kapsamlı olabilmektedir. Gerektiği yerlerde kullanılması mantıklı olandır.
MIT/X Consortium License:
Mit üniversitesi tarafından dağtılmakla birlikte ön tanımlı şartlara uymak koşulu ile istediğimiz gibi koplayabilir, geliştirebilir kullanabiliriz.
Mozilla Public License (MPL):
Mozilla foundation tarafından dağıtılan ücretsiz, açık kaynak olarak dağıtılmaktadır. Mozilla ile kullanım yaparak bir yazılım geliştirmek isterseniz kaynak kodu ve lisans sözleşmesine uymanız gerekerek geliştirme yapabilirsiniz. 34
Open Software License: Ücretsiz ve açık kaynak dağıtılmakla birlikte kullanıcıya istediği gibi alıp kullanıp geliştirme değiştirebilme imkanı sunan lisans şeklidir. Dağıtılan farklı lisans türleri bknz. 35
Freeware:
34 https://www.mozilla.org/MPL/licensepolicy.html 35 http://opensource.org/licenses
Kullanıcıların belirli bir süre sonra ücret ödemelerini gerektirmeyen sınırsız kullanım imkanı tanıyan yazılımların kullanmış oldukları dağıtım lisanslarına verilen genel isim. 36
Shareware: Bazı yazılımların tanıtım ve kısıtlı imkanlar dahilinde sunduğu paylaşımlara verilen genel isim olmakla bir çok ticari ürünün sunum şekli denilebilir. Örneğin 20 gün sonra sizden bir ürün anahtarı isteyebilmektedir. Son zamanlarda global olarak belirli yer edinmiş firmalar, parasal güce sahip, bazı open source yazılım dağıtımı yapan firmalar da ticari potansiyel gördükleri zaman bu firmaları satın alabilmektedirler. Örneğin Sourcefire firmasını Cisco’nun satın alması gibi. Daha sonra ticari 37
ürünler bazında sourcefire ürünleri üzerinden satış yapması gibi. Open source bir ürün geliştirmek istiyorsanız kişisel olarak fikrim BSD lisansı olması yönünde. Çünkü open source’da olsa ticari para kazanmanız gerekebilir. Para kazanmalısınız ki ürün desteği verebilesiniz. Tüm bunları yaparken de tekerleği yeniden icat etmeye gerek yok. Oturup yeniden bir dağıtım kodlamak yerine belirli bir dağıtımı alıp geliştirip ticari ürün sunacaksanız eğer kapatıp bu ürünü globalde satmak. Çoğu linux projesi özellikle son zamanlardaki girişimler bu yönde. String Sql İnjection Zafiyeti İstismarı Son yıllarda gerçekleştirilen hedef odaklı saldırılara bakıldığı zaman Apt saldırıları, zararlı yazılımlar ve bu konuda gerçekleştirilen siber casusluk faaliyetleri olsa da her yıl owasp topluluğunun yayımlamış olduğu top 10 atak listesinde Sql İnjection saldırıları ilk sıralarda yerini korumaktadır. Tüm Dünya’da web uygulama güvenliği üzerine çalışmalar yürüten Owasp topluluğu her yıl gerçekleşmiş olan atak vektörlerini aşağıdaki sayfada belirtilen şekildeki gibi ifade etmektedir. Sql injection zafiyetine bakıcak olursak buda durumun ciddiyetini göstermektedir. Sql İnjection Nedir? SQL Injection dünya üzerinde en çok ilgi gören Web Uygulama güvenlik zaafiyetidir. Sitelerdeki SQL veritabanına odaklı bir saldırı çeşididir. SQL veritabanının çalıştıracağı SQL komutlarıyla, SQL Injection zaafiyeti bulunan bir sitedeki veri geçişini kullanarak kendi çıkarlarımız doğrultusunda hedef alınan veriyi çalmak için kullanılabilmektedir. 38
36 http://www.cahilig.net/2011/07/29/100bestfreeandhighqualitylinuxgames 37 http://www.cisco.com/web/about/ac49/ac0/ac1/ac259/sourcefire.html 38 http://koraay.com/webguvenlikaciklarisqlinjection/
Sql İnjection Nasıl Yapılır? Sql injection yapılabilmesi için öncelikle bir yerde ilgili zafiyetin tespit edilmesi gerekir. Bu noktada temel sql komutları bilmek önemlidir. Daha sonra bilinen açık hangi atak vektörüne ait onun iyi anlaşılması gerekir. Buna da karar verildikten sonra istismarın manuel mi yoksa herhangi bir otamatize araç kullanarak mı gerçekleştirilecek soruları önemlidir. Bundan sonra zafiyetin istismarı gerçekleştirilmeye başlanır. Sql İnjection Türleri Sql injection türleri farklı veri tabanı türleri için özelleşebilmiş olabilir. Farklı veritabanlarında farklı sorgular çalıştırılabilir. Bu konuda Sql injectionWiki sayfasından ulaşabilirsiniz.
39
Bu makalemizde Owasp tarafından hacking ve bu zafiyetlerin öğrenilmesi için hazırlanmış Webgoat uygulaması üzerinde String Sql İnjection Zafiyetin İstismarı anlatılacaktır. Öncelikle referanslar kısmında belirtilen Windows üzerine Webgoat kurulum işlemlerini belirtilen adreste
39 http://www.troyhunt.com/2010/05/owasptop10fornetdeveloperspart2.html WhiteHatSecurityTopTenAttacksVectors
adım adım kurmanız gerekmektedir. Kurulum ve yapılandırma işlemleri tamamlandıktan sonra zafiyetin istismarını artık kendi labımızda gerçekleştirebiliriz. 40
Web Goat Nedir? Webgoat, web siteleri için siber güvenliği konu alan bir web uygulamasıdır. J2EE(Java 2 Enterprise Edition) temelli geliştirilmiş sürümü bulunduğu gibi ASP.NET temelli geliştirilmiş sürümü de bulunmaktadır. Java dili ile hazırlanmış Webgoat sürümü platform bağımsızlığına sahipken yani windows dışında linux, mac osx işletim sistemlerinde de çalışabiliyorken ASP.NET ile hazırlanmış Webgoat sürümü tahmin edebileceği gibi yalnızca Windows platformu üzerinde çalışabilmektedir. 41
Kurulum aşamaları tamamlandıktan sonra kullanılan web tarayıcısına link şu şekilde girilmelidir. http://localhost:8080/WebGoat/attack Daha sonra admin=webgoat password=webgoat olarakta girilmelidir. Bu işlemleri de tamamladıktan sonra webgoat test ortamımız şekildeki gibi hazırdır. String Sql İnjection Zafiyetinin Gerçekleştirilmesi Örneği
40 http://www.includekarabuk.com/kategoriler/webgoatuygulamasi/WindowsaWebgoatKurulumu.php Windows_Üzerine_Web_Goat_Kurulumu 41 http://www.includekarabuk.com/kategoriler/webgoatuygulamasi/WebgoatNedir.php Webgoat Nedir?
İlk olarak burada bulunan menüde sol tarafta injection flaws seçeneklerine gidilir.
Daha sonra açılan alt menüde String Sql İnjection Zafiyetinin bulunduğu kısım işaretlenir. Açılan pencere şekildeki gibidir. Sql veri tabanı sorgu dilinde select *from tablo_adi veritabanından sorguların çekilmesini sağlamaktadır. Buradaki where ifadesi ise verileri sınırlamakta kullanılmaktadır. Bir nevi filtre görevi görmek içim kullanılmaktadır. Burada ise isim ifadesinin girileceği alanda veritabanı sorgu ifadesi ekrada görülebilmektedir.
Normal bir kullanıcı olan Smith adı girildiğinde normal sorgu şekildeki gibi çalışmaktadır.
Ardından string sql injectionu gerçekleştirebilmek için Smith' or 1=1 sorgusunu çalıştıralım ve sonuçlar şekilde gibidir ve veritabanında bulunan diğer kullanıcı bilgileri de listelenmektedir.
String sql injection burada başarı ile gerçeklenmiştir. Diğer kişilerin bilgileride şekildeki gibi gelmiştir. Blind String Sql İnjection, Blind Numeric Sql İnjection, Bypass login panel authentication gibi farklı İnjection Flaw türleri bulunmaktadır. Sonuç: Makalenin başında da belirttiğimiz gibi son zamanlarda gerçekleşen sql injection zafiyeti ile çok sayıda hedef alınmış saldırılar gerçekleştirilmiştir. Bu tür saldırıları önlemenin kesin bir yolu olmamakla birlikte, aşağıda verilen temel parametreleri kullanarak güvenlik önlemleri artırılabilir. Uygulamayı geliştirecek developerların güvenli kod geliştirme sikillleri kazanması, bu konu ile ilgili beyaz sapkalı hacker eğitimi, güvenli kod geliştirme eğitimlerine katılmaları, yazacakları kodu owasp gibi community’lerin oluşturduğu belirli standartların uygulanarak güvenlik önlemleri arttırılabilir.
GET ya da POST ile yollanan verileri doğrulamak
Gönderilen verileri filtrelemek
SQL Parametresi kullanmak (Prepare yapmak)
Kullanıcı yetkilerini kısıtlamak
Stored prosedrüler kullanmak, Güvenliği test etmek, gözden geçirmek, önemli verileri encrypt etmek
Referanslar: http://wiki.centos.org/HowTos/Network/IPTables http://www.koraykey.com/?p=3642 http://www.thegeekstuff.com/2011/06/iptablesrulesexamples/ http://tr.wikipedia.org/wiki/SSH https://docs.docker.com/installation/ubuntulinux/ http://securityonion.blogspot.com
http://code.google.com/p/securityonion/wiki/Installaon http://code.google.com/p/securityonion/wiki/FAQ http://groups.google.com/group/securityonion http://www.youtube.com/watch?v=975NH3xrno&list=PLWAHiM_DqJ6EoN3vdaY_5jXpvvVmjMdE http://www.virtualbox.org/manual/ch06.html#network_bridged. http://ptcoresec.eu/tutorialhowtoinstallandusesecurityonionpt1/ http://santoshdudhade.blogspot.com.tr/2013/01/securityonion1204networksecurity.html http://www.deepimpact.io/blog/installingsecurityoniononvirtualbox http://www.amazon.com/PracticeNetworkSecurityMonitoringUnderstanding/dp/1593275099/ref=sr_1_1?ie=UTF8&qid=1408988453&sr=81&keywords=practice+of+network+security+monitoring http://www.amazon.com/AppliedNetworkSecurityMonitoringCollection/dp/0124172083/ref=sr_1_4?ie=UTF8&qid=1408988453&sr=84&keywords=practice+of+network+security+monitoring http://blog.securityonion.net/2011/04/securityonion20110321distributed.html http://www.noah.org/wiki/Packet_sniffing#tcptrack http://www.youtube.com/watch?v=6eOg9Frg2Q0&index=3&list=PLWAHiM_DqJ6EoN3vdaY_5jXpvvVmjMdE https://evilzone.org/tutorials/hydrasshbruteforceattack/ http://www.youtube.com/results?q=vmware+snort+lab+environment+vmware http://hackertarget.com/bruteforcingpasswordswithncrackhydraandmedusa/