| 
   
 Geçen sayımızda BİDB olarak kütüphanemizde satışa sunduğumuz Linux dağıtımlarını incelemiştik. Bu incelemenin üzerinden fazla bir zaman geçmeden bütün 
dağıtımlar yeni sürümlerini duyurdu. Slackware 9.0, Mandrake 9.1 ve RedHat 9.0 sürümü ile yeni görüntülerine kavuştular. Dağıtımların yeni özelliklerini 
daha sonraki sayılarımızda tekrar değineceğiz.
 Bu sayımızda, oldukça ihtiyaç duyulan ve kullanılan teknik içerikli bir konuyu inceleyeceğiz. Internet ortamında çalışan bilgisayar kullanıcılarının 
saldırılarla karşılaşma oranı gün geçtikçe artmaktadır. Bu olumsuzluk karşısında güvenlik duvarı (firewall) olarak adlandırılan pekçok 
yazılımın yanında işletim sistemleri de kendi içerisinde bazı çözümler sunmaktadır.
 Linux işletim sistemleri güvenlik duvarı çözümünü çekirdek düzeyinde sağlamaktadır. Bunun için kullanılan çekirdeğe gömülü ya da modüler olarak 
desteğin sağlanması gerekir. Linux işletim sistemi 2.0.x çekirdek serisinde ipfwadm, 2.2.x serisinde ipchains ve 2.4.x serisinde 
iptables programları ile filtreleme işlemlerini gerçekleştirmektedir. Çekirdek derleme sırasında ilgili programların seçilmesi ya da daha sonradan 
modül olarak çekirdeğe eklenmesi gerekir.
 Yeni Linux sürümleri 2.4 çekirdek serisini kullanığı için, bu yazımızda iptables programını inceleyeceğiz.
 Linux çekirdeğinde, Networking options è IP: Netfilter Configuration è IP tables support 
(required for filtering/masq/NAT) altında güvenlik 
duvarının kullanım amacına göre kullanılacak modüller seçilmelidir.
 Linux işletim sisteminin standart güvenlik duvarı olarak kullanılması:
 Çekirdek içerisine gömülü değil ise (genellikle bu yöntem tercih ediliyor);
 /sbin/insmod ip_tables
 /sbin/insmod iptables_filter
komutları ile modüller yüklenir.
Linux işletim sisteminde, güvenlik duvarında üç ana zincir (chain) vardır: GİRİŞ (INPUT), YÖNLENDİRME (FORWARD) ve ÇIKIŞ 
(OUTPUT). Bu zincirlerin 
varsayılan ayarlarının tanımlanması gerekir. Güvenlik duvarlarında varsayılan ayar olarak bütün paketler reddedilir (DROP) ve sadece istenen 
paketlere 
izin verilir (ACCEPT). Bunun için ilk olarak kullanılan iptables programının tam konumu belirtilir:
 IPTABLES=/sbin/iptables
Sonra üç temel zincir için varsayılan ayarlar belirlenir:
 $IPTABLES -P INPUT DROP
 $IPTABLES -F INPUT 
 $IPTABLES -P OUTPUT DROP
 $IPTABLES -F OUTPUT 
 $IPTABLES -P FORWARD DROP
 $IPTABLES -F FORWARD
Daha sonra istenen paketlerin geçişi için kurallar belirlenir. Örneğin, 144.122.202.19 nolu IP'den gelen ve aynı IP'ye giden paketlere izin vermek 
için;
 $IPTABLES -A INPUT -s 144.122.202.19 -j ACCEPT
 $IPTABLES -A OUTPUT -d 144.122.202.19 -j ACCEPT
komutları girilir. Benzer şekilde tek bir IP tanımlanabileceği gibi blok IP'ler de tanımlanabilir:
$IPTABLES -A INPUT -s 144.122.202.0/255.255.202.0 -j ACCEPT
 $IPTABLES -A OUTPUT -d 144.122.202.0/255.255.202.0 -j ACCEPT
Bunun yanında paketin türü (tcp, udp, icmp vb.) ve port numarasına göre de sınırlamalar yapılabilir. Bu filtrelemenin doğru çalışabilmesi için 
programların kullandığı paket türlerinin ve port numaralarının bilinmesi gerekir. Bu konuda Linux işletim sistemlerinde /etc/services dosyasından 
standart 
servisler hakkında bilgi edinilebilir:
ftp-data         20/tcp
 ftp-data         20/udp
 # 21 is registered to ftp, but also used by fsp
 Ftp              21/tcp
 ftp              21/udp         fsp fspd
 ssh              22/tcp         # SSH Remote Login 
Protocol
 ssh              22/udp         # SSH Remote Login 
Protocol
 telnet           23/tcp
 telnet           23/udp
 # 24 - private mail system
 smtp             25/tcp         mail
 smtp             25/udp         mail
Örneğin web sunucuları 80.porttan tcp paketleri ile hizmet verirler. Web sunucuna her yerden erişilmesi isteniyorsa aşağıdaki kuralların girilmesi 
gerekir:
$IPTABLES -A INPUT -p tcp --dport 80 -j ACCEPT
 $IPTABLES -A OUTPUT -p tcp --sport 80 -j ACCEPT
Benzer şekilde DNS sunucuları 53.porttan hem tcp hem udp paketlerini kullanır. Örneğin DNS sunucusuna sadece ODTÜ'ye tanımlı IP'lerden (144.122 bloğu) 
erişilmesi isteniyorsa aşağıdaki kurallar tanımlanmalıdır:
$IPTABLES -A INPUT -p tcp -s 144.122.0.0/255.255.0.0 --dport 53 -j ACCEPT
 $IPTABLES -A INPUT -p udp -s 144.122.0.0/255.255.0.0 --dport 53 -j ACCEPT
 $IPTABLES -A OUTPUT -p tcp -d 144.122.0.0/255.255.0.0 --sport 53 -j ACCEPT
 $IPTABLES -A OUTPUT -p udp -d 144.122.0.0/255.255.0.0 --sport 53 -j ACCEPT
Çekirdek içerisindeki değişik seçenekler kullanılarak iptables programı ile üst düzey filtrelemeler ve kayıt (LOG) tutma özellikleri de 
kullanılabilir.
Iptables programı ile sanal ağların oluşturulması:
 Uluslararası standartlarda;
 10.0.0.0      10.255.255.255
 172.16.0.0    172.16.31.255
 192.168.0.0   192.168.255.255
IP blokları sanal ağlar için ayrılmış durumdadır.
Internet kafelerde, yeterince IP'si olmayan yerlerde ya da güvenlik gerekçesiyle, Internet erişimi içeride sanal ağlar oluşturarak bir ya da birkaç 
makina 
üzerinden sağlanmaktadır. Bu işlem için Internet erişiminin sağlanacağı makina üzerinde, gerçek IP'nin tanımlandığı ethernet kartı (ya da modem) ve 
içerdeki sanal ağ bağlantısını sağlayan ikinci bir ethernet kartının takılı olması gerekir. İşletim sistemi olarak IP MASQUERADE yapılabilmesi için 
çekirdeğe /sbin/insmod iptable_nat komutu ile ilgili modülün yüklenmesi gerekir.
 Örneğin, gerçek erişimin birinci ethernet kartı (eth0) ve sanal ağ erişiminin ikinci ethernet kartı (eth1) ile sağlandığını ve içerde 10'lu sanal ağ 
yarattığımızı kabul edersek;
 DISAG="eth0"
 ICAG="eth1"
 GERCEKIP="144.122.202.19"
 SANALIP="10.0.0.1"
 SANALAG="10.0.0.0/255.0.0.0"
 echo "1" > /proc/sys/net/ipv4/ip_forward
 echo "1" > /proc/sys/net/ipv4/ip_dynaddr
 $IPTABLES -t nat -F
 $IPTABLES -t nat -A POSTROUTING -o $DISAG -j MASQUERADE
tanımlamaları yapıldıktan sonra sanal ağ içerisindeki bilgisayarlara IP olarak 10.x.x.x, subnet mask olarak 255.0.0.0 ve gateway olarak 10.0.0.1 
girildiğinde Internet erişimi sağlanmış olacaktır.
Iptaples programına ve daha fazla bilgiye  http://www.netfilter.org  adresinden erişebilirsiniz.
 Linux işletim sistemi ile bilişim dünyasında güven dolu yarınlara...
 Selçuk Han AYDIN
      |