JunOS İşletim Sistemi Security Policy Konfigürasyonu (SRX Firewall)
Beşinci JunOS makalemizde, güvenlik politikalarının(security policy) konfigürasyonunu inceleyeceğiz.
Güvenlik gereksinimleri aynı olan bir ya da daha fazla network segmentinin bir arada bulunduğu alanlar zone olarak tanımlanır ki bu zone’lar arasındaki trafiğin kontrolünü de security policy’ler sağlar.
Interface’leri ve zone’ları aşağıdaki tabloda gösterildiği şekilde konfigüre etmiştik.
Şimdi de Policy konfigürasyonu, SECURITY altında, POLICIES menüsünden gerçekleştireceğiz.
Bir security policy yazabilmek için, temelde altı tanım gerekmektedir. Bu tanımlar:
1- Zone bilgisi(from-zone ve to-zone)
2- Policy ismi
3- Zone’lara üye address-book’ların bilgisi(address ve address-set)
4- Application bilgisi tanımlı olmalıdır.(Predefined ya da custom)
5- Action bilgisi(permit, deny, reject)
6- İlgili kuraldan geçen trafiğin logunun tutulup tutulmayacağının bilgisi (session close ya da session-init)
1- From-zone ve To-zone Bilgisi:
Yazacak olduğumuz policy’lerde trafiğin kaynak zone(from-zone) bilgisi ve hedef zone(to-zone) bilgisi tanımlanmalıdır.
Zone’larımızı tanımlamıştık. Tanımladığımız zone’lar şu şekildeydi:
{primary:node0}[edit]
sensoy@Semerkand-Fw1# set security policies from-zone TRUST to-zone SFTP …
2- Policy isminin tanımlanması:
Her yazılacak policy için açıklama mahiyetinde bir isim tanımlanmalıdır.
{primary:node0}[edit]
sensoy@Semerkand-Fw1# set security policies from-zone TRUST to-zone SFTP policy Guvenlik-RDP-Erisim …
3- Address-book tanımlanması:
Network segmentleri kavramının JunOS policy’lerindeki karşılığı, tanımlayacak olduğumuz address-book‘lardır.
Addres-book tanımı bir address’i ifade edebileceği gibi bir address-set’i de ifade edebilir. Address-set, birden fazla adresi barındıran bir gruptur. Örneklerle inceleyelim.
Node 0 olan birinci Firewall’a, 192.168.0.1 IP’li management portundan SSH yönetim protokolü kullanan bir programla bağlanabiliriz.
TRUST zone’unda, 192.168.1.11 IP’li bir bilgisayar için address-book tanımlayalım. İsmi SensoySahin-192.168.1.11 olsun.
TRUST zone’unda, 192.168.1.12 IP’li bir bilgisayar için address-book tanımlayalım. İsmi FikriBCelik-192.168.1.12 olsun.
TRUST zone’unda, 192.168.1.13 IP’li bir bilgisayar için address-book tanımlayalım. İsmi OsmanDogan-192.168.1.13 olsun.
TRUST zone’unda, 192.168.6.11 IP’li bir bilgisayar için address-book tanımlayalım. İsmi HakanUzuner-192.168.6.11 olsun.
TRUST zone’unda, 192.168.6.12 IP’li bir bilgisayar için address-book tanımlayalım. İsmi YasarCugalir-192.168.6.12 olsun.
SFTP zone’unda, 192.168.5.1 IP’li bir server için address book tanımlayalım. İsmi SFTP_Server-192.168.5.1 olsun
Bu altı address’in tanımlanması için aşağıdaki komutlar çalıştırılır.
{primary:node0}[edit]
sensoy@Semerkand-Fw1# set security zones security-zone TRUST address-book address
SensoySahin-192.168.1.11 192.168.1.1
sensoy@Semerkand-Fw1# set security zones security-zone TRUST address-book address
FikriBCelik-192.168.1.12 192.168.1.12
sensoy@Semerkand-Fw1# set security zones security-zone TRUST address-book address
OsmanDogan-192.168.1.13 192.168.1.13
sensoy@Semerkand-Fw1# set security zones security-zone TRUST address-book address
HakanUzuner-192.168.6.11 192.168.6.11
sensoy@Semerkand-Fw1# set security zones security-zone TRUST address-book address
YasarCugalir-192.168.6.12 192.168.6.12
sensoy@Semerkand-Fw1# set security zones security-zone SFTP address-book address
SFTP-Server-192.168.5.1 192.168.5.1
Tanımladığımız her bir address için, address ismi olarak, hem isim hem de IP değerini bir arada kullandım. Bu sayede isim ya da IP değerini unuttuğunuz bir address kaydı için, hem ismiyle hem de IP’si ile arama yapabilme imkanına sahip olabilirsiniz.
Şimdi de iki tane address-set tanımlayalım. Birincisinin ismi Guvenlik diğerinin Sistem olsun. Yukarıda tanımladığımız address objelerini bu address-set’lere üye edelim. Bunun için aşağıdaki gibi komutlar çalıştırmalıdır:
{primary:node0}[edit]
sensoy@Semerkand-Fw1# set security zones security-zone TRUST address-book address-set Guvenlik address SensoySahin-192.168.1.11
sensoy@Semerkand-Fw1# set security zones security-zone TRUST address-book address-set Guvenlik address FikriBCelik-192.168.1.12
sensoy@Semerkand-Fw1# set security zones security-zone TRUST address-book address-set Guvenlik address OsmanDogan-192.168.1.13
sensoy@Semerkand-Fw1# set security zones security-zone TRUST address-book address-set Sistem address HakanUzuner-192.168.6.11
sensoy@Semerkand-Fw1# set security zones security-zone TRUST address-book address-set Sistem address YasarCugalir-192.168.6.12
Bu komutlarla Guvenlik ve Sistem isimli iki address-set oluşturulup bu set’lere address’ler üye edilmiş oldu. Daha sonra yazılacak policy’lerde hem address hem de address-set’ler kullanılabilir.
Bir address’i oluştururken, IP tanımında subnet belirtilmezse, bu tanım IP/32 olarak kabul edilir. Yani,
sensoy@Semerkand-Fw1# set security zones security-zone TRUST address-book address
SensoySahin-192.168.1.11 192.168.1.1
Bu tanımda 192.168.1.1 yazılmasıyla 192.168.1.1/32 yazılması aynı şeyi ifade eder.
sensoy@Semerkand-Fw1# set security zones security-zone TRUST address-book address
SensoySahin-192.168.1.11 192.168.1.1/32
Tek bir IP yerine bir IP bloğu tanımlanacaksa aşağıdaki örnekte gösterildiği gibi tanım yapılabilir.
sensoy@Semerkand-Fw1# set security zones security-zone TRUST address-book address
VLAN-1 192.168.1.0/24
ya da
sensoy@Semerkand-Fw1# set security zones security-zone TRUST address-book address
VLAN-6 192.168.6.0/24
SFTP zone’unda da bir subnet için address tanımı yapalım:
sensoy@Semerkand-Fw1# set security zones security-zone SFTP address-book address
VLAN-5 192.168.5.0/24
4- Application Tanımlanması
JunOS üzerinde ön tanımlı application’lar tanımlı geldiği gibi, özel application’lar da tanımlanabilmektedir. Örneğin
http port 80 için junos-http
https port 443 için junos-https
ftp port 21 için junos-ftp
ssh port 22 için junos-ssh gibi application’lar ön tanımlı olarak gelmektedir.
Özel application’lar da tanımlanabilmektedir. Örneğin
Protokolü TCP ve portu 8080 olan bir application tanımlayalım:
sensoy@Semerkand-Fw1# set applications application TCP-8080 protocol tcp destination-port 8080
Protokolü UDP ve portu 2525 olan bir application tanımlayalım:
sensoy@Semerkand-Fw1# set applications application UDP-2525 protocol udp destination-port 2525
Application set’ler de oluşturulabilmektedir. Örneğin,
junos-http, TCP-8080 ve UDP-2525 isimli üç application’ı DenemeAppSET isimli bir application-set’e üye edelim.
sensoy@Semerkand-Fw1# set applications application-set DenemeAppSET application junos-http
sensoy@Semerkand-Fw1# set applications application-set DenemeAppSET application TCP-8080
sensoy@Semerkand-Fw1# set applications application-set DenemeAppSET application UDP-2525
5- Action Tanımlanması
JunOS üzerinde ön tanımlı olarak üç action tanımlı gelmektedir. Bunlar: permit, deny ve reject ‘tir. İzin verilmesi gereken bir trafik için permit kullanılırken, bloklanması gereken bir trafik için deny action’ı tanımlanmalıdır. Reject kullanıldığında da trafik yine bloklanmaktadır fakat deny action’ından farklı olarak, bir bilgilendirme mesajı da yayımlanmaktadır. (UDP trafiği için ICMP(unreachable message) ve TCP trafiği için reset(RST) paketi gönderilir.)
6- Trafik Log’larının Tanımlanması
Bir policy’de, üzerinden geçen trafik kayıt altına alınsın(log’lansın) istenirse, ön tanımlı olarak gelen iki log seçeneğinden bir tanesi etkinleştirilmelidir. Bu seçenekler, session-init ve session-close ‘dur. Tavsiye edilen, bloklanan trafik için session-init ve izin verilen trafik için session-close seçeneğinin aktifleştirilmesidir.
Şimdi de örnek policy’ler tanımlayalım:
1- TRUST zone’undaki SensoySahin-192.168.1.11 isimli address’ten SFTP zone’undaki SFTP-Server-192.168.5.1 isimli address’e full erişim gerçekleştirilebilir olsun.
2- TRUST zone’undaki Guvenlik ve Sistem isimli iki address-set’ten, SFTP zone’undaki tüm address’lere RDP erişimi gerçekleştirilebilir olsun.
3- TRUST zone’undaki Sistem isimli address-set üyesi bilgisayarlardan SFTP zone’undaki tüm address’lere SSH erişimi gerçekleştirilebilir olsun.
4- Yukarıdaki üç erişim hariç, TRUST zone’undaki hiç bir adresten SFTP zone’una erişim gerçekleştirilemesin.
Ve tanımlayacağımız bu dört kural için de trafik log’lansın.
Policy-1:
Full erişim istendiği için application tanımı olarak any yazacağız ayrıca bir izin kuralı tanımlayacağımız için log türü olarak session-close yazacağız.
sensoy@Semerkand-Fw1# set security policies from-zone TRUST to-zone SFTP policy Sensoy-Full-Erisim match source-address SensoySahin-192.168.1.11
sensoy@Semerkand-Fw1# set security policies from-zone TRUST to-zone SFTP policy Sensoy-Full-Erisim match destination-address SFTP-Server-192.168.5.1
sensoy@Semerkand-Fw1# set security policies from-zone TRUST to-zone SFTP policy Sensoy-Full-Erisim match application any
sensoy@Semerkand-Fw1# set security policies from-zone TRUST to-zone SFTP policy Sensoy-Full-Erisim then permit
sensoy@Semerkand-Fw1# set security policies from-zone TRUST to-zone SFTP policy Sensoy-Full-Erisim then log session-close
Policy-2:
Yazacağımız policy’de RDP izni istenmektedir fakat protokolü TCP ve portu 3389 olan application ön tanımlı olarak gelmediğinden bu application custom tanımlanmalıdır. Önce application’ı TCP-3389 ismiyle oluşturalım.
sensoy@Semerkand-Fw1# sensoy@Semerkand-Fw1# set applications application TCP-3389 protocol tcp destination-port 3389
Şimdi de yazacağımız policy’de bu application’ı kullanalım.
sensoy@Semerkand-Fw1# set security policies from-zone TRUST to-zone SFTP policy RDP-Erisim match source-address Guvenlik
sensoy@Semerkand-Fw1# set security policies from-zone TRUST to-zone SFTP policy RDP-Erisim match source-address Sistem
sensoy@Semerkand-Fw1# set security policies from-zone TRUST to-zone SFTP policy RDP-Erisim match destination-address any
sensoy@Semerkand-Fw1# set security policies from-zone TRUST to-zone SFTP policy RDP-Erisim match application TCP-3389
sensoy@Semerkand-Fw1# set security policies from-zone TRUST to-zone SFTP policy RDP-Erisim then permit
sensoy@Semerkand-Fw1# set security policies from-zone TRUST to-zone SFTP policy RDP-Erisim then log session-close
Policy-3:
sensoy@Semerkand-Fw1# set security policies from-zone TRUST to-zone SFTP policy SSH-Erisim match source-address Sistem
sensoy@Semerkand-Fw1# set security policies from-zone TRUST to-zone SFTP policy SSH-Erisim match destination-address any
sensoy@Semerkand-Fw1# set security policies from-zone TRUST to-zone SFTP policy SSH-Erisim match application junos-ssh
sensoy@Semerkand-Fw1# set security policies from-zone TRUST to-zone SFTP policy SSH-Erisim then permit
sensoy@Semerkand-Fw1# set security policies from-zone TRUST to-zone SFTP policy SSH-Erisim then log session-close
Policy-4:
Bir blok kuralı tanımlayacağımız için log türü olarak session-init yazacağız. Kuralımızın adı LOG olsun
sensoy@Semerkand-Fw1# set security policies from-zone TRUST to-zone SFTP policy LOG-Kurali match source-address any
sensoy@Semerkand-Fw1# set security policies from-zone TRUST to-zone SFTP policy LOG-Kurali match destination-address any
sensoy@Semerkand-Fw1# set security policies from-zone TRUST to-zone SFTP policy LOG-Kurali match application any
sensoy@Semerkand-Fw1# set security policies from-zone TRUST to-zone SFTP policy LOG-Kurali then deny
sensoy@Semerkand-Fw1# set security policies from-zone TRUST to-zone SFTP policy LOG-Kurali then log session-init
Yazdığımız bu dört kuralı, “show” komutunu “| display set “ parametresiyle kullanarak görmek istediğimizde aşağıdaki gibi bir ekranla karşılaşırız.
{primary:node0}[edit]
sensoy@Semerkand-Fw1# show security policies from-zone TRUST to-zone SFTP | display set
sensoy@Semerkand-Fw1# set security policies from-zone TRUST to-zone SFTP policy Sensoy-Full-Erisim match source-address SensoySahin-192.168.1.11
sensoy@Semerkand-Fw1# set security policies from-zone TRUST to-zone SFTP policy Sensoy-Full-Erisim match destination-address SFTP-Server-192.168.5.1
sensoy@Semerkand-Fw1# set security policies from-zone TRUST to-zone SFTP policy Sensoy-Full-Erisim match application any
sensoy@Semerkand-Fw1# set security policies from-zone TRUST to-zone SFTP policy Sensoy-Full-Erisim then permit
sensoy@Semerkand-Fw1# set security policies from-zone TRUST to-zone SFTP policy Sensoy-Full-Erisim then log session-close
sensoy@Semerkand-Fw1# set security policies from-zone TRUST to-zone SFTP policy RDP-Erisim match source-address Guvenlik
sensoy@Semerkand-Fw1# set security policies from-zone TRUST to-zone SFTP policy RDP-Erisim match source-address Sistem
sensoy@Semerkand-Fw1# set security policies from-zone TRUST to-zone SFTP policy RDP-Erisim match destination-address any
sensoy@Semerkand-Fw1# set security policies from-zone TRUST to-zone SFTP policy RDP-Erisim match application TCP-3389
sensoy@Semerkand-Fw1# set security policies from-zone TRUST to-zone SFTP policy RDP-Erisim then permit
sensoy@Semerkand-Fw1# set security policies from-zone TRUST to-zone SFTP policy RDP-Erisim then log session-close
sensoy@Semerkand-Fw1# set security policies from-zone TRUST to-zone SFTP policy SSH-Erisim match source-address Sistem
sensoy@Semerkand-Fw1# set security policies from-zone TRUST to-zone SFTP policy SSH-Erisim match destination-address any
sensoy@Semerkand-Fw1# set security policies from-zone TRUST to-zone SFTP policy SSH-Erisim match application junos-ssh
sensoy@Semerkand-Fw1# set security policies from-zone TRUST to-zone SFTP policy SSH-Erisim then permit
sensoy@Semerkand-Fw1# set security policies from-zone TRUST to-zone SFTP policy SSH-Erisim then log session-close
sensoy@Semerkand-Fw1# set security policies from-zone TRUST to-zone SFTP policy LOG-Kurali match source-address any
sensoy@Semerkand-Fw1# set security policies from-zone TRUST to-zone SFTP policy LOG-Kurali match destination-address any
sensoy@Semerkand-Fw1# set security policies from-zone TRUST to-zone SFTP policy LOG-Kurali match application any
sensoy@Semerkand-Fw1# set security policies from-zone TRUST to-zone SFTP policy LOG-Kurali then deny
sensoy@Semerkand-Fw1# set security policies from-zone TRUST to-zone SFTP policy LOG-Kurali then log session-init
Bir policy’yi silmek için delete komutu kullanılır. Örneğin Sensoy-Full-Erisim isimli policy’yi silmek istediğimizde aşağıdaki satırları yazmalıyız:
{primary:node0}[edit]
sensoy@Semerkand-Fw1# delete security policies from-zone TRUST to-zone SFTP policy Sensoy-Full-Erisim
Bir policy’yi silmek yerine geçersiz de kılabilirsiniz. Bunun için deactivate komutu kullanılır. Örneğin RDP-Erisim isimli policy’yi geçersiz olarak tanımlayalım.
{primary:node0}[edit]
sensoy@Semerkand-Fw1# deactivate security policies from-zone TRUST to-zone SFTP policy RDP-Erisim
Aynı policy’yi daha sonra tekrar etkinleştirmek için activate komutu kullanılır.
{primary:node0}[edit]
sensoy@Semerkand-Fw1# activate security policies from-zone TRUST to-zone SFTP policy RDP-Erisim
Bir policy’nin sırasını değiştirmek için insert komutu kullanılır. insert komutu after ya da before parametresi ile birlikte kullanılır. Örnek üzerinde görelim:
SSH-Erisim isimli policy’nin RDP-Erisim isimli policy’den önce sıralanması için aşağıdaki komut çalıştırılır:
{primary:node0}[edit]
sensoy@Semerkand-Fw1# insert security policies from-zone TRUST to-zone SFTP policy SSH-Erisim before policy RDP-Erisim
SSH-Erisim isimli policy’nin Log-Kurali isimli policy’den sonra sıralanması için aşağıdaki komut çalıştırılır:
{primary:node0}[edit]
sensoy@Semerkand-Fw1# insert security policies from-zone TRUST to-zone SFTP policy SSH-Erisim after policy Log-Kurali
Zone üyesi herhangi bir address’in, aynı zone üyesi başka bir address ile iletişiminde herhangi bir izin kuralına ihtiyaç bulunmamaktadır. Ancak şöyle özel bir durum vardır. Eğer bir zone’a iki farklı logical-interface bağlandıysa, bu iki logical-interface’in baktığı ağ bölümlerinin diğeriyle aynı zone’daymış gibi çalışması için bir policy yazılması gerekmektedir. İnterface ve zone konfigürasyonumuzu hatırlayalım:
192.168.1.0/24 ve 192.168.6.0/24 VLAN’ları, reth8.1 ve reth8.6 logical interface’leriyle TRUST isimli zone’a bağlanmış durumdadırlar.
192.168.1.11 IP’li ve SensoySahin-192.168.1.11 isimli bilgisayar ile
192.168.6.12 IP’li ve YasarCugalir-192.168.6.12 isimli bilgisayar aynı zone’a üye olmalarına rağmen birbirlerine erişim gerçekleştiremezler.
Çözüm olarak, TRUST zone’undan TRUST zone’una, yukarıda tanımladığımız VLAN-1 ve VLAN-6 isimli address’ler kullanılarak aşağıdaki gibi bir policy yazılır.
{primary:node0}[edit]
sensoy@Semerkand-Fw1# set security policies from-zone TRUST to-zone TRUST policy VLAN-Erisim match source-address VLAN-1
sensoy@Semerkand-Fw1# set security policies from-zone TRUST to-zone TRUST policy VLAN-Erisim match source-address VLAN-6
sensoy@Semerkand-Fw1# set security policies from-zone TRUST to-zone TRUST policy VLAN-Erisim match destination-address VLAN-1
sensoy@Semerkand-Fw1# set security policies from-zone TRUST to-zone TRUST policy VLAN-Erisim match destination-address VLAN-6
sensoy@Semerkand-Fw1# set security policies from-zone TRUST to-zone TRUST policy VLAN-Erisim match application any
sensoy@Semerkand-Fw1# set security policies from-zone TRUST to-zone TRUST policy VLAN-Erisim then permit
sensoy@Semerkand-Fw1# set security policies from-zone TRUST to-zone TRUST policy VLAN-Erisim then log session-close
Son olarak, address objelerinin tanımlanmasıyla ilgili bir konuyu inceleyeceğiz. Şöyle ki:
Oluşturduğumuz tüm address objelerinde sürekli IP’ler üzerinden tanımlama yaptık. Oysa SRX firewall’da bir DNS sunucusu tanımlanırsa, objeler için IP yerine örneğin bir URL ismi de kullanılabilir. Bir örnek yapalım.
{primary:node0}[edit]
sensoy@Semerkand-Fw1# set security zones security-zone UNTRUST address-book address
Mostar-77.79.108.82 77.79.108.82
Bu konfigürasyonla, Mostar-77.79.108.82 isimli bir address oluşturduk. Firewall, Mostar-77.79.108.82 isimli objenin adresi olarak 77.79.108.82 IP’sini tanımaktadır. Bunun yerine aşağıdaki gibi bir tanımlama da yapılabilir.
{primary:node0}[edit]
sensoy@Semerkand-Fw1# set security zones security-zone UNTRUST address-book address
Mostar-URL www.mostar.com.tr
Bu tanımın çalışması, yani Firewall tarafından da Mostar-URL isimli objenin tanımlanabilir olması için, Firewall’da, DNS sorgularının gönderilebileceği bir DNS Server’ın tanımlı olması gerekir. Şimdi de Firewall’umuzun CLI’ında bir name server tanımlayalım. DNS Server IP’si 192.168.1.2 olsun. Bunun için aşağıdaki komut çalıştırılır:
{primary:node0}[edit]
sensoy@Semerkand-Fw1# set system name-server 192.168.1.2
Hoşçakalın.