8 Kasım 2024 Cuma

 

Büyük Ağ Topolojilerini Neo4J ile Görselleştirmek
















Neden Neo4J

Neo4J açık kaynak kodlu bir grafik veritabanıdır. Neo4j sayesinde veriler arası ilişkiler yaratılabilir. Bu ilişkilere göre filtreler yazılarak sorgulanabilir ve bunlar grafik olarak gösterilebilir. Neo4J, Cypher adı verilen SQL benzeri, kullanımı basit ve kolay bir sorgu diline sahiptir. Neo4j NoSQL bir veritabanıdır.

Node, Properties, Relationship ve Label terimleri


  1. Node: Veritabanına girilen her bir kayıttır. Bir ID’ye sahip her kayıt bir Node’dur.
  2. Properties: Her kaydın zorunlu bir ID numarası olduğu gibi opsiyonel olarak Properties adı verilen isim, yaş, adres gibi özellikleri de olabilir. Bu opsiyon olsa da ilişkileri veya sorguları yazarken Properties alanı önemli olabilir.
  3. Label, Properties ve Relationship terimlerini Linkedin üzerinden bir örnekle anlamaya çalışalım;

Firmalar ve çalışanlarının bulunduğu bir tablo olduğunu düşünelim, burdaki her kayıt bir Node’dur. Bu Node’ları gruplayıp örneğin Company ismi verebiliriz bu Label oluyor. Her kaydın yani Node’un da özellikleri olarak bulunduğu şehir, şirket adı, adresini girebiliriz bunlar da Properties oluyor. Ve Node’lar veya Properties’lar arası ilişkileri belirlediğimiz kısım da Relationship oluyor.

Aşağıdaki neo4j.com’dan aldığım görselde bir çalışana ait name, date_of_birth gibi özelliklerin (Properties) girildiği ve çalıştığı şirketteki görevinin özellik(Properties) olarak çalıştığı firma ile olan ilişkisel alana (Relationship) girildiğini görüyoruz. Properties aynı zamanda Relationship içinde de olabilir. City etiketli Node’daki gibi her zaman özellikli olmak zorunda değil.




Aşağıdaki görsel Yüzüklerin Efendisi (Kitap ve Film) üçlemesindeki karakterler ve birbirleriyle ilişkilerini gösteren güzel bir örnek. Örnek olarak Orta Dünya’da yaşadıkları yerleri de Node veya Properties olarak girerek bu veriler arası ilişkiler gösterilebilirdi.






Ağ topolojleriniz için kullanım örneği

Örnek Topolojimiz

Mars ve Venüs adında 2 veri merkezi aktif — aktif çalışıyor. VRF ile bir izolasyon yapısı mevcut. VRF’ler arası direkt leaking anonsları olduğu gibi firewall üzerinden dönen trafikler de mevcut. Son olarak Mars ve Venüs veri merkezleri arasında DCI router cihazları üzerinden haberleşme sağlanıyor.

VRF’ler arası ilişkiler

Böyle bir topolojide hangi iki network birbiriyle nasıl haberleşiyor, leaking mi var yoksa firewall üzerinden mi? Bunları görebilmek için cihazlarda erişime sahip olup, rotaları tek tek incelemek gerekecektir. Bu hem uğraş isteyen hem de erişim hakkı gerektiren bir durum. Bunu bir ağ uzmanı değil de bir yazılımcının öğrenmek istediğini düşünelim. Bu durumda da tüm erişimlerin Excel benzeri bir matriste güncel olarak tutulması gerekir. Excel yerine bir yöntem olarak Neo4j kullanabiliriz.

Neo4j Kurulum ve Kullanımı

Kurulum:
En basit ve hızlıca kurma yöntemi bir Docker container olarak kurmak olacaktır. Docker kurmak için Docker resmi web sayfasından yararlanabilirsiniz. Aşağıdaki şekilde kurduğumuzda varsayılan ayarlarda Neo4J 7474(http) ve 7473(https) olarak servis veriyor. Kendi sunucunuzda veya bilgisayarınızda Docker ile kurmak için bu komutları çalıştırabilirsiniz.

docker run \
--name testneo4j \
-p7474:7474 -p7687:7687 \
-d \
-v $HOME/neo4j/data:/data \
-v $HOME/neo4j/logs:/logs \
-v $HOME/neo4j/import:/var/lib/neo4j/import \
-v $HOME/neo4j/plugins:/plugins \
--env NEO4J_AUTH=testneo4juser/testneo4jpassword \
neo4j:latest

Cypher dili kullanımı:

CREATE: yeni node veya relationship yaratmak için kullanılan komut. Örnek olarak aşağıdaki özelliklerde yeni iki adet vlan, vrf ve aralarındaki ilişkileri kuralım.

create
//OOB_MNT ve OPS_MNT VLAN'larını yaratıyoruz
(vlanvenus_OOB_MNT:VLAN{name:'OOB_MNT',vrf:'OOB_MNT',vlanid:101,type:'vlan',subnet:'172.16.0.0/20',description:'Out Of Band'}),
(vlanvenus_OPS_MNT:VLAN{name:'OPS_MNT',vrf:'INFRA_MNT',vlanid:102,type:'vlan',subnet:'172.16.16.0/20',description:'Openstack'}),

//OOB_MGMT ve INFRA_MNT VRF'lerini yaratıyoruz
(vrfvenus_OOB_MNT:VRF{name:'OOB_MNT',type:'vrf',site:'venus',fabric:'tyc'}),
(vrfvenus_INFRA_MNT:VRF{name:'INFRA_MNT',type:'vrf',site:'venus',fabric:'tyc'}),

//VLAN'ların üyesi olduğu VRF'e göre ilişkilerini kuruyoruz
(vrfvenus_OOB_MNT)-[:REACHED {howto: 'member_of'}]->(vlanvenus_OOB_MNT),
(vrfvenus_INFRA_MNT)-[:REACHED {howto: 'member_of'}]->(vlanvenus_OPS_MNT),

//VRF'ler arası erişimler ilişkilerini kuruyoruz
(vrfvenus_INFRA_MNT)-[:REACHED {howto: 'via_firewall'}]->(vrfvenus_OOB_MNT),
(vrfvenus_OOB_MNT)-[:REACHED {howto: 'via_firewall'}]->(vrfvenus_INFRA_MNT)
return *

Sonuç:





Şimdi tüm topoloji için yukarıdaki örneği baz alarak tüm vlan, vrf ve ilişkileri yaratabiliriz. Tüm node ve ilişkilerini görebilmek için aşağıdaki sorguyu kullanabiliriz.

//tüm topolojiyi gösterir
MATCH (n)
RETURN n

Daha spesifik sorgular için node’ların properties alanlarını ve ilişki tiplerini kullanabiliriz. Örneğin iki farklı VRF arasındaki subnet haberleşiyor mu, haberleşiyorsa da leaking mi yoksa firewall üzerinden mi haberleşme var bunu görebiliriz.

Birbirine leak olan VRF’lerin üyesi olan iki subnet erişim sorgusu:

//172.16.195.0/24 ile 172.14.178.0/24 nasıl haberleşiyor
MATCH p=(:VLAN {subnet:"172.16.195.0/24"})-[:REACHED*..3]-(:VLAN {subnet:"172.14.178.0/24"})
RETURN p

Trafiği firewall üzerinden olan iki subnet erişim sorgusu:

//Firewall üzerinden olan subnet erişim
MATCH p=(:VLAN {subnet:"172.16.0.0/20"})-[:REACHED*..3]-(:VLAN {subnet:"172.16.16.0/20"})
RETURN p

Son olarak Mars ve Venüs’te bulunan iki VRF arasındaki erişimi ve trafiğin akışını gösteren sorgu:

//Mars ve Venüs arası haberleşme
MATCH p=(:VLAN {subnet:"172.16.0.0/20"})-[:REACHED*..7]-(:VLAN {subnet:"10.16.0.0/20"})
RETURN p

Okuduğunuz için teşekkürler.


8 Ekim 2015 Perşembe

Junos Pulse Secure ve MacOS El Capitan ile Keychain Problemi / Junos Pulse Crashing on MacOS El Capitan (10.11) Keychain Issues

MacOS yeni güncellemesi El Capitan(10.11) ile birlikte Junos Pulse ve yeni sürüm Pulse Secure problem çıkarıyor. Yeniden başlatmak zorunda bırakıyor ve bağlanamıyoruz. Ayrıca keychain hataları alıyoruz.

Çözümü için:
Pulse Secure yeni versiyon linki


14 Nisan 2015 Salı

Azure ile DMZ yapısı ve Azure Traffic Manager (NSG-Network Security Group)

Azure üzerindeki Vnet ağımızda 1 adet subnet ve 1 adet gateway ağımız olduğunu düşünelim. yapmak istediğimiz ise ayrıca bir DMZ vlanı yaratıp bu ağdaki sunuculara webden belli portların erişmesi ve bu DMZ sunucularının da iç ağa yine kısıtlı portlar ile erişimlerini sağlamak.

Bu senaryomuzda mevcut bir Vnet ağı(siyah) ve ekleyeceğimiz bir DMZ ağı (kırmızı) olacak.

Topolojimiz:

Azure-Vnet ağı   : 192.168.0.0/16
TRUST-Subnet  : 192.168.1.0/24
Gateway-Subnet: 192.168.2.0/24
DMZ-Subnet      : 192.168.3.0/24




şimdilik burada bırakıyorum, bir kaç güne yazımı bitirmiş olacağım..

bıraktığımız yerden devam ediyoruz, hatta daha da fazlasıyla, yeni talep şu;
eğer web kullanıcısı tek bir dns kullansın(www.azuretest.com) ama  lokasyonu örn. Çin ise Singapur'daki(South East Asia) DMZ'e, eğer lokasyonu örn. Türkiye ise Hollanda'daki (West Europe) DMZ'e yönlendirilsin.

bunu yapabilmek için tüm işimiz bittiğinde Traffic Manager'ın Performance özelliğini kullancağız. Traffic Manager'ı kullanabilmek için yapacağımız iki faklı vnet ve lokasyonun aynı Subscription'da olması zorunlu.

Yeni Topolojimiz:
Lokasyon West Europe'a yakın olanlar için
WestEU-NW        : 192.168.0.0/16
WestEU-Subnet  : 192.168.1.0/24
WestEU-Gateway: 192.168.2.0/24
WestEU-DMZ      : 192.168.3.0/24

Lokasyon South East Asia'ya yakın olanlar için
SEA-NW        : 172.16.0.0/16
SEA-Subnet  : 172.16.1.0/24
SEA-Gateway: 172.16.2.0/24
SEA-DMZ      : 172.16.3.0/24




yukarıdaki şekilde vnet leri oluşturuyoruz:



21 Mayıs 2013 Salı

Microsoft Azure ve Juniper Firewall site-to-site VPN

Günümüz network altyapısı artık yükseliyor ve heryerde bir BULUT'tur gidiyor.

Özellikle Amazon ve Microsoft Azure piyasada bu konuda çok hızlı ilerliyor. Aslında bulut dedikleri yapı belirli bölgelerdeki hızlı bağlantılar ve güçlü altyapı ile hazırlanmış Data Center'ların sanallaştırmayı çok iyi kullanarak müşterilerin hizmetine açılması olayı.

Biz de eksik kalmayalım dedik, Microsoft Azure ile bir demo kurulumu yaptık, Juniper ScreenOS firewall'larında yaptığım testlerle hiçbir sıkıntı yaşamadan VPN UP duruma geldi ve gayet başarılı şekilde çalıştı.

Gelelim basit bir konfigürasyona;

JORDAN Ofisi:

Öncelikle JORDAN adında bir ofisimiz olsun.
Cihaz: SSG20
SSG20 gateway interface: adsl1/0

JORDAN Network : 172.16.77.0/24
Gateway : 77.77.77.77
 
AZURE Cloud:
Azure tarafında da 192.168.0.0/16 adres aralığını kullanalım.

Azure Cloud için aşağıdaki linkten bir hotmail hesabı ile login olabiliriz.
http://www.windowsazure.com/tr-tr/pricing/free-trial/

Ardından bir network yaratmamız gerekecek. Bu adımları aşağıdaki örnek bilgilere göre hazırlayabiliriz.

 LocalNetworkSite    :    JORDANtoAZURE

VirtualNetworkSite name    :    JORDANnet

Address Space        :    192.168.0.0/16

Subnet-1        :    192.168.66.0/24

GatewaySubnet        :    192.168.6.0/24

VPNGatewayAddress(Azure):    66.66.66.66

Preshared Key        :    asdx1234asdx123

Yukarıdaki Azure network konfigürasyonunu hazırlayalım.

.....
.....

Bu alanı kısa süre sonra yayınlayacağım..
.....
.....

Bu konfigürasyona göre Juniper ScreenOS cihazımızda aşağıdaki komutları adım adım izlersek sıkıntısız çalışacaktır.


 #############    China to Azure VPN connection   #############

# China Local: (Network Ekibi tarafindan doldurulacak alan)

SSG20 Lokal Ag Blogu    :    172.16.77.0/24

SSG20 Public IP adresi    :    77.77.77.77

baglanti tipi        :     adsl1/0

yeni tünel adi        :    tunnel.1




# Azure Cloud: (Sistem ekibi tarafindan doldurulacak alan)

LocalNetworkSite adi    :    JORDANtoAZURE

VirtualNetworkSite name    :    JORDANnet

Address Space        :    192.168.0.0/16

Subnet-1        :    192.168.66.0/24

GatewaySubnet        :    192.168.6.0/24

VPNGatewayAddress(Azure):    66.66.66.66

Preshared Key        :    asdx1234asdx123



SSG20 tarafina yapilacaklar


# Virtual tunnel interface configuration
--------------------------------------------

set interface tunnel.1 zone Untrust
set interface tunnel.1 ip unnumbered interface adsl1/0
set route 192.168.0.0/16 interface tunnel.1



# Internet Key Exchange (IKE) configuration
--------------------------------------------

set ike p1-proposal "Azure_phase1-proposal" preshare group2 esp aes128 sha-1 seconds 28800

set ike gateway "Azure_phase1" address "66.66.66.66" main outgoing-interface "adsl1/0" preshare asdx1234asdx123 proposal "Azure_phase1-proposal"
set ike gateway "Azure_phase1" dpd-liveness interval 10



# IPSec configuration
--------------------------------------------

set ike p2-proposal "Azure_phase2-proposal" no-pfs esp aes128 sha-1 seconds 3600
set vpn "Azure_phase2" gateway "Azure_phase1" tunnel idletime 0 proposal "Azure_phase2-proposal"
set vpn "Azure_phase2" monitor optimized rekey
set vpn "Azure_phase2" proxy-id local-ip 172.16.77.0/24 remote-ip 192.168.0.0/16 "ANY"
set vpn "Azure_phase2" bind interface tunnel.1


# ACL rules
---------------------------------------------

set address Trust "172.16.77.0/24" 172.16.77.0/24
set address Untrust "192.168.0.0/16" 192.168.0.0/16
set policy top from Trust to Untrust "172.16.77.0/24" "192.168.0.0/16" any permit
set policy top from Untrust to trust "192.168.0.0/16" "172.16.77.0/24" any permit



# TCPMSS clamping
----------------------------------------------

set flow vpn-tcp-mss 1350












26 Mart 2013 Salı

Juniper Firewall Dinamik IP ile IPsec VPN kurulumu

Sevgili ScreenOS ve Junos dostları :p
Bu yazımda Juniper ScreenOS işletim sistemli firewall cihazlarda en güzel özelliklerden biri olan Public IP adresinin statik olmasına gerek bırakmadan Dinamik IP adresleri ile Peer ID ve Local ID kullanılarak IPsecVPN kurulabilmeyi anlatıcam;

Hatta iki cihaz arasında IPsec VPN kurulumunu adım adım anlatalım;
Senaryo şu:
2 lokasyon var.
1. lokasyon > ISG1000 cihaz, Network Bloğu : 128.128.0.0/16, Statik IP adresi : 85.85.85.85
2. lokasyon > ISG1000 cihaz, Network Bloğu : 172.101.10.0/24, Local-ID adresi : 000-Test-VPN-ID

ISG1000 konfigürasyonu:

  1. VPN için trust-vr da bir Zone yaratıyoruz

  2. Bir tunnel yaratıp VPN_Zone a tanımlıyoruz

  3. Phase1(Gateway) 'i oluşturuyoruz. Burada dikkat edilmesi gerekn nokta Dynamic IP address kısmına karşıdaki SSG20 modemin Local ID sini yazmak olacak. Bunu birazdan göreceğiz.


    Advanced kısmını aşağıdaki şekilde giriyoruz. Önemli noktalar: Proposal ve Outgoing interface(daha sonra değiştirilemiyor) ve Mode kısmının aggressive olması.

  4. Phase2 (IKE)'yi oluşturuyoruz.


    Advanced kısmını aşağıdaki şekilde giriyoruz. Önemli noktalar: Proposal ve bind to tunnel interface yarattığımız interface olacak ve VPN Monitor kısmının tikli olması.

  5. SSG20 cihazın tunnel IP adresini GW gösterecek şekilde bir Route yazıyoruz

  6. VPN zone ile Trust Zone arasındaki gerekli izinlerin olduğu Policy'leri yazıyoruz.
SSG20 Konfigürasyonu:
yoruldum, yarın devam edicem ;)