200 likes | 386 Views
TCP Wrappers ve Xinetd. TCP Wrappers ve Xinetd. Linux işletim sistemlerinde servislerin erişim kontrölü için Ağ üzerinden gelen istekler öncellikle güvenlik duvarı ile filtrelenir. Güvenlik duvarının arkasında servislere erişim kontrölü için iki sistem kullanılabilir. 1- TCP Wrappers 2-Xinetd
E N D
TCP Wrappers ve Xinetd Linux işletim sistemlerinde servislerin erişim kontrölü için Ağ üzerinden gelen istekler öncellikle güvenlik duvarı ile filtrelenir. Güvenlik duvarının arkasında servislere erişim kontrölü için iki sistem kullanılabilir. 1- TCP Wrappers 2-Xinetd TCP Wrappers servislere hangi istemcilerin erişebileceği ve erişimler ile ilgili kayıtların tutulmasını sağlar.Xinetd. TCP Wrappers’ın sağladığı kontröllerin yanı sıra servis üzerinde daha gelişmiş bir kontröl mekanizmasına sahiptir.
TCP Wrappers TCP Wrappers varsayılan olarak dağıtımla gelen bır pakettir. İçinde bulunan /usr/lib/libwrap.a kütüphanesini kullananarak erişim kontrölü yapar. TCP wrappers’ın kontrol ettiği bir servise istek geldiğinde TCP Wrappers gelen isteğin onaylanıp onaylanmamasına erişim bilgilerinin tutulduğu dosyaları kontrol ederek karar verir. Gelen istek ile ilgili kayıtları da /var/log/secure veya /var/log/messages kayıt dosyalarında tutar. Bir servisin TCP Wrappers tarafından kontrol edile bilmesi için servisin libwrap.a dosyasına bağlanmış olması gerekir. Aşağıdaki şekilde bulunan kontrölü yapılabilir. [root@localhost]# strings -f /usr/sbin/sshd grep hosts_access /usr/sbin/sshd: hosts_acoss TCP Wrappers sayesinde hem servis hem de istemciden bağımsız olarak servislere erişim kontrol edilmiş olur. Ayrıca servisin yapılandırılmasından basit ve ortak bir yapılandırma ile erişim kontrolü yapılmış olur.
TCP Wrappers Yapılandırması TCP Wrappers’ın kullandığı 2 yapılandırma dosyası vardır. 1-/etc/hosts.allow 2-/etc/hostsçdeny TCP Wrappers’ın kontrol ettiği bir servise istek geldiğinde öncelikle hosts.allow dosyası kontrol edilir. Eğer bu dosya içinde gelen istemci ile ilgili bir kayıt varsa bu kural işlenir ve istemciye izin verilir. Eğer hosts.allow dosyasında istemci ile ilgili birkural bulunmazsa hosts.deny dosyası hontrol edilir.Bu dosyada istemci ile ilgili bir kural bulunamazsa izin verilr. İzinler ile ilgili kural bulunamazsa istemciye izin verilir. İzinler ile ilgili kurallar yazılırken dikkatli omak gereklidir.Öncellikle host.allow dosyaı kontrol edildiği için eğer bu dosyada istemiye izin verilmişse hosts.deny dosyasında yazılmış olan bir kural o istemci için işlenmeyecektir. TCP Wrappers her istek geldiğnde hosts.allow ve hosts.deny dosyalarını kontrol eder bu nedenle bir değişiklikyapıldığnda herhangi bir servisin yaniden başlatılmasına gerek yoktur.
TCP Wrappers Yapılandırması Hem hosts.allow hem de hosts.deny dosyası aynı yapıda kuralların yazılmasına imkan tanır. # ile başlayan şartlar yorum olarak algılanır. Boş satırlar ise gözardı edilir. Kurallar yazılıken aşağıdaki yapı kullanılır. <servis listesi>:<istemci listesi>[:<seçenekler>:<seçenekler>:..] Servis listesi →kural yazılmak istenen servisin ismi yer alır. Wildcard’lardan ALL kullanılabilir.Birden fazla servis ismi yazılmak istenrse “‚” ile ayrılarak yazılır. İstemci listesi→kuralın etkileyeceği istemcilerin konak adı veya IP adresleri yer alır.Wildcard’lar kullanılabilir. Birden fazla servisi ismi yazılmak istenirse “‚” ile ayrılarak yazılır. Seçenekler→Ek olarak verilebilinecek seçenekler bu alanda yer alır.Log seçenekleri‚uygulanacak kual‚çalıştırılması gereken programlar buna örnek olabilir. sshd:microsot.com sshd: .domain.com\ : spawn/bin/echo ‘/bin/date’ erisim engellendi››/var/log/sehd.log\ : deny
TCP Wrappers Yapılandırması Wildcard kullanımı: TCP Wrppers ile kullanılabilecek wildcrd’lar şunlardır: ALL→Hem işlemci hem servis alanında kullanılabilr. Servisler için tüm servislere‚ istemciler için tüm istemcilere karşılık gelir. LOCAL→İçinde “‚” bulunmayan istemciler. KNOWN→Konak ismi veya kullanıcının sistem tarafından bilindği durumlar. UNKNOWN→Konak ismi veya kullanıcının sisitem tarfından bilinmediği durumlar. PARANOID→Konak isminin konak adresi ile aynı olup olmadığı kontrol edilir. Paternler ALL:example.com ALL:192.168. ALL:192.168.0.0/255.255.254.0 ALL:[3ffo:505:2:1::]/64 ALL:*.example.com sshd:/etc/ssh.hosts
TCP Wrappers Yapılandırması TCP Wrappers yapılandırılmasında servis ve istemci alanlarından sonra Seçenekler kısımında:log tutma erişim kontrolü kabuk komuttarını çalıştırma istemci ve sunucu sistem hakkında ayrıntılı bilgi alma işlemleri yapılabilir. • Log tutma Seçenekler alanında severity ile ilgili servisin tuttuğu log seviyesi belirlenebilir. Seviye olarak syslog servisinin kullandığı sevyeler kullanılabilir. sshd:.example.com:severity emerg • Erişim Kontrolü Varsayılan olarak hosts.llow dosyasında izin verilen istemciler hosts.deny kısmıda izin verilmeyen istemciler belirtilir. Ancak erişim kontrol seçeneği allow ve deny tanımları ile hem hosts.allow hem de hosts.deny dosyalarında erişme izin verilebilir veya izin verilmeyebilir. sshd:lab1.myo.fu.edu.tr:allow sshd:lab2.myo.fu.edu.tr:deny
TCP Wrappers Yapılandırması • Kabuk komutlarının çalıştırılması Kabuk komutları çalışırken iki tanım kullanılabilir. -spawn:Belirtilen komutun yeni bir çocuk proses oluşturularak çalıştırılmasını sağlar. sshd:. lab1.myo.fu.edu.tr :spawn/bin/acho’/bin/date from %h>>/var/log/sshd.log\ :allow -twist:Genellikle izin verilmek istenmeyen istemcilere tuzak için kullanılır ve istemciye mesaj yollamamıza imkan tanır. vsftpd:. lab1.myo.fu.edu.tr :twist /bin/echo’’421 Erisim Engellendi!’’
TCP Wrappers Yapılandırması • Ayrıntılı Bilgi Alma spawn ve twist tanımlamalarını kullanılırken istemci.sunucu veya proses hakkında bilgi sunar.Kullanılabilecek bazı tanımlar şunlardır: %a-İstemcinin İP adresi %A-Sunucunun İP adresi %c-İstemci ile ilgili bilgiler:İP adresi konak ve kullanıcı adını içeren bilgiler %d-Servisin proses adı. %h-İstemcinin konak adı(eğer erişilemezse İP adresi) %H-Sunucunun konak adı(eğer erişilemezse İP adresi) %p-servisin proses İD’si. %s-Sunucu ile ilgili bilgiler:servis adı.sunucu İP adresi ve konak adı. %u-İstemcinin kullanıcı adı sshd:.example.com\ :spawn /bin/echo’/bin/date’access danied to %h>>/var/log/sshd.log\ :deny
Xinetd Linux sistemlerde servislerin yönetiminde ‘Superdaemon’ adı verılen servis birçok servisin tek servis tarından yönetilmesine imkan tanımaktadır. Birçok servisin aynı anda çalıştırılması yerine tek bir servis (superdaemon) çalıştırılması ilgili servisin gelen istek doğrultusunda çalıştırılmasına imkan tanır.UNIX tabanlı sistemlerde superdaemon olarak kullanılan ve ağ üstünen gelen bir çok isteğe cevap veren servis inetd’dir.Servisi güvenliği açısından inetd’in eksiklerinden dolayı inetd’nin yerini almak üzere xinetd(extended interNET Daemon) geliştirilmiştir. Xinetd’nin Inetd’den üstün olan bazı özellikleri şunlardır: 1-TCP Wrapper kullanımı -Erişim kotrolü -Kayıt yönetimi 2-Bağlantı yönlendirme 3-Sistem yüküne uygun yapılandırma sağlama 4-Modüler bir yapılandırma
Xinetd Kurulumu Xinetd paketi Fedora ve Red Hat dağıtıları başta olmak üzere çok dağıtımla birlikte gelmektedir. Xinetd’yi kullanabilmek için Xinetd paketinin kurulu olması gerekir.RPM dosyasında veya yum ile kurulum yapılabilir. Kaynak koddan kurulum için http://www. xinetd.org adresinde son sürümü indirilebilir. [root@localhost]# rpm-q xinetd Package xinetd is not installed [root@localhost]# yum installed xinetd Setting up Install Process Setting up repositories ........... Running Transaction Installing:xinetd #########(1/2) Installed: xinetd.i386 2:2.3.13-6 Complete ! [root@localhost]# rpm –q xinetd xinetd-2.3.13-6
Xinetd Yapılandırma Dosyaları /etc/ xinetd.conf→Genel geçerliği olan yapılandırma dosyasıdır. /etc/ xinetd.d →Bu dizinin altında Xinetd’nin yönettiği her servis için o servise özel bir yapılandırma dosyası bulunur. [root@localhost]# ls -1/etc/ Xinetd.’ -rw-r—r— 1 root root 8p9 kar 8 2005 /etc/ Xinetd.conf /etc/ xinetd.d: Total 64 -rw-r--r --1root root 5ks kar8 2005 chargen -rw-r--r --1root root 5ks kar8 2005 chargen-udp -rw-r--r --1root root 5ks kar8 2005 cvs -rw-r--r --1root root 4ks kar8 2005 daytime
/etc/xinetd.conf Xinetd’nin temel yapılandırma dosyasıdır. Servise başlarken bu dosya okunur.Yapılandırmadaki değişiklerin geçerli olabilmesi için xinetd servisinin yeniden başlatılması gereklidir.Varsayılan yapılndırma aşağıdaki gibidir. [root@localhost]# cat/etc/ xinetd.conf defaults ( Instance =60 log-type =SYSLOG authpriv log_on_success =HOST PID log_on_fallure =HOST cps =25 30 ) İncludedir/etc/xinetd.d
/etc/ xinetd.conf(2) • Yaplandırma dosyasındaki satırların anlamı aşağdaki gibidir • defaults→Yaplandırmanın genel bir geçerliliğe sahip olduğunu bildirir.’{}’ işaretleri arası Yapılandırma ile ilgili ayrıntıları bildirir. • instances→ xinetd’nin aynı anda karşılayabileceği maksimum istek sayısı • log_type→Log tipini belirtir.FİLE veya SYSLOG olabilir.SYSLOG kullanılması linuxun standart log servisinin kullanılmasını sağlar ve hangi tip ve seviedeki kayıtların tutulacağı belirtilir. • log_on _success → Bağlantı başarılı olduğunda hangi bilgilerin kaydının tutulacağı belirtilir.Varsayılan olarak isemcinin İP adresi (HOST) ve sunucudaki Proses İD(PİD) tutulur.Kullanılabilecek diğer seçenekler:USERİD.EXİT.DURATİON.TRAFFİC. • log_on_failure→Bağlantı problemi veya izin verilmeyen bir erişim isteği olduğunda hangi bilgilerin kaydının tutulacağını belirtir.Varsayılan olarak İP Adresi (HOST) tutulur. Diğer seçenekleri USERİD ve ATTEMPT. • cps→ilk değeri Xinetd’in bir saniye içinde karşılayacağı maksimum istek sayısı.ikinci değer ise bu değere erişilmesi durumunda kaç saniye servisin kapalı kalacağını belirtilir. • includedir/etc/xinetd.d/→Dizindeki özel yapılandırmalar dosyaya dahil edilmiştir.
/etc/xinetd.d Dizini /etc/xinetd.d/dizini xinetd servisi tarafından yönetilen servisler ile ilgili yapılandırmayı içerir.Servislerin yapılandırılmasının rahatlıkla yapılabilmesi ve diğer servisleri etkilememesi için her servis için ayrı bir yapılndırma dosyası bulunur. Bu dizinde bulunan dosyalar xinetd servisi başlarken okunur.yapılan değişiklerin geçerli olması için xinetd servisinin yeniden başlatılması gerekir. Örnek olarak Telnet Servisinin yapılandırma dosyası /etc/ xinetd.d/telnet incelenecektir. service telnet ( flags = REUSE socket_type=stream wait=no user=root server=/usr/sbin/in.telnetd log_on_failure +=USERID disable=yes )
Yapılandırma seçenekleri /etc/xinet.d/ dizini altındaki servislerin kontrolünde /etc/ xinetd.conf dosyasında kullanılan tanımlamalar kullanılabilir. Bu tanımlamalardan bazları şunlardır: service→Servisin ismini belirler.Genellikle /etc/services dosyasında belirtilen isim verilir. flags→bağlantı ile ilgili birçok özelliğin belirlemesine imkan tanır.REUSE olması xinetd’nin soketi tekrar kullanılmasını sağlr. Socket_type→Ağ soketi tipini belirler.Strem TCP.dgram UDP‘ye karşılık gelir. User→servisin hangi kulanıcı hakkı ile çalışacağını belirler. Server→service olarak çalıştırılması gereken programın ylunu belirler. Log_on_failure→+=işaretinden dolayı xinetd.conf dosyasında belirtilen log_on_failure seçeneklerine ek parametreleri belirtir. Disable → servisin açık veya kapalı olmasını belirler.
Yapılandırma seçenekleri (2) Log seçenekleri Xinetd servisinin kullandığı log_on_success ve log_on_failure tanımlarında sık kullanılan seçenekler şunlardır: ATTEMPT→başarısız olan bir isteğin başarısız olma nedeni(log_on_failure) DURATION →servisin istemci tarafından kullanılma süresi (log_on_success) EXIT→servisin çıkış veya sonlanma nedeni (log_on_success) HOST→istemcinin İP adresi (log_on_failure) PID→isteği karşılayan sunucu prosessinin proseses numarası (log_on_success) USERID→servisi kullanan kullanıcının kullanıcı adı. Erişim Seçenekleri only_from→Sadece belirtilen istemciler srvisi kullanılabilir. no_access→listelenen istemciler servisi kullanılamaz. access_times→servisin kullanılabileceği zaman aralığı.SS:DD-SS:DD biçiminde olmalıdır.
Yapılandırma seçenekleri (3) Dinlendirme ve Yönlendirme Seçenekleri Xinetd bir servisin sadece bir IP üzerinden dinlenip bu adrese gelen isteklerin başka bir IP’ye .sunucuya veya başka bir port adresine yönlendirilmesi sağlayabilir. Bunun için bind ve redirect seçenekleri kullanılabilir.Özellikle 2 farklı ağ arayüzü veya IP adresine sahip makinalarda bind ile sadece iç ağdan gelen isteklerin dinlenmesi sağlanabilir.redirect ile bu arayüze gelen istek başka bir İP’ye aynı makine üstünde veya farklı bir porta yönlendirilebilir. Service telnet ( socket_type=stream wait=no server=/user/abin/in.telnettd log_on_success+=DURATİON USERİD log_on_failure+=USERID bind=123.123.123.123 redirect=10.0.1.13 23 )
Yapılandırma seçenekleri (4) Kaynak Yöntemi Xinetd servislerin sistem kaynaklarının daha etkili kullanılmasına ve DoS(Denial of Service) saldırılarına karşı koruma sağlar. Kaynaklar ile ilgili kullanılabilecek bazı seçenekler: intances→Servisin karşılayacağı maksimum istek sayısını belirler. per_source→tek bir İP adresi üzerinden gelebilecek maksimumu istek sayısını belirler. cps→iki değer alır. İlk değer saniyede kabul edilecek maksimumum bağlantı sayısını belirler.Bu değer ulaşıldığında servis kapatılacaktır. İkinci değer servisin tekrar açılması için saniye cinsinden ne kadar beklenmesi gerektiğini belirler. max_load→Servisin çalışacağı maksimum yük değerini belirler.Yük burada belirtilen değerin üstüne çıkarsa kapatılır.