Kasım
FreeBSD IPFIREWALL Kurulumu ve Konfigurasyonu
| Kategori: Sunucu - Hosting | Okunma: 1.239 viewsIPFIREWALL(IPFW), isminden de anlaşıldığı gibi ip based bir paket filtreleme sistemidir. IPFIREWALL’u diğer güvenlik duvarlarından ayıran en büyük özelliği ek bir yazılıma ihtiyaç duymadan traffic shaping yapabilmesi ve IPFW2 versiyonu ile de Layer2 filtering’e destek vermesidir. IPFIREWALL bir çekirdek modülüdür. IPFW’nin kurallarında değişiklik yaptığınız zaman, IPFWyi yeniden başlatmak gerekmez çünkü yeniden başlatamazsınız zaten Kural çalıştırıldığı anda uygulanır
GÜVENLİK DUVARININ AĞ ÜZERİNDEKİ YERİ

Firewall ağ üzerinde Router ile Yerel Ağ arasında ağ geçidi olarak yer alır. Burada dikkat edilmesi gereken nokta clientlarda ağ geçidi olarak router’i değil, firewallun tanımlanması. Firewall’un ağ geçidi ise router olarak tanımlanmalıdır
GEREKLİ DONANIM
Öncelikle, Yerel ağınızın büyüklüğüne göre bir bilgisayar seçmelisiniz. Şekilde görüldüğü gibi Firewalla iki ayri bağlantı bağlanıyor. Bunun için 2 adet ethernet kartına ihtiyacımız olacak. Yalnız ethernet kartının markasının seçiminde çok dikkatli olmamız gerekiyor. Çünkü bütün internet trafiği bu ethernetlerden geçeceği için trafiği mümkün olduğunca hızlı iletmeliyiz. En çok tercih edilen marka Intel.
Ethernetinizin markası Intel ise, FreeBSD ethernet kartlarınızı fxp0 ve fxp1 olarak tanıyacaktır. Router’a bağlanan ethernet fxp0, Yerel Ağ’a bağlanan ethernet ise fxp1 olsun. fxp0′a size verilen registered IPlerden birini atayın. fxp1′e ise yerel ağınızın büyüklüğüne göre bir unregistered IP bloğu seçip bir IP atayın.
Örnek olarak fxp0′a 212.152.10.5 nolu ipyi, fxp1′e ise 192.168.0.1 nolu ipyi verdiğimizi kabul ediyorum.
BAŞLANGIÇ
Açılış scriptlerinde düzenlemeler yapmamız gerekiyor. Burada kullanmadığımız tüm daemonları kapatmalıyız. Bunun için /etc/rc.conf dosyasına aşağıdaki satırları ekleyin veya var olanları değiştirin:
PHP Code:
firewall_enable=”YES”
firewall_type=”open”
gateway_enable=”YES”
tcp_drop_synfin=”YES”
portmap_enable=”NO”
inetd_enable=”NO”
usbd_enable=”NO”
KERNEL(Çekirdek) AYARLARI
IPFW’nin kernel tabanlı olduğundan bahsetmiştim. Gerekli tüm binary dosyalar FreeBSD kurulurken yükleniyor. Ancak kernel ayarları yapılmadan kullanmayı denediğinizde “ipfw: getsockopt(IP_FW_GET): Protocol not available” diye bir hata alırsınız. Yani gerekli fonksiyonlar çekirdekte mevcut değil. Bu durumda kernel’e IPFIREWALL opsiyonu eklemeliyiz.
Eğer kernel’ın ismini değiştirmediyseniz GENERIC olarak sisteminizde yer almalı. Aşağıdaki satırları /usr/src/sys/i386/conf/GENERIC isimli dosyaya ekleyin
options IPFIREWALL
#Firewall’ı aktif hale getiri
options IPFIREWALL_VERBOSE
#Log tutma (syslogd)
options IPFIREWALL_VERBOSE_LIMIT=200
#Kural başına düşen log limiti
options IPFIREWALL_FORWARD
#Paket iletme (Uygulama alanı: TransparentProxy)
options IPDIVERT
#Port Yönlendirme
options DUMMYNET
#Traffic Shaper. Band genişliği ve kuyruk(queue) ayarları için gereklidir.
options IPSTEALTH
#Bu firewalldan geçen paketlerin TTL’lerinin değiştirmeden geçmesini sağlar. Firewall’u traceroute gibi araçlardan gizlemek için gereklidir.
options TCP_DROP_SYNFIN
#Gelen paketin içeriği sadece SYN+FIN den oluşuyorsa paketi sil
Çekirdeği derlemek için aşağıdaki işlemleri takip edelim
console# /usr/sbin/config GENERIC
console# cd ../../compile/GENERIC (FreeBSD 5.x lerde bu klasör ../compile/GENERIC olacak)
console# make depend
console# make
console# make install
Bütün işlemler bittikten sonra bilgisayarınızı yeniden başlatın.
Uyarı:
Eğer KernelSecurityLevel 2 veya daha yukarısı ise make install işlemini single-user mod’a geçip öyle yapmanız gerekiyor
SÖZ DİZİMİ ve KULLANIM ŞEKLİ
Sözdizimi çeşitleri:
ipfw -f flush
ipfw -q] {resetlog
ipfw [-q] add [kuralno] <rule-body>
ipfw pipe <kuralno> config <opsiyonlar>
ipfw pipe {delete | list | show} [kuralno ...]
Parametreler:
-a Listeleme esnasında sayaçları gösterir. show parametresi default olarak -a parametresini barındırır.
-f flush parametresi için onay istemez. Ancak ifade herhangi bir tty’den çalıştırılmamışsa -f default olarak uygulanır (Ör: flush isteği crontab’tan çağrılmışsa herhangi bir tty’ye bağlı olmadığı için -f default olarak uygulanır.)
-t Kuralların son eşleşme zamanını gösterir.(timestamp)
-q Yapılan işlemlerin çıktısının ekrana verilmesini engeller (sessiz)
-N Kuralları listelerken IP adreslerini ve servisleri çözümleyip(resolve) göstermeye çalışır.
Kural Düzeni
ipfw add [kuralno] [prob match_probability] <action> [log [logamount number]] <proto> from <src> to <dst> [interface-spec] [options]
<action>’lar:
allow: kurala uyan paketlerin geçmesine izin verir
count: kurala uyan paketleri sayar, paket diğer kurallardan geçmeye devam eder.
deny: kurala uyan paketleri siler.
divert <port>: kurala uyan paketi verilen port’a yönlendirir. (bu action için kernel’a IPDIVERT seçeneğinin yüklenmesi gerekir)
fwd <ip>[,port]: kurala uyan paketleri verilen ip ve port numarasına yönlendirir. IP adresi local bir IP ise port dikkate alınır. Ancak IP local değilse port numarası dikkate alınmaz ve route ile routing tablosuna göre yönlendirilir.
pipe <pipe_no>: Paketi dummynete yönlendirir. Dummynet bir trafik düzenleme kütüphanesidir. (Bandgenişliği, kuyruk ayarları, paket bekletme vb.)
reset: kurala uyan paketleri reddeder. TCP reset (RST) paketi göndermeye çalışır.
skipto <kuralno>: kurala uyan paketleri verilen kural numarasina gönderir. Paket kurallardan geçmeye devam eder.
tee <port>: paketlerin birer kopyasını verilen port numarasına gönderir.
unreache <kod>: gelen paketleri reddeder ve cevaben ICMP unreach paketi gönderir. ICMP unreach paketi ise belirlenen kod numarası ile belirlenir. kod numarası 0 ile 255 arasındadır. En çok bilinen kodlar: net, host, protocol, port, needfrag, srcfail, net-unknown, host-unknown …
<proto>: İncelenecek paketin protokolünü belirler.
FreeBSDnin inceleyebildiği protokoller:
ip:IP:internet protocol, pseudo protocol number
hopopt:HOPOPT:hop-by-hop options for ipv6
icmp:ICMP:internet control message protocol
igmp:IGMP:internet group management protocol
ggp:GGP:gateway-gateway protocol
ipencap:IP-ENCAP:IP encapsulated in IP (officially “IP”)
st2:ST2:ST2 datagram mode (RFC 1819)
tcp:TCP:transmission control protocol
cbt:CBT:CBT, Tony Ballardie <A.Ballardie@cs.ucl.ac.uk
A.Ballardie@cs.ucl.ac.uk Bu e-posta adresini spambotlara karşı korumak için JavaScript desteğini açmalısınız
This e-mail address is being protected from spambots. You need JavaScript enabled to view it >
egp:EGP:exterior gateway protocol
igp:IGP:any private interior gateway (Cisco: for IGRP)
bbn-rcc:BBN-RCC-MON:BBN RCC Monitoring
nvp:NVP-II:Network Voice Protocol
pupUPARC universal packet protocol
argus:ARGUS:ARGUS
emcon:EMCON:EMCON
xnet:XNET:Cross Net Debugger
chaos:CHAOS:Chaos
udp:UDP:user datagram protocol
mux:MUX:Multiplexing protocol
dcnCN-MEASCN Measurement Subsystems
hmp:HMP:host monitoring protocol
prmRM:packet radio measurement protocol
xns-idp:XNS-IDP:Xerox NS IDP
trunk-1:TRUNK-1:Trunk-1
trunk-2:TRUNK-2:Trunk-2
leaf-1:LEAF-1:Leaf-1
leaf-2:LEAF-2:Leaf-2
rdp:RDP:”reliable datagram” protocol
irtp:IRTP:Internet Reliable Transaction Protocol
iso-tp4:ISO-TP4:ISO Transport Protocol Class 4
netblt:NETBLT:Bulk Data Transfer Protocol
mfe-nsp:MFE-NSP:MFE Network Services Protocol
merit-inp:MERIT-INP:MERIT Internodal Protocol
sep:SEP:Sequential Exchange Protocol
3pc:3PC:Third Party Connect Protocol
idpr:IDPR:Inter-Domain Policy Routing Protocol
xtp:XTP:Xpress Tranfer Protocol
ddpDPatagram Delivery Protocol
idpr-cmtp:IDPR-CMTP:IDPR Control Message Transport Proto
tp++:TP++:TP++ Transport Protocol
il:IL:IL Transport Protocol
ipv6:IPV6:ipv6
sdrp:SDRP:Source Demand Routing Protocol
ipv6-route:IPV6-ROUTE:routing header for ipv6
ipv6-frag:IPV6-FRAG:fragment header for ipv6
idrp:IDRP:Inter-Domain Routing Protocol
rsvp:RSVP:Resource ReSerVation Protocol
gre:GRE:Generic Routing Encapsulation
mhrp:MHRP:Mobile Host Routing Protocol
bna:BNA:BNA
esp:ESP:encapsulating security payload
ah:AH:authentication header
i-nlsp:I-NLSP:Integrated Net Layer Security TUBA
swipe:SWIPE:IP with Encryption
narp:NARP:NBMA Address Resolution Protocol
mobile:MOBILE:IP Mobility
tlsp:TLSP:Transport Layer Security Protocol
skip:SKIP:SKIP
ipv6-icmp:IPV6-ICMP:ICMP for IPv6
ipv6-nonxt:IPV6-NONXT:no next header for ipv6
ipv6-opts:IPV6-OPTS:destination options for ipv6
cftp:CFTP:CFTP
sat-expak:SAT-EXPAK:SATNET and Backroom EXPAK
kryptolan:KRYPTOLAN:Kryptolan
rvd:RVD:MIT Remote Virtual Disk Protocol
ippc:IPPC:Internet Pluribus Packet Core
sat-mon:SAT-MON:SATNET Monitoring
visa:VISA:VISA Protocol
ipcv:IPCV:Internet Packet Core Utility
cpnx:CPNX:Computer Protocol Network Executive
cphb:CPHB:Computer Protocol Heart Beat
wsn:WSN:Wang Span Network
pvpVPacket Video Protocol
br-sat-mon:BR-SAT-MON:Backroom SATNET Monitoring
sun-nd:SUN-ND:SUN ND PROTOCOL-Temporary
wb-mon:WB-MON:WIDEBAND Monitoring
wb-expak:WB-EXPAK:WIDEBAND EXPAK
iso-ip:ISO-IP:ISO Internet Protocol
vmtp:VMTP:Versatile Message Transport
secure-vmtp:SECURE-VMTP:SECURE-VMTP
vines:VINES:VINES
ttp:TTP:TTP
nsfnet-igp:NSFNET-IGP:NSFNET-IGP
dgpGPissimilar Gateway Protocol
tcf:TCF:TCF
eigrp:EIGRP:Enhanced Interior Routing Protocol (Cisco)
ospfSPFIGPpen Shortest Path First IGP
sprite-rpc:Sprite-RPC:Sprite RPC Protocol
larp:LARP:Locus Address Resolution Protocol
mtp:MTP:Multicast Transport Protocol
ax.25:AX.25:AX.25 Frames
ipip:IPIP:Yet Another IP encapsulation
micp:MICP:Mobile Internetworking Control Pro.
scc-sp:SCC-SP:Semaphore Communications Sec. Pro.
etherip:ETHERIP:Ethernet-within-IP Encapsulation
encap:ENCAP:Yet Another IP encapsulation
gmtp:GMTP:GMTP
ifmp:IFMP:Ipsilon Flow Management Protocol
pnniNNINNI over IP
pimIMrotocol Independent Multicast
aris:ARIS:ARIS
scps:SCPS:SCPS
qnx:QNX:QNX
a/n:A/N:Active Networks
ipcomp:IPComp:IP Payload Compression Protocol
snp:SNP:Sitara Networks Protocol
compaq-peer:Compaq-Peer:Compaq Peer Protocol
ipx-in-ip:IPX-in-IP:IPX in IP
vrrp:VRRP:Virtual Router Redundancy Protocol
pgmGMGM Reliable Transport Protocol
l2tp:L2TP:Layer Two Tunneling Protocol
ddxDX-II Data Exchange
iatp:IATP:Interactive Agent Transfer Protocol
st:ST:Schedule Transfer
srp:SRP:SpectraLink Radio Protocol
uti:UTI:UTI
smp:SMP:Simple Message Protocol
sm:SM:SM
ptpTPerformance Transparency Protocol
isis:ISIS:ISIS over IPv4
fire:FIRE:
crtp:CRTP:Combat Radio Transport Protocol
crudp:CRUDP:Combat Radio User Datagram
sscopmce:SSCOPMCE:
iplt:IPLT:
sps:SPS:Secure Packet Shield
pipeIPErivate IP Encapsulation within IP
sctp:SCTP:Stream Control Transmission Protocol
fc:FC:Fibre Channel
divertIVERTivert pseudo-protocol [non IANA]
<src> to <dst>: {any | me | [not] <ip adresi/maske> [portlar]}
any: tüm paketleri kapsar
me: Sistemin ethernet arayüznün ip numarasına uyan paketleri kapsar
<ip adresi/maske> aşağıdaki şekillerde kullanılabilir:
ipno: 1.2.3.4 şeklinde olan ip adresleridir. Porta bakılmaksızın bu ipyi içeren tüm paketleri kapsar
ipno/bit: 1.2.3.4/24 biçiminde olan ip adresleridir. Bu ifade 1.2.3.0 dan 1.2.3.255′e kadar olan tüm ip adreslerini kapsar
ipno:mask: 1.2.3.4:255.255.240.0 biçiminde olan ip adresleridir. Bu ifade 1.2.3.0 dan 1.2.15.255′e kadar olan tüm ip adreslerini kapsar
portlar]: {port ] biçiminde kullanılır. port1-port2 ifadesi birinci port ile ikinci port arasındaki tüm portları kapsar
[interface-spec]:
in: Sadece gelen paketleri kapsar
out: Sadece giden paketleri kapsar
via <ifX>: Sadece <ifX> arayüzünden geçen paketleri kapsar via any: Herhangi bir arayüzden geçen tüm paketleri kapsar
TRAFİK SHAPING KONFİGÜRASYONU (DUMMYNET)
ipfw, paket filtrelemenin yanında dummynet aracılığı ile trafik düzenlemesi de yapabilmektedir.
Trafik düzenleyicisi, belirlenen özellikteki paketleri ayırır ve aynı statüde olan paketler için pipe denilen sanal bir tünel açar.
pipe, verilen bantgenişliği, paket bekletme süresi, kuyruk boyutu ve paket kayıp oranlarında sanal bir tünel yaratır. Paket geçerken, ait olduğu pipe’ın kurallarına göre geçer.
pipe konfigürasyonu aşağıdaki düzende uygulanır:
ipfw pipe <pipe_no> config <pipe konfigürasyonu>
<pipe konfigürasyonu:>
bw <bandwidth>: Bantgenişliği K {bit/s | Byte/s } ile ölçülür.
Default değeri 0 dır. 0 limitsiz bantgenişliği anlamındadır. Bantgenişliğinin miktarı ile birimi arasında boşluk bırakılmamalıdır.
Örnek: ipfw pipe 1 config bw 1Mbit/s
delay ms-delay: Paket bekletme süresi milisaniye ile ölçülür. Standart değeri 0 ms dir. Yani bekletme yoktur.
plr kayıp_oranı: PLR=Packet Loss Rate, paket kayıp oranı. kayıp_oranı 0 ile 1 arasında bir değerdir. 0 kayıp yok, 1 ise %100 kayıp anlamına gelir.
Aşağıdaki örnekte pipe 1′den geçen paketlerin %50si kaybolacaktır.
Örnek: ipfw pipe 1 config plr 0.50
ÖRNEKLER
ipfw’nin çok fazla kullanım şekli var. Bunların birkaçı açıklamaları ile birlikte aşağıda örneklenmiştir:
BASİT PAKET FİLTRELEME:
Aşağıdaki komut mevcut kuralları hit sayıları ile birlikte listelemer
ipfw -a list
Aşağıdaki komut mevcut kuralları, hit sayıları ve son eşleşme zamanı ile birlikte listeler:
ipfw -at list
Aşağıdaki örnek, Kaynak & Mercan Sigorta Acenteliği A.Ş. dan gelen www.hedef.com un SSH portuna giden TCP paketlerin geçmesini engeller
ipfw add deny tcp from Kaynak & Mercan Sigorta Acenteliği A.Ş. to www.hedef.com 22
Bu örnek, 123.45.0.0/16 dan my.host.orga gönderilen tüm paketlerinin geçmesini engeller. (123.45.0.0/16 = 123.45.0.0:255.255.0.0)
ipfw add deny all from 123.45.0.0/16 to my.host.org
TRAFİK DÜZENLEME:
Aşağıdaki örnek gelen paketlerin %10′unu siler
ipfw add prob 0.10 deny all from any to any in
Sıradaki örnek, yukarda yapılan işlemi dummynet aracılığı ile pipe kullanarak yapmaktadır
ipfw add pipe 2 all from any to any
ipfw pipe 2 config plr 0.10
Ağ geçidi olarak kullanılan bir firewallda pipe’ları kullanarak bantgenişliği yapılabilir. Yerel ağdaki 10.0.1.0/24 iplerinin trafiğini limitleyelim
ipfw add pipe 1 all from 10.0.1.0/24 to any out
ipfw pipe 1 config bw 300Kbit/s queue 50KBytes
Mevcut bantgenişliğinin giriş ve çıkış olarak eşit bir biçimde bölüştürmesi de giren ve çıkan paketler için ayrı kullar yazılmasıyla sağlanır. (Bantgenişliği toplam 512Kbit/s kabul ediliyor.)
ipfw add pipe 1 all from any to any out
ipfw add pipe 2 all from any to any in
ipfw pipe 1 config bw 256Kbit/s
ipfw pipe 2 config bw 256Kbit/s
Trafik Düzenlemenin bir diğer özelliği de paket bekletme aşağıdaki örnek dışarı çıkan paketleri 250ms bekletmekte ve 512Kbit/s bantgenişliği limiti getirmektedir.
ipfw add pipe 1 all from any to any out
ipfw pipe 1 config delay 250ms bw 512Kbit/s
Popularity: 62% [?]












