Etiket 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ı.

debain syslog-ng üzerinde fortigate loglarını turmak

debian 4.0 etc üzerinde fortinetin üretmiş olduğu syslogları tutmak için neler yapılacak bunları adım
adım işleme alaçağız.

ilk önce
apt-get install syslog-ng
komutunu vererek kurulumun yapılmasını sağlıyoruz.

kurulum işlemi yapıldıktan sonra
pico /etc/syslog-ng/syslog-ng.conf
dosyasını açıyoruz. dosyada

####### options

options {

 sync (0);
time_reopen(10);
log_fifo_size (2048);
long_hostnames (off);
use_dns (no);
use_fqdn (no);
create_dirs (yes);
keep_hostname (yes);
};

# destinations

# some standard log files
destination df_auth { file("/var/log/auth.log"); };
destination df_syslog { file("/var/log/syslog"); };
destination df_cron { file("/var/log/cron.log"); };
destination df_daemon { file("/var/log/daemon.log"); };
destination df_kern { file("/var/log/kern.log"); };
destination df_lpr { file("/var/log/lpr.log"); };
destination df_mail { file("/var/log/mail.log"); };
destination df_user { file("/var/log/user.log"); };
destination df_uucp { file("/var/log/uucp.log"); };
destination df_fortinet { file ("/var/log/fortinet/$HOST/$FACILITY/log.$YEAR$MONTH$DAY");};
filter f_1 { not match('dropped'); };


burada /var/log dizini altına fortine t adı altında bir dizin açıyoruz. bu dizinin altında
cihazın host adıyla bir dizin daha açıp bu dizinin altında log.20081102 v.b şeklinde

# sources

# all known message sources
source s_all {
# message generated by Syslog-NG
internal();
# standard Linux log source (this is the default place for the syslog()
# function to send logs to)
unix-stream(“/dev/log”);
# messages from the kernel
file(“/proc/kmsg” log_prefix(“kernel: “));
# use the following line if you want to receive remote UDP logging messages
# (this is equivalent to the “-r” syslogd flag)
udp(ip(0.0.0.0) port (514));
};

istiyoruz. loglarımız günlük olarak ayrı ayrı loglanmaya başlayacaktır.

dosyanın en altına da

log { 
source (s_all);
filter (f_1);
destination (df_fortinet); };

kodlarını ekliyoruz. bu eklemede yapıldıktan sonra dosyamızı kaydedip çıkıyoruz.

dosya kayıt işleminden sonra
/etc/init.d/syslog-ng restart
komutunu veriyoruz.
/var/log/fortinet/ dizininde dosyaların oluştuğunu göreceksiniz.

tail -f tail -f log.20081025

komutunun verdiğiniz de

Oct 25 23:01:23 192.168.2.254 date=2008-11-02 time=22:44:32,devname=FG100A2105492412,
device_id=FG100A2105492412,log_id=0021010001,type=traffic,subtype=allowed,
pri=notice,vd=root;SN=15099109,duration=100,user=N/A,group=N/A,policyid=7,
proto=6,service=80/tcp,app_type=N/A,status=accept,src=192.168.2.7,
srcname=192.168.2.7,dst=212.156.13.26,dstname=212.156.13.26,src_int=internal,
dst_int=wan1,sent=640,rcvd=1639,sent_pkt=7,rcvd_pkt=5,src_port=3027,dst_port=80,
vpn=N/A,tran_ip=85.99.120.86,tran_port=60285,dir_disp=org,tran_disp=snat

şeklinde syslog kayıtlarının sisteme düştüğünü görebilirsiniz.

fortigate interface trafiği için debain üzerinde mrtg ayarlamak

networkumuzun wan çıkışında bulunan Fortigate cihazımız için MRTG kurulumu yapıp bir takım verilerin görüntülenmesini sağlayacağız.

apt-get install mrtg
komutu yardımıyla mrtg nin kurulmasını sağlıyoruz.
/var/www/mrtg dizininde
mkdir MIB
komutunu çalıştırıp MIB klasörünü oluşturuyoruz.
http://www.oidview.com/mibs/12356/FORTINET-TRAP-MIB.html dosyasını çekip MIB klasörü altına açıyoruz. (ben dosyanın ismini FORTINET.mib olarak değiştirdim).

/etc/mrtg.cfg
dosyasına aşağıdaki kodları yapıştırınız.

######################################################################
# Multi Router Traffic Grapher -- Sample Configuration File
######################################################################
# This file is for use with mrtg-2.5.4c

### Global Config Options
#  Directories
WorkDir: /var/www/mrtg
LoadMIBs: /var/www/mrtg/MIB/FORTINET.mib

### Global Defaults

EnableIPv6: no
WriteExpires: Yes
Language: english
#Extension[_]: php
RunAsDaemon:Yes
Interval:5
Title[^]: Analysis for
Colours[_]: Green#00eb0c,Blue#1000ff,Red#ff0000,Violet#ff00ff
Background[_]: #ffffff

# Network Interface: Internal
Target[int]: 1:public@192.168.2.254
Title[int]: Internal
PageTop[int]: <h1>Internal interface</h1>
Options[int]: growright,nopercent,integer
MaxBytes[int]: 125000000
LegendI[int]: In:
LegendO[int]: Out:

# Network Interface: Wan1
Target[wan1]: 2:public@192.168.2.254
Title[wan1]: Wan1
PageTop[wan1]: <h1>Wan1 interface</h1>
Options[wan1]: growright,nopercent,integer
MaxBytes[wan1]: 125000000
LegendI[wan1]: In:
LegendO[wan1]: Out:

# Network Interface: Wan2
Target[wan2]: 3:public@192.168.2.254
Title[wan2]: Wan2
PageTop[wan2]: <h1>Wan2 interface</h1>
Options[wan2]: growright,nopercent,integer
MaxBytes[wan2]: 125000000
LegendI[wan2]: In:
LegendO[wan2]: Out:


#Monitoring active sessions
Target[tcps]: .1.3.6.1.4.1.12356.1.10.0&.1.3.6.1.4.1.12356.1.10.0:
public@192.168.2.254
Title[tcps]: Active Sessions
PageTop[tcps]: <h1>Active Sessions</h1>
Options[tcps]: gauge, growright, nopercent
MaxBytes[tcps]: 1000000
YLegend[tcps]:  Sessions
ShortLegend[tcps]: sess
LegendI[tcps]: Sessions
LegendO[tcps]: Sessions
Legend1[tcps]: Active Sessions
Legend2[tcps]: Active Sessions

#Memory
Target[fnSysMemUsage.0]:1.3.6.1.4.1.12356.1.9.0&.1.3.6.1.4.1.12356.1.9.0:
public@192.168.2.254
Title[fnSysMemUsage.0]: Memory Usage
PageTop[fnSysMemUsage.0]: <H1>Memory Usage</H1>
Options[fnSysMemUsage.0]: gauge, growright,nopercent
MaxBytes[fnSysMemUsage.0]: 100
YLegend[fnSysMemUsage.0]: Memory
ShortLegend[fnSysMemUsage.0]: %
LegendI[fnSysMemUsage.0]: Memory usage
LegendO[fnSysMemUsage.0]: Memory usage
Legend1[fnSysMemUsage.0]: Physical Memory Used
Legend2[fnSysMemUsage.0]: Physical Memory Used

# cpu
Target[FGTcpu]: .1.3.6.1.4.1.12356.1.8.0&.1.3.6.
Title[FGTcpu]: Procesor Usage
PageTop[FGTcpu]:  <h1>Procesor Usage</h1>
Options[FGTcpu]: gauge, growright, nopercent
MaxBytes[FGTcpu]: 100
YLegend[FGTcpu]: pourcent
ShortLegend[FGTcpu]: %
LegendI[FGTcpu]: CPU usage
LegendO[FGTcpu]: CPU usage
Legend1[FGTcpu]: Total CPU Used
Legend2[FGTcpu]: Total CPU Used

kodu yapıştırdıktan sonra

indexmaker etcmrtg.cfg > /var/www/mrtg/index.html

komutunu çalıştırın. komutu arka arkaya bir kaç defa çalıştırın.

browsera
192.168.2.250/mrtg yazdığınızda mrtg index sayfasının görüntülendiğini göreceksiniz.

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.