Sophos XG Firewall GRE Tunnel over IPsec with OSPF
Merhabalar,
Bu makalemde GRE Tunnel over IPsec with OSPF yapılandırmasını anlatacağım. Tekrardan IPSEC, GRE ve OSPF kavramlarına detaylı değinmeyeceğim. Bahsettiğim teknolojiler hakkında bilgiye sahip olmak için aşağıda makalelerime göz atmanızda fayda var.
https://www.firatmeray.com/sophos-xg-firewall-ikev2-site-to-site-vpnipsec-yapilandirmasi/
https://www.firatmeray.com/sophos-xg-firewall-nat-over-site-to-site-vpn/
https://www.firatmeray.com/sophos-xg-firewall-ospf-yapilandirmasi
Bilginiz üzere Cisconun geliştirmiş olduğu GRE Tunnel teknolojisinde kendine ait bir şifreleme metodu bulunmamaktadır bu yüzden GRE Tunnel bağlantısı kurulan cihazlar arasında veri “Clear Text” olarak iletilmekte yani şifreleme olmamaktadır. Detaylı bilgi için aşağıdaki makalemi okumanızda fayda var.
https://www.firatmeray.com/sophos-xg-firewall-gre-tunnel-yapilandirmasi/
GRE Tunnel over IPSec bağlantısında Route önceliğini değiştirerek GRE üzerinden açılan trafiği IPsec paketi içerisine alıp karşı tarafa şifreli bir şekilde gönderilmesini sağlıyoruz. Detaylı bilgi için aşağıdaki makalemi okumanızda fayda var.
https://www.firatmeray.com/sophos-xg-firewall-gre-tunnel-over-ipsec/
OSPF over GRE Tunnel deki amacımız ise GRE tunnel bağlantısı sağlayarak Local Networklerin OSPF ile konuşturulmasını sağlamak. Bu yöntemde OSPF komşuluk ilişkilerinde paketler GRE Tunnel üzerinden şifreleme olmaksızın iletilmektedir.
https://www.firatmeray.com/sophos-xg-firewall-ospf-over-gre-tunnel
GRE Tunnel over IPsec with OSPF deki amacımız ise GRE over IPSec tunnel bağlantısı sağlayarak Local Networklerin OSPF ile konuşturulmasını sağlamak. Bu yöntemde OSPF komşuluk ilişkilerinde paketler IPsec VPN üzerinden güvenli bir şekilde iletilmektedir.
Aşağıdaki şemamıza bakacak olursak öncelikle;
1. Adım: GRE Tunnel yapılandırmalıyız.
2. Adım: IPsec VPN yapılandırıp Route önceliğini değiştirmeliyiz.
3. Adım: OSPF Network & Area tanımlaması yapmalıyız.

Branch Office(Şube) Sophos Firewall Config;
OSPF bağlantısı kurabilmemiz için WAN ETH MTU değerlerinin her iki cihaz içinde aynı olması gerekmektedir.Çünkü OSPF MTU değerini önemsemektedir. Eğer cihazlardan birinin Wan ETH MTU değeri farklı ise iletişim sağlanamayacaktır.
MTU (Maximum Transmission Unit) ağ iletişiminde bir birimin taşıyabileceğim maksimum bayt sayısını ifade etmektedir. Ethernet bağlantılarında MTU değeri maksimum 1500‘dür.
Eğer her iki lokasyonda xDSL devre kullanıyorsanız, xDSL ETH portlarda MTU değerini en uygun ve aynı değere çekmenizde fayda var. Detaylı bilgiye aşağıdaki linkten ulaşabilirsiniz.
https://www.firatmeray.com/sophos-xg-firewall-xdslpppoe-mtu-mss-hesaplama/
*** Not: Bir Lokasyonda xDSL diğer lokasyonda Metro Ethernet varsa MTU değerini default 1500 de bırakmalısınız.

Benim her iki lokasyonumda xDSL Line olduğu için en uygun MTU değerini 1492 MSS değerini ise 1444 olarak ayarladım.
MTU: 1492 – 48 (40 Byte(TCP 20 Bayt + IP 20 Bayt)) + (8 Byte PPP-Max-Payload))
MSS: 1444 olmalıdır.

Brach Office(Şube) GRE Config
MTU değerini ayarladıktan sonra GRE Tunnel bağlantımızı CLI üzerinden yazıyoruz.
system gre tunnel add name gre_hq local-gw Port2 remote-gw 78.188.34.94 local-ip 1.1.1.2 remote-ip 1.1.1.1
system gre tunnel show
Local-gw: Şube internet devresinin takılı olduğu port.
Remote-gw: Merkezdeki cihazın Wan ip adresi
Local-ip: GRE Virtual IP
Remote-ip: GRE Virtual IP

Brach Office(Şube) IPsec VPN Config
Site to Site IPsec bağlantısı kurmak için öncelikle IPsec policies oluşturmalıyız. VPN Policies yazmak için CONFIGURE\VPN\IPsec policies\Add diyoruz.

Oluşturacağımız bağlantıya bir isim veriyoruz. Uygulamamızda IKEv2 Main Mode olarak bağlantı sağlayacağız.

Phase 1 Değerlerimizi aşağıdaki gibi ayarlıyoruz;
Key Life: 86400
Re-Key: 360
DH: Group14(2048)
Encryption: AES256
Authentication: SHA2-256

Phase 2 Key Life değerimizi 28800 olarak ayarlıyoruz diğer ayarlarımız Phase1 ile aynı olacak.
Key Life: 28800
PSF: Group14(2048)
Encryption: AES256
Authentication: SHA2-256
DPD: Enable
Dead Peer Detection (DPD): IPsec bağlantısının canlılığını tespit etmeye yarıyan bir yöntemdir. DPD her 30 saniyede bir tüneli ping atarak kontrol edecek, eğer 120 saniye içerisinde bir response alamazsa yeniden bağlanmayı deneyecek.

Aşağıda görebileceğiniz üzere IPsec Policy oluşturuldu.

Sıra geldi oluşturduğumuz IPsec kuralını bağlantımıza atamaya bunun için IPsec connections alanından Add diyerek yeni bir bağlantı açıyoruz.

Bağlantı sağlayacağımız yerin ismini(HQ_VPN) bağlantıya tanımlayıp aşağıdaki ayarları yapıyoruz.
Connection type: Site-to-site
Gateway type: Initiate the connection (vpn her zaman up olacak)
Policy: Oluşturduğumuz IKEV2 Policy seçiyoruz
Authentication type: Preshared key
Preshared key: Alanından tünelimize 32 karakterden oluşan güçlü ortak şifre tanımlaması yapıyoruz.
Active on save: on
Create firewall rules: no

Önemli Nokta: IPsec VPN bağlantısında Gateways ve Subnets alanlarına Local ve Remote Public IP adreslerinin yazılması gerekmektedir. Gateways ve Subnets alanlarına Public IP tanımlamamızdaki amacımız; Local Networklerin OSPF üzerinden konuşturulmasını sağlamak.
Local Gateway & Subnet Alanına : Şubemizin Public IP adresini tanımlıyoruz.
Remote Gateway & Subnet Alanına : ise Merkez Ofisimizin Public IP adresini tanımlıyoruz.
ve yaptığımız tünel ayarlarını kaydediyoruz.




IPsec bağlantımız yarattıktan sonra Lan_To_VPN Access, VPN_To_Lan Access ve Any_To_WAN GRE Drop kurallarımızı yazıyor olacağız.
Lan_To_VPN Access Rule

VPN_To_Lan Access Rule

Any_To_WAN GRE Drop Rule
OSPF komşuluk ilişkisinin kurulması sırasında GRE paketeri IPsec VPN bağlantısından önce gelecektir. Bu yüzden IPsec VPN paketleri gelene kadar WAN üzerinden şifrelenmemiş trafik çıkacaktır. WAN üzerinden şifrelenmemiş GRE trafiğini önlemek için Any_To_Wan Drop kuralı yazmalıyız.

Brach Office(Şube) Route Precedence
system route_precedence show komutunu uyguladığınızda VPN routes, Static routes üzerinde olması gerekmektedir. Amacımız trafiğin IPsec üzerinden şifreli geçmesi olduğu için system route_precedence set policyroute vpn static komutu ile VPN yollarımızı Static yollarımızın üzerine çekiyoruz.
system route_precedence set policyroute vpn static
system route_precedence show
Her iki Firewalldada yollarımızın görüntüsü aşağıdaki gibi olmalıdır.

VPN bağlantısının oturup oturmadığını kontrol edebilmek için VPN üzerinden pinge izin veriyoruz.
Ayrıca VPN üzerinden OSPF komşuluk ilişkisi kurulabilmesi için Dynamic Routing alanını VPN Zonu için açıyoruz.

Brach Office(Şube) OSPF Config
Router ID alanına Şube Firewall Public IP adresini yazıyoruz.
Networks alanına GRE Tunnel ve Şube Local Networklerini yazıp Area alanlarını 0.0.0.0 olarak tanımlıyoruz.

Yada CLI üzerinden OSPF tanımlamak için aşağıdaki komutları kullanabilirsiniz.;
CLI\3.Route Configuration\1.Configure Unicast Routing\2.Configure OSPF
enable
configure terminal
router ospf
ospf router-id 62.29.19.179
network 1.1.1.0/24 area 0.0.0.0
network 192.168.2.0/24 area 0.0.0.0
write
Head Office (Merkez) Sophos Firewall Config;
OSPF bağlantısı kurabilmemiz için WAN ETH MTU değerlerinin her iki cihaz içinde aynı olması gerekmektedir.Çünkü OSPF MTU değerini önemsemektedir. Eğer cihazlardan birinin Wan ETH MTU değeri farklı ise iletişim sağlanamayacaktır.
MTU (Maximum Transmission Unit) ağ iletişiminde bir birimin taşıyabileceğim maksimum bayt sayısını ifade etmektedir. Ethernet bağlantılarında MTU değeri maksimum 1500‘dür.
Eğer her iki lokasyonda xDSL devre kullanıyorsanız, xDSL ETH portlarda MTU değerini en uygun ve aynı değere çekmenizde fayda var. Detaylı bilgiye aşağıdaki linkten ulaşabilirsiniz.
https://www.firatmeray.com/sophos-xg-firewall-xdslpppoe-mtu-mss-hesaplama/
*** Not: Bir Lokasyonda xDSL diğer lokasyonda Metro Ethernet varsa MTU değerini default 1500 de bırakmalısınız.

Benim her iki lokasyonumda xDSL Line olduğu için en uygun MTU değerini 1492 MSS değerini ise 1444 olarak ayarladım.
MTU: 1492 – 48 (40 Byte(TCP 20 Bayt + IP 20 Bayt)) + (8 Byte PPP-Max-Payload))
MSS: 1444 olmalıdır.

HQ Office(Merkez) GRE Config
MTU değerini ayarladıktan sonra GRE Tunnel bağlantımızı CLI üzerinden yazıyoruz.
system gre tunnel add name gre_office local-gw Port2 remote-gw 62.29.19.179 local-ip 1.1.1.1 remote-ip 1.1.1.2
system gre tunnel show
Local-gw: Şube internet devresinin takılı olduğu port.
Remote-gw: Merkezdeki cihazın Wan ip adresi
Local-ip: GRE Virtual IP
Remote-ip: GRE Virtual IP

İki Lokasyonda GRE Tünel tanımlandığı için GRE IP‘lerini pingleyebiliyor olmamız gerekiyor.

HQ Office(Merkez) IPsec VPN Config
Sıra geldi Merkez Ofisimizde bulunan Sophos Firewallı yapılandırmaya. Şubemizde yaptığımız aynı ayarları Merkez ofisimiz içinde bire bir yapıyoruz.
Şubemizde bulunan cihaza bağlanıp policies yazmak için CONFIGURE\VPN\IPsec policies\Add diyoruz.

Oluşturacağımız bağlantıya bir isim veriyoruz. Merkez cihazda olduğu gibi IKEv2 Main mode olarak bağlantı sağlayacağız.

Phase 1 Değerlerimizi aşağıdaki gibi ayarlıyoruz;
Key Life: 86400
Re-Key: 360
DH: Group14(2048)
Encryption: AES256
Authentication: SHA2-256

Phase 2 Key Life değerimizi 28800 olarak ayarlıyoruz diğer ayarlarımız Phase1 ile aynı olacak.
Key Life: 28800
PSF: Group14(2048)
Encryption: AES256
Authentication: SHA2-256
DPD: Enable
Dead Peer Detection (DPD): IPsec bağlantısının canlılığını tespit etmeye yarıyan bir yöntemdir. DPD her 30 saniyede bir tüneli ping atarak kontrol edecek, eğer 120 saniye içerisinde bir response alamazsa yeniden bağlanmayı deneyecek.

Aşağıda göründüğü gibi kuralımız oluşturuldu.

Sıra geldi oluşturduğumuz ipsec kuralını bağlantımıza atamaya bunun için IPsec connections alanından Add diyerek yeni bir bağlantı açıyoruz.

Bağlantımıza
isim verip aşağıdaki ayarları yapıyoruz.
Connection type: Site-to-site
Gateway type: Initiate the
connection (vpn her zaman up olacak)
Policy: Oluşturduğumuz
IKEV2 Policy seçiyoruz
Authentication type: Preshared key
Preshared
key: alanından
tünelimize 32 karakterden oluşan güçlü ortak şifre
tanımlaması yapıyoruz.
Active on save: on
Create firewall rules: no

Önemli Nokta: IPSEC VPN bağlantısında Gateways ve Subnets alanlarına Local ve Remote Public IP adreslerinin yazılması gerekmektedir. Gateways ve Subnets alanlarına Public IP tanımlamamızdaki amacımız; Local Networklerin OSPF üzerinden konuşturulmasını sağlamak.
Local Gateway & Subnet Alanına : Merkez Ofisin Public ip adresini tanımlıyoruz.
Remote Gateway & Subnet Alanına : ise Şubemizim Public ip adresini tanımlıyoruz.
ve yaptığımız tünel ayarlarını kaydediyoruz.



Aşağıda göründüğü gibi IPsec VPN bağlantımız kuruldu.

IPsec bağlantımız yarattıktan sonra Lan_To_VPN Access, VPN_To_Lan Access ve Any_To_WAN GRE Drop kurallarımızı yazıyor olacağız.
Lan_To_VPN Access Rule

VPN_To_Lan Access Rule

Any_To_WAN GRE Drop Rule
OSPF komşuluk ilişkisinin kurulması sırasında GRE paketeri IPsec VPN bağlantısından önce gelecektir. Bu yüzden IPsec VPN paketleri gelene kadar WAN üzerinden şifrelenmemiş trafik çıkacaktır. WAN üzerinden şifrelenmemiş GRE trafiğini önlemek için Any_To_Wan Drop kuralı yazmalıyız.

HQ Office(Merkez) Route Precedence
system route_precedence show komutunu uyguladığınızda VPN routes, Static routes üzerinde olması gerekmektedir. Amacımız trafiğin IPsec üzerinden şifreli geçmesi olduğu için system route_precedence set policyroute vpn static komutu ile VPN yollarımızı Static yollarımızın üzerine çekiyoruz.
system route_precedence set policyroute vpn static
system route_precedence show
Her iki Firewalldada yollarımızın görüntüsü aşağıdaki gibi olmalıdır.

VPN bağlantısının oturup oturmadığını kontrol edebilmek için VPN üzerinden pinge izin veriyoruz.
Ayrıca VPN üzerinden OSPF komşuluk ilişkisi kurulabilmesi için Dynamic Routing alanını VPN Zonu için açıyoruz.

HQ Office(Merkez) OSPF Config
Router ID alanına Şube Firewall Public IP adresini yazıyoruz.
Networks alanına GRE Tunnel ve Şube Local Networklerini yazıp Area alanlarını 0.0.0.0 olarak tanımlıyoruz.

Yada CLI üzerinden OSPF tanımlamak için aşağıdaki komutları kullanabilirsiniz.;
CLI\3.Route Configuration\1.Configure Unicast Routing\2.Configure OSPF
enable
configure terminal
router ospf
ospf router-id 78.188.34.94
network 1.1.1.0/24 area 0.0.0.0
network 192.168.1.0/24 area 0.0.0.0
write
Configure\Routing\Information alanından kontrol ettiğimizde OSPF Neighbor bilgisini görebiliriz.

OSPF Test Komutları
##### OSPF Show Commands #####
CLI\3.Route Configuration\1.Configure Unicast Routing\2.Configure OSPF
show ip ospf
show ip ospf database
show ip ospf neighbor
show ip ospf route
show ip ospf interface gre_hq
show ip ospf interface gre_office
show running-config
show startup-config
show ip ospf

show ip ospf database

show ip ospf neighbor

show ip ospf route

show ip ospf interface gre_hq
show ip ospf interface gre_office

show running-config
show startup-config

Branch Office Ping + Tracert Test

Head Office Ping + Tracert Test

Genel Config Özeti
##### Head Office #####
system gre tunnel add name gre_office local-gw Port2 remote-gw 62.29.19.179 local-ip 1.1.1.1 remote-ip 1.1.1.2
##### Branch Office #####
system gre tunnel add name gre_hq local-gw Port2 remote-gw 78.188.34.94 local-ip 1.1.1.2 remote-ip 1.1.1.1
##### Route Priority #####
system route_precedence set policyroute vpn static
##### Show Commands #####
system gre tunnel show
system gre route show
system route_precedence show
CLI / 5.Device Management / 3.Advanced Shell / route -n
##### OSPF Show Commands #####
CLI\3.Route Configuration\1.Configure Unicast Routing\2.Configure OSPF
show ip ospf
show ip ospf neighbor
show ip ospf database
show ip ospf route
show ip ospf border-routers
show ip ospf interface gre_hq
enable
configure terminal
show running-config
show startup-config
##### TCP Dump #####
Detaylı TCP Dump için aşağıdaki komutları kullanabilirsiniz.
CLI\5. Device Management\3. Advanced Shell
tcpdump -nei any host 192.168.1.5
CLI\4. Device Console
tcpdump “dst host 192.168.1.5”
CLI\5.Device Management\3.Advanced Shell
route -n
##### OSPF CLI Config #####
BO (Branch Office)
CLI\3.Route Configuration\1.Configure Unicast Routing\2.Configure OSPF
enable
configure terminal
router ospf
ospf router-id 62.29.19.179
network 1.1.1.0/24 area 0.0.0.0
network 192.168.2.0/24 area 0.0.0.0
write
HQ (Head Office)
CLI\3.Route Configuration\1.Configure Unicast Routing\2.Configure OSPF
enable
configure terminal
router ospf
ospf router-id 78.188.34.94
network 1.1.1.0/24 area 0.0.0.0
network 192.168.1.0/24 area 0.0.0.0
write
##### Delete GRE #####
HQ Office
system gre tunnel del name gre_office
Branch Office
system gre tunnel del name gre_hq
##### OSPF Kernel Route #####
*** Not: Varsayılan olarak OSPF Route‘ları Routing tablosunda gösterilmektedir. Böylelikle OSPF yollarının tekrardan kernel yönlendirme tablosuna(kernel routing table) eklenmesi sınırlandırılmıştır. Eğer KernelRouting tablosuna OSPF yolunu manuel eklemek isterseniz “ospf push-default-route-to-kernel” komutunu uygulamanız gerekmektedir. KernelRouting tablosundan eklemiş olduğunuz OSPF yollarını silmek isterseniz “no ospf push-default-route-to-kernel” komutunu uygulamanız gerekmektedir.
Umarım sizler için faydalı bir paylaşım olmuştur.
Fırat Meray | Network and Information Security Specialist