İçerikler


    Postfix, Spamassasin ve Policyd kurulumu

    14.10.2015 00:10

    İki sayfa olarak yazılmış bu yazılarımızın esas amacı Php socket açma yöntemi ile ele geçirilmiş makinelerden yapılan mail-spam saldırılarını durdurmak ve mail serverlerimizin black liste gitmesine engel olmaktır. Bu yapıyı gerçekleştirir kullandığımız araçlar tamamı ile Open Source ve hala geliştirilmeye devam edilen projelerdir.

    Kullandığımız yapılardan ve işlevlerinden biraz bahsetmek gerekirse farklı makinelerimizin tek bir yapı altında kontrol edilmesi ve loglanması için relay server mantığını kullandık. Bu yapıda kullandığmız esas programlar MTA olarak kullanılan Postfix, maillerin içeriğini otomatik olarak kontrol eden Spamassasin ve işin büyük kısmını yapan Policyd Cluebringer.

    Bir Postfix eklentisi olan Policyd lightweight yapısı ile mail geldiğinde mailin içeriğine bakmadan sadece headerlerini kontrol edip mail atan kişinin bizim müşterimiz olup olmadığını kontrol edip eğer sistemde izinli ise mail atmasına izin vermesidir. Tahmin edebilirsiniz ki bu yapı ile sistemde tanımlı olmayan maillerin engellenmesi ile %60 daha fazla bir oranla outbound maillerde engelleme uygulayabiliyoruz ve kayıtlı kullanıcıların maillerinin sıkıntısız bir şekilde iletiyoruz.

    !! Not kurulumda Ubuntu 15.04 versiyonu kullanılmıştır.

    1 Postfix, Spamassasin, Policyd Kurulumu ve Konfigürasyonu

    1.1 Exim Cpanel Serverinin Yönlendirilmesi

    nano /etc/exim.conf

    Komutu ile var ise smart route satırını editliyoruz yoksa kendimiz ekliyoruz

    smart_route:
    driver = manualroute
    domains = !+local_domains
    transport = remote_smtp
    # Burada Exim MTA sisteminde gelen bütün portun hepsinin diğer makineye aktarılması sağlanır
    route_data = <RELAY SERVER IP>

    1.1.1 Yönlendirmenin test edilmesi

    echo "This is the body of the email" | mail -s "This is the subject line" user@example.com
    • Komutu ile herhangi bir yere mail atmalısınız ve tcpdump komutu ile relay server makinesinden dinlemelisiniz eğer sayfada çıktı oluşuyorsa yönlendirmeyi doğru yapmışsınız denilebilir
    tcpdump host <CPanel IP>
    • Eğer burada serverimizden gelen paketleri alabiliyorsak bundan sonra esas işlemlerin ve düzenlemelerin yapılacağı Relay serverimize geçebiliriz

    1.2 Postfix Kurulumu

    1.2.1 Postfix kurulumu için gerekli ekipmanlar

    • Programın kurulması için root yetkisi
    • Postfixi test etmek için Postfix üzerinden çalışan mail mailx gibi komutları içeren mailutils paketi

      apt-get install mailutils
      • NOT Burada Postfix ile alakalı ekranda bir ayarlama gelir ise Smart Host seçeneği ile ilerleyeceğiz gerekli işlemleri biz kendimiz manuel olarak etc dizininde main.cf ve master.cf dosyaları üzerinde yapacağız.
        • main.cf hakkında daha fazla bilgi[^fn-1]
        • master.cf hakkında daha fazla bilgi[^fn-2]
    1. Postfix ekipmanlarının indirilmesi

      apt-get install postfix
      1. Postfix elemanlarının yapılandırılması

        • main.cf nin editlenmesi
        sudo nano /etc/postfix/main.cf
        smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
        myhostname = SERVERNAME
        alias_maps = hash:/etc/aliases
        alias_database = hash:/etc/aliases
        mydestination = localdomain, localhost, localhost.localdomain, localhost
        relayhost =
        mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128, 31.192.215.72
        mailbox_command = procmail -a "$EXTENSION"
        mailbox_size_limit = 0
        recipient_delimiter = +
        inet_interfaces = all

        NOT!! eğer burada Postfix ile alakalı ayarları sorarsa no configuration seçeneğini işaretleyin

        • Postfix serverin yeni ayarlarının uygulanması
        sudo service postfix restart
      2. Sistemin çalışırlığının test edilmesi

        echo "This is the body of the email" | mail -s "This is the subject line" user@example.com
        • Eğer burada user@example.com sitesine mail gidiyorsa ve ayrıntılarda Postfix görüyorsanız sistem gayet güzel çalışıyor diyebiliriz.

    1.3 Spamassassin kurulumu

    • Bu kısımda Postfixte bir eklenti olarak çalışan Spam assaasian yazılımını yükleyeceğiz

      apt-get install spamassassin spamc
    • Spamassassinin çalışmasının daha düzenli olması için kullanıcı grubu ve kullanıcı ekleyeceğiz

      # Grubun eklenmesi
      groupadd spamd
      # Kullanıcının eklenmesi ve home dizini ayarları
      useradd -g spamd -s /bin/false -d /var/log/spamassassin spamd
    • Logların tutulacağı yer ve yetkilendirmenin yapılması

      mkdir /var/log/spamassassin
      chown spamd:spamd /var/log/spamassassin

    1.3.1 Spamassassini aktifleştirme ayarlarının yapılması

    • Burada Spamassassinin gerekli ayarlarını yapacağız

      nano /etc/default/spamassassin
    • Spamassasinnin aktif edilmesi

      ENABLED=0
    • satırının bulunup aşağıdaki satır ile değiştiriniz

      ENABLED=1
    • Güncellenme ve yeni spam listelerini getirmesi için

      CRON=0
    • satırını bulup aşağıdaki satır ile değiştiriniz

      CRON=1
    • SAHOME adında bir değişken oluşturup aşağıdaki gibi set ediniz

      SAHOME="/var/log/spamassassin/"
    • OPTIONS değişkenini bulup aşağıdaki değeri atayınız

      OPTIONS="--create-prefs --max-children 5 --username spamd -H ${SAHOME} -s ${SAHOME}spamd.log"
    • Herşeyin aktifleşmesi için spamassassini yeniden başlatın

      service spamassassin start

    1.3.2 Spamassassinin Postfix ile ilişkilendirilmesi

    • Bu bölümde yapılandırılmış Spamassassin konfigürasyonumuzu Postfix ile ilişkilendireceğiz
    • Bu sebeple Postfixin ana konfigürasyon dosyasını editlememiz gerekiyor

      nano /etc/postfix/master.cf
    • Aşağıdaki satırı bulup bir altındaki ile değiştiriniz

      #smtp      inet  n       -       -       -       -       smtpd
      smtp      inet  n       -       -       -       -       smtpd -o content_filter=spamassassin
    • Sütunlar bittikten sonraki ilk boşluğa bu satırları ekleyiniz

      spamassassin unix - n n - - pipe user=spamd argv=/usr/bin/spamc -f -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}
    • Değişiklikleri uygulamak için Postfix'i restart ediniz

      service postfix restart

    1.3.3 Spamassassin yapılandırılmasının özelleştirilmesi

    • Bu kısımda basit bir şekilde spam maillerin ne gibi bir işlem göreceği hakkında kurallar yazacağız
    • Yazdığımız kurallar sadece maillerin spam olarak işaretlenmesi ve bunun derecelendirmesini yapacak
    • Öncelikle bu özelleştirmelerin yapılacağı konfigürasyon dosyasını açıyoruz

      nano /etc/spamassassin/local.cf
    • Aşağıdaki satırları kontrol ederek ekli ise düzenliyoruz ekli değil ise biz kendimiz ekliyoruz

      #Eğer sistem maili spam olarak algılamışsa mail title kısmına SPAM _SCORE_ unu ekle
      rewrite_header Subject [***** SPAM _SCORE_ *****]
      #Spamasasinin değerlerine göre spam olup olmadığına karar verir Bunu duruma göre değiştiebiliriz
      required_score           5.0
      #auto update ayarları
      use_bayes               1
      bayes_auto_learn        1
    • Servisi yeniden başlatıyoruz

      service spamassassin restart
      • Servis yeniden başlatıldığında buradan düzgün çalışıp çalışmadığını aşağıdaki komut ile kontrol edebilirsiniz
      tail -f /var/log/spamassassin/spamd.log
      • 2. olarakta C Panelden mail atarak ve mailin detaylarını Spamassassini ve diğer değerleri alıcının mail kutusundaki ayrıntılar kısmından bakabilirsiniz.

    1.4 Policyd Kurulumu

    1.4.1 Kurulum biraz sıkıntılı sebepleri

    • Perl paketlerinin yüklenmesi ve bazı perl fonksiyonlarına özel ayar yapılması gereği
    • Linklerdeki kurulumların eski olması ve çalışmıyor olması
    • mysql versiyonuna göre veri tabanının hazırlanması

    1.4.2 Kurulum

    • Kurulumu apt-get reposu ile yapacağız bu aşağıdaki komut bize web arayüzü ile birlikte gerekli çoğu programıda beraberinde yükleyecektir.

      apt-get install postfix-cluebringer
      • Bu kod ile birlikte sistemimize bize gerekli olan
        • php5
        • bazı gerekli perl modülleri
          • CIDR

    1.4.3 Kurulum için gerekli perl modüllerinin yüklenmesi

    • http://wiki.policyd.org/requirements

      • MySQL, PostgreSQL or SQLite

        apt-get install mysql-server mysql-client
      • Net::Server >= 0.96

        /usr/bin/perl -MCPAN -e 'install Net::Server'
      • Net::CIDR

        /usr/bin/perl -MCPAN -e 'install Net::CIDR'
      • Config::IniFiles (debian: libconfig-inifiles-perl, rpm: perl-Config-IniFiles)

        apt-get install libconfig-inifiles-perl
      • Cache::FastmMap (debian: libcache-fastmmap-perl, rpm: perl-Cache-FastMmap)

        apt-get install libcache-fastmmap-perl
      • Mail::SPF (required for CheckSPF module)

        /usr/bin/perl -MCPAN -e 'install Mail::SPF '
      • NOT bazı yüklemeler apt-get install postfix-cluebringer sırasında yüklenmiş olabilir
      • Not2 ilk defa perl reposundan modül indiriyorsanız gerekli repo ayarlarının yapılması için gelen sorulara [yes] demeniz gerekmektedir

    1.4.4 Mysql veritabanına özel veritabanının hazırlanması

    • Cluebringer birkaç veritabanı ile tümleşik çalışabilmektedir. Ben burada yaygın kullanımı açısından mysql veritabanını seçtim. Bu veri tabanı kullanılırken cluebringer her veritabanı sistemimize özel sql yapısı istiyor. Bu yüzden biz bu veritabanını kendimiz oluşturmamız gerekiyor.
    • Hangi veritabanını kullanacağımıza karar verdikten sonra bir de bu veritabanımızın versiyonunu öğrenmemiz gerekiyor

      mysql --version
      
      mysql  Ver 14.14 Distrib 5.5.44, for debian-linux-gnu (x86_64) using readline 6.3
    • Mysql versiyonumuz burada 5.5.44 olduğu anlaşılıyor
    • Şimdi veritabanımızın şemasını hazırlayacağımız sistemi indirmemiz gerekiyor
    • Policyd ekipmanlarının indirilmesi

      cd
      mkdir policyd-cluebringer
      cd policyd-cluebringer
      wget http://download.policyd.org/v2.0.14/cluebringer-v2.0.14.tar.xz
      unxz -c clue* | tar xv
      cd clue*
      cd database
      for i in  core.tsql access_control.tsql quotas.tsql amavis.tsql checkhelo.tsql checkspf.tsql greylisting.tsql
      do
      ./convert-tsql mysql55 $i
      done > policyd.mysql

    1.4.5 Veritabanının aktifleştirilmesi

    • Şimdiye kadar kendimizin kullanacağı veri tabanımızı hazırladık fakat henüz kullanılabilir şekilde değil bu veri tabanının bağlantısını mysql ile ilişkilendireceğiz.

      mysql -p
      Enter password:
      #eğer daha önceden oluşturulmuş bir veritabanı varsa sil yoksa oluştur
      #mysql> drop database cluebringer;
      mysql> create database cluebringer;
      mysql> use cluebringer;
      mysql> CREATE USER 'cluebringer'@'localhost' IDENTIFIED BY 'mypassword';
      mysql> GRANT ALL PRIVILEGES ON cluebringer.* TO 'cluebringer'@'localhost';
      exit
    • Bu query dosyasını mysqlde çalıştıracağız

      mysql -u root -p cluebringer < policyd.mysql

    1.4.6 Cluebringerin database özelliklerine göre konfigürasyonu

    • cluebringer dosyasını editleyin

      nano /etc/cluebringer/cluebringer.conf
    • Aşağıdaki değişkenleri bulup değerlerini değiştiriniz

      DSN=DBI:mysql:dbname=cluebringer;host=localhost
      DB_Type=mysql
      DB_Host=localhost
      DB_Port=3306
      DB_Name=cluebringer
      Username=cluebringer
      Password=mypassword
    • Servisi başlatınız ve kontrol ediniz

      service postfix-cluebringer start
      service postfix-cluebringer status

    1.4.7 Cluebringerin postfix ile ilişkilendirilmesi

    • Postfixin Policyd izinleri

      nano /etc/postfix/main.cf
      • Aşağıdaki satırları en alta yapıştırınız
      smtpd_recipient_restrictions = check_policy_service inet:127.0.0.1:10031, permit_mynetworks
      smtpd_end_of_data_restrictions = check_policy_service inet:127.0.0.1:10031, permit_mynetworks
      • Policyd ile birlikte çalışan perl kütüphanesine izin vermek için
      nano /etc/postfix/master.cf

      -Bu satırı listeye ekleyin

      policy-spf  unix  -       n       n       -       -       spawn
           user=nobody argv=/usr/sbin/postfix-policyd-spf-perl

    1.4.8 Cluebringer-webui konfigürasyonu

    • Bu kısımda policyd nin web arayüzü olan kısmının ayarlarını yapacağız

      nano /etc/cluebringer/cluebringer-webui.conf
    • Aşağıdaki satırları dosyaya ekleyin veya editleyin

      $DB_DSN="mysql:host=localhost;dbname=cluebringer";
      $DB_USER="cluebringer";
      $DB_PASS="mypassword";
    • Şimdi usr/share altında olan web sayfalarınını link olarak apache2 programına tanıtalım

      cd /var/www/html
      ln -s /usr/share/postfix-cluebringer-webui/webui/
    1. Php5 mysql driverinin yüklenmesi\

      • Artık bütün işlemleri tamamlamış bulunmaktayız ve bir tek php ile mysql arasındaki bağlantıyı kuracak driveri yüklememiz gerekiyor
      apt-get install php5-mysql
      • Artık serverimize \<Relay Server IP/webui> sayfasından ulaşabilirsiniz

    1.5 Son notlar

    • Artık serverimiz pratikte iş yapar hale gelmiştir bundan sonra yapılacak ayarların hepsi sizin serverlerinizin durumuna ve Policyd programında nasıl yetki vereceğinize bağlı olarak değişicektir.
      • !! Bu kısıma kadar ne yapmadık !!
        1. Serverimiz her hangi bir koruması bulunmamakta yani sizin serverinizin IPsini yazan her hangi bir kişi /webui arayüzünden istediği gibi kural atayabilir.
        2. Spamassasin sadece spamları işaretlemek için ayarlardığımızdan spam mailleriniz dışarı, mail kısmında bulunan title kısmını değişicektir ve herhangi bir silme işlemi uygulamayacaktır.
        3. Her mail serverin üstünden geçen mailleri imzalamak gibi bir özelliği vardır, bizim Eximden çıkan maillerimizin IPsi , Makine ismi versiyonu gibi özellikleri gizleme işlemi yapılmadı.
        4. Aynı şekilde Spamasasinin de header imzalama özelliğinden dolayı oluşan headerlerin silinmesi yapılmadı
        5. Policyd üzerinde özelleştirme yapmadık.

    Bunların ayarları için diğer yazımızı inceleyebilirsiniz.

    https://www.netinternet.com.tr/bilgi-bankasi/spam-engelleme-icin-spamassasin-ve-policyd-ozellestirmeleri

    1.6 Kaynakça

    1.6.1 Postfix kurulum sayfaları

    1.6.2 Spamassassin kurulum sayfaları

    1.6.3 Policyd kurulum sayfaları

    Footnotes

    [^fn-1] http://www.postfix.org/postconf.5.html

    [^fn-2] http://www.postfix.org/master.8.html

    Yorumlar

    Hiç Yorum Yapılmamış


    Yorum Ekleyin

    E-Bülten Aboneliği

    E-Bültenimize kayıt olun, indirimlerden ve fırsatlardan önce siz haberdar olun..