Bu makalenin farkl� dillerde bulundu�u adresler: English Castellano Deutsch Francais Nederlands Turkce |
taraf�ndan Frédéric Raynal Yazar hakk�nda: Fr�d�ric Raynal parmak say�sal resimlerin watermarking'i hakk�nda INRIA (Institut National de Recherche en Informatique et Automatique)'da bir tez haz�rl�yor. ��erik:
|
�zet:
xinetd - geni�letilmi� Internet servisleri daemon'� (eXtended InterNET services daemon) - i�eri sokulmaya kar�� iyi bir g�venlik sa�lar ve Servislerin reddi- Deny of services (DoS) nin risklerini azalt�r. En iyi bilinen �ift gibi (inetd+tcpd), verilen bir makinan�n eri�im haklar�n� d�zenlemeye izin verir, ama o bundan daha fazlas�n� da yapabilir. Bu makalede onun bir�ok �zelli�ini ke�fedece�iz.
xinetd, tcp_wrapper'�n sa�lad���na benzer eri�im kontrol� yeteneklerine sahiptir. Bununla birlikte, onun yetenekleri daha fazlad�r:
Bu makalenin ilk b�l�m� xinetd'nin nas�l �al��t���n� anlat�r. Servis bi�imlendiriminde ve baz� �zel se�eneklerde (Bir aray�ze ba�lama (binding), redirection) zaman harcayaca��z, sonra bunlar� �rneklerin yard�m�yla uygulamayla a��layaca��z. �kinci b�l�m ise xinetd'nin �al��mas�n�, yaratt��� loglar� g�steriyor ve kullan��l� ipu�lar�yla da bitiyor.
Baz� sinyaller xinetd 'nin davran��lar�n� nitelemek i�in kullan�l�r:
�ki yararl� �zellik (itox ve xconv.pl) xinetd ile sa�lan�r ve /etc/inetd.conf
dosyas�n� xinetd i�in bir bi�imlendirim dosyas�na d�n��t�rmeye izin verir.
A��k�as� bu, wrapper bi�imlendirim dosyas�nda belirtilen kurallar
�nemsenmedi�inden beri yeterli de�ildir. itox
program� hala
korunmas�na ra�men uzun s�redir geli�tirilmemi�tir. xconv.pl
program� iyi bir ��z�md�r, sonu�, xinetd'nin inetd
den farkl� olarak sahip oldu�u �zelliklerden dolay� belirtilmek zorunda olsa
da.:
>>/usr/local/sbin/xconv.pl < /etc/inetd.conf > /etc/xinetd.confBi�imlendirim dosyas� defaults (benimsenmi�ler) b�l�m�yle ba�lar. Bu b�l�mdeki nitelikler xinetd'nin y�netti�i her serviste kullan�lacakt�r. Bundan sonra, servisler gibi bir�ok b�l�m bulacaks�n�z, onlar�n her biri �zel se�enekleri benimsenmi� olanlarla ili�kili olarak tekrar tan�mlayabiliyor.
defaults b�l�m� �una benzer:
defaultsBu b�l�mde tan�mlanan her nitelik sa�lanmi� de�er(ler)i sonra tan�mlancak servislerin hepsi i�in saklar. Bunun i�in, only_from niteli�i, sunucuya ba�lanabilecek yetkilendirilmi� adreslerin bir listesini vermeye izin verir:
{
attribute operator value(s)
...
}
only_from = 192.168.1.0/24 192.168.5.0/24 192.168.10.17Sonra, her bildirilen servis, listede olan b�r adrese sahip makinalar�n eri�imine izin verir. Bununla birlikte, bu benimsenmi� de�erler her servis i�in nitelendirilmelidir (biraz a�a��da a��klanan i�lemcileri kontrol edin). Yine de bu s�re� biraz riskli. Ger�ek�i olursak, kolay ve gizli bir �ekilde bir�eyleri saklamak yerine, benimsenmi� de�erleri tan�mlamamak ve onlar� sonra servislerin i�inde de�i�tirmek daha iyidir. �rne�in, eri�im haklar� hakk�nda konu�ursak en kolay politika herkese eri�imi yasaklamak sonra da ger�ekten gereksinimi olanlar�n herbir servise eri�imine izin vermekten meydana gelir. (tcp_wrapper ile , Bu ALL:ALL@ALL i�eren hosts.deny dosyas�yla ve sadece yetkilendirilmi� (authorized) servis ve adresleri sa�layan hosts.allow dosyas�yla yap�labilir.
config dosyas�ndaki servisi anlatan her b�l�m �una benzer:
serviceservice_name�� operat�r mevcuttur: '=', '+=' and '-='. Niteliklerin �o�u sadece '=' i�lemcisini destekler. Bu niteli�e sabit bir de�er veir.'-=' i�lemcisi bir maddeyi silerken, '+=' i�lemcisi bir madde ekler.
{
attribute operator value(s)
...
}
table 1 bu �zelliklerin baz�lar�n� k�saca
anlat�yor. Sonra da bunlar� nas�l kullan�ca��m�z� birka� �rnekle g�r�ce�iz.
xinetd.conf'un yard�m sayfalar� size daha fazla bilgi
verecektir.
Nitelik | De�erler ve a��klamalar |
flags | Sadece en ge�erli de�erler burada bahsedilecektir, di�erleri i�in
belgelendirmeye ba�vurun:
|
log_type | xinetd benimsenmi� olarak syslogd daemon.info
'yu kullan�r.
|
log_on_success | Bir sunucu �al��t���nda farkl� bilgiler giri� yapabilir:
|
log_on_failure | Burada tekrar, sunucu kaynaklar�n�n eksikli�inden veya giri� kurallar�ndan
dolay� �al��mad��� zaman xinetd bir�ok bilgi giri�i al�r:
|
nice | nice komutunun yapt��� gibi sunucunun �st�nl�k hakk�n� de�i�tirir. |
no_access | Bu servise eri�im hakk� olmayan kullan�c�lar�n listesi. |
only_from | Yetkilendirilmi� (authorized) istemcilerin listesi. Bu niteli�e hi� bir de�er atanmad�ysa servi�e eri�im reddedilir. |
port | Servise ilgili portlar. Bu /etc/services dosyas�nda da tan�mland�ysa, her iki port numaras� e�le�melidir. |
protocol | Belirtilmi� protokol /etc/protocols dosyas�nda olmal�d�r. E�er hi�bir protokol verilmemi�se, yerine servisin benimsenmi� birtanesi kullan�l�r. |
server | Sunucunun yolu. |
server_args | Sunucuya verilen bile�enler. |
socket_type | stream (TCP), dgram (UDP), raw (IP direkt eri�imi) veya seqpacket (). |
type | xinetd 3 tip servisi y�netebilir:
|
wait | Servislerin threadlere do�ru olan davran��lar�n� tan�mlar. �ki de�er
kabul edilebilirdir:
|
cps | Gelen ba�lant�lar�n say�s�n�n s�n�r�. �lk bile�en bu say�n�n kendisidir. S�n�r a��ld���nda, ikinci bile�enin sa�lad��� saniyelerle ifade edilen bir s�rede servis tekrar etkin hale ge�er. |
instances | Ayn� anda �al��abilecek ayn� tip sunucular�n maksimum say�s�n� belirler. |
max_load | Bu bir sunucun i�in ger�ek maksimum y�klemeyi verir (�rne�in, 2 veya 2.5). Bu s�n�r�n �tesinde, bu sunucuya gelen istekler reddedilir. |
per_source | Bir tamsay� veya UNLIMITED(s�n�rs�z), bir sunucuya ayn� kaynaktan gelen ba�lant�lar�n say�s�n� s�n�rlamak i�in kullan�l�r. |
tablo1 de g�sterilen son d�rt nitelik, bir sunucuya ba�l� olan kaynaklar�n kontrol�ne izin verir. Bu Denial of Service - Servis reddi (DoS) ataklar�ndan (b�t�n kaynaklar�n� kullanarak makinay� dondurma) korunman�n en etkili yoludur.
Bu b�l�m birka� xinetd �zelli�ini sundu.Bir sonraki b�l�m onu nas�l kullanaca��m�z� g�sterecek ve d�zg�n bir �ekilde �al��mas� i�in birka� kural verecektir.
Daha �nce de g�rd���m�z gibi, IP adreslerini kullanarak makinan�za eri�imleri kabul (red) edebilirsiniz.Bununla birlikte xinetd daha fazla �zelli�e izin verir:
/etc/resolv.conf
'un i�ine bir nameserver- isim
sunucusu
giri�i yerle�tirmeyiniz).
Benimsenmi� olarak, Bir makinaya eri�imin reddi, ger�ek�i bir g�venlik politikas�n�n ilk ad�m�d�r. Sonra, servislere g�re eri�imlere izin vermek yeterlidir. ��mdi bir makinaya eri�imi kontrol etmeye izin veren IP tabanli iki niteli�i inceleyece�iz: only_from ve no_access. �kincisini se�ersek ve ��yle yazarsak:
no_access = 0.0.0.0/0servislere eri�imi tamamen engelleriz. Bununla birlikte herkese izin vermek istiyorsan�z �rne�in echo (ping)'e eri�ebilmek i�in, echo servisinde ��yle yazmal�s�n�z:
only_from = 0.0.0.0/0Bu bi�imlendirmeyle elde edece�iniz giri� ��yledir:
Sep 17 15:11:12 charly xinetd[26686]: Service=echo-stream: only_from list and no_access list match equally the address 192.168.1.1Ger�ek�i olursak, eri�im kontrol� her iki nitelikteki adreslerin kar��la�t�r�lmas�yla yap�l�r. �stemci adresi her 2 listede e�le�iyorsa en az genel olan� tercih edilir. E�itlik halinde, �rnekteki gibi, xinetd se�im yapamayacakt�r ve ba�lant�y� reddecektir. Bu belirsilikten kurtarmak i�in ��yle yazmal�s�n�z:
only_from = 192.0.0.0/8Eri�imi sadece nitelikle kontrol etmek i�in daha kolay bir y�ntem:
only_from =De�er vermemek her ba�lant�y� koparmaz :) Sonra, her servis eri�imi kabul eder.
S�ylenmesi gerek: Verilen bir servis (direkt olarak veya default ile tahsis edilmi� olan) b�l�m� i�in hi�bir kural�n olmad��� durumda (ne bu only_from ne de �tekinde no_access) servise eri�ime izin verilir!
defaults'un bir �rne�i burda:
defaultsi� servislerin aras�nda, servers, services, ve xadmin xinetd'yi y�netebilmenize olanak sa�lar.Daha fazlas� sonra.
{
instances = 15
log_type = FILE /var/log/servicelog
log_on_success = HOST PID USERID DURATION EXIT
log_on_failure = HOST USERID RECORD
only_from =
per_source = 5disabled = shell login exec comsat
disabled = telnet ftp
disabled = name uucp tftp
disabled = finger systat netstat#INTERNAL
disabled = time daytime chargen servers services xadmin#RPC
disabled = rstatd rquotad rusersd sprayd walld
}
Nitelik | A��klama |
socket-type | Her servis. |
user | Sadece �� olmayan servisler i�in |
server | Sadece �� olmayan servisler i�in |
wait | Her servis. |
protocol | Her RPC servisi ve /etc/services da olmayanlar i�in. |
rpc_version | Her RPC servisi. |
rpc_number | /etc/rpc de yer almayan her RPC servisi i�in. |
port | /etc/servicesde bulunmayan her RPC olmayan servis i�in. |
Bu �rnek servisleri nas�l tan�mlayaca��n�z� g�steriyor:
service ntalkNot edin bu servisler sadece yerel a�da kullan�labilirler (192.168.1.0/24). FTP hakk�nda, biraz daha fazla s�n�rlama beklenir: sadece 4 kez izin verilir ve bu sadece zaman dilimi s�ras�nda m�mk�nd�r.
{
socket_type = dgram
wait = yes
user = nobody
server = /usr/sbin/in.ntalkd
only_from = 192.168.1.0/24
}service ftp
{
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.ftpd
server_args = -l
instances = 4
access_times = 7:00-12:30 13:30-21:00
nice = 10
only_from = 192.168.1.0/24
}
�rne�in, bir �irket m��terileri i�in bir FTP sunucusu y�klemek istiyor
( eri�ebilmek ve belgeleri okumak i�in). Bu �irket ayn� zamanda kendi
�r�nlerine do�ru FTP eri�imi yapmak isteyen istemcileri �nlemek istiyor: bind bu �irket i�in yap�ld� :) ��z�m
iki ayr� FTP servisi tan�mlamakt�r: biri genel eri�im i�in, di�eri de sadece
�irket i�i eri�im i�in. Bununla birlikte, xinetd bunlar� ay�rabilmelidir:
��z�m id niteli�ini kullanmakt�r. Bu
bir servisi tek bir yolla tan�mlar (Servis i�inde tan�mlanmad�ysa, de�eri
servisin ad�na do�ru kayar).
service ftpbind �n kullan�m� paketlerin hedefine g�re yerini tutan daemon'�n �a��r�m�na izin verir. B�ylelikle bu bi�imlendirim ile yerel a�daki bir istemci, i� verilere eri�ebilmek i�in yerel adresi (veya ilgili ad�) vermeleri gerekmektedir. log dosyas�nda okuyabilirsiniz:
{
id = ftp-public
wait = no
user = root
server = /usr/sbin/in.ftpd
server_args = -l
instances = 4
nice = 10
only_from = 0.0.0.0/0 #her istemciye izin verir
bind = 212.198.253.142 #bu sunucu i�in genel IP adresi
}service ftp
{
id = ftp-public
wait = no
user = root
server = /usr/sbin/in.ftpd
server_args = -l
instances = 4
nice = 10
only_from = 0.0.0.0/0 #sadece i� kullan�m i�in
bind = 212.198.253.142 #bu servis i�in yerel IP adresi
}
00/9/17@16:47:46: START: ftp-public pid=26861 from=212.198.253.142�lk b�l�m ftp 212.198.253.142 komutundan gelir, ikinci b�l�m ise charly den kendisine do�ru olan komut hakk�ndad�r:ftp 192.168.1.1.
00/9/17@16:47:46: EXIT: ftp-public status=0 pid=26861 duration=30(sec)
00/9/17@16:48:19: START: ftp-internal pid=26864 from=192.168.1.1
00/9/17@16:48:19: EXIT: ftp-internal status=0 pid=26864 duration=15(sec)
A��k�as�, e�er bir makina dura�an iki IP adresine sahip de�ilse bir sorun meydana gelir. Bu ppp ba�lant�lar�yla veya dhcp protokol�n� kullan�yorsan�z ortaya ��kar.Servisleri adreslere de�il aray�zlere ba�lamak daha iyi gibi g�z�k�yor. Bununla birlikte bu hala xinetd'den beklenmiyor ve ger�ek bir sorun (�rne�in, bir aray�ze veya OS'e ba�l� adrese ki xinetd bir�ok OS'i destekler eri�ebilmek i�in bir C modul� yazmak). Bir program par�ac��� kullanmak bu sorunu ��zmemize izin verir:
#!/bin/shBu program par�ac���, dinamik adres i�in bir yedekleme olan PUBLIC_ADRESS'li istenen bi�imlendirimi i�eren /etc/xinetd.base dosyay� al�r. Sonra bunu, program par�ac���na bir bile�en gibi ge�en aray�zle ilgili adresi i�eren PUBLIC_ADDRESS katar�n� belirten /etc/xinetd.conf dosyas�nda de�i�tirir. Sonra, program par�ac���na �a�r� ba�lant�n�n tipine ba�l�d�r: en kolay� �a�r�y� ifup-* dosyas�n�n sa��na eklemek ve xinetd yi tekrar ba�latmakt�r.PUBLIC_ADDRESS=`/sbin/ifconfig $1 | grep "inet addr" | awk '{print $2}'| awk -F: '{print $2}'`
sed s/PUBLIC_ADDRESS/"$PUBLIC_ADDRESS"/g /etc/xinetd.base > /etc/xinetd.conf
telnet serviceNeler oldu�una gelin bir g�z atal�m:
{
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
only_from = 192.168.1.0/24
redirect = 192.168.1.15 23
}
>>telnet charlyGer�ek�i olursak, charly de ba�lant� kurulmu� gibi g�z�k�yor, ama a�a��daki, sabrina ("Digital UNIX") n�n idareyi elinde tuttu�unu g�steriyor. Bu mekanizma ayn� anda kullan��l� ve tehlikeli olabilir. Kuruldu�unda, giri� ba�lant�n�n her iki sonunda da yap�lmal�d�r. Daha �tesi, bu tip servisler i�in, DMZ ve firewall olduk�a tercih edilir.;-)
Trying 192.168.1.1...
Connected to charly.
Escape character is '^]'.
Digital UNIX (sabrina) (ttyp1)
login:
defaults {Onlar� aktif hale getirmeden �nce, birtak�m �nlemler almal�s�n�z:
...
disabled = servers services xadmin
...
}
service xadminxadmin servisi 5 komuta sahip:
{
type = INTERNAL UNLISTED
port = 9100
protocol = tcp
socket_type = stream
wait = no
instances = 1
only_from = 192.168.1.1 #charly
}
Biz sadece finger servisine ihtiya� duyar�z:
finger servicexinetd --with-libwrap se�ene�iyle derlenmedi (server niteli�ini kontrol edin). defaults b�l�m� daha �nce sa�lananlarla ayn� tip: ba�lant� nerden gelirse gelsin charly'ye her giri� yasakland�. Yine de finger servisi tekrar aktif olmad�:
{
flags = REUSE NAMEINARGS
server = /usr/sbin/tcpd
server_args = in.fingerd
socket_type = stream
wait = no
user = nobody
only_from = 192.168.1.1 #charly
}
pappy@charly >> finger pappy@charly
[charly]
pappy@charly >>pappy@bosley >> finger pappy@charly
[charly]pappy@bosley >>
�stek, ne yetkilendirilmi� (authorized) makina olan charly
(192.168.1.1)'de ne de bosley de
d�zg�n �al���yormu� gibi g�z�km�yor. log dosyalr�na bir g�z atal�m:
/var/log/servicelog :charly'den gelen istek (ilk iki sat�r) xinetd'ye g�re iyi �al���yor g�z�k�yor: giri�e izin verildi ve istek 5 saniye s�rd�. Di�er taraftan, bosley'den gelen istek ise reddedildi (FAIL).
00/9/18@17:15:42: START: finger pid=28857 from=192.168.1.1
00/9/18@17:15:47: EXIT: finger status=0 pid=28857 duration=5(sec)
00/9/18@17:15:55: FAIL: finger address from=192.168.1.10
/var/log/services :G�r�ld��� gibi bizim iki sorgulamam�zla e�le�en sadece bir sat�r var! bosley'den gelen (ikincisi) ise xinetd taraf�ndan kesilmi�, bu y�zden bunu kog dosyas�nda bulamamak normaldir. Se�ilen sat�r ger�ektende xinetd'nin izin verdi�i charly'den charly'e g�nderilen iste�e (ilki) benziyor:zaman ve PID leri ayn�.
Sep 18 17:15:42 charly in.fingerd[28857]: refused connect from 192.168.1.1
Elimizde ne oldu�unu gelin �zetleyelim:
Yola g�re, server ve server_args servis sat�rlar� tan�mland�, wrapper �zelli�i hala eri�ilebilirdir (banner - xinetd'de banner niteli�i var-, spawn, twist, ...). Hat�rlay�n; --with-libwrap derleme se�ene�i, xinetd s�reci ba�lamadan �nce sadece eri�im haklar� kontrol�n� ekler (hosts.{allow,deny} dosyalar�n�n yard�m�yla). Bu �rnekte, bu bi�imlendirim bize tcp wrapper �zelliklerini kullanmaya devam etmemize izin verir.
Bu �zelliklerin �st �ste gelmesi �al��sa bile garip davran��lara yol a�abilir. xinetd'yi inetd ve portmap ile birlikte kullanmak yerine, bir servisi bu "super-daemons" dan sadece biriyle y�netmek daha iyidir.
chroot [options] new_rootBu �zellikle bind/DNS veya ftp gibi servisleri korumak i�in kullan�l�r. xinetd 'nin �zelliklerinden yararlanarak bu davran��n bir kopyas�n� ��karmak i�in, chroot'u bir sunucu gibi bildirmeniz gerekmektedir. Sonra sadece bile�enleri server_ags niteli�iyle aktarmn�z gerekmektedir.
service ftpB�ylelikle, bu servise bir istek g�nderildi�inde, ilk ad�m�n kulland��� chroot'tur. Sonra, ona g�nderilen ilk bile�en, server_args sat�r�nda ilk yer aland�r ve bu yeni s�per kullan�c�d�r (root). Son olarak, sunucu ba�lat�l�r.
{
id = ftp
socket_type = stream
wait = no
user = root
server = /usr/sbin/chroot
server_args = /var/servers/ftp /usr/sbin/in.ftpd -l
}
�imdi, xinetd veya inetd daemonlar�ndan hangisini kullanman�z gerekti�ini sorabilirsiniz. Ger�ek�i olursak, xinetd biraz daha fazla y�netim istiyor, �zelliklede da��t�mlarda yer almad��� s�re i�inde (Red Hat 7.0 da var). Genel eri�imli (Internet gibi) bilgisayarlarda, daha fazla koruma sundu�u i�in xinetd'yi kullanmak en g�venli ��z�md�r. Yerel a�daki makinalara inetd yeterlidir.
pop3
server
pop3
olduk�a ilgi g�r�yor gibi g�z�k�yor: Onu xinetd
ile nas�l idare edilece�ini soran iletiler ald�m.Burada kolay bir
bi�imlendirim:
service pop3 { disable = no socket_type = stream wait = no user = root server = /usr/sbin/ipop3d # log_on_success += USERID # log_on_failure += USERID }Elbette ki,
server
niteli�ine kendi yolunuzu yazman�z
gerekmektedir.
xinetd
'den pop3
kullan�m�, giri� i�in
kulland���n�z de�erlere ba�l� oldu�undan zahmetli olabilir. �rne�in,
USERID
kullan�m�, xinetd
'nizden istemcideki pop'ta
yer alan bir identd
sunucusuna bir istek g�nderir. E�er hi�bir
sunucu m�mk�n de�ilse, timeout 30 saniye bekler.
Bu y�zden, birisi iletilerini almaya �al��t���nda, identd
sunucusu cevap verene kadar en az�ndan 30 saniye
beklemek zorunda kalacakt�r. Bunu �nlemek i�in ikisinden birini se�mek
zorundas�n�z:
identd
sunucusu y�kleyin b�ylelikle
loglar�n�z olduk�a keskin olacakt�r (dikkatli olun, biri identd
taraf�ndan sa�lanan bilgileri de�i�tirebilir);
|
G�rsely�re sayfalar�n�n bak�m�, LinuxFocus Edit�rleri taraf�ndan yap�lmaktad�r
© Frédéric Raynal, FDL LinuxFocus.org Buray� klikleyerek hatalar� rapor edebilir ya da yorumlar�n�z� LinuxFocus'a g�nderebilirsiniz |
�eviri bilgisi:
|
2001-03-17, generated by lfparser version 2.9