Kategori arşivi: Fortigate

Fortigate Vlanlara İp Dağıtmak

vlan

Yukarıda ki gibi bir topolojimizin olduğunu varsayarsak FW’yi DHCP olarak configüre edip Vlanlarımıza ip dağıtmak için hem Core Swicth üzerinde hemde FW üzerinde aşağıdaki gibi ayar yapılması gerekmektedir.

Burada Fw ile Core sw arasında vlan 254 oluşturulmuş ve D20 portu vlan 254’e untag edilmiştir.
firewall

 

 

sistemde bulunan ve ip dağıtmak istediğimiz diğer tüm vlanlara D20 portu tag komutuyla taglanmalıdır.

vlan-10

 

 

 

Sw üzerinde ki ayarlar bittikten sonra Fw üzerinde ki ayarlara geçebiliriz.

interface

Fortigate üzerinde Network-Interfaces yolunda Create New-Interface denilir.

vlan_

1-İnterface Name: Buraya vlan için vereceğiniz bir isim girişi yapınız.
2-Type:buradan vlan seçiyoruz.
3-Interface:Vlanı fw’nin hangi portu için tanımladığımızı seçiyoruz.
4-Vlan ID: bu kısım hangi vlanı oluşturduğumuzu belirtmek için kullandığımız alandır.
5-Addresing Mode: Vlan’ın ip adresini nasıl alacağınız seçiyruz.
6-IP/Network Mask:Vlan FW bacağına atadığımız ip adresidir.
7-DHCP Server:Enable tikleyerek dhcp serverı aktifleştiriyoruz.
8-DHCP ip başlangıç ve bitiş adreslerini tanımlıyoruz.
9-Netmask:dhcpden atanan ip adreslerinin netmasklarını tanımlıyoruz.
10-Default Gateway:dhcpden atanan ip adreslerinin gateway adreslerini tanımlıyoruz.
11-Dns Server:dhcpden tanımlanan ip adreslerinin dns adreslerini tanımlıyoruz.

Advanced…alanından da

advenced

kiralama sürelerini ve mac-ip eşleştirmelerini yapabiliriz.Böylece bir vlan için yaptığımız ayarı diğer vlanlar içinde yaparak Fw mizi vlanlar için dhcp olarak ayarlamış olduk. Pc mizin ip ayarlarına baktığımızda Fw üzerindeki dhcpden ip aldığını görmüş oluruz.

dhcp_1

fortianalizer ve syslog log karşılaştırması

Sistemde bulunan fortigate firewallun bilindiği gibi direk üzerinden derinlemesine raporlar alamk mümkün olmamaktadır. Bu tarz raporlar için fortianalizer cihazının alınmasını söylenir. Aklıma açaba cihaz fortianalizera logları hangi formatta gönderiyor diye bir soru geldi. bende tuttum kendi pc me analizer loglarını yönlendirip Wireharkla gelen paketleri dinledim. Fortianalizer configusrayonu
Fortigate üzerinde Log&Report/Log Config /FortiAnalyzer (Enable yapılır)
Minimum severity level: Information
Static IP Address:kendi pc adress
ve wireshark filterda: ip.src==192.168.2.254 and udp komutu verdim.

yakalanan paket aşağıda ki gibidir.


date=2008-12-03 time=16:40:29 devname=FG100AXXXXX device_id=FG100AXXXXX log_id=0021010001 type=traffic 
subtype=allowed pri=notice vd=root SN=7584138 duration=384 user=N/A group=N/A policyid=11 proto=6 service=80/tcp 
app_type=N/A status=accept src=192.168.2.104 srcname=192.168.2.104 dst=212.175.126.10 dstname=212.175.126.10 
src_int=internal dst_int=wan2 sent=854 rcvd=2825 sent_pkt=5 rcvd_pkt=5 src_port=3387 dst_port=80 vpn=N/A 
tran_ip=85.XXX.XXX.XXX tran_port=40604 dir_disp=org tran_disp=snat

fortianalizerı iptal edip syslog sunucuyu aynı ayarlarla ayarladığımda yukarıdakinin benzeri bir log formatıyla karşılaştım. yani anlayacağınız syslog sunucuya gönderilen paketlerle fortianalizera gönderilen log bilgileri aynı.

fortigate CLI da top komutu ve yorumlanması

CLI# diagnose sys top 

Run Time: 13 days, 13 hours and 58 minutes
0U, 0S, 98I; 123T, 25F, 32KF
newcli    903       R       0.5       5.5
sshd      901       S       0.5       4.0

komutu yukarıda görüldiği gibi çıktı üretir. Komut linux top komutuyla benzer çıktılar sunmaktadır.
Run Time: Cihazın resetlenmeden çalıştığı süreyi göstermektedir.
U:% kullanıcı uygulamalarının CPU’da oluşturduğu işlemlerin % lik değeridir. Örneğin; 1U CPU nun ortalama %1 i kullanıcı işlemleri tarafından kullanılıyor.
S:Sistem süreçlerinin CPU da oluşturduğu ortalama % değerdir.
I:CPU nun boş kalma % sinin ortalaması.98I; CPU ortalama %95 boşta.
T:FortiOs ‘un toplam bellek miktarı(MB).123T;123 MB bellek .
F:Kullanılmayan bellek miktarı.(MB)
KF:Sistem tarafından paylaşılan sayfa adeti.

newcli    903       R       0.5       5.5

satırlarında ki değerler ise sırasıyla:
newcli: CPU daki çalışan işlemin adı.
903: İşlem ID(prosess ID).
R:İşlemin durumu;

R running
S sleep
Z zombie
D disk sleep

# 0.5: İşlemin CPU zamanı;
# 5.5: İşlemin bellek kullanımı.

top komutu stantard olarak sürekli işletilen ve siz komutu bitirene kadar kendini çalıştıtan bir komuttur.
q:top komutunu bitirir.
c: komutu CPU işlem zamanına göre sıralar. Sıralama büyükten küçüğe doğrudur.
m: işlemleri bellek kullanımına göre büyükten küçüğe sıralar.

top komutunun oluşturduğu çıktıdan herhangi bir işlemi öldürmek için de kill komutu kullanılabilir. komutun kullanımı:

diagnose sys kill <signal> <process id>running

diagnose sys kill 11 903

komutu 903 nolu ID ye sahip işlemi öldür.

fortigate de TCP bağlantılarında flaglara göre paket dinlemek

Bildiğiniz üzere iletişim tcp protokolü kullnaılarak gerçekleştirilir. Tcp protokolünün özelliklerinden bahsetmeyeceğim. Zaten internet üzerinde paket yapısıyla ilgili detaylı döküman bulmak mümkün. Tcp paketinde önemli olan nokta bayrak [flag] alanlarıdır. Bir bağlantının durumuyla ilgili yada paketin durumuyla ilgili bilgileri alabiliriz.

0 15 31
-----------------------------------------------------------------
| source port | destination port |
-----------------------------------------------------------------
| sequence number |
-----------------------------------------------------------------
| acknowledgment number |
-----------------------------------------------------------------
| HL | rsvd |C|E|U|A|P|R|S|F| window size |
-----------------------------------------------------------------
| TCP checksum | urgent pointer |
-----------------------------------------------------------------

kısaca tcp paket yapısı yukarıdaki gibidir. Burada

|C|E|U|A|P|R|S|F| <- TCP and ECN flags
|---------------|
|0 0 0 0 0 0 1 0| <- bit value
|---------------|
|7 6 5 4 3 2 1 0| <- bit position

flagların yapısı yer almaktadır.

| bit | dec. | bit | | TCP
| pos. | value | value | total | Flag
____|______|________|_______|_______|_____
| | | | |
2 ^ 7 = 128, x 0 = 0 | CWR (ECN Congestion Window Reduced)
2 ^ 6 = 64, x 0 = 0 | ECE (ECN Capable Echo)
2 ^ 5 = 32, x 0 = 0 | URG
2 ^ 4 = 16, x 0 = 0 | ACK
2 ^ 3 = 8, x 0 = 0 | PSH
2 ^ 2 = 4, x 0 = 0 | RST
2 ^ 1 = 2, x 1 = 2 | SYN*
2 ^ 0 = 1, x 0 = 0 | FIN
____|______|________|_______|_______|_____
sum: 2
==========================================
('2 ^ 7 = 128' >> '2 üzeri 7 = 128 dir')

yukarıda ki tabloda flag çözümleme tablosu yer almaktadır. Tablonun en altında ki toplam alanında oluşan değere göre paketin bayrak alanı doldurulur. Yukarıdaki örnekte toplam 2 olduğu için bayrak syn bayrağıdır. Aşağıda bu flagların ne anlama geldiği bilgisi vardır.

URG=1:Bu durum alıcıya aldığı dataları işlemeden OOB(out of bank data-bant dışı veri) verisi göndermesine olanak sağlar.

ACK=1:Bu durum bilgi (Acknowledgement) numarasının geçerli olduğunu belirtir. TCP bağlantı durumundadır. Gönderilen verinin iletim parçaları kullanılabilir durumdadır.

SYN=1:Tcp bağlantısının kurulacağını belirtir.

FIN=1:bağlantının sonlanaçağını belirtir.

RST=1:bağlantının düzeltilemeyecek hatalar nedeniyle sonlandırılacağı anlamına gelir. RST alındığı zaman alıcı derhal bağlantıyı sonlandırmak zorunda kalır. RST her iki tarafında bağlantıyı kesmesine ve verilerin kaybolmasına sebeb olur.

PSH=1:Bu durumda TCP modülü aldığı veriyi acilen bir üst protokol katmanına aktarır.

aşağıda SYN ACK paketinin tablosu vardır.

| bit | dec. | bit | | TCP
| pos. | value | value | total | Flag
____|______|________|_______|____________
| | | | |
2 ^ 7 = 128, x 0 = 0 | CWR (ECN Congestion Window Reduced)
2 ^ 6 = 64, x 0 = 0 | ECE (ECN Capable Echo)
2 ^ 5 = 32, x 0 = 0 | URG
2 ^ 4 = 16, x 1 = 16 | ACK*
2 ^ 3 = 8, x 0 = 0 | PSH
2 ^ 2 = 4, x 0 = 0 | RST
2 ^ 1 = 2, x 1 = 2 | SYN*
2 ^ 0 = 1, x 0 = 0 | FIN
____|______|________|_______|_______|_____
sum: 18
==========================================

bu bilgilerden yola çıkarak fortigate de bağlantı çeşidine (flaglar) gelen bağlantıları listeleyalim.

‘tcp[13]==1’ FIN bit set to 1;
‘tcp[13]&4==4’ RST bit set to 1;
‘tcp[13]&8==8’ PSH bit set to 1;
‘tcp[13]==16’ ACK bit set to 1;
‘tcp[13]&32==32’ URG bit set to 1;
‘tcp[13]&64==64’ ECE bit set to 1;
‘tcp[13]&128==128’ CWR bit set to 1;
‘tcp[13]==24’ PSH and ACK bits set to 1;

# diag sniff packet wan1 ‘tcp[13]==2’
Flag durumu SYN olan bağlantıları
# diag sniff packet wan1 ‘port 80 and tcp[13]&2==2’
Flag durumu SYN olan ve 80. porta olan bağlantıları

# diag sniffer packet internal ‘port 80 or 443 and tcp[13]&2==2’

Flag durumu SYN olan ve http,https portlarına gelen istekleri

görmemizi sağlar.

fortigatede sniff

Fortigate temelde bir Linux türevidir. Paket dinleme programı olarak ta TcpDump programı veya bu programa yakın bir program kullanılmaktadır. Paket dinleme esnasında çıkan çıktıyı anlamak için TcpDump komutunu inceleyebilirsiniz.

kullanımla ilgili bir kaç örnek verirsek;
diagnose sniffer packet ppp0 ‘dst port 80 or port 25’
komutu ppp0 interfacesinden akan ve hedef portu 80 ve 25 olan paketleri dinler.

interfaces=[ppp0]
filters=[dst port 80 or port 25]
1.269714 85.99.120.xx.51012 -> 69.13.135.1x.80: ack 1894232295
1.286980 85.99.120.xx.51012 -> 69.13.135.1x.80: ack 1894233735
1.287044 85.99.120.xx.51012 -> 69.13.135.1x.80: ack 1894233735
1.287174 85.99.120.xx.51012 -> 69.13.135.1x.80: ack 1894235436 olduğu gibi.

diagnose sniffer packet ppp0 ‘src port 80 or port 25’
komutu ppp0 intefacesinden akan ve source (kaynak) portu 80 ve 25 olan paketleri dinler.

interfaces=[ppp0]
filters=[src port 80 or port 25]
1.578004 69.13.135.1xx.80 -> 85.99.1x.x.51012: 1894684374 ack 3503966921
1.581211 69.13.135.1xx.80 -> 85.99.1x.x.51012: 1894685814 ack 3503966921

diag sniffer packet internal none 1 3
internal bacağından 3 adet paket dinler.
diag sniffer packet internal ‘src host 192.168.2.254 and dst port 80’
internal baçağında kaynak ipsi 192.168.2.254 olan ve dst portu 80 olan paketleri görüntüler.