Bu Blogda Ara

Fortimail - Mail security sistemi kurulum ve konfigürasyon örneği

Aşağıdaki senaryoya göre fortimail konfigürasyonumuzu ayarlamak istediğimizi varsayalım:

Exchange sunucumuzun iç ip adresi: 192.168.1.16
Fortimail iç ip adresi: 192.168.1.10
Default gateway adresi: 192.168.1.1
Exchange sunucumuzun dış ip adresi: 195.175.130.209

(ip adresleri, tahmin edeceğiniz gibi laboratuvar ortamında rastgele verildi)
  • Internetten (dış dünyadan) gelen tüm maillerin önce fortimaile, daha sonra exchange sunucumuza gelmesini istiyoruz (antispam, antivirüs, spf ve çalıştırılabilir ek kontrolü yapılacak)
  • Exchange sunucumuzdan dış dünyaya gönderilen tüm maillerin de fortimail üzerinden geçmesini istiyoruz (gönderen maildeki domain adı kontrolü, virüs kontrolü, çalıştırılabilir ek kontrolü,dlp kontrolü yapılacak)
1) Firewall Konfigürasyonu:
Öncelikle Firewall üzerinde Internet Port 25 trafiğini Fortimail üzerinde sonlandırmak için; Fortigate Firewall'umuz üzerinde aşağıdaki ayarları yapacağız:

a) Virtual ip/port map tanımlama           

Policy& Objects altında Virtual IP tanımlıyoruz ve aşağıdaki ayarları gerçekleştiriyoruz:
195.175.130.209: Port 25 --> 192.168.1.10 : Port 25 Yönlendirmesini yapacağız:



SMTPS protokolü için de benzer şekilde aşağıdaki yönlendirme gerekiyor:

195.175.130.209: Port 465 --> 192.168.1.10 : Port 465

Owa erişimi için de benzer şekilde aşağıdaki yönlendirmeler gerekiyor:

195.175.130.209: Port 443 --> 192.168.1.16 : Port 443
195.175.130.209: Port 80 --> 192.168.1.16 : Port 80
195.175.130.209: Port 587 --> 192.168.1.16 : Port 587

Şimdi bu virtual ip'leri kural içerisinde kullanabiliriz:

b) Ip pool tanımlama
Fortimail ve exchange sunucumuz dışarıya mail gönderirken 195.175.130.209 ip adresine NAT'lamak istiyoruz. Dolayısıyla bunun için bir ip pool oluşturacağız ve ilerde bu ip pool'u firewall policy içerisinde kullanacağız:












c) Firewall Policy oluşturma:
Internet interface'imizden (untrust), sunucu vlanına doğru aşağıdaki kuralı oluşturuyoruz:




















Exchange için oluşturduğumuz ips kuralımızın (protect-exchange-servers) konfigürasyonu aşağıdaki şekilde:









"Untrust-To-Servers-Apps" adlı uygulama kontrolü profilimizin konfigürasyonu aşağıdaki şekilde (botnet, remote access vs kategorisindeki uygulamaları engelliyoruz) :


















Fortimail sunucumuz dışarıya mail gönderirken 195.175.130.209 ip adresine NAT'lamak istiyoruz. Bunun için ve diğer sunucu erişimleri için aşağıdaki firewall policy'yi oluşturacağız. Kuralımız sunucu vlan'ından internete (untrust) doğru olacak:

udp 8889 ve udp 8888 portları fortimail antispam query için olması gerekiyor.Diğerleri standart servisler zaten.





























Not: Maillerde antivirüs, dlp kontrollerini Fortimail üzerinde yapacağımızdan dolayı, Firewall kurallarımızın içerisinde antivirüs ve dlp profili tanımlamıyoruz.

Firewall üzerinde yapılması gereken konfigürasyonu tanımladık. Şimdi sıra diğer ayarlarda..

2) Exchange Sunucu üzerinde smart host tanımlama

Exchange sunucumuzun gönderdiği tüm maillerin fortimail üzerinden geçebilmesi için "Smart  
Host" ayarlarını yapmamız gerekiyor. Smart host olarak Fortimail sunucumuzun ip adresini giriyoruz:



















Artık Fortimail konfigürasyonu için hazırız:

3) Fortimail Konfigürasyonu (system --> network)

a) Network konfigürasyonu:

İlk olarak fortimail sunucumuzun port1 interface'ine "192.168.1.10" ip adresini tanımlayacağız.

Bunun için "System --> Network" bölümüne giriyor ve port1 ayarlarını aşağıdaki şekilde tanımlıyoruz:


Yönetim arayüzüne erişmek için https ve ssh'ı açacağız. Ping servisini de erişim kontrolü gerçekleştirmek için açıyoruz.

Şimdi de "System-->Network" altındaki "Routing" bölümüne girip default route olarak sunucu vlan interface ip adresini girelim (örneğimizde: 192.168.1.1)











Son olarak da "DNS" ayarlarını aşağıdaki şekilde giriyoruz:







b) Hostname, port,mail queue, disclaimer ayarları (system --> mail settings)

"Mail server settings" bölümünde sunucu adımızı (bu ad, ehlo haberleşmesi sırasında görünecek) çalışacak portları (smtp,smtps vs) hangi alan adına hizmet verecek ise o alan adını da giriyoruz.

"Mail queue" yani gönderilen maillerin kuyrukta ne kadar süreyle tutulacağını, kuyruktaki maillerin ne kadar süre sonra tekrar gönderilmeye çalışılacağı vb. ayarları da yapıyoruz:
















Gönderilemeyen mailler için, DSN (Delivery status notification) maillerini oluşturmak istiyoruz:









İstersek gönderdiğimiz maillerin sonuna eklenecek olan "disclaimer" metnini de ayarlayabiliriz:











c) Fortiguard ayarları (system--> fortiguard)

Antivirüs veritabanı 1 saatte bir yenilenecek ve "push update" metodu kullanılacak:










Antispam sorgularını udp 53 (DNS) servisi üzerinden gerçekleştirecek (İnternete doğru izin veren kural yazmıştık) ve 5 dakika boyunca "cache" tutmasını istedik:















d) Domain ayarları (Domain&User --> Domain)
Şimdi sıra geldi fortimail sunucumuza hangi domaini koruyacağını belirtmeye..

Domain&User --> Domain bölümüne girdikten sonra "New" tıklanarak aşağıdaki şekilde domain adımız, mail sunucumuzun ip adresi ve hangi port üzerinden haberleşeceğimiz belirtilir:
















İstersek alıcı mail adres hesap giriş kontrolünü (otantikasyon) da bu ekrandan yapabiliriz ama bu örnekte yapmıyoruz.

Domain&User --> User Alias: Belirli sayıdaki mail adresine tek bir adres üzerinde mail gönderebilmek için (mail grubu mantığı ile aynı) user alias tanımlıyoruz.

Domain&User --> Address Map: Örnek verecek olursak; murat@domain.com adresinden (internal) dış domainlere mail gönderdiğimizde, eğer bu mail adresini örneğin external olan admin@domain.com mail adresine "map" edersek, göndermiş olduğumuz maillerde "gönderen" adres admin@domain.com olacaktır.Aşağıdaki örneğe bakınız:








Şimdi sıra geldi antispam, antivirüs, oturum (session), içerik (content) ve kaynak kullanımı (resource) ayarlarını yapmaya:

e) Profile ayarları

SESSION PROFILE:

"Profile" bölümüne girerek öncelikle oturum(session) profili oluşturacağız.

Gelen maillerle ilgili "inbound session" profili, iç domainimizden dış dünyaya gönderilen maillerle ilgili de "outbound sesssion" profili oluşturmalıyız:

Varsayılan ayarları biraz değiştirmekte (duruma göre daraltmak gerekir) ve logları gözlemlemekte fayda var:

Connection settings:
Bu örneğimizde; sunucumuza bağlantı kuran bir dış domain mail sunucusu:

  • 30 dakika içerisinde en fazla 2000 adet bağlantı kurabilir,
  • Aynı anda en fazla 5 bağlantı kurabilir,
  • Kurulan bağlantı 15 saniye boyunca durağan kalırsa sonlandırılır :


Sender Reputation:
Bu örneğimizde;

Bu örneğimizde; sunucumuza bağlantı kuran bir dış domain mail sunucusu, dinamik bir "sender reputation" listesine kaydolur ve 
  • 45 adet mail gönderimiyle sınırlandırılır,
  • Saatte en fazla 5 adet maille  veya bir önceki saatte gönderilen mailin % 1'i kadar (hangisi daha büyükse) sınırlandırılır,
  • Gönderilen mail 55'e ulaştığında geçici olarak hata mesajı verdirilir,
  • Sayı 90'a ulaştığında ise sunucu reddedilir (reject)
  • Fortiguard'ın spam veritabanında olup olmadığı kontrol edilir ve eğer sunucu ip adresi veritabanında kayıtlı ise bu gönderen sunucunun bağlantı kurması engellenir.


Sender Validation:

SPF ve DKIM kontrollerini, session bazında değil antispam profili içerisinde tanımlamak ve kontrollerden geçemeyen maillerin session aşamasında reddetmek yerine, kullanıcı adreslerinin karantinasında tutmak istediğimizden bu aşamada SPF ve DKIM kontrolü yapmıyoruz.

Session settings:
Ehlo haberleşmesi sırasında geçersiz (invalid) karakterlerin bulunması durumunda oturumu reddediyoruz ve sözdizimi (syntax) kontrolü yapıyoruz:













Unauthenticated Session Settings:

Check HELO/EHLO domain: "ehlo domain.com" şeklinde iletilen "domain.com" alan adının bir mx veya A kaydının olup olmadığı kontrol edilir.Eğer yoksa bağlantı reddedilir.

Check sender domain: "mail.from:" satırında iletilen "domain.com" alan adının bir mx veya A kaydının olup olmadığı kontrol edilir. Eğer yoksa bağlantı reddedilir.

Check recipient domain: "rctp to:" satırında iletilen "domain.com" alan adının bir mx veya A kaydı olup olmadığı kontrol edilir.Eğer yoksa bağlantı reddedilir.

Reject empty domains: "ehlo" satırında herhangi bir domain adı belirtilmemiş olması durumunda bağlantı reddedilir.

Reject if recipient and helo domain match but sender domain is different : "rctp to:" ve "helo" satırındaki domain adının biribiriyle aynı olması fakat "mail from:" satırındaki domain adının farklı olması durumunda bağlantı reddedilir.

Örneğimizde biz sadece "check sender domain" ayarını tercih ettik:























SMTP limits, Error Handling, Header Manipulation ve Lists ayarları:

Oturum başına gönderimine izin verilen email sayısı (Restrict number of email per session to), bağlantı sırasında izin verilen azami hata sayısı (Maximum number of errors allowed for each connection)  gibi tüm ayarlar aşağıdaki şekilde yapılabilir.

Bloklanan göndericiler (blocklist checking), izin verilen göndericiler (sender safelist) listeleri de dilenirse buradan oluşturulabilir.

İç domainden dış domain sunucularına bağlantılar sırasındaki oturum kontrolleri için yukarıdaki ayarlara benzer şekilde "outbound_session"  profili oluşturulmalıdır. Farklı olarak aşağıdaki ayarlar yapılabilir:








Maili gönderen kendi fortimail sunucumuz olduğundan "outbound_session" profili içerisinde "Sender Reputation" devreye alınmayacaktır.

ANTISPAM PROFILE:

Inbound yönde (dış domainden iç domaine doğru) antispam profili ayarlarının (AS_Inbound) aşağıdaki şekilde olması önerilmektedir (detaylar için bkz fortimail guide) :
































URI filter (Profile -->Antispam --> URI filter) :

Aşağıdaki kategoriye sahip url adreslerinin mail içeriğinde bulunması durumunda bu mailler de karantinaya alınacaktır:

























DNSBL server adresi:










SURBL server adresi:










Newsletter yani reklam amaçlı toplu mesajları engellemek için:










Outbound yöndeki antispam profili ayarlarının (AS_Outbound) ise aşağıdaki şekilde olması önerilmektedir:

(Outbound yönde maili gönderen kendi sunucumuz olacağı için "sender reputation" , spf, dmarc vs. kontrollerini yapmaya gerek yoktur.)



Böylece; inbound yönde spam olarak tespit edilmiş mailler kullanıcı karantinalarına düşecek, Outbound yönde spam olarak belirlenmiş mailler ise gönderen adrese geri çevrilecektir (reject).

ANTIVIRUS PROFILE

Inbound (Dış domainden iç domaine gelen) mailleri analiz etmek için aşağıdaki şekilde antivirüs profili oluşturulur. Böylece virüslü mailler "sistem karantinasında" tutulacaktır:

Fortisandbox hizmeti bulunuyorsa bu ayarlar da bu ekrandan yapılabilir:



Outbound (iç domainden dış domaine gönderilen) mailleri analiz etmek için aşağıdaki şekilde antivirüs profili oluşturulur. Böylece virüslü mailler gönderici adrese geri gönderilecektir (reject):


CONTENT PROFILE:

Inbound yönde gelen mailler için content profile oluşturularak, çalıştırılabilir dosyaların ek olarak maile eklenmesi aşağıdaki şekilde engellenir.

Böylece ekinde çalıştırılabilir ek bulunan mailler komple silinecektir (Discard):








































Şifrelenmiş, içeriğinde zararlı içerik bulunduran dokümanların da taranması gerekir:
























Arşivlenmiş (şifrelenmiş) olan dokümanların şifresinin çözülmesi ve içeriğinin taranabilmesi için "content profile" içerisinde aşağıdaki şekilde ayarların belirlenmesi gerekiyor:






















Benzer şekilde bir "content profile" ayarlarının outbound yönde de tanımlanması gereklidir.


f) Policy Ayarları

Inbound Recipient Policy:

Policy --> Recipient Policy bölümüne girilerek aşağıdaki şekilde bir "inbound" profile oluşturulur:

















Belirli bir grup mail adresine özel politika da uygulanabilir:

(Bu örnekte bilişim personelinin karantina maillerini alabilmesi için ayrı bir res_bilisim adında resource profile seçilmiştir ve karantina raporlarının mail yoluyla gönderimi sağlanmıştır)

Öncelikle mail adreslerinden grup oluşturulur:










Daha sonra profil oluşturulur:




















"Res_Bilisim" profilinin içeriği:

Send quarantine report : Seçili olmalı
Web release : Seçili olmalı



"Security --> Quarantine --> Quarantine report" altında aşağıdaki şekilde karantina takvimi oluşturulmalıdır:

Bu örnekte her gün saat 09:00'da rapor oluşturulacaktır.











Outbound Recipient Policy:

Outbound yönünde (iç domainden internete doğru) bir recipient policy oluşturarak, daha önce outbound yönde oluşturmuş olduğumuz antivirüs, antispam vb. profile kayıtları seçilir:















Not: DLP kontrolü yapılacaksa DLP profile oluşturulmalı ve yukardaki ekranda bu profil seçilmelidir.

Access Control Policy:


İç domainden dışarı doğru (outbound) sadece @tapdk.gov.tr uzantılı mail gönderilebilmesine izin vermek için aşağıdaki "receiving" access control policy yazılmalıdır:














Diğer access control policy kuralları aşağıdaki listede bulunmaktadır:


ID:2 --> Mail sunucusunun (192.168.1.16), fortimail sunucusuna bağlantısıyla ilgili erişim kuralıdır. Authentication status "any" olmalı, sender pattern *@tapdk.gov.tr şeklinde yazılmalıdır.

ID:1 --> Dış dünyadaki mail sunucularının fortimail sunucusuna bağlantısıyla ilgili erişim kuralıdır. Authentication status : "any" olmalı ve Recipient Pattern : "internal" olmalıdır.

ID:3 --> Diğer tüm otantike olmayan bağlantılarla ilgilidir. Bu satır sayesinde yukarıdaki kuralın kapsamı dışındaki diğer erişim istekleri reddedilir böylece relay işlemleri engellenmiş olur.


IP Policy:

Daha önce oluşturduğumuz inbound_session profilimizi burada seçiyoruz.Diğer ayarlar aşağıdaki şekilde olacak:

Action: Scan seçilmelidir.
Session profile: Daha önce belirlemiş olduğumuz inbound_session adlı profil seçili olacaktır. Antispam,Antivirus,Content vs. profilleri burada değil Recipient Policy içerisinde seçeceğiz.



















Ip policy listesi aşağıdaki gibi olmalıdır:






g) Block/Safe List (Karaliste-Beyazliste)

Bazı domainlerden (veya mail sunucu ip adreslerinden) veya mail adreslerinden mail geldiğinde taramaya tabi tutmadan doğrudan almak isteyebiliriz. Bu durumda "Safe List" oluşturmalıyız.

Bu örneğimizde tek bir domaini yönettiğimizi varsayarak "system safe list" oluşturacağız.
Security --> Block/Safe List --> System sekmesine girip "Block List" tıklıyoruz ve *.domain.com veya ip adreslerimizi listeye ekliyoruz:




















Kişi bazlı Block/Safe List oluşturmak istersek ilgili kişinin Block/Safe List listesini düzenleyebiliriz:


































h) DLP (Data Loss Prevention)

Öncelikle Data Loss Prevention sekmesindeki "sensitive data" bölümüne giriyoruz. Buraya istersek dosyalarımızı ayrı ayrı girebileceğimiz gibi dosya sunucu adresini girerek sunucudaki tüm dosyaların parmak izinden (fingerprint) dinamik liste de oluşturabiliriz.
















Konu (subject) veya gövde (body) bölümünde "fetö" kelimesi geçen veya kurum telefon listesi.xlsx dosyasını kullanıcılar maille göndermek istediğinde hata alacaklar:














Oluşturduğumuz "Rule" u şimdi "outbound recipient policy"  üzerinde seçiyoruz:


















Kural oluştururken "Reject" opsiyonunu seçtiğimiz için göndericiye mail geri dönecek ve mail header bilgilerinde DLP üzerinden engellendiği görülecek.

Fortimail içerisinde "log" bölümüne girildiğinde oradan detayları öğrenilebilmektedir (mesela bu örnekte konu bölümünde fetö kelimesi geçiyormuş)





Fortimail konusu buraya sığdırılamayacak kadar geniş. Burada mümkün olduğunca çok işinize yaracak bölümlere değinmeye çalıştım.

Umarım faydalı olmuştur.

Murat TAŞ

Hiç yorum yok:

Yorum Gönder