OSSEC (HIDS) Kurulumu ve Yapılandırması
Warning: mysqli_query(): (HY000/3): Error writing file '/tmp/MY1ROFrv' (Errcode: 28 - No space left on device) in /usr/share/nginx/html/syslogs/wp-includes/class-wpdb.php on line 2349
Bu makaleyi, linux Akademi blog'unda Ossec (HIDS ) Kurulumu ve Yapılandırması ismi ile yayınlamıştım; şimdi Syslogs üzerinden de yayınlıyorum.
Özellikle dağıtık yapılarda, sunucu güvenliği konusunda süreklilik sağlamak en önemli noktalardan birisidir. Zira, tüm sistemlerin bir şekilde izlenmesi ve olası anormalliklerin hemen tespit edilip müdahale edilmesi proaktif sistem yönetiminin başlıca kurallarından birisidir. Bu noktada network trafiğini izleyerek saldırı tespiti yapmanın yanı sıra her bir sunucu/cihaz üzerinde de bir HIDS (host-based intrusion detection) uygulaması kullanarak log monitoring, dosya bütünlük kontrolü ve rootkit tespiti gibi genel işlemler gerçekleştirilmelidir.
İşte bu yazıda, bahsedilen bu ihtiyacı karşılamak üzere ossec isimli HIDS uygulamasından bahsedip, server/client mimarisi ile kurulumunu ve yapılandırmasını anlatacağım.
ossec NEDİR?
ossec, Trend Micro tarafından desteklenen, tamamen açık kaynak kodlu, standalone çalışabildiği gibi, agent/master yapısı ile merkezi yönetim de sağlayabilen bir host-based saldırı tespit sistemidir. Temel olarak log analizi, dosya bütünlük kontrolü, rootkit tespiti, gerçek zamanlı alarm üretme ve tespit edilen saldırılara karşılık active response özelliği ile aksiyonlar alma gibi görevleri yerine getiren OSSEC, hali hazırda kullanılan SIM/SIEM platformları ile de entegre edilebilmektedir.
OSSEC, native olarak tüm *nix ( linux, MacOS, Solaris, HP-UX, AIX, Vmware ESX) ve Windows platformlarda çalışabilmekte, agentless modu sayesinde de router, switch gibi network cihazlarını da monitor edebilmektedir.
TEMEL ÖZELLİKLERİ
OSSEC, yukarıda temel olarak bahsettiğim şu görevleri yerine getirmektedir:
Dosya Bütünlük Kontrolü
File Integrity Checking ya da File Integrity Monitoring (FIM) olarak adlandırılan bu işlem, temel olarak sistemde şu ya da bu şekilde değişikliğe uğrayan dosyaların tespit edilmesi ve bu değişikliklerin sistem yöneticisine bildirilmesini hedeflemektedir.
Sisteminize sızmaya çalışan her tür atağın ortak özelliğinin sistem üzerinde bir takım dosyaları değiştirmek ya da sisteme bir takım dosyalar eklemek olduğu düşünülürse, HIDS'ler için dosya bütünlük kontrolü en önemli bileşenlerden birisidir ve sistemlerinizdeki değişiklikleri oldukları an tespit etmek büyük öneme sahiptir.
Log Monitoring
Meydana gelen değişikliklerin tespit edilmesi üzere kontrolü gereken bir diğer nokta ise log dosyalarıdır. OSSEC bu amaca yönelik olarak sistem loglarını izleyip analiz eder ve herhangi bir problem tespit edilmesi halinde alarm üreterek sistem yöneticisini bilgilendirir. Örnek olarak sisteme bir paket kurulduğu zaman ya da web sunucusuna ait loglara bir sızma girişimini işaret eden satırlar düşmeye başladığı zaman alarm üretilir ve durumun farkında olmanız sağlanır.
Rootkit Detection
OSSEC'in bir diğer görevi de sistemlerde periyodik olarak rootkit taraması yapmaktır. Bu şekilde sunucuların herhangi birinde bir rootkit, trojan ya da virus'ün varlığı anında tespit edilir ve bildirilir.
Active Response
OSSEC'in aktive response özelliği sistemde oluşan bir problem için otomatik aksiyonlar almak üzere kullanılmaktadır. Örneğin web sunucunuzu tarayan bir saldırgan'ı, web loglarından tespit edip saldırgan'ın ip adresinin firewall üzerinden bloklanması OSSEC'in active response özelliği ile mümkündür.
OSSEC BİLEŞENLERİ
OSSEC birden fazla bileşen içeren bir yapıdan oluşmaktadır:
Manager
Manager, OSSEC'in temel bileşeni olup görevi tüm yapıyı monitor etmek ve uzak hostlardan aldığı bilgileri -ki bu konunun detayına aşağıda değineceğim- analiz etmektir.
Ossec Server da denilen Manager tüm sistemler için merkezi noktadır. Bu noktada dosya bütünlük kontrolü database'leri, loglar, olaylar (events) ve system auditing girdileri bulunmaktadır. Ayrıca, agentların -tercihen yapılandırma dosyaları-, kurallar ve decoderlar Manager'da tutulmaktadır. Bu şekilde çok fazla sayıda sistemden oluşan networkler merkezi olarak kolayca yönetilebilmektedirler.
Agent
Agent, monitor edilmesini istediğimiz her sisteme kurduğumuz küçün Ossec programının adıdır. Göveri, kurulu olduğu sisteme ait bilgileri toplamak ve analiz edilmesi için Manager'a göndermektir. Bu uygulaması çok küçük bir memory ve CPU footprint'ine sahip olduğundan dolayı sisteme ekstra yük bindirmez.
Agent'lar kurulum sırasında oluşturulan düşük yetkili kullanıcı tarafından, chroot ortamda ana sistemden izole edilmiş bir şekilde çalıştırılır. Ayrıca, agent ile ilgili yapılandırmanın hemen hemen hepsi Manager tarafında tutulabilmekte ve agent'in bulunduğu host üzerinde yapılandırmanın sadece bir kısmınun bulunması sağlanabilmektedir. Zaten bu özelliklerden hariç olarak lokaldeki herhangi bir yapılandırma dosyası değiştirilirse Manager alarm üretip sistem yöneticisini uyaracaktır.
Agentless
Agentless modu, üzerine agent kuramayacağımız her türlü sistemi monitor etmek için kullanılan mode'dur. Agentless monitoring özellikle firewall, switch, router gibi network cihazlarının ya da üzerinde agent kurma yetkinizin olmadığı *nix sistemlerin izlenmesi ve dosya bütünlük kontrollerinin yapılması için idealdir.
Virtualization/Vmware
OSSEC agent'i VMWare ESX hostlara kurulabilmektedir. Bu şekilde sanallaştırma altyapıları OSSEC üzerinden monitor edilebilir ve örneğin guest'lerin kurulumu, başlatılması, kaldırılması gibi işlemler takip edilerek belirlenen koşullar için alarmlar ürettirilebilmektedir. Ayrıca, ESX hostların logları da izlenebilmekte, login, logout ve error durumları izlenebilmekte ve güvenlik açısından dikkat edilmesi gereken ESX özelliklerinin aktif hale gelmesi durumunda alarm üretilmesi sağlanabilmektedir.
Syslogs Üzerinden Monitoring
Ossec uzak sistemlerden syslog üzerinden iletilen logları alarak analiz edebilmektedir. Aktif network cihazlarının loglarının analiz edilmesi için ideal olan bu yöntem ile tüm Cisco ve Juniper router'ları, Cisco PIX, Cisco FWSM, Cisco ASA, Netscreen firewall, Checkpoint gibi sistemler izlemeye alınabilmektedir.
OSSEC MİMARİSİ
Ossec'in çalışma prensibini açıklamak üzere aşağıdaki şekilde güzel bir çizim bulunmakta:
Şekilde görüldüğü üzere merkezde Ossec Server bulunuyor ve Agent'lardan ya da syslog üzerinden alınan bilgiye göre alarmlar üretilerek yönetici bilgilendiriliyor ya da active response ile oluşan durumlara göre aksyon alınıyor. Ayrıca yapılandırmalar da manager tarafından push edilebiliyor.
KURULUM ve YAPILANDIRMA
Ben kurulumları Master/Agent modunda olmak üzere iki adet CentOS 6.5 kullanarak yapacağım. Ancak kurulum yönergeleri her dağıtım için hemen hemen aynı olduğundan siz kendi tercih ettiğiniz bir dağıtımı kullanabilirisiniz. (Farklılık gösteren yönergeleri ayrıca bildireceğim.)
Gereksinimler
OSSEC gcc, libc ve OpenSSL paketlerine ihtiyaç duyuyor ki bu paketler genellikle default kurulumlarda gelmektedir. Bunlar dışında:
Debian/Ubuntu
Debian tabanlı sistemlerde build-essential paketinin yüklü olması gerekmektedir:
# apt-get install build-essential
ve ayrıca Ossec'i database desteği ile kullanacaksanız mysql-dev ya da postgresql-dev paketlerinden birisi yüklü olmalıdır.
Ben kurulumu mysql destekli olarak yapacağım için mysql-dev paketini kuruyorum:
# apt-get install mysql-server mysql-dev
RHEL/CentOS
RHEL ve CentOS sistemlerde, sistemi minimal kurmadıysanız mysql paketleri hariç diğer gerekli olan herşey kurulu gelecektir. Ancak miminal bir sisteminiz varsa “Development tools” grubunu yükleyebilirsiniz:
# yum groupinstall "Development tools"
Ayrıca, Ossec'i mysql destekli kuracağımız için mysql ile ilgili paketleri de kuruyoruz:
# yum install mysql-server mysql-devel # chkconfig mysqld on # service mysqld start
Şimdi de mysql_secure_installation aracını kullanarak MySQL'i güvenli bir hale getirelim:
# mysql_secure_installation
Yönergeleri takip ettikten sonra root kullanıcısı için bir şifre tanımlamış ve diğer güvenlik önlemlerini almış oluyoruz.
IPTables
Ossec Server agentları ile udp 1514. porttan konuştuğu ve opsiyonel olarak syslog üzerinden log almak istemeniz durumunda udp 514. portu kullandığı için sisteminizde iptables devrede ise bu iki porta kendi networkünüzden izin vermeniz gerekir.
Bu iş için iptables'ın INPUT zincirine aşağıdakine benzer bir tanımlama ekleyebilirsiniz:
-A INPUT -p udp --dport 514 -s 10.0.0.0/16 -j ACCEPT -A INPUT -p udp --dport 1514 -s 10.0.0.0/16 -j ACCEPT
Bu örnekte 10.0.0.0/16 networkünden upd 1514 ve 514 için izin verilmektedir.
Manager / Agent Mode Kurulumu
Bu aşamda öncelikle Ossec Server (Manager) kurulumu yapacağız.
İlk işlem Ossec paketinin download edilmesidir. Şu anki son Ossec sürümü 2.7.1 olsa da download etmeden önce yeni bir sürüm çıkıp çıkmadığını http://www.ossec.net/?page_id=19 adresinden kontrol etmeyi ihmal etmeyin.
Şimdi hem ossec paketini hem de indirdiğimiz paketi doğrulamak için kullanacağımız checksum dosyasını indirelim:
# wget http://www.ossec.net/files/ossec-hids-2.7.1.tar.gz # wget http://www.ossec.net/files/ossec-hids-2.7.1-checksum.txt
ve hem md5 hem de sha1 hashlerini kontrol edelim:
# cat ossec-hids-2.7.1-checksum.txt MD5(ossec-hids-2.7.1.tar.gz)= b0a9268e9dfc0ca4c31a3c8df4d17a9e SHA1(ossec-hids-2.7.1.tar.gz)= fb82bf984ddb77399be20ab9d2181a8b7ebccac3 # md5sum ossec-hids-2.7.1.tar.gz b0a9268e9dfc0ca4c31a3c8df4d17a9e ossec-hids-2.7.1.tar.gz # sha1sum ossec-hids-2.7.1.tar.gz fb82bf984ddb77399be20ab9d2181a8b7ebccac3 ossec-hids-2.7.1.tar.gz
Doğrulama işleminin ardından Ossec Server kurulumunu başlatacağız. Kurulum install.sh scripti üzerinden gerçekleştirildiği için süreç oldukça kolaydır.
Download ettiğimiz paketi açıyoruz:
# tar xvfz ossec-hids-2.7.1.tar.gz
Normalde ossec dizini içerisindeki install.sh scriptini çalıştırıp yönergeleri takip etmek kurulum için yeterli ancak biz MySQL destekli kurulum yapacağımız için öncesinde Ossec'in db desteğini etkinleştiriyoruz:
# cd ossec-hids-2.7.1 # cd src; make setdb
Sonrasında src dizininden bir üst dizine çıkıyoruz ve normal bir şekilde install.sh üzerinden kurulumu başlatıyoruz:
# cd .. # bash install.sh
Bu komutu verdiğiniz zaman ilk olarak kurulumu hangi dilde yapmak istediğimizi soran çıktı gelecektir: Türkçe de seçebilirsiniz ancak ben uygulamanın kendi diline sadık kalmayı tercih ederek “en” diyerek devam ediyorum:
** Para instalação em português, escolha [br]. ** 要使用中文进行安装, 请选择 [cn]. ** Fur eine deutsche installation wohlen Sie [de]. ** Για εγκατάσταση στα Ελληνικά, επιλέξτε [el]. ** For installation in English, choose [en]. ** Para instalar en Español , eliga [es]. ** Pour une installation en français, choisissez [fr] ** A Magyar nyelvű telepítéshez válassza [hu]. ** Per l'installazione in Italiano, scegli [it]. ** 日本語でインストールします.選択して下さい.[jp]. ** Voor installatie in het Nederlands, kies [nl]. ** Aby instalować w języku Polskim, wybierz [pl]. ** Для инструкций по установке на русском ,введите [ru]. ** Za instalaciju na srpskom, izaberi [sr]. ** Türkçe kurulum için seçin [tr]. (en/br/cn/de/el/es/fr/hu/it/jp/nl/pl/ru/sr/tr) [en]: en
Dili seçtikten sonra aşağıdaki karşılama ekranı gelecektir. Bu ekranda ENTER ile devam ediyoruz.
OSSEC HIDS v2.7.1 Installation Script - http://www.ossec.net You are about to start the installation process of the OSSEC HIDS. You must have a C compiler pre-installed in your system. If you have any questions or comments, please send an e-mail to [email protected](or [email protected]). - System: linux CromLab-OssecManager 2.6.32-431.11.2.el6.x86_64 - User: root - Host: CromLab-OssecManager -- Press ENTER to continue or Ctrl-C to abort. --
Ardından ne tip bir kurulum yapmak istediğimizi soran aşağıdaki çıktı görüntülenecektir. Biz server kurulumu yaptığımız için burada “server” yazıp enter ile devam ediyoruz:
1- What kind of installation do you want (server, agent, local, hybrid or help)? server
Ardından, Ossec'in nereye kurulmasını istediğinizi soran aşağıdaki ekran gelecektir. Burayı default olarak bırakalım, bu yüzden “ENTER” ile devam ediyoruz:
2- Setting up the installation environment. - Choose where to install the OSSEC HIDS [/var/ossec]:
Üçüncü bölüm HIDS yapılandırmaları ile ilgili bölümdür ve ilk olarak aşağıdaki ekran çıktısı ile uyarıları email olarak alıp almak istemediğimiz sorulacaktır. Bu kısımda “y” ile email notification özelliğini devreye alalım; emaillerin gönderilmesini istediğimiz posta adresini ve posta sunucumuzun ip adresini girelim. Bu noktada posta sunucusu olarak relay izniniz olan bir sunucu kullanabilir ya da localhost üzerinden gönderilmesini sağlayabilirsiniz.
3- Configuring the OSSEC HIDS. 3.1- Do you want e-mail notification? (y/n) [y]: y - What's your e-mail address? [email protected] - What's your SMTP server ip/host? 127.0.0.1
Bir sonraki tanımlama aşağıdaki çıktıda görüldüğü gibi dosya bütünlük kontrolünü devreye almak isteyip istemediğimizi soran bölümdür ki burada “y“ diyerek bu özelliği aktif ediyoruz.
3.2- Do you want to run the integrity check daemon? (y/n) [y]: y - Running syscheck (integrity check daemon).
Ardından, benzer şekilde rootkit detection özelliğini aktifleştirmek isteyip istemediğimiz sorulur; buna da “y” diyoruz.
3.3- Do you want to run the rootkit detection engine? (y/n) [y]: y - Running rootcheck (rootkit detection).
Bir sonraki aşama active response özelliğini kullanmak isteyip istemediğimizi sorar. Bu konu gelişmiş ve hata durumunda problemlere neden olabilecek bir konu olduğu için bu yazıda devreye almayacağız (Bu konuya ayrı bir makale ile değineceğim). Bu nedenle “n” diyelim.
3.4- Active response allows you to execute a specific
command based on the events received. For example,
you can block an IP address or disable access for
a specific user.
More information at:
http://www.ossec.net/en/manual.html#active-response
- Do you want to enable active response? (y/n) [y]: n
Bir sonraki tanımlama uzak sistemlerden syslog üzerinden log alıp almak istemediğimiz sorar. Bu özelliği “y” diyerek aktif hale getiriyoruz:
3.5- Do you want to enable remote syslog (port 514 udp)? (y/n) [y]: - Remote syslog enabled
Son çıktı ise aşağıda görüldüğü gibi hangi logların analiz edileceğini belirten ve “ENTER” ile devam edeceğimiz kısımdır.
3.6- Setting the configuration to analyze the following logs: -- /var/log/messages -- /var/log/secure -- /var/log/maillog - If you want to monitor any other file, just change the ossec.conf and add a new localfile entry. Any questions about the configuration can be answered by visiting us online at http://www.ossec.net . --- Press ENTER to continue ---
Bundan sonra kurulum işlemine başlanacaktır ve tamamlandıktan sonra aşağıdaki bilgi ekranı görüntülenecektir.
- System is Redhat Linux. - Init script modified to start OSSEC HIDS during boot. - Configuration finished properly. - To start OSSEC HIDS: /var/ossec/bin/ossec-control start - To stop OSSEC HIDS: /var/ossec/bin/ossec-control stop - The configuration can be viewed or modified at /var/ossec/etc/ossec.conf Thanks for using the OSSEC HIDS. If you have any question, suggestion or if you find any bug, contact us at [email protected]or using our public maillist at [email protected]( http://www.ossec.net/main/support/ ). More information can be found at http://www.ossec.net
Normalde bu aşamada kurulum tamamlanmış oluyor, ancak biz agentlardan gelen alarmları ve tüm bilgileri MySQL db'sinde tutmak istediğimiz için Ossec'i bu yönde yapılandırmamız gerekiyor.
Bunun için önelikle MySQL'de ossec için bir db oluşturacağız ve bir user/pass belirleyeceğiz. Bu iş için mysql sunucusuna bağlanın:
# mysql -u root -p
ve db ve kullanıcı oluşturma işlemlerini “kırmızı renkli alanları kendinize göre düzenledikten sonra” gerçekleştirin:
mysql> create database ossec; mysql> grant INSERT,SELECT,UPDATE,CREATE,DELETE,EXECUTE on ossec.* to ossecuser@<ossec-ip>; mysql> set password for ossecuser@<ossec-ip>=PASSWORD('ossecpass'); mysql> flush privileges; mysql> quit
Şimdi oluşturduğumuz db'yi ossec kaynak kodlarının bulunduğu dizindeki “src/os_dbd” dizini içerisinde bulunan mysql.schema dosyasını kullanarak populate edeceğiz:
# cd ~/ossec-hids-2.7.1/src/os_dbd # mysql -u root -p ossec < mysql.schema
Böylece ilgili db'de gerekli tablolar oluşturulmuş olacaktır.
Şimdi, Ossec'in ana yapılandırma dosyasına db'ye nasıl bağlanacağını bildiren tanım satırlarını ekleyeceğiz. Conf dosyasını editleyelim:
# vi /var/ossec/etc/ossec.conf
ve en üstteki global bölümünün bittiği yerin hemen altına aşağıdaki ibareleri “db ve user bilgilerini kendimize göre düzenledikten sonra” ekleyelim.
<database_output> <hostname>server-ip</hostname> <username>ossecuser</username> <password>ossecpass</password> <database>ossec</database> <type>mysql</type> </database_output>
Son olarak Ossec'in db desteğini etkinleştiriyoruz:
# /var/ossec/bin/ossec-control enable database
Bu şekilde kurulum tamamlanmış oluyor. Şimdi Ossec'i startup'e ekleyip servisi başlatacağız:
# chkconfig ossec on # /var/ossec/bin/ossec-control restart
Herşey yolunda gittiyse servis normal bir şekilde çalışıyor olmalıdır. Bu aşamada, Ossec Server kurulumu tamamlanmış oluyor ve Ossec kendi localhost'unu monitor etmeye başlıyor.
Örnek olarak sisteme bir user eklerseniz, bununla ilgili bilgiler hem db'ye yazılacak hem de size bir email olarak bildirilecektir. (Yapılandırmada email ayarlarınızı düzgün yaptığınıza emin olun.)
DB'de tüm loglar data tablosuna yazılmaktadır. Kontrol etmek için ilgili tabloyu sorgulayabilirsiniz:
# mysql -u root -p -e 'use ossec; select * from data;'
Herşey yolunda gittiyse çıktı olarak, Ossec'in başlatıldığını ifade eden bir log kaydı görmeniz gerekir.
Birazdan sisteme agent ekleme işlerine geçeceğiz ama öncesinde ana ossec yapılandırma dosyası ile ilgili temel bilgilere değinmek yerinde olacaktır.
OSSEC Ana Yapılandırma Dosyası
Ossec'in ana yapılandırma dosyası /var/ossec/etc/ossec.conf'dur. Bu dosyanın içeriğinden önemli başlıklar şu şekildedir:
<global>:
Bu bölümde global ayarlamalar tanımlanmaktadır. Örneğin kurulum sırasında belirlediğimiz email ile bildirim ayarları ya da whitelist'e alınacak ipler burada belirlenmektedir.:
<global> <email_notification>yes</email_notification> <email_to>[email protected]</email_to> <smtp_server>127.0.0.1</smtp_server> <email_from>from_adresi</email_from> </global>
<rules>:
<rules> tagı içerisinde içerisinde monitoring için hangi kuralların aktif olacağı belirlenmektedir. Bu alanda bir çok default kural devrededir. Kurallar /var/ossec/rules/ dizininde tutulmaktadır. Bir kısmını aşağıda görebileceğiniz öntanımlı kuralların içeriklerine, ilgili xml dosyalarından erişebilirsiniz.
<include>rules_config.xml</include> <include>pam_rules.xml</include> <include>sshd_rules.xml</include> <include>telnetd_rules.xml</include> <include>syslog_rules.xml</include> <include>arpwatch_rules.xml</include> <include>symantec-av_rules.xml</include> <include>symantec-ws_rules.xml</include> <include>pix_rules.xml</include> <include>named_rules.xml</include> <include>smbd_rules.xml</include> <include>vsftpd_rules.xml</include> <include>pure-ftpd_rules.xml</include> <include>proftpd_rules.xml</include> <include>ms_ftpd_rules.xml</include> <include>ftpd_rules.xml</include> ....
<syscheck>:
Bu bölüm içerisinde yapılan tanımlamalarda, dosya bütünlük kontrolünün ne kadar sıklıkla yapılacağı ve hangi dosyalardaki değişikliklerin görmezden gelindiği tanımlanmaktadır.
<syscheck> <!-- Frequency that syscheck is executed - default to every 22 hours --> <frequency>79200</frequency> <!-- Directories to check (perform all possible verifications) --> <directories check_all="yes">/etc,/usr/bin,/usr/sbin</directories> <directories check_all="yes">/bin,/sbin</directories> <!-- Files/directories to ignore --> <ignore>/etc/mtab</ignore> <ignore>/etc/mnttab</ignore> <ignore>/etc/hosts.deny</ignore> <ignore>/etc/mail/statistics</ignore> <ignore>/etc/random-seed</ignore> ...
<rootcheck>:
Bu bölümde ise rootkit kontrolü yapılırken kullanılacak database'ler tanımlanmaktadır.
<rootcheck> <rootkit_files>/var/ossec/etc/shared/rootkit_files.txt</rootkit_files> <rootkit_trojans>/var/ossec/etc/shared/rootkit_trojans.txt</rootkit_trojans> <system_audit>/var/ossec/etc/shared/system_audit_rcl.txt</system_audit> <system_audit>/var/ossec/etc/shared/cis_debian_linux_rcl.txt</system_audit> <system_audit>/var/ossec/etc/shared/cis_rhel_linux_rcl.txt</system_audit> <system_audit>/var/ossec/etc/shared/cis_rhel5_linux_rcl.txt</system_audit> </rootcheck>
<remote>:
Bu bölüm uzak hostlardan log kabul edip kabul edip etmeyeceğimizi belirlediğimiz alandır ve iki çeşidi bulunur:
secure: agent'lar için 1514 portundan çalışır.
syslog: syslog (udp 514) üzerinden log almak içindir.
Örnek olarak üzerine agent kuramayacağımız hostlardan syslog üzerinde log almak istememiz durumunda bu bolumde syslog'u aktif ederiz. (ki kurulum sırasında aktif ettik -ancak aşağıda görülen allowed-ips kısmı default kurulumda tanımlanmamaktadır. Bu özelliği aktif etmek için kendi networkünüze aşağıdaki gibi izin vermeniz gerekir.-)
<remote> <connection>syslog</connection> <allowed-ips>10.0.0.0/16</allowed-ips> </remote>
<alerts>:
Yapılandırma dosyasının bu bölümünde hangi düzeyde alarm ürteilmesini ve hangi alarm level'ında email bildirimi gönderilmesi belirlenmektedir. Log düzeyi 1, email ile bildirim düzeyi ise 7′dir.
<alerts> <log_alert_level>1</log_alert_level> <email_alert_level>7</email_alert_level> </alerts>
<commands>:
Bu bölümde active-response özelliğinde kullanlacak external komutlar tanımlanmaktadır.
<command> <name>host-deny</name> <executable>host-deny.sh</executable> <expect>srcip</expect> <timeout_allowed>yes</timeout_allowed> </command>
Active response konusu gelişmiş bir konu olduğundan bu giriş seviyesi yazıda değinmeyeceğim. Bunun yerine active-response konusunu ayrı bir makalede ele alacağım.
<localfile>:
Bu bölümde monitor edilecek log dosyaları ve formatları ile ilgili bilgileri giriyoruz. (Agent'larda da bu tanımlama başka bir dosya içerisinde aynı isimle girilmektedir. Yeri geldiği zaman değineceğim.)
<localfile> <log_format>syslog</log_format> <location>/var/log/messages</location> </localfile>
Evet temel olarak yapılandırma dosyasının içeriği bu kadar. Tüm yapılandırma direktifleri için http://ossec-docs.readthedocs.org/en/latest/syntax/ossec_config.html adresine bakabilirsiniz.
AGENT TANIMLAMALARI
Ossec Server hazır olduğuna göre monitor edilecek agent'larımızı sisteme ekleyebiliriz. Bu işlem temel olarak monitor etmek istediğimiz host'lara agent mode'da Ossec kurulumu yapmak ve Ossec Server'dan ilgili agent'ı sisteme eklemekten ibarettir. Agent'ı sisteme eklerken server tarafında ilgili agent için bir key oluşturulur. Oluşturulan bu key ise agent'a yüklenir. Bu şekilde manager / agent arasındaki iletişim şifreli olarak gerçekleşir.
Şimdi sırası ile bu adımları gerçekleştirilim.
1 – Agent Kurulumu
Ben agent kurulumunu da bir CentOS 6.5 üzerine yapacağım, ama kurulum yönergeleri aynı olduğu için farklı bir dağıtım kullansanız da sorun çıkmayacaktır.
Şimdi monitor edeceğimiz hosta ossec paketini indirelim ve doğrulama işlemlerini yapalım:
# wget http://www.ossec.net/files/ossec-hids-2.7.1.tar.gz # wget http://www.ossec.net/files/ossec-hids-2.7.1-checksum.txt
ve hem md5 hem de sha1 hashlerini kontrol edelim:
# cat ossec-hids-2.7.1-checksum.txt MD5(ossec-hids-2.7.1.tar.gz)= b0a9268e9dfc0ca4c31a3c8df4d17a9e SHA1(ossec-hids-2.7.1.tar.gz)= fb82bf984ddb77399be20ab9d2181a8b7ebccac3 # md5sum ossec-hids-2.7.1.tar.gz b0a9268e9dfc0ca4c31a3c8df4d17a9e ossec-hids-2.7.1.tar.gz # sha1sum ossec-hids-2.7.1.tar.gz fb82bf984ddb77399be20ab9d2181a8b7ebccac3 ossec-hids-2.7.1.tar.gz
Doğrulama işleminin ardından agent kurulumunu başlatacağız, bunun için server tarafında yaptığımız gibi indirilen paketi açıp içerisindeki install.sh dosyasını çalıştırıyoruz:
# tar xvfz ossec-hids-2.7.1.tar.gz # cd ossec-hids-2.7.1 # bash install.sh
Bu aşamada, server kurulumuna benzer şekilde dil'i seçip devam ettiğimizde aşağıda görüldüğü gibi hangi tip kurulum yapmak istediğimizi soran çıktı görüntülenecektir. Biz agent kurulumu yaptığımız için bu noktada “agent” diyerek devam ediyoruz:
1- What kind of installation do you want (server, agent, local, hybrid or help)? agent
- Agent(client) installation chosen.
Bir sonraki çıktı, gene benzer şekilde Ossec'in nereye kurulmasını istediğinizi soran bölündür. Bu noktada “ENTER” ile devam ediyoruz ve kurulumun /var/ossec dizinine yapılmasını söylüyoruz:
2- Setting up the installation environment. - Choose where to install the OSSEC HIDS [/var/ossec]: - Installation will be made at /var/ossec .
Şimdiki aşamada, kurulumu agent mode'da yaptığımız için Ossec Manager'in ip adresi sorulacaktır. Burada Manager'ın ip adresini belitiriyoruz:
3.1- What's the IP Address or hostname of the OSSEC HIDS server?: 1.1.1.1
- Adding Server IP "1.1.1.1"
Ossec sunucusunu belirttikten sonra hangi Ossec özelliklerini aktif etmek istediğimiz soran bir dizi soru sorulacaktır. Bu aşamada, active-response hariç tüm özellikleri aktif edeceğiz:
3.2- Do you want to run the integrity check daemon? (y/n) [y]: y - Running syscheck (integrity check daemon). 3.3- Do you want to run the rootkit detection engine? (y/n) [y]: y - Running rootcheck (rootkit detection). 3.4 - Do you want to enable active response? (y/n) [y]: n - Active response disabled.
Bu aşamadan sonra öntanımlı olarak hangi log dosyalarının monitor edileceğini gösterecek ve devam etmek isteyip istemediğinizi soracaktır. “ENTER” ile devam ediyoruz.
3.5- Setting the configuration to analyze the following logs: -- /var/log/messages -- /var/log/secure -- /var/log/maillog - If you want to monitor any other file, just change the ossec.conf and add a new localfile entry. Any questions about the configuration can be answered by visiting us online at http://www.ossec.net . --- Press ENTER to continue ---
Bundan sonra kurulum başlatılacak ve sorunsuz gitmesi durumunda aşağıdaki gibi bir çıktı ile tamamlanacaktır.
- System is Redhat Linux. - Init script modified to start OSSEC HIDS during boot. - Configuration finished properly. - To start OSSEC HIDS: /var/ossec/bin/ossec-control start - To stop OSSEC HIDS: /var/ossec/bin/ossec-control stop - The configuration can be viewed or modified at /var/ossec/etc/ossec.conf Thanks for using the OSSEC HIDS. If you have any question, suggestion or if you find any bug, contact us at [email protected]or using our public maillist at [email protected]( http://www.ossec.net/main/support/ ). More information can be found at http://www.ossec.net --- Press ENTER to finish (maybe more information below). --- - You first need to add this agent to the server so they can communicate with each other. When you have done so, you can run the 'manage_agents' tool to import the authentication key from the server. /var/ossec/bin/manage_agents More information at: http://www.ossec.net/en/manual.html#ma
Şu an kurulum tamamlanmış oldu. Ancak Manager tarafında yapmamız gereken tanımlamalar olduğu için agent servisini henüz başlatmıyoruz.
2 – Manager Tarafında Agent Ekleme İşlemi
Manager üzerinde agent'lar ile ilgili her tür yönetim işi manage_agents isimli uygulama üzerinden yapılmaktadır. Şimdi biraz önce üzerine agent kurduğumuz host'u manager'a bu uygulama üzerinden ekleyeceğiz ve ilgili agent için üretilen key'i alacağız.
manage_agents uygulamasını çalıştıralım:
# /var/ossec/bin/manage_agents
Uygulama çalıştırıldığında hangi yönetimsel işlerin yapılabileceğini listeleyen aşağıdaki gibi bir çıktı alırsınız. Bu aşamada “A” ile yeni bir agent ekleyebilir, “E” ile eklenmiş bir agent'a ait key'i alabilir, “L” ile ekli agentleri listeleyebilir ve “R” ile agentları kaldırabilirsiniz.
Biz sisteme bir agent ekleyeceğimiz için “A” diyerek devam ediyoruz.
****************************************
* OSSEC HIDS v2.7.1 Agent manager. *
* The following options are available: *
****************************************
(A)dd an agent (A).
(E)xtract key for an agent (E).
(L)ist already added agents (L).
(R)emove an agent (R).
(Q)uit.
Choose your action: A,E,L,R or Q: A
Bu noktada manager, agent'in ismini ve ip adresini girmemizi ve agent için bir id belirlememizi istiyor. (Agent id otomatik olarak bir arttırılarak verilmektedir. Bu nedenle bu değeri ayrıca girmenize gerek yok.)
Benim agent ip adresim 1.1.1.2 ve ismi Agent001. Dolayısı ile bu bilgileri girerek “ENTER” diyerek devam ediyorum ve confirm etmek için “y” diyerek agent ekleme işlemini tamamlıyorum.
- Adding a new agent (use '\q' to return to the main menu). Please provide the following: * A name for the new agent: Agent001 * The IP Address of the new agent: 1.1.1.2 * An ID for the new agent[001]: Agent information: ID:001 Name:Agent001 IP Address:10.10.12.108 Confirm adding it?(y/n): y Agent added.
Şimdi agent sisteme eklendi ve manage_agents uygulaması aşağıda görüldüğü gibi ilk karşılama ekranına geri döndü. Bu aşamdan sonraki adım, ilgili agent için oluşturulan anahtarı almaktır (ki bu anahtarı bir sonraki aşamada agent'a ekleyeceğiz.)
Bu işlem için “E” diyoruz.
****************************************
* OSSEC HIDS v2.7.1 Agent manager. *
* The following options are available: *
****************************************
(A)dd an agent (A).
(E)xtract key for an agent (E).
(L)ist already added agents (L).
(R)emove an agent (R).
(Q)uit.
Choose your action: A,E,L,R or Q: E
ve sistem, agentları listeleyip, anahtarını görüntülemek istediğimiz agent'ın ID'sini girmemizi istiyor. Görüldüğü üzere bir agent'ımız var ve ID'si 001:
Available agents:
ID: 001, Name: Agent001, IP: 1.1.1.2
Provide the ID of the agent to extract the key (or '\q' to quit): 001
Bu işlemin ardından aşağıda görüldüğü gibi Agent001′in anahtarı veriliyor. Şimdi bu anahtarı kopyalayalım (zira agent tarafında lazım olacak). Sonrasında da “ENTER” ile ana menüye dönelim.
Agent key information for '001' is:
MDAxIEFnZW50RDAxIDawLjEwLjEyLjEwOCBjMDc2N2Q5MTgzNzkzNzM2YzZkNjE3ZDk3NzJlODE4M2I1MjBjZWRiYmU2ZjAwYzE3MzIxM2U3Y2YyODBwrTa
** Press ENTER to return to the main menu.
Sonrasında “Q” ile manage_agents uygulamasından çıktıktan sonra değişikliklerin geçerli olması için Ossec'i restart ediyoruz.
# /var/ossec/bin/ossec-control restart
Bu şekilde Ossec Server tarafındaki işlemler tamamlanmış oluyor. Şimdi agent'a geçip edindiğimiz anahtarı import edeceğiz.
3 – Agent Tarafında Anahtarın Import Edilmesi
Agent tarafında da benzer şekilde “manage_agents” isimli uygulamayı kullanılanacağız. Bu nedenle kendisini çalıştıralım:
# /var/ossec/bin/manage_agents
Aşağıda bir örneği görüldüğü üzere agent üzerindeki manage_agents uygulamasının menüleri manager'dakine göre değişiklik göstermektedir ve sadece anahtar import edilmesi için “I” ile ulaşılan bir segme vardır. Biz de daha önceki adımda extract edip kopyaladığımız key'i girmek üzere “I” ile devam ediyoruz:
****************************************
* OSSEC HIDS v2.7.1 Agent manager. *
* The following options are available: *
****************************************
(I)mport key from the server (I).
(Q)uit.
Choose your action: I or Q: I
Ardından gelen ekranda anahtarımızı paste edip enter ile devam ediyoruz ve onaylamak için “y” diyerek işlemi tamamlıyoruz:
* Provide the Key generated by the server. * The best approach is to cut and paste it. *** OBS: Do not include spaces or new lines. Paste it here (or '\q' to quit): MDAxIEFnZW50RDAxIDawLjEwLjEyLjEwOCBjMDc2N2Q5MTgzNzkzNzM2YzZkNjE3ZDk3NzJlODE4M2I1MjBjZWRiYmU2ZjAwYzE3MzIxM2U3Y2YyODBwrTa Agent information: ID:001 Name:Agent001 IP Address:10.10.12.108 Confirm adding it?(y/n): y Added. ** Press ENTER to return to the main menu.
Key import etme işinin son aşaması uygulamadan “Q” ile çıkıp ossec agent'ı restart etmektir:
# /var/ossec/bin/ossec-control restart
Bu şekilde agent ekleme işlemimiz tamamlanmış, sistemimiz Ossec Manager tarafından default ayarlarla monitor edilmeye başlanmış olacaktır.
4 – Durumun Kontrol Edilmesi
Sisteme bir agent eklediğinizde bu durum bir email olarak bildirilecektir. Ayrıca, manager tarafında ossec isimli db'nin data isimli tablosuna da ilgili kayıtlar eklenecektir.
Dolayısı ile herşeyin yolunda gittiğini kontrol etmek için bu tabloda agent'ın start edildiğine dair bir kayıt da görüntülememiz gerekir:
# mysql -u root -p -e 'use ossec; select * from data;'
İlglili kayıt şuna benzer olmalıdır:
| 34 | 1 | (null) | ossec: Agent started: `Agent001->1.1.1.2`. | 2014-04-03 20:24:46 |
Ayrıca, agent tarafında yeni bir kullanıcı eklerseniz, aynı şekilde data tablosunda durumu görüntüleyebilirsiniz.
| 35 | 1 | (null) | Apr 5 05:31:03 Agent001 useradd[2675]: new group: name=test, GID=501 | 2014-04-03 20:24:56 | | 36 | 1 | (null) | Apr 5 05:31:03 Agent001 useradd[2675]: new user: name=test, UID=501, GID=501, home=/home/test, shell=/bin/bash | 2014-04-03 20:24:56 |
Bunun yanı sıra tüm loglar manager tarafında /var/ossec/logs dizininde bulunmaktadır. DB'de görüntülediğimiz kayıtların hepsi bu dizindeki alerts klasöründe bulunan log dosyalarından da takip edilebilir.
Agent tarafındaki tüm yapılandırma işleri /var/ossec/etc/ossec.conf dosyası içerisinden yapılmaktadır. Bu dosyayı yukarıda verilen bilgiler ışığında incelerseniz hangi monitoring işlemlerinin yapıldığını görebilir kendinize göre düzenlemelerinizi yapabilirsiniz.
Evet temel Ossec Manager / Agent kurulumu ve yapılandırması bundan ibaretti. Yapılandırma işlerinin merkezi olarak tanımlanması, agentless monitoring ve active-response gibi gelişmiş konulara, giriş seviyesi bu yazıyı daha da uzatmamak için değinmedim. Ancak bunları ayrı makaleler üzerinden ele alacağız.
O zamana kadar burada bahsedilmeyen diğer tüm yapılandırma işleri için http://ossec-docs.readthedocs.org/en/latest/manual/index.html adresinden yararlanabilirsiniz
Bu yazılar da ilginizi çekebilir:
- Ossec Merkezi Agent Yapılandırması
- FreeBSD 6.2 Kurulumu – Part II: Disk Partitions
- Backtrack 4 Üzerine Nessus Kurulumu
- OTRS (Open Ticket Request System) Kurulumu
- 389 Directory Server (LDAP) Kurulum ve Yapılandırması
Yorumlar
Trackbacks
Yorumda bulunun.
Selamlar
Öncelikle döküman için çok teşekkürler. Gerçekten açıklayıcı. Ben 1 server ve 2 agent kurdum. Logları dinliyor. Syscheck ten bir directory de olan değişiklikleri algılasın diye tanımlar yaptım fakat ne mail geliyor ne de panelde görüyorum. ossec.conf ve ossec-agent.conf ta syscheck için tam olarak ne yapmak gerekir acaba?
Teşekkürler.
[Cevapla]
Merhaba,
Default ayarlarla syscheck işlemi 22 saatte bir yapiliyor (ossec.conf dosyasi icerisinde bu eşik ayarını görebilrsiniz.) Yapılandırmanız düzgün ise henuz syschek yapilmamis olabilir o yüzden bildirim almamis olabilirsiniz (ya da o dizinde herhangi bir dosyada degisiklik olmamistir.)
/var/ossec/logs/ dizini altındaki log dosyalarını da kontrol etmenizi öneririm.
[Cevapla]
Cevap için teşekkürler.
Loglarda bir sorun görünmüyor.Aşağıdaki gibi 220 saniyede bir check etsin diye güncellememe rağmen agent taraftaki opt altındaki yaptığım değişiklikleri algılamıyor. agent.confta da syscheck kısmı var orda da yine aynı şekilde set ettim. Agent.conftaki değişikliklerin bir işlevi yok sanırım. Server ossec.conftaki ayarlara göre agentlerı denetliyor gibi. log dosyalarını dinliyor ve değişiklik olduğunda bildirimi yapıyor fakat syscheckte default dizinler haricinde yeni bir dizin dinletemedim.
syscheck servisi çalışıyor yapılan değişiklikten sonrada servisi restart ediyorum.
#syscheck
#frequency>220/etc,/usr/bin,/usr/sbin/opt</directories
[Cevapla]
Agent tarafında işlemleri /var/ossec/etc/ossec.conf dosyası içerisinden tanımlamanız lazım. İlgili dosya içerisinde
etiketleri içerisinde düzenleme yapabilirsiniz. Agent bu kısımda belirtilen dizinlerdeki dosyaların hash’lerini alıp Server’a gönderir ve tüm bilgi server tarafında store edilir, değişiklik olması durumunda gene Server uyarı üretir.
[Cevapla]