Yazılar

Mailscanner Konfigurasyonu (Postfix e-mail sunucuları için)

Önceki yazımda postfix e-mail sunucusu ve bununla beraber içerik filtreleme görevini üstlenen mailscanner kurulumunu anlatmaya çalıştım.Mailscanner her ne kadar öntanımlı konfigurasyonu ile başarılı bir şekilde çalışsada ,farklı ihtiyaçlar doğrultusunda kullanılabilirliği ve esnekliği ile dikkatimi çekti.

Bu dökümanda bu esnekliği sağlayan ayarları ve ek olarak trafiği yüksek e-mail sunucuları için neler yapılabileceğini açıklamaya çalışacağım.

Mailscanner’ın ana ayar dosyası Mailscanner.conf dosyasındaki parametrelere bir göz atalım.

Eğer öntanımlı değerinde bırakırsanız,mailscanner’ın her prosesi kuyruktaki mesajları 6 saniyelik aralıklarla tarayacaktır.Daha hızlı bir tarama için değeri düşürmelisiniz.

  • Restart Every:

Mailscanner ön tanımlı olarak her 4 saatte bir kendini restart eder.Bu da yetersiz bellek gibi kaynak sorunlarının sistemi (bir miktar) etkilememesini sağlar.

  • Max Unscanned Bytes Per Scan
    Max Unsafe Bytes Per Scan
    Max Unscanned Messages Per Scan
    Max Unsafe Messages Per Scan

Mailscanner gelen mesajları ,toplu işlemler oluşturarak yapar.Her toplu işte kaç megabyte’a kadar mail taraması yapacağını veya kaç adet mesajı tarayacağını limitleyebilirsiniz.Sunucu yükü ve donanım performasına göre bunları deneyerek dengeli bir konfigurasyona ulaşabilirsiniz.Unutmayın ki toplu mesaj taramaları çalışırken mesajlar sunucunuza gelmeye devam edecektir.Tarama için gereğinden fazla mesaj sayısı(Max Unscanned Messages Per Scan,Max Unsafe Messages Per Scan),mailscanner’in gecikmesine,postfixin hold kuyruğunun büyümesine sebep olabilir.

Mailscanner ile,istediğiniz dosyayı ismine,tipine veya uzantısına göre kullanıcıya ulaşıp ulaşmamasına karar verebilirsiniz.Yasakladığınız dosyalar mesaj eklerinden silinecektir.Bununla ilgili ayarları Attachment Filename Checking başlığı altında görebilirsiniz.

Mailscanner aynı zamanda gelişmiş bir raporlama ve hata bildirimine sahiptir.Örneğin yukarıdaki dosya filtrelemelerine göre,spam veya virus gibi farklı durumları özel mesajlarınızla kullanıcınıza bildirebilirsiniz.

Bana sorarsanız,bu konuda mailscanner gelişmiş özelliklere sahip olsa da,bunları özelleştirmekle vakit harcamadan önce kullanıcı profilinizi göz önünde bulundurun derim.Neticede onları mesajın gitmesi,gelmesi ve spam mesajların ortadan kalkması haricindeki diğer konular pek ilgilendirmemektedir.

Mailscanner’ı hangi blacklist sunucularını kullanmasını istediğinizi de belirtebilirsiniz.Spam Detection and Spam Lists (DNS blocklists) başlığı altında Spam List parametresi karşısına,aynı dizinde bulabileceğiniz spam.lists.conf dosyasından istediğin rbl leri yazıp kullanabilirsiniz.Bunun yanısıra whitelist,scoring ayarları da yapmak,spamassassin ayarlarını da değiştirmek mümkün.Örneğin Required SpamAssassin Score veya Max SpamAssassin Size gibi.Spamassassin biraz yavaş da olsa en çok kullanılan antispam yazılımı.Dolayısıyla size,timeout gibi ayarlarla spamassassin’in mail trafiğinizi geciktirmesini bir miktar engelleyebilirsiniz.

Ben bu spamlerle ne yapayım?

Mailscanner’ın en çok beğendim özelliği ,spam ve spam olmayan mesajların ne yapılacağı konusunda birden fazla alternatif sunması.

  • Spam Actions:
  • Spam Actions = deliver header “X-Spam-Status: Yes”

Yukarıdaki kural uygulandığında mesajın başlığına “X-Spam-Status= Yes” ekler ve kullanıcıya teslim eder.

  • Spam Actions = delete

Yukarıdaki kural ile spam mesajı sildirmiş olursunuz.

  • Spam Actions = store delete

Yukarıdaki kural spam mesajı kullanıcıya ulaştırmadan quarantine dizinine taşır

  • Spam Actions = forward kullanıcı@alanadınız.com

Yukarıdaki kuralı uygularsanız,spam mesajlar belirtilen mail hesabına yönlendirilir.

  • Spam Actions = Notify

Spam mesaj kullanıcıya gönderilmez ancak küçük bir mesajı ile kendisine spam mesajın geldiğini bildirir.

Mailscanner konfigurasyonu burada bitmiyor elbette.Ben en çok ihtiyaç duyabileceğiniz özelliklerini açıklamaya çalıştım.Gerisi size kalmış.

Postfix E-Mail Sunucusu , MailScanner ve Clamav Kurulumu + Mailscanner konfigurasyonu

Bölüm 1:Kurulum
————————————————————————

Bu dökümanda anlatılanlar size ne kazandırır?

Kopyala & Yapıştır yöntemiyle bir e-mail sunucusuna sahip olursunuz.
Çok başarılı bir antispam uygulaması olan mailscanner sayesinde spamlara boğulmassınız.
Debian GNU/Linux işletim sistemini ilk kez kullanıyorsanız,program kurmanının ne kadar rahat olduğunu keşfedersiniz.
Daha önce satın aldığınız bu tip bir yazılım varsa “ah! tüh! vah! diyebilirsiniz.Ne diyebilirim ki?Internette biraz araştırma yapsaydınız!Ticari programlara binlerce dolar para vereceğinize bu projelere biraz destek olsaydınız içiniz daha rahat ederdi eminim…

Kullanılan Yazılımlar ve Sürümleri

Debian GNU/Linux 4 (Etch)
Postfix 2.3.8-2
Courier pop 0.53.3-5
Sasl 2.1.22
Mysql 5.0.32
Mailscanner 4.55.10-3
Spamassassin 3.1.7-2

Postfix Kurulumu

Aşağıdaki komutla kuruluma başlayın;

apt-get install mysql-server-5.0 courier-authlib-mysql libpam-mysql libnss-mysql libsasl2-modules sasl2-bin postfix-mysql courier-pop postfix mailscanner

Yukarıdaki paketlerin konfigurasyonu esnasında mysql,postfix,courier size bir takım sorular soracaktır.Varsayılan cevapları verebilirsiniz.Konfigurasyon dosyalarını değiştireceğimiz için vereceğiniz cevaplar çok önemli değil.

Postfix’te çalışacak sanal mail klasörleri için aşağıdaki komutlarla kullanıcıyı sisteminize ekleyin.

groupadd -g 5000 vmail
useradd -m -d /home/vmail -u 5000 -g 5000 vmail

/etc/default klasörü altındaki saslauthd dosyasını açın.aşağıdaki satırları ekleyin.

####################### /etc/default/saslauthd #############################

START=yes

MECHANISMS="pam"

PARAMS="-m /var/spool/postfix/var/run/saslauthd -r"

OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r"
####################### /etc/default/saslauthd #############################

Yukarıdaki dosyayı editledikten sonra kaydedip çıkın.Az önce postfix için saslauthd dosyasındaki klasörü oluşturun

mkdir -p /var/spool/postfix/var/run/saslauthd

Saslauthd servisini çalıştırın.

/etc/init.d/saslauthd start

Aşağıdaki linkten postfix için konfigurasyon dosyalarını sunucunuza indirin.Bunları /etc/postfix klasörüne kopyalayın.İsterseniz kopyalama yapmadan önce bu klasörü farklı bir isimde kaydedip içindeki dosyaları silebilirsiniz.

/ Link postfix.tar /

Postfixin mysql konfigurasyon dosyalarında göreceğiniz üzere bir mysql veritabanına ihtiyacınız olacak.Aşağıdaki bu veritabanının örnek şemasını indirip,phpmyadminle veya konsoldan mysql sunucunuza import edebilirsiniz.
Bu aşamada,dosyalarda yazılı olan mysql kullanıcı bilgilerini dilediğiniz gibi değiştirebilirsiniz.Yeterki mysql sunucuda oluşturacağınız kullanıcı bilgileriyle aynı olsun.

/ Link mail.sql /

Not: Yukarıda linki verilen sql şeması herhangi bir veri içermiyor.Bu yüzden dosyayı  veritabanınıza import ettikten sonra sisteminize kullanıcı eklemelisiniz.Önce domain tablosuna alanadınızı daha sonra users tablosuna sırasıyla e-mail adresi,şifre (ENCRYPT olmalı) ve kota (BYTE tipinde) bilgilerini eklemelisiniz.

Sıra benim bu kurulumu ilk yaptığımda “niye çalışmıyor!” şeklinde söylenerek,kıvrandığım aşamada.Aşağıdaki linkteki dosyayı /etc/pam.d/ dizinine kopyalayın.Dosyadaki mysql kullanıcı bilgileri,postfix için indirdiğiniz dosyalardakilerle aynı olmalıdır.

/ Link smtp /

Courier Pop Kurulumu

Courier için özel bir konfigurasyone gerek yok.Aşağıdaki dosyaları /etc/courier altına kopyalayın yeterli.Yine belirteyim,authmysqlrc dosyasındaki mysql kullanıcı da aynı veritabanına bağlanabilmesi lazım.

/ Link authmysqlrc/

Mailscanner Kurulumu

Mailscanner size ne avantaj sağlar?

– Yüksek trafikli mail gateway lerde rahatlıkla kullanabilirsiniz.
– Mail trafiğinin çok yüksek olduğu veya spam saldırısının olduğu anlarda bile amavis e göre bellek kullanımı çok daha düşüktür.
– Çok ayrıntılı,kolayca anlaşılır konfigurasyon dosyalarına sahiptir ve esnek bir yapıya sahiptir.
– Acil durumlarda devre dışı bırakılması çok pratiktir.
– Pek çok antivirüs yazılımı ile uyumludur.

-Postfix yapılandırması
Mailscanner ile postfixin beraber çalışabilmesi için main.cf dosyanıza aşağıdaki satırı ekleyin

header_checks = regexp:/etc/postfix/header_checks

Daha sonra yeni /etc/postfix/header_checks dosyanızı açıp aşağıdaki satırı ekleyin.

/^Received:/ HOLD

Mailscanner ile birlikte clam antivirüs ün en güncel versiyonunu kurabilmek için aşağıdaki adresi /etc/apt/sourcelist dosyanıza ekleyin.

deb http://volatile.debian.org/debian-volatile etch/volatile main

Daha sonra mailscanner ile birlikte clamav’ı sisteminize kurun

apt-get install clamav clamav-base clamav-daemon libclamav4 mailscanner

Kurulum tamamlandıktan sonra sırasıyla aşağıdaki dosya izinlerini uygulayın.

chown postfix.postfix /var/spool/MailScanner/ -R
chown postfix.postfix /var/lib/MailScanner/ -R
chown postfix.postfix /var/run/MailScanner/ -R
chown postfix.postfix /var/lock/subsys/MailScanner -R

daha sonra /etc/default/mailscanner dosyasını açıp aşağıdaki satırı aktif hale getirin

#run_mailscanner=1

/etc/MailScanner/MailScanner.conf dosyasını açıp aşağıdaki değişiklikleri yapın.

Run As User = postfix
Run As Group = postfix
Incoming Queue Dir = /var/spool/postfix/hold
Outgoing Queue Dir = /var/spool/postfix/incoming
MTA = postfix

Yukarıdaki değişiklikleri yaptıktan sonra mailscanner ve postfix servisleri resetleyin.

/etc/init.d/mailscanner restart
/etc/init.d/postfix restart

Notlar:

Mysql Sunucunuzdaki veritabanınıza ilk kullanıcınızı ekleyip thunderbird veya outlooktan deneme yaptığınızda e-mail istemciniz hata verecektir.Bunun sebebi henüz domain ve kullanıcı klasörleri ( Maildir ) oluşmamasındandır.Klasörlerin otomatik yaratılabilmesi için ,sisteme telnet ile 25.porta bağlanıp veya başka bir e-mail hesabınızdan mail gönderin.Sistem,kendisine gelen e-postaların sahiplerini users ve domains tablolarından kontrol edecek,eğer varsa gerekli klasörleri oluşturacaktır.

debian sarge 3.1 Bridge+Snort Inline+Clamav kurulumu için epey kirli bir döküman

Açıklama

Bu belgede debian linux üzerine snort_inline kurulumunu anlatmaya çalıştım.Snort_inline’in kurulum sonrası özelleştirmeleri sizlere ait.Benim o kadar vaktim olmadı.Ancak belgede anlatılan şekilde kurulum mezzanine’de gerçekleştirildi ve tek istemcili ( o istemci ben oluyorum:) ) networkte 3 hafta kadar testi edildi.Test yorumlarını belgenin sonunda bulabilirsiniz.
Snort_inline için bulabileceğiniz pek az belgede ilk göze çarpan özellik bridge modda çalışması.Kanımca bu çok iyi bir özellik.Bridge,nat moda göre daha esnek ve güvenli.Ayrıca daha az uğraştırıyor:)
Bu yüzden linux üzerinde bridge mod deneyimi olmayanlar için kısa bir bölüm hazırladım.
Gelelim snort_inline’ın ne olduğuna.Snort_inline, snort’un işlevi bakımından değiştirilmiş hali.Snort sadece bir saldırı tespit aracıyken,snort_inline karşımıza bir saldırı koruma aracı olarak çıkıyor.Koruma snortta olduğu gibi yine kural tabanlı.Snort ağda geçen paketleri kokladıktan sonra kurallara göre sizi uyarırken,snort_inline yine bu kurallara göre iptables kuralından gelen paketleri öldürüyor veya reddediyor.Bu durumda snort_inline kurmayı düşündüğünüz sistemin çekirdeğinde iptables/netfilter için ip_queue desteği olması
gerekiyor.Bunu biraz açıklamak lazım.Şöyleki,iptables, queue desteği ile paketi kullanıcı alanını için kuyruğa sokar.Kullanıcı alanında paketi bekleyen bir uygulama varsa işlenir,yoksa paket drop edilir.Tahmin edebileceğiniz gibi o uygulama da snort_inline’dır.
Bu açıklamalardan sonra kuruluma başlayalım.

Bridge Mode için hazırlıklar

apt-get install bridge-utils modconf ebtables //bridge mod için gerekli paketleri kuruyoruz.

ifconfig eth0 0.0.0.0 promisc up // ethernet arayüzlerine ait ip leri değiştiriyoruz.
ifconfig eth1 0.0.0.0 promisc up

brctl addbr br0 // brctl ile br0 adında yeni bir bridge arayüzü oluşturuyoruz.
brctl addif br0 eth0 // ilk ethernet bridge ekleniyor.
brctl addif br0 eth1 // ve ikincisi de.

Bu işlemlerden sonra ifconfig komutu verdiğinizde iki fiziksel ethernet arayüzünün dışında bir de bridge arayüz görüyor olmalısınız.Opsiyonel olarak bu arayüze bir ip ve gateway verebilirsiniz.Hemen bir örnekle açıklayalım.

ifconfig br0 192.168.160.100 netmask 255.255.255.0 up
route add default gw 192.168.160.1 dev br0 // linuxun kendisi böylece nete çıkabilir.

Ip verirken iç networkunuze uygun bir ip vermelisiniz.Eğer bu arayüze bir ip vermesseniz makinanın kendisi nete bağlanamayacaktır.Ama lokasyon olarak arkasında bulunan makinaların nete çıkmasına engel olmayacaktır.

Snort_inline kurulumu

Kurulumda sorun yaşamamak için debian depolarından kurulması gereken paketler
libpcap0.8
libpcap0.8-dev
libpcre3
libpcre3-dev
snort-rules-default
iptables-dev
libclamav1 ve libclamav-dev // snort_inline’a clamav desteği için gerekli.Eğer bu özelliği istemiyorsanız,kurmayabilirsiniz.

Yukarıda adı geçen paketleri şu şekilde kurabilirsiniz.

apt-get install libpcap0.8 libpcap0.8-dev libpcre3 libpcre3-dev iptables-dev libclamav1 libclamav-dev snort-rules-default

libdnet kurulumu

not : libdnet ve libdnet-dev paketleri debian depolarında var.ancak bunları kurduktan sonra bir türlü snort_inline a gösteremedim.siz sorunun sebebini bulabilirseniz lütfen bilgilendirin.uğraşamam diyorsanız,kaynaktan kurulum size sorun çıkarmayacaktır.

wget http://belnet.dl.sourceforge.net/sourceforge/libdnet/libdnet-1.11.tar.gz
tar zxvf libdnet-1.11.tar.gz
./configure && make
make install

Yukarıdaki gibi libdneti kurduktan sonra snort_inline’ı kurmaya başlıyoruz.Debian depolarında aramayın.Unstable/Sid kategorisinde bile bulamassınız.

http://snort-inline.sourceforge.net/download.html
adresinden paketi indirdikten sonra paketi aşağıdaki gibi sisteminize kurun.
tar zxvf snort_inline-2.4.5a.tar.gz
./configure –enable-inline –enable-clamav

–enable-clamav parametresi snort_inline’ı clam antivirüs ile beraber çalıştırmak için gereklidir.Sisteminize ek bir yük istemiyorsanız kurmayın.Ancak şirket içi networkler için oldukça faydalıdır.

make
make install
Yukarıdaki aşamaları sorunsuz geçtiyseniz artık kurulum sonrası ayarlara geçebiliriz.

Kurulum başarıyla gerçekleştikten sonra make install komutu snort_inline’ı /usr/local/bin altına atacaktır.
Kurulum dizininin altındaki etc dizinindeki dosyaları alıp uygun bir yere yerleştirin.Örneğin /usr/local/etc/snort_inline
altına atabilirsiniz.

Sıra snort_inline için en önemli kısma geldi.Kurallar…
Eğer debian depolarından snort-rules-default paketini indirdiyseniz,bu dosyalar sisteminizde /etc/snort/rules
altında bulunuyor olmalı.Bir kural örneğine göz atalım.

alert tcp $EXTERNAL_NET any -> $HOME_NET 110 (msg:”POP3 DELE negative argument attempt”; flow:to_server,established; content:”DELE”; nocase; pcre:”/^DELE\s+-\d/smi”; reference:bugtraq,6053; reference:bugtraq,7445; reference:cve,20022-1539; classtype:misc-attack; sid:2121; rev:9;)

Dikkatinizi çekmek istediğim nokta kuralın “alert” ile başlıyor olması.Bu da snort’un saldırı tespit sistemi olmasından kaynaklanıyor.
Kuralın snort_inline ile birlikte etkili olması için üç kural tipi kullanabiliriz.

drop: paket iptables aracılığıyla bloklanır.snort olayı loglar.
reject: paket yine iptables tarafından bloklanır.snort olayı loglar ve eğer protokol tcp ise tcp reset,protokol
udp ise karşıya “icmp port unreachable” gönderilir.

sdrop: paket iptables tarafından bloklanır.hiçbirşey loglanmaz.

Ben drop kullanmayı tercih ettim ama siz nasıl değiştireceğinize karar verin ve
aşağıdaki script ile bütün kuralları değiştirin

#!/bin/bash
for file in $(ls -1 *.rules)
do
sed -e ‘s:^alert:drop:g’ ${file} > ${file}.new
mv ${file}.new ${file} -f
done

Kuralları değiştirdikten sonra sistemin doğru çalışması için yapmanız gereken bir nokta daha var.
snort_inline.conf dosyanızı açın.İlk tanımlamalar arasında HOME_NET değişkenini kendi sisteminize göre
değiştirin.Bu sizin güvenilir ağınız olmalıdır.

Örneğin;

var HOME_NET 192.168.160.0/24

gibi.

Ayrıca güvenilmeyen ağ tanımlamanız gerekiyor.Ben şöyle yaptım

var EXTERNAL_NET !$HOME_NET

Kurallarınızın bulunduğu dizine göre RULE_PATH değişkenini düzenledikten sonra dosyayı kaydedip çıkın.

Son olarak snort_inline’ı daemon modunda çalıştırmadan önce iptables’a forward edilen bütün paketleri
kuyruğa sokmasını söylüyoruz

iptables -I FORWARD -j QUEUE

ve sonunda….

/usr/local/bin/snort_inline -Q -D -c /usr/local/etc/snort_inline/snort_inline.conf -l /var/log/snort

Not:Iptables stratejiniz tamamiyle size kalmış bişey.Hangi paketleri yönüne göre nasıl snort_inline’a yönlendirmek
isterseniz,iptables kuralını da ona göre belirlemelisiniz.