<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//TR">
<HTML>
<HEAD>
 <META http-equiv="Content-Type" content="text/html; charset=iso-8859-9">
 <META NAME="GENERATOR" CONTENT="lfparser_2.9">
 <META NAME="LFCATEGORY" CONTENT="System Administration">
 <TITLE>lf175, System Administration:  xinetd</TITLE>
<!-- stylesheet added by lfparser: --> 
<style type="text/css">
<!--
 pre { font-familiy:monospace,Courier }
-->
</style>
 
</HEAD>
<BODY bgcolor="#ffffff" text="#000000">
 <!-- this is generated html code. NEVER use this file for your
 translation work. Instead get the file with the same article number
 and .meta.shtml in its name. Translate this meta file and then
 use lfparser program to generate the final article -->
 <!-- lfparser can be obtained from http://main.linuxfocus.org/~guido/dev/lfparser.html -->

<!-- 2pdaIgnoreStart -->
<MAP name="top">
  <AREA shape="rect" coords="367,9,418,30" alt="Home" href="../index.shtml">
  <AREA shape="rect" coords="423,9,457,30" alt="Map" href="../map.html">
  <AREA shape="rect" coords="463,9,508,30" alt="Index" href="../indice.html">
  <AREA shape="rect" coords="514,9,558,30" alt="Search" href="../Search/index.shtml">
</MAP>
<MAP name="bottom">
  <AREA shape="rect" coords="78,0,163,15" alt="News" href="../News/index.html">
  <AREA shape="rect" coords="189,0,284,15" alt="Archives" href="../Archives/index.html">
  <AREA shape="rect" coords="319,0,395,15" alt="Links" href="../Links/index.html">
  <AREA shape="rect" coords="436,0,523,15" alt="About LF" href="../aboutus.html">
</MAP>
<!-- IMAGE HEADER -->
<CENTER>
  <IMG src="../../common/images/Topbar-tr.gif" width="600" height="40" border="0" alt="[Top bar]" ismap usemap="#top" ><BR>
  <IMG src="../../common/images/Bottombar-tr.gif" width="600" height="21" border="0" alt="[Bottom bar]" ismap usemap="#bottom">
</CENTER>
<!-- SSI_INFO -->

<!-- tr_staticssi include virtual -->
<!-- tr_staticssi exec cmd -->
<!-- addedByLfdynahead ver 1.4 --><TABLE ALIGN="right" border=0><TR><TD ALIGN="right"><FONT SIZE="-1" FACE="Arial,Helvetica">Bu makalenin farklı dillerde bulunduğu adresler: <A href="../../English/November2000/article175.shtml">English</a> &nbsp;<A href="../../Castellano/November2000/article175.shtml">Castellano</a> &nbsp;<A href="../../Deutsch/November2000/article175.shtml">Deutsch</a> &nbsp;<A href="../../Francais/November2000/article175.shtml">Francais</a> &nbsp;<A href="../../Nederlands/November2000/article175.shtml">Nederlands</a> &nbsp;<A href="../../Turkce/November2000/article175.shtml">Turkce</a> &nbsp;</FONT></TD></TR></TABLE><br>
 

<!-- 2pdaIgnoreStop -->

<!-- SHORT BIO ABOUT THE AUTHOR -->
<TABLE ALIGN=LEFT BORDER=0 hspace=4 vspace=4 WIDTH="30%" >
<TR>
<TD>

<!-- 2pdaIgnoreStart -->
<!-- PALM DOC -->
<TABLE BORDER=0 hspace=4 vspace=4> <TR> <TD>
<font size=1> <img src="../../common/images/2doc.gif" width=34 align=left border=0 height=22 alt="convert to palm"><a href="http://cgi.linuxfocus.org/cgi-bin/2ztxt">Convert to GutenPalm</a><br>or <a href="http://cgi.linuxfocus.org/cgi-bin/2pda">to PalmDoc</a></font>
</TD> </TR> </TABLE>
<!-- END PALM DOC -->
<!-- 2pdaIgnoreStop -->
<br>
<img SRC="../../common/images/Frederic_Raynal.png">
<BR>tarafından  <a href="mailto:pappy@users.sourceforge.net">Fr&eacute;d&eacute;ric Raynal</a>
<BR><BR>
<I>Yazar hakkında:</I><BR>

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.


<BR><i>İçerik</i>:
<UL>
  <LI><A HREF="#lfindex0">Bu xinetd nedir?</A></LI>
  <LI><A HREF="#lfindex1">Derleme ve Yükleme</A></LI>
  <LI><A HREF="#lfindex2">Yapılandırma</A></LI>
  <LI><A HREF="#lfindex3">Access Control</A></LI>
  <LI><A HREF="#lfindex4">Service defaults  </A></LI>
  <LI><A HREF="#lfindex5">Servisin Yapılandırılması</A></LI>
  <LI><A HREF="#lfindex6">Port binding: the bind attribute</A></LI>
  <LI><A HREF="#lfindex7">Dieğr makinaya servis redirection : redirect
bileşeni</A></LI>
  <LI><A HREF="#lfindex8">Special services</A></LI>
  <LI><A HREF="#lfindex9">Let's play a bit...</A></LI>
  <LI><A HREF="#lfindex10">
Starting with a riddle </A></LI>
  <LI><A HREF="#lfindex11">chroot service</A></LI>
  <LI><A HREF="#lfindex12">Sonuç</A></LI>
  <LI><A HREF="#lfindex13">pop3 server</A></LI>
  <LI><A HREF="http://cgi.linuxfocus.org/cgi-bin/lftalkback?anum=175&lang=tr">Bu yazı için görüş bildiriminde bulunabilirsiniz</A></LI>
</UL>

</TD></TR></TABLE>
<!-- HEAD OF THE ARTICLE -->
<H2> xinetd</H2>
<h3> Çeviri : Kadriye Öztürk </h3>
 <IMG alt="security" border=0 height=100 src="../../common/images/illustration175.gif" width=100>
<!-- ABSTRACT OF THE ARTICLE -->
<P><i>Özet</i>:
<P>
<P>xinetd - genişletilmiş Internet servisleri daemon'ı (eXtended InterNET services
daemon) - içeri sokulmaya karşı iyi bir güvenlik sağlar ve <I>Servislerin
reddi- Deny of services</I> (<I>DoS</I>) nin risklerini azaltır. En iyi
bilinen çift gibi (<FONT face="Courier New,Courier">inetd</FONT>+<FONT
face="Courier&#10;New,Courier">tcpd</FONT>), 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. </P></P>
<HR size="2" noshade align="right"><BR>
<!-- BODY OF THE ARTICLE -->



<A NAME="lfindex0">&nbsp;</A>
<H3>Bu xinetd nedir?</H3>

Klasik olarak <FONT face="Courier New,Courier">inetd</FONT> bir bilgisayarın
ağ bağlantılarını
kontrol etmeye yardım eder. <FONT face="Courier&#10;New,Courier">inetd</FONT>
tarafından yönetilen bir porta istek geldğinde, inetd bunu tcpd denilen bir
programa gönderir. Tcpd, isteğe izin verilip verilmeyeceğini <FONT face="Courier New,Courier">hosts.{allow, deny}</FONT>
dosyalarındaki kurallara göre karar verir. İsteğe izin verilirse, ilgili
sunucu süreci (process) başlatılır (e.g ftp). Bu mekanizma <FONT face="Courier&#10;New,Courier">tcp_wrapper</FONT>
olarak da bilinir.
<P>xinetd, <FONT face="Courier New,Courier">tcp_wrapper</FONT>'ın
sağladığına benzer erişim kontrolü yeteneklerine sahiptir. Bununla birlikte, onun yetenekleri daha fazladır:
<UL>
  <LI> TCP, UDP and RPC servisleri için erişim kontrolü (Sonuncular henüz iyi
desteklenmiyorlar.)
  <LI>zaman bölümü (time segments) tabanlı erişim kontrolü
  <LI>tam giriş yapma, bağlantı başarılı veya hatalı olsa da
  <LI> <I>Deny of Services</I> (DoS) ataklarına (kaynaklarını doyurarak bir
makinayı dondurmaya(freeze) çalışan ataklar) karşı etkin içerik :
  <UL>
    <LI>aynı zamanda çalışan benzer tip sunucuların sayısında sınırlama
    <LI>sunucuların toplam sayısında sınırlama
    <LI>log dosyalarının boyutunda sınırlama. </LI></UL>
  <LI>özel bir arayüze bir servisin bağlanması: Bu size, örneğin servislerin
dışarıda değil sizin özel ağınızda kullanılabilir olmasına izin verir.
  <LI>diğer sistemlere proxy gibi kullanılabilir. İç ağa erişebilmek için IP
maskelendirmesi - ip_masquerading (veya  Ağ Adres Çevirici - Network Address Translation
- NAT) ile oldukça kullanışlı bir birliktelik.
  </LI></UL>Ana geriçekilim, az önce bahsedilen, zayıf desteklenmiş RPC
çağrılarını ilgilendirir. Bununla birlikte, <FONT
face="Courier New,Courier">portmap</FONT> ve xinetd birlikte iyi çalışırlar.

<P>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.
<A name=lfindex1>&nbsp;</A>
<A NAME="lfindex1">&nbsp;</A>
<H3>Derleme ve Yükleme</H3>

xinetd'yi şu adresten elde edebilirsiniz: <A href="http://www.xinetd.org/">http://www.xinetd.org/</A>.
Bu makale için 2.1.8.9pre10 sürümünü kullanıyoruz. <BR>Derleme ve yükleme
klasik yolla yapılır: alışılmış komutlar <FONT face="Courier New,Courier">./configure;
make; make install</FONT> hepsini yapın :) <FONT
face="Courier&#10;New,Courier">configure</FONT> alışılmış seçenekleri
desteklerler. Üç özel seçenek derleme anında kullanılabilir:
<OL>
  <LI><FONT face="Courier New,Courier">--with-libwrap</FONT> : bu seçenekle,
xinetd, <FONT face="Courier New,Courier">tcpd</FONT> biçimlendirim dosyalarını
(<FONT face="Courier New,Courier">/etc/hosts.{allow, deny}</FONT>) kontrol
eder ve erişim kabul edilirse kendi kontrol usullerini kullanır. Bu seçenğin
çalışması için, tcp_wrapper ve kütüphanelerinin makinaya yüklenmiş olması
gerekmektedir. (Yazarın notu: wrapper ile ne yapılabiliyorsa xinetd ile de
yapılabilir. Buna izin vermek, config dosyalarının çoğalmasına ve yönetimin
daha güç olamsına yol açar. Özetle tavsiye etmiyorum.)
  <LI><FONT face="Courier New,Courier">--with-loadavg</FONT> : bu seçenek
xinetd'nin max_load configuration seçeneğini kullanmasına izin verir. Bu
size makinaya fazla yüklenildiğinde bazı servisleri yeniden aktive etmenizi
sağlar. Bazı DoS ataklarını (<FONT face="Courier New,Courier">max_load</FONT>
niteliğini <A href="#tableau1">table
  1</A> de kontrol edin) önlemek için gerekli bir seçenek.
  <LI><FONT face="Courier New,Courier">--with-inet6</FONT> : eğer IPv6 'yı
kullanacağınızı düşünüyorsanız, bu seçenek onu desteklemenize izin verir. IPv4
<B>ve</B> IPv6 bağlantıları yönetilir ama IPv4 adresleri IPv6 şekline
dönüştürülür.
</LI></OL>xinetd 'yi başlatmadan önce, inetd 'yi durdurmanıza gerek yoktur.
Yine de iki deamon'ın umulmayan davranışlarda bulunmasına yol açmaya gerek
yok!
<P>Bazı sinyaller xinetd 'nin davranışlarını nitelemek için kullanılır:
<UL>
  <LI>SIGUSR1 : yazılım tekrar biçimlendirimi : Biçimlendirim dosyası tekrar
okunur ve servis parametreleri buna göre değiştirilir
  <LI>SIGUSR2 : donanım tekrar biçimlendirimi: yukarıdaki gibi, ama daha
fazlası kullanım dışı deamonlar öldürülür
  <LI>SIGTERM : xinetd 'yi ve yarattığı deamonları öldürür
</LI></UL>Daha başkalrı da var (gelin belgelemedeki ve man sayfalarındaki
bir hatadan bahsedelim: SIGHUP çöplerini (dump) <FONT
face="Courier New,Courier">/var/run/xinetd.dump</FONT> dosyasına yazar,<FONT
face="Courier New,Courier">/tmp/xinetd.dump</FONT> dosyasına değil), ama
yukarıda bahsedilen üçü start, stop, restart, soft, hard seçeneklerini (son
ikisi sırasıyla SIGUSR1 ve SIGUSR2 ile ilgilidir) içeren küçük bir program
parçacığıyla kolayca yönetilebilir.
 <A name=lfindex2>&nbsp;</A>
<A NAME="lfindex2">&nbsp;</A>
<H3>Yapılandırma</H3>

 <FONT face="Courier New,Courier">/etc/xinetd.conf</FONT> dosyası
xinetd deamon'ı (bir komut satırı seçeneği bir başkasına sağlamasına izin
verir) için benimsenmiş biçimlendirim dosyasıdır. xinetd biçimlendirimi çok
zor değil ama, uzun bir iş olabilir ve söz dizimi ne yazık ki atası <FONT face="Courier&#10;New,Courier">inetd</FONT>
den daha farklıdır.
<P>İki yararlı özellik (<FONT face="Courier New,Courier">itox</FONT> ve <FONT
face="Courier New,Courier">xconv.pl</FONT>) xinetd ile sağlanır ve <FONT face="Courier&#10;New,Courier">/etc/inetd.conf </FONT>
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. <CODE>itox</CODE> programı hala
korunmasına rağmen uzun süredir geliştirilmemiştir. <FONT face="Courier New,Courier">xconv.pl </FONT>
programı iyi bir çözümdür, sonuç, xinetd'nin <FONT face="Courier New,Courier">inetd</FONT>
den farklı olarak sahip olduğu özelliklerden dolayı belirtilmek zorunda olsa
da.: <BR>
<BLOCKQUOTE><FONT face="Courier New,Courier">&gt;&gt;/usr/local/sbin/xconv.pl
  &lt; /etc/inetd.conf &gt;
/etc/xinetd.conf</FONT></BLOCKQUOTE>Biç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.
<P>defaults bölümü şuna benzer:
<BLOCKQUOTE><I><FONT face="Courier New,Courier">defaults</FONT></I> <BR><FONT
  face="Courier New,Courier">{</FONT> <BR><FONT
  face="Courier New,Courier">&nbsp;&nbsp;&nbsp; attribute operator
  value(s)</FONT> <BR><FONT face="Courier New,Courier">&nbsp;&nbsp;&nbsp;
  ...</FONT> <BR><FONT face="Courier New,Courier">}</FONT></BLOCKQUOTE>Bu
bölümde tanımlanan her nitelik sağlanmiş değer(ler)i sonra tanımlancak
servislerin hepsi için saklar. Bunun için, <FONT face="Courier&#10;New,Courier">only_from</FONT>
niteliği, sunucuya bağlanabilecek yetkilendirilmiş adreslerin bir listesini
vermeye izin verir:
<BLOCKQUOTE><FONT face="Courier New,Courier">only_from = 192.168.1.0/24
  192.168.5.0/24 192.168.10.17</FONT></BLOCKQUOTE>
Sonra, 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 <font face="Courier New,Courier">ALL:ALL@ALL</font>
içeren <font face="Courier New,Courier">hosts.deny</font> dosyasıyla ve
sadece yetkilendirilmiş (authorized) servis ve adresleri sağlayan <font face="Courier
New,Courier">hosts.allow</font> dosyasıyla yapılabilir.
<p>config dosyasındaki servisi anlatan her bölüm şuna benzer:

<blockquote><font face="Courier New,Courier"><i>service</i>service_name</font>
<br><font face="Courier New,Courier">{</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp; attribute operator
value(s)</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp; ...</font>
<br><font face="Courier New,Courier">}</font></blockquote>

Üç 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.

<p> <a href="#tableau1">table 1</a> bu özelliklerin bazılarını kısaca
anlatıyor. Sonra da bunları nasıl kullanıcağımızı birkaç örnekle görüceğiz.
<font face="Courier New,Courier">xinetd.conf</font>'un <font
face="Courier New,Courier">yardım sayfaları</font> size daha fazla bilgi
verecektir.
<br>&nbsp;
<br>&nbsp;
<a name="tableau1">&nbsp;</a>
<center><table BORDER WIDTH="100%" NOSAVE bgcolor="#9999BB">
<tr>
<td><b>Nitelik</b></td>

<td><b>Değerler ve açıklamalar</b></td>
</tr>

<tr>
<td><font face="Courier New,Courier">flags</font></td>

<td>Sadece en geçerli değerler burada bahsedilecektir, diğerleri için
belgelendirmeye başvurun:
<ul>
<li>
IDONLY : Sadece bir kimlik sunucusuna sahip istemcilerden gelen bağlantıları
kabul eder;
</li>

<li>
NORETRY : hata halinde yeni bir sürecin (process) tekrar çatallaşmasını (fork) önler;
</li>

<li>
NAMEINARGS : <font face="Courier New,Courier">server_args</font> niteliğinin ilk
bileşeni <font face="Courier New,Courier">sunucu</font> için <font face="Courier New,Courier">argv[0]</font>
olarak kullanılır. Bu <font face="Courier New,Courier">tcpd</font>'yi <font face="Courier
New,Courier">server</font> niteliğine yerleştirerek kullanmanıza izin verir
ve sonra <font face="Courier New,Courier">inetd</font> de yaptığınız gibi
sunucu adı ve bileşenlerini <font face="Courier New,Courier">server_args</font>
gibi yazarsınız.</li>
</ul>
</td>
</tr>

<tr>
<td><font face="Courier New,Courier">log_type</font></td>

<td>xinetd benimsenmiş olarak <font face="Courier New,Courier">syslogd</font> <font face="Courier New,Courier">daemon.info</font>
'yu kullanır.
<ul>
<li>
SYSLOG selector [düzey] : <font face="Courier New,Courier">syslogd</font>
dan <font face="Courier New,Courier">daemon</font>,
<font face="Courier New,Courier">auth</font>,
<font face="Courier New,Courier">user</font>
veya <font face="Courier New,Courier">local0-7</font> den birini seçmenize
izin verir;
</li>

<li>
FILE [max_size [absolute_max_size]] : belirtilmiş dosya bilgi alır. İki
seçenek dosyanın boyutunun sınırını belirler. Bu boyuta gelindiğinde, ilk
seçenek syslogd 'ye bir mesaj gönderir, ikincisi de bu servise girişi
durdurur Eğer bu bir ortak dosya ise - veya sabitleştirilmiş - farklı
servisler ilgilenebilir).
</li>
</ul>
</td>
</tr>

<tr>
<td><font face="Courier New,Courier">log_on_success</font></td>

<td>Bir sunucu çalıştığında farklı bilgiler giriş yapabilir:
<ul>
<li>
PID : sunucunun PID'i (Eğer bu bir iç xinetd servisi ise PID nın değeri 0
olur);</li>

<li>
HOST : istemci adresi;</li>

<li>
USERID : <a href="http://www.ietf.org/rfc/rfc1413.txt">RFC1413</a> kimlik
belirleme protokolüne göre uzaktaki kullanıcının kimliği belirlenir;
</li>

<li>
EXIT : sürecin (process) çıkış durumu;</li>

<li>
DURATION : oturum süresi.
</li>
</ul>
</td>
</tr>

<tr>
<td><font face="Courier New,Courier">log_on_failure</font></td>

<td>Burada tekrar, sunucu kaynaklarının eksikliğinden veya giriş kurallarından
dolayı çalışmadığı zaman xinetd birçok bilgi girişi alır:
<ul>
<li>
HOST, USERID : yukarıda bahsedildiği gibi;</li>

        <LI>ATTEMPT : bir erişim teşebbüsünü girer. Başka bir değer atanana
kadar bu benimsenmiş bir değerdir;
        <LI>RECORD : istemcide mümkün olan her bilgiyi girer.
  </LI></UL></TD></TR>
  <TR>
    <TD><FONT face="Courier New,Courier">nice</FONT></TD>
    <TD> <FONT face="Courier New,Courier">nice</FONT> komutunun yaptığı gibi
sunucunun üstünlük hakkını değiştirir.</TD></TR>
  <TR>
    <TD><FONT face="Courier New,Courier">no_access</FONT></TD>
    <TD>Bu servise erişim hakkı olmayan kullanıcıların listesi.</TD></TR>
  <TR>
    <TD><FONT face="Courier New,Courier">only_from</FONT></TD>
    <TD>Yetkilendirilmiş (authorized) istemcilerin listesi. Bu niteliğe hiç
bir değer atanmadıysa servişe erişim reddedilir.</TD></TR>
  <TR>
    <TD><FONT face="Courier New,Courier">port</FONT></TD>
    <TD>Servise ilgili portlar. Bu <FONT face="Courier New,Courier">/etc/services</FONT>
dosyasında da tanımlandıysa, her iki port numarası eşleşmelidir.</TD></TR>
  <TR>
    <TD><FONT face="Courier New,Courier">protocol</FONT></TD>
    <TD>Belirtilmiş protokol <FONT face="Courier&#10;New,Courier">/etc/protocols</FONT>
dosyasında olmalıdır. Eğer hiçbir protokol verilmemişse, yerine servisin
benimsenmiş birtanesi kullanılır.</TD></TR>
  <TR>
    <TD><FONT face="Courier New,Courier">server</FONT></TD>
    <TD>Sunucunun yolu.</TD></TR>
  <TR>
    <TD><FONT face="Courier New,Courier">server_args</FONT></TD>
    <TD>Sunucuya verilen bileşenler.</TD></TR>
  <TR>
    <TD><FONT face="Courier New,Courier">socket_type</FONT></TD>
    <TD>stream (TCP), dgram (UDP), raw (IP direkt erişimi) veya seqpacket
  ().</TD></TR>
  <TR>
    <TD><FONT face="Courier New,Courier">type</FONT></TD>
    <TD>xinetd 3 tip servisi yönetebilir:
      <OL>
        <LI>RPC : <FONT face="Courier New,Courier">/etc/rpc</FONT>
dosyasında tanımlananlar için... ama çok iyi çalışmaz;
        <LI>INTERNAL : xinetd tarafından direkt olarak yönetilen servisler
için (<FONT face="Courier&#10;New,Courier">echo</FONT>, <FONT face="Courier New,Courier">time</FONT>, <FONT
        face="Courier New,Courier">daytime</FONT>, <FONT
        face="Courier New,Courier">chargen</FONT> ve <FONT
        face="Courier New,Courier">discard</FONT>);
        <LI>UNLISTED : <FONT
        face="Courier&#10;New,Courier">/etc/rpc</FONT> <FONT
        face="Courier New,Courier">/etc/services</FONT> dosyalarından
birinde tanımlanmayan servisler için;
</LI></OL>Not edelim, <FONT
      face="Courier New,Courier">servers</FONT>, <FONT
      face="Courier New,Courier">services</FONT> ve <FONT
      face="Courier New,Courier">xadmin</FONT> iç servislerinde gördüğümüz
gibi çeşitli değerleri birleştirmek mümkündür.</TD></TR>
  <TR>
    <TD><FONT face="Courier New,Courier">wait</FONT></TD>
    <TD>Servislerin threadlere doğru olan davranışlarını tanımlar. İki değer
kabul edilebilirdir:
      <UL>
        <LI>yes : servis mono-thread dir, sadece bu tipin bir bağlantısı
servis tarafında yönetilebilir;
        <LI>no : bir yeni servis, tanımlanan maksimum sınıra göre her yeni servis isteği
için xinetd tarafından başlatılır. (<FONT
        color=#ff0000>Uyarı</FONT>, benimsenmiş olarak bu değer sınırsızdır).
      </LI></UL></TD></TR>
  <TR>
    <TD><FONT face="Courier New,Courier">cps</FONT></TD>
    <TD>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.
    </TD></TR>
  <TR>
    <TD><FONT face="Courier New,Courier">instances</FONT></TD>
    <TD>Aynı anda çalışabilecek aynı tip sunucuların maksimum sayısını
belirler.</TD></TR>
  <TR>
    <TD><FONT face="Courier New,Courier">max_load</FONT></TD>
    <TD>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.</TD></TR>
  <TR>
    <TD>per_source</TD>
    <TD>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.&nbsp;
</TD></TR>
  <CAPTION align=bottom><A
  href="#tableau1">Tab.
  1</A> : xinetd için birkaç nitelik</CAPTION></TABLE></CENTER>
<P>

<A href="#tableau1">tablo1</A> de gösterilen son dört nitelik, bir sunucuya bağlı olan kaynakların
kontrolüne izin verir. Bu <I>Denial of Service - Servis reddi</I> (DoS)
ataklarından (bütün kaynaklarını kullanarak makinayı dondurma) korunmanın en
etkili yoludur.
<P>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.<A name=lfindex3>&nbsp;</A>

<A NAME="lfindex3">&nbsp;</A>
<H2>Access Control</H2>

<P>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:
<UL>
  <LI>erişim kontrolünü makina adı çözünürlülüğüyle yapabilirsiniz. Bunu
yaparken, xinetd her_bağlantı_için belirlenmiş makina ad(lar)ı üzerinde
arama yapar ve bağlantı adreslerini, makina adlarından dönen adreslerle
karşılaştırır;
  <LI>erişim kontrolünü .domain.com ile yapabilirsiniz. İstemci
bağlandığında, xinetd bağlantı adresini yerdeğiştirir ve belirlenmiş alan
adında olup olmadığına bakar.
 </LI></UL>Bunları açığa kavuşturmak için, açıkçası IP adresleri daha
iyidir, bu yolla bu servise gelen bağlantılarda isim arama(lar)yı önlemiş
olursunuz. Erişim kontrolünü makina adı ile yapmak zorunda iseniz, yerel bir isim
sunucusu (en azında bir caching) çalıştırırsanız, işler daha hızlı
olur. Adres çözünürlüğünüzü yapmak için alan adı yuvalarını (socket) kullanmanız daha
iyidir (<CODE>/etc/resolv.conf</CODE>'un içine bir <CODE>nameserver- isim
sunucusu</CODE> girişi yerleştirmeyiniz).
<P></P><A name=lfindex4>&nbsp;</A>
<A NAME="lfindex4">&nbsp;</A>
<H2>Service <I>defaults </I> </H2>

<FONT face="Courier New,Courier">defaults</FONT> bölümü, niteliklerin
bir sayısı için değerleri atamanıza izin verir (bütün liste için
belgelendirime göz atınız). Bu özelliklerden bazıları (<FONT face="Courier&#10;New,Courier">only_from</FONT>, <FONT
face="Courier New,Courier">no_access</FONT>, <FONT
face="Courier New,Courier">log_on_success</FONT>, <FONT
face="Courier New,Courier">log_on_failure</FONT>, ...) eş zamanlı olarak bu
bölümde atanmış değerleri ve servis tarafından sağlananları tutar.
<P>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: <FONT
face="Courier New,Courier">only_from</FONT> ve <FONT
face="Courier New,Courier">no_access</FONT>. İkincisini seçersek ve şöyle
yazarsak:

<BLOCKQUOTE><FONT face="Courier New,Courier">no_access = 0.0.0.0/0</FONT></BLOCKQUOTE>

servislere erişimi tamamen engelleriz. Bununla birlikte herkese izin
vermek istiyorsanız örneğin <FONT face="Courier New,Courier">echo
(ping)</FONT>'e erişebilmek için, echo servisinde şöyle yazmalısınız:

<BLOCKQUOTE><FONT face="Courier New,Courier">only_from =
0.0.0.0/0</FONT></BLOCKQUOTE>

Bu biçimlendirmeyle elde edeceğiniz giriş şöyledir:

<BLOCKQUOTE><FONT face="Courier New,Courier">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.1</FONT></BLOCKQUOTE>

Gerç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:

<BLOCKQUOTE><FONT face="Courier New,Courier">only_from =
192.0.0.0/8</FONT></BLOCKQUOTE>
Erişimi sadece nitelikle kontrol etmek için daha kolay bir yöntem:
<BLOCKQUOTE><FONT face="Courier New,Courier">only_from =</FONT></BLOCKQUOTE>

Değer vermemek her bağlantıyı koparmaz :) Sonra, her servis erişimi kabul
eder.
<P>Söylenmesi gerek: Verilen bir servis (direkt olarak veya <FONT face="Courier&#10;New,Courier">default</FONT>
ile tahsis edilmiş olan) bölümü için <FONT color=#ff0000>hiçbir kuralın olmadığı durumda
</FONT>(ne bu <FONT
face="Courier New,Courier">only_from</FONT> ne de ötekinde <FONT
face="Courier&#10;New,Courier">no_access</FONT>) <FONT color=#ff0000>
servise erişime izin verilir!</FONT>
<P><FONT face="Courier New,Courier">defaults</FONT>'un bir örneği burda:

<BLOCKQUOTE><FONT face="Courier New,Courier">defaults</FONT> <BR><FONT
  face="Courier New,Courier">{</FONT> <BR><FONT
  face="Courier New,Courier">&nbsp;
  instances&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 15</FONT> <BR><FONT
  face="Courier New,Courier">&nbsp;
  log_type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = FILE
  /var/log/servicelog</FONT> <BR><FONT face="Courier New,Courier">&nbsp;
  log_on_success&nbsp; = HOST PID USERID DURATION EXIT</FONT> <BR><FONT
  face="Courier New,Courier">&nbsp; log_on_failure&nbsp; = HOST USERID
  RECORD</FONT> <BR><FONT face="Courier New,Courier">&nbsp;
  only_from&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =</FONT> <BR><FONT
  face="Courier New,Courier">&nbsp; per_source&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
  5</FONT>
  <P><FONT face="Courier New,Courier">&nbsp; disabled = shell login exec
  comsat</FONT> <BR><FONT face="Courier New,Courier">&nbsp; disabled = telnet
  ftp</FONT> <BR><FONT face="Courier New,Courier">&nbsp; disabled = name uucp
  tftp</FONT> <BR><FONT face="Courier New,Courier">&nbsp; disabled = finger
  systat netstat</FONT>
  <P><FONT face="Courier New,Courier">&nbsp; #INTERNAL</FONT> <BR><FONT
  face="Courier New,Courier">&nbsp; disabled = time daytime chargen servers
  services xadmin</FONT>
  <P><FONT face="Courier New,Courier">&nbsp; #RPC</FONT> <BR><FONT
  face="Courier New,Courier">&nbsp; disabled = rstatd rquotad rusersd sprayd
  walld</FONT> <BR><FONT face="Courier New,Courier">}</FONT></P></BLOCKQUOTE>

iç servislerin arasında, <FONT face="Courier New,Courier">servers</FONT>, <FONT
face="Courier New,Courier">services</FONT>, ve&nbsp; <FONT
face="Courier New,Courier">xadmin</FONT> xinetd'yi yönetebilmenize olanak
sağlar.Daha fazlası sonra.

<A NAME="lfindex5">&nbsp;</A>
<H2>Servisin Yapılandırılması</H2>

Bir sevisi biçimlendirmek için ihtiyaç duyduğumuz ... hiçbirşey yoktur :)
Gerçekte, herşey benimsenmiş değerdeki gibi çalışır: Siz sadece servisi
yönetmek için doğru nitelik ve değerlerini kullanmalısınız. Bu, benimsenmiş
değerlerdeki bir değişimi veya bu servis için başka bir niteliği ifade eder.
Bazı nitelikler  servisin tipine (INTERNAL, UNLISTED veya RPC) göre
sunulmalıdır:

<BR>&nbsp; <BR>&nbsp; <A name=tableau2></A>
<CENTER>
<TABLE width="60%" bgColor=#9999bb border=1 NOSAVE>
  <TBODY>
  <TR>
    <TD><B>Nitelik</B></TD>
    <TD><B>Açıklama</B></TD></TR>
  <TR>
    <TD><FONT face="Courier New,Courier">socket-type</FONT></TD>
    <TD>Her servis.</TD></TR>
  <TR>
    <TD><FONT face="Courier New,Courier">user</FONT></TD>
    <TD>Sadece İÇ olmayan servisler için</TD></TR>
  <TR>
    <TD><FONT face="Courier New,Courier">server</FONT></TD>
    <TD>Sadece İÇ olmayan servisler için</TD></TR>
  <TR>
    <TD><FONT face="Courier New,Courier">wait</FONT></TD>
    <TD>Her servis.</TD></TR>
  <TR>
    <TD><FONT face="Courier New,Courier">protocol</FONT></TD>
    <TD>Her RPC servisi ve <FONT face="Courier&#10;New,Courier">/etc/services</FONT>
da olmayanlar için.</TD></TR>
  <TR>
    <TD><FONT face="Courier New,Courier">rpc_version</FONT></TD>
    <TD>Her RPC servisi.</TD></TR>
  <TR>
    <TD><FONT face="Courier New,Courier">rpc_number</FONT></TD>
    <TD><FONT face="Courier New,Courier">/etc/rpc</FONT> de yer almayan her RPC servisi
için.
</TD></TR>
  <TR>
    <TD><FONT face="Courier New,Courier">port</FONT></TD>
    <TD><FONT face="Courier&#10;New,Courier">/etc/services</FONT>de
bulunmayan her RPC olmayan servis için.
</TD></TR>
  <CAPTION align=bottom><A
  href="#tableau2">Tab. 2</A>: gereksinilen nitelikler</CAPTION></TABLE></CENTER>

<P>Bu örnek servisleri nasıl tanımlayacağınızı gösteriyor:

<BLOCKQUOTE><FONT face="Courier New,Courier">service ntalk</FONT> <BR><FONT
  face="Courier New,Courier">{</FONT> <BR><FONT
  face="Courier New,Courier">&nbsp; socket_type&nbsp;&nbsp; = dgram</FONT>
  <BR><FONT face="Courier New,Courier">&nbsp;
  wait&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = yes</FONT>
  <BR><FONT face="Courier New,Courier">&nbsp;
  user&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = nobody</FONT>
  <BR><FONT face="Courier New,Courier">&nbsp;
  server&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = /usr/sbin/in.ntalkd</FONT>
  <BR><FONT face="Courier New,Courier">&nbsp; only_from&nbsp;&nbsp;&nbsp;&nbsp;
  = 192.168.1.0/24</FONT> <BR><FONT face="Courier New,Courier">}</FONT>
  <P><FONT face="Courier New,Courier">service ftp</FONT> <BR><FONT
  face="Courier New,Courier">{</FONT> <BR><FONT
  face="Courier New,Courier">&nbsp; socket_type&nbsp; = stream</FONT> <BR><FONT
  face="Courier New,Courier">&nbsp;
  wait&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = no</FONT> <BR><FONT
  face="Courier New,Courier">&nbsp;
  user&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = root</FONT> <BR><FONT
  face="Courier New,Courier">&nbsp; server&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
  /usr/sbin/in.ftpd</FONT> <BR><FONT face="Courier New,Courier">&nbsp;
  server_args&nbsp; = -l</FONT> <BR><FONT face="Courier New,Courier">&nbsp;
  instances&nbsp;&nbsp;&nbsp; = 4</FONT> <BR><FONT
  face="Courier New,Courier">&nbsp; access_times = 7:00-12:30 13:30-21:00</FONT>
  <BR><FONT face="Courier New,Courier">&nbsp;
  nice&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 10</FONT> <BR><FONT
  face="Courier New,Courier">&nbsp; only_from&nbsp;&nbsp;&nbsp; =
  192.168.1.0/24</FONT> <BR><FONT
face="Courier New,Courier">}</FONT></P></BLOCKQUOTE>&nbsp;

Not 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. <A name=lfindex6>&nbsp;</A>

<A NAME="lfindex6">&nbsp;</A>
<H3>Port binding: the <I>bind</I> attribute</H3>

Bu nitelik bir servisi belirli bir IP adresine bağlamanıza (bind) izin verir.
Eğer makina sadece bir adrese sahipse, bu kullanışsızdır. Diğer taraftan,
bir yerel ağın parçası olan ve Internete bağlı olan bir makinanın en azından
iki adrese sahiptir.
<P>Ö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: <FONT
face="Courier&#10;New,Courier">bind</FONT> 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 <FONT face="Courier New,Courier">id</FONT> 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). <BR>

<BLOCKQUOTE><FONT face="Courier New,Courier">service ftp</FONT> <BR><FONT
  face="Courier New,Courier">{</FONT> <BR><FONT
  face="Courier New,Courier">&nbsp;
  id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
  ftp-public</FONT> <BR><FONT face="Courier New,Courier">&nbsp;
  wait&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = no</FONT> <BR><FONT
  face="Courier New,Courier">&nbsp;
  user&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = root</FONT> <BR><FONT
  face="Courier New,Courier">&nbsp; server&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
  /usr/sbin/in.ftpd</FONT> <BR><FONT face="Courier New,Courier">&nbsp;
  server_args&nbsp; = -l</FONT> <BR><FONT face="Courier New,Courier">&nbsp;
  instances&nbsp;&nbsp;&nbsp; = 4</FONT> <BR><FONT
  face="Courier New,Courier">&nbsp;
  nice&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 10</FONT> <BR><FONT
  face="Courier New,Courier">&nbsp; only_from&nbsp;&nbsp;&nbsp; = 0.0.0.0/0
  #her istemciye izin verir</FONT> <BR><FONT face="Courier New,Courier">&nbsp;
  bind&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 212.198.253.142 #bu
sunucu için genel IP adresi</FONT> <BR><FONT
  face="Courier New,Courier">}</FONT>
<p><font face="Courier New,Courier">service ftp</font>
<br><font face="Courier New,Courier">{</font>
<br><font face="Courier New,Courier">&nbsp; id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
= ftp-public</font>
<br><font face="Courier New,Courier">&nbsp; wait&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
= no</font>
<br><font face="Courier New,Courier">&nbsp; user&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
= root</font>
<br><font face="Courier New,Courier">&nbsp; server&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
= /usr/sbin/in.ftpd</font>
<br><font face="Courier New,Courier">&nbsp; server_args&nbsp; = -l</font>
<br><font face="Courier New,Courier">&nbsp; instances&nbsp;&nbsp;&nbsp;
= 4</font>
<br><font face="Courier New,Courier">&nbsp; nice&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
= 10</font>
<br><font face="Courier New,Courier">&nbsp; only_from&nbsp;&nbsp;&nbsp;
= 0.0.0.0/0 #sadece iç kullanım için</font>
<br><font face="Courier New,Courier">&nbsp; bind&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
= 212.198.253.142 #bu servis için yerel IP adresi</font>
<br><font face="Courier New,Courier">}</font></blockquote>

<font face="Courier New,Courier">
bind</font> ı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:

<blockquote><font face="Courier New,Courier">00/9/17@16:47:46: START:
<font color="#00AA55">ftp-public</font> pid=26861 from=212.198.253.142</font>
<br><font face="Courier New,Courier">00/9/17@16:47:46: EXIT:
<font color="#00AA55">ftp-public</font> status=0 pid=26861
duration=30(sec)</font>
<br><font face="Courier New,Courier">00/9/17@16:48:19: START:
<font color="#0088FF">ftp-internal</font> pid=26864 from=192.168.1.1</font>
<br><font face="Courier New,Courier">00/9/17@16:48:19: EXIT:
<font color="#0088FF">ftp-internal</font> status=0 pid=26864
duration=15(sec)</font></blockquote>

İlk bölüm <font face="Courier New,Courier" color="#00AA55">ftp
212.198.253.142</font> komutundan gelir, ikinci bölüm ise <font face="Courier New,Courier">charly</font>
den kendisine doğru olan komut hakkındadır:<font face="Courier New,Courier" color="#0088FF">ftp
192.168.1.1</font>.
<p>Açıkçası, eğer bir makina durağan iki IP adresine sahip değilse bir sorun
meydana gelir. Bu <font face="Courier New,Courier">ppp</font> bağlantılarıyla
veya <font face="Courier New,Courier">dhcp</font> 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:


<blockquote><font face="Courier New,Courier">#!/bin/sh</font>
<p><font face="Courier New,Courier">PUBLIC_ADDRESS=`/sbin/ifconfig $1
| grep "inet addr" | awk '{print $2}'| awk -F: '{print $2}'`</font>
<br><font face="Courier New,Courier">sed s/PUBLIC_ADDRESS/"$PUBLIC_ADDRESS"/g
/etc/xinetd.base > /etc/xinetd.conf</font></blockquote>

Bu program parçacığı, dinamik adres için bir yedekleme olan PUBLIC_ADRESS'li
istenen biçimlendirimi içeren <font face="Courier New,Courier">/etc/xinetd.base</font>
 dosyayı alır. Sonra bunu, program parçacığına bir bileşen gibi geçen
arayüzle ilgili adresi içeren <font face="Courier New,Courier">PUBLIC_ADDRESS</font> katarını belirten
<font face="Courier New,Courier">/etc/xinetd.conf</font> 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ı <font face="Courier New,Courier">ifup-*</font> dosyasının
sağına eklemek ve xinetd yi tekrar başlatmaktır.


<A NAME="lfindex7">&nbsp;</A>
<H2>Dieğr makinaya servis redirection : <i>redirect</i>
bileşeni</H2>


xinetd saydam bir proxy gibi kullanılabilir, bununla redirect niteliğinden
ayrılır (hemen hemen, sonra görüceğiz). Bu, istenen kapıya (port) bir başka
makinaya doğru bir servis isteği göndermenize izin verir.

<blockquote><font face="Courier New,Courier">telnet service</font>
<br><font face="Courier New,Courier">{</font>
<br><font face="Courier New,Courier">&nbsp; flags&nbsp; = REUSE</font>
<br><font face="Courier New,Courier">&nbsp; socket_type = stream</font>
<br><font face="Courier New,Courier">&nbsp; wait&nbsp; = no</font>
<br><font face="Courier New,Courier">&nbsp; user&nbsp; = root</font>
<br><font face="Courier New,Courier">&nbsp; server = /usr/sbin/in.telnetd</font>
<br><font face="Courier New,Courier">&nbsp; only_from = 192.168.1.0/24</font>
<br><font face="Courier New,Courier">&nbsp; redirect = 192.168.1.15 23</font>
<br><font face="Courier New,Courier">}</font></blockquote>

Neler olduğuna gelin bir göz atalım:

<blockquote><font face="Courier New,Courier">>>telnet charly</font>
<br><font face="Courier New,Courier">Trying 192.168.1.1...</font>
<br><font face="Courier New,Courier">Connected to charly.</font>
<br><font face="Courier New,Courier">Escape character is '^]'.</font>
<br>&nbsp;
<p><font face="Courier New,Courier">Digital UNIX (sabrina) (ttyp1)</font>
<p><font face="Courier New,Courier">login:</font></blockquote>

Gerçekçi olursak, <font face="Courier New,Courier">charly</font> de bağlantı
kurulmuş gibi gözüküyor, ama aşağıdaki, <font face="Courier New,Courier">sabrina</font>
("<font face="Courier New,Courier">Digital UNIX</font>")
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.;-)



<A NAME="lfindex8">&nbsp;</A>
<H3>Special services</H3>


Üç servis sadece  xinetd'ye aittir. Bu servisler /etc/rpc ve /etc/services
de bulunmadığından dolayı UNLISTED bayrağına (flag) sahip olmalıdırlar
(INTERNAL bayrağının yanında bilgilendiren).
<ol>
<li>
servers: kullanımda olan sunucular hakkında bilgi verir;
</li>

<li>
services: mümkün olan servisler hakkında protokolleri ve kapıları (port)
hakkında bilgi verir;
</li>

<li>
xadmin: önceki iki tanesinin fonksıyonlarını birleştirir.
</ol>
Açıkçası, <font color="#FF0000"> Bu servisler bilgisayarınızı daha fazla
zarar verilebilir hale getirir.</font> Önemli bilgiler sağlarlar. Şimdilik
erişim korunmuyor (şifre koruması mesela). Onları sadece biçimlendirim
zamanında kullanmalısınız. Sonra, <font face="Courier
New,Courier">defaults</font> bölümünde, onların kullanışını
yasaklamalısınız:

<blockquote><font face="Courier New,Courier">defaults {</font>
<br><font face="Courier New,Courier">&nbsp; ...</font>
<br><font face="Courier New,Courier">&nbsp; disabled = servers services
xadmin</font>
<br><font face="Courier New,Courier">&nbsp; ...</font>
<br><font face="Courier New,Courier">}</font></blockquote>

Onları aktif hale getirmeden önce, birtakım önlemler almalısınız:
<ol>
<li>
xinetd'nin çalıştığı makina, bu servislere girebilecek tek makina olmak
zorundadır
</li>

<li>
Buna girişlerin sayısı sınırlandırın
</li>

<li>
Sunucudan çalışan makinadan erişime izin verin.
</li>
</ol>
Gelin <font face="Courier New,Courier">xadmin</font>
servisinin bir örneğini ele alalım. (diğer ikiside aynı yolla
biçimlendirilebilir, kapı (port) sayısı hariç;-):

<blockquote><font face="Courier New,Courier">service xadmin</font>
<br><font face="Courier New,Courier">{</font>
<br><font face="Courier New,Courier">&nbsp; type&nbsp; = INTERNAL UNLISTED</font>
<br><font face="Courier New,Courier">&nbsp; port&nbsp; = 9100</font>
<br><font face="Courier New,Courier">&nbsp; protocol = tcp</font>
<br><font face="Courier New,Courier">&nbsp; socket_type = stream</font>
<br><font face="Courier New,Courier">&nbsp; wait&nbsp; = no</font>
<br><font face="Courier New,Courier">&nbsp; instances = 1</font>
<br><font face="Courier New,Courier">&nbsp; only_from = 192.168.1.1&nbsp;
#charly</font>
<br><font face="Courier New,Courier">}</font></blockquote>

<font face="Courier New,Courier">xadmin</font> servisi 5 komuta sahip:
<ol>
<li>
<font face="Courier New,Courier">help</font> ...</li>

<li>
<font face="Courier New,Courier">show run</font> : <font face="Courier New,Courier">servers</font>
servisi gibi, şu anda çalışan sunucular hakkında bilgi verir
</li>

<li>
<font face="Courier New,Courier">show avail</font> : <font face="Courier New,Courier">services</font>
servisi gibi mümkün olan servisler hakkında bilgi verr (ve biraz daha fazla)
</li>

<li>
<font face="Courier New,Courier">bye</font> veya <font face="Courier New,Courier">exit</font>
...</li>
</ol>
Şimdi onların var olduğunu biliyosunuz: unutun ;-)
Bu servisler olmadan test edebilirsiniz. (<font face="Courier New,Courier">netstat</font>, <font face="Courier
New,Courier">fuser</font>,
<font face="Courier New,Courier">lsof</font>,
... ) gibi komutlar makinanızda neler olduğunu, bu servisleri kullanırken
olduğu gibi onu zarar verilebilir hale getirmeden  öğrenmenize
izin verir!


<A NAME="lfindex9">&nbsp;</A>
<H3>Let's play a bit...</H3>




<A NAME="lfindex10">&nbsp;</A>
<H2>
Starting with a riddle </H2>


Burada kurtarılan birkaçı için küçük bir örnek ;-) Önce bu örnekte
kullanılan biçimlendirimi açıklayacağım sonra da neler olduğunu ve neden
çalışmadığını bulmaya çalışacağız.

<p>Biz sadece <font face="Courier New,Courier">finger</font> servisine
ihtiyaç duyarız:

<blockquote><font face="Courier New,Courier">finger service</font>
<br><font face="Courier New,Courier">{</font>
<br><font face="Courier New,Courier">&nbsp; flags&nbsp; = REUSE NAMEINARGS</font>
<br><font face="Courier New,Courier">&nbsp; server = /usr/sbin/tcpd</font>
<br><font face="Courier New,Courier">&nbsp; server_args = in.fingerd</font>
<br><font face="Courier New,Courier">&nbsp; socket_type = stream</font>
<br><font face="Courier New,Courier">&nbsp; wait&nbsp; = no</font>
<br><font face="Courier New,Courier">&nbsp; user&nbsp; = nobody</font>
<br><font face="Courier New,Courier">&nbsp; only_from = 192.168.1.1&nbsp;
#charly</font>
<br><font face="Courier New,Courier">}</font></blockquote>

xinetd <font face="Courier New,Courier">--with-libwrap</font> seçeneğiyle
derlenmedi (<font face="Courier New,Courier">server</font> niteliğini
kontrol edin). <font face="Courier New,Courier">defaults</font> bölümü daha
önce sağlananlarla aynı tip: bağlantı nerden gelirse gelsin <font face="Courier
New,Courier">charly</font>'ye her giriş yasaklandı. Yine de <font face="Courier New,Courier">finger</font>
servisi tekrar aktif olmadı:

<blockquote><font face="Courier New,Courier">pappy@<i>charly</i> >> finger
pappy@charly</font>
<br><font face="Courier New,Courier">[charly]</font>
<br><font face="Courier New,Courier">pappy@<i>charly</i> >></font>
<p><font face="Courier New,Courier">pappy@<i>bosley</i> >>&nbsp; finger
pappy@charly</font>
<br><font face="Courier New,Courier">[charly]</font>
<p><font face="Courier New,Courier">pappy@<i>bosley</i> >></font></blockquote>

<p><br>İstek, ne yetkilendirilmiş (authorized) makina olan <font face="Courier New,Courier">charly</font>
(192.168.1.1)'de ne de <font face="Courier New,Courier">bosley</font> de
düzgün çalışıyormuş gibi gözükmüyor. log dosyalrına bir göz atalım:


<blockquote><b><font face="Courier New,Courier">/var/log/servicelog :</font></b>
<br><font face="Courier New,Courier">00/9/18@17:15:42: START: finger pid=28857
from=192.168.1.1</font>
<br><font face="Courier New,Courier">00/9/18@17:15:47: EXIT: finger status=0
pid=28857 duration=5(sec)</font>
<br><font face="Courier New,Courier">00/9/18@17:15:55: FAIL: finger address
from=192.168.1.10</font></blockquote>

<font face="Courier New,Courier">charly</font>'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, <font face="Courier
New,Courier">bosley</font>'den gelen istek ise reddedildi (<font face="Courier
New,Courier">FAIL</font>).
<br>Eğer <font face="Courier New,Courier">finger</font> servisinin
biçimlendirimine bakarsak, sunucunun kullandığı <font face="Courier New,Courier">in.fingerd</font>
değil <font face="Courier New,Courier">tcp_wrapper tcpd</font> servisidir. wrapper
log dosyası şöyle diyor:

<blockquote><b><font face="Courier New,Courier">/var/log/services :</font></b>
<br><font face="Courier New,Courier">Sep 18 17:15:42 charly in.fingerd[28857]:
refused connect from 192.168.1.1</font></blockquote>

Görüldüğü gibi bizim iki sorgulamamızla eşleşen sadece bir satır var! <font face="Courier
New,Courier">bosley</font>'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 <font face="Courier
New,Courier">charly</font>'den
<font face="Courier New,Courier">charly</font>'e gönderilen isteğe (ilki)
benziyor:zaman ve PID leri aynı.
<p>Elimizde ne olduğunu gelin özetleyelim:
<ol>
<li>
xinetd isteğe izin verdi;</li>

<li>
<font face="Courier New,Courier">finger</font> isteği <font face="Courier
New,Courier">tcpd</font>'ye doğru gitti;</li>

<li>
<font face="Courier New,Courier">in.fingerd</font> bu isteği reddetti.
</li>
</ol>
Peki sonra neler oluyor? İstek xinetd tarafından kabul edildikten sonra
belirtilmiş sunucuya gönderildi (burda <font face="Courier New,Courier">tcpd</font>).
Yine de, <font face="Courier New,Courier">tcpd</font> bu bağlantıyı
reddetti. Sonra, <font face="Courier New,Courier">hosts.{allow,deny}</font>
dosyasına bir göz atmak zorundayız. Eğer <font face="Courier
New,Courier">/etc/hosts.deny</font> dosyası sadece <font face="Courier New,Courier">ALL:ALL@ALL</font>
içeriyorsa bu, isteğin neden wrapper tarafından reddedildiğini açıklar!
<p>
Yola göre, <font face="Courier New,Courier">server</font>
ve <font face="Courier New,Courier">server_args</font> servis satırları
tanımlandı, wrapper özelliği hala erişilebilirdir (<font face="Courier New,Courier">banner</font>
- xinetd'de <font face="Courier New,Courier">banner</font> niteliği var-, <font face="Courier New,Courier">spawn</font>, <font face="Courier New,Courier">twist</font>,
...). Hatırlayın; --with-libwrap derleme seçeneği, xinetd süreci başlamadan
önce sadece erişim hakları kontrolünü ekler (<font face="Courier
New,Courier">hosts.{allow,deny}</font> dosyalarının yardımıyla). Bu örnekte,
bu biçimlendirim bize tcp wrapper özelliklerini kullanmaya devam etmemize
izin verir.
</p><p>
Bu özelliklerin üst üste gelmesi çalışsa bile garip davranışlara yol
açabilir. xinetd'yi <font face="Courier New,Courier">inetd</font>
ve <font face="Courier New,Courier">portmap</font> ile birlikte kullanmak
yerine, bir servisi bu "super-daemons" dan <u>sadece biriyle</u> yönetmek
daha iyidir.
</p>


<A NAME="lfindex11">&nbsp;</A>
<H2>chroot service</H2>


Bazı servislerin alanlarını sınırlamak veya yeni bir çevre (environment)
yaratmak önerilir. <font face="Courier New,Courier">chroot</font> komutu,
bir komutla (veya program parçacığı) süper kullanıcı (root) dizinin
değiştirmeye izin verir:

<blockquote><font face="Courier New,Courier">chroot [options] new_root</font></blockquote>

Bu ö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, <font face="Courier New,Courier">chroot</font>'u bir sunucu gibi
bildirmeniz gerekmektedir. Sonra sadece bileşenleri server_ags niteliğiyle
aktarmnız gerekmektedir.

<blockquote><font face="Courier New,Courier">service ftp</font>
<br><font face="Courier New,Courier">{</font>
<br><font face="Courier New,Courier">&nbsp; id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
= ftp</font>
<br><font face="Courier New,Courier">&nbsp; socket_type&nbsp; = stream</font>
<br><font face="Courier New,Courier">&nbsp; wait&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
= no</font>
<br><font face="Courier New,Courier">&nbsp; user&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
= root</font>
<br><font face="Courier New,Courier">&nbsp; server&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
= /usr/sbin/chroot</font>
<br><font face="Courier New,Courier">&nbsp; server_args&nbsp; = /var/servers/ftp
/usr/sbin/in.ftpd -l</font>
<br><font face="Courier New,Courier">}</font></blockquote>

Böylelikle, bu servise bir istek gönderildiğinde, ilk adımın kullandığı <font face="Courier
New,Courier">chroot</font>'tur. Sonra, ona gönderilen ilk bileşen, <font face="Courier
New,Courier">server_args</font> satırında ilk yer alandır ve bu yeni süper
kullanıcıdır (root). Son olarak, sunucu başlatılır.


<A NAME="lfindex12">&nbsp;</A>
<H3>Sonuç</H3>


<p>
Ş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 <font face="Courier New,Courier">inetd</font>
yeterlidir.
<p>
<hr width="50%">

<A NAME="lfindex13">&nbsp;</A>
<H3><code>pop3</code> server</H3>


<p>
<code>pop3</code> oldukça ilgi görüyor gibi gözüküyor: Onu <code>xinetd</code>
ile nasıl idare edileceğini soran iletiler aldım.Burada kolay bir
biçimlendirim:
<pre>
     service pop3
     {
             disable = no
             socket_type             = stream
             wait                    = no
             user                    = root
             server                  = /usr/sbin/ipop3d
     #       log_on_success          += USERID
     #       log_on_failure          += USERID
     }
</pre>
Elbette ki, <code>server</code> niteliğine kendi yolunuzu yazmanız
gerekmektedir.

<p>
<code>xinetd</code>'den <code>pop3</code> kullanımı, giriş için
kullandığınız değerlere bağlı olduğundan zahmetli olabilir. Örneğin,
<code>USERID</code> kullanımı, <code>xinetd</code>'nizden istemcideki pop'ta
yer alan bir <code>identd</code> sunucusuna bir istek gönderir. Eğer hiçbir
sunucu mümkün değilse, timeout 30 saniye bekler.
<p>
Bu yüzden, birisi iletilerini almaya çalıştığında, <code>identd</code>
sunucusu cevap verene kadar en azından 30 saniye
beklemek zorunda kalacaktır. Bunu önlemek için ikisinden birini seçmek
zorundasınız:
<ol>
  <li>bütün istemcilere bir <code>identd</code> sunucusu yükleyin böylelikle
loglarınız oldukça keskin olacaktır (dikkatli olun, biri <code>identd</code>
tarafından sağlanan bilgileri değiştirebilir);
  <li>bu servis için giriş özelliklerini azaltın ki kulllanıcılarınız
iletilerini hızlıca alabilsinler.
</ol>
<br>





<!-- 2pdaIgnoreStart -->
<A NAME="talkback">&nbsp;</a>
<h2>Bu yazı için görüş bildiriminde bulunabilirsiniz</h2>
Her yazı kendi görüş bildirim sayfasına sahiptir. Bu sayfaya yorumlarınızı yazabilir ve diğer okuyucuların yorumlarına bakabilirsiniz.
<center>
<table border="0"  CELLSPACING="2" CELLPADDING="1">
 <tr BGCOLOR="#C2C2C2"><td align=center>
  <table border="3"  CELLSPACING="2" CELLPADDING="1">
   <tr BGCOLOR="#C2C2C2"><td align=center>
    <A href="http://cgi.linuxfocus.org/cgi-bin/lftalkback?anum=175&lang=tr"><b>&nbsp;talkback page&nbsp;</b></a>
   </td></tr></table>
</td></tr></table>
</center>

<HR size="2" noshade>
<!-- ARTICLE FOOT -->
<CENTER><TABLE WIDTH="95%">
<TR><TD ALIGN=CENTER BGCOLOR="#9999AA">
<A HREF="../../common/lfteam.html">Görselyöre sayfalarının bakımı, LinuxFocus Editörleri tarafından yapılmaktadır</A>
<BR><FONT COLOR="#FFFFFF">&copy; Fr&eacute;d&eacute;ric Raynal, <a href="../../common/copy.html">FDL</a> <BR><a href="http://www.linuxfocus.org">LinuxFocus.org</a></FONT>
<BR><a href="http://cgi.linuxfocus.org/cgi-bin/lfcomment?lang=tr&article=article175.shtml" target="_TOP">Burayı klikleyerek hataları rapor edebilir ya da yorumlarınızı LinuxFocus'a gönderebilirsiniz</A><BR></TD>
<TD BGCOLOR="#9999AA"><!-- TRANSLATION INFO -->
<font size=2>Çeviri bilgisi:</font><TABLE>
<tr><td><font size=2>fr</font></td>
    <td><font size=2>-&gt;</font></td>
    <td><font size=2>--</font></td>
    <td><font size=2><a href="mailto:pappy@users.sourceforge.net"><FONT COLOR="#FFFFFF">Fr&eacute;d&eacute;ric Raynal</FONT></a></font></td>
</tr>
<tr><td><font size=2>fr</font></td>
    <td><font size=2>-&gt;</font></td>
    <td><font size=2>en</font></td>
    <td><font size=2><a href="mailto:georges.t@linuxfocus.org"><FONT COLOR="#FFFFFF">Georges Tarbouriech</FONT></a></font></td>
</tr>
<tr><td><font size=2>en</font></td>
    <td><font size=2>-&gt;</font></td>
    <td><font size=2>tr</font></td>
    <td><font size=2><a href="mailto:ozturkka@saneg.itu.edu.tr"><FONT COLOR="#FFFFFF">Kadriye Öztürk</FONT></a></font></td>
</tr>
</TABLE></TD>
</TR></TABLE></CENTER>
<p><font size=1>2001-03-17, generated by lfparser version 2.9</font></p>
<!-- 2pdaIgnoreStop -->
</BODY>
</HTML>