İ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.
nano /etc/exim.confKomutu 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>
echo “This is the body of the email” | mail -s “This is the subject line” user@example.comtcpdump host <CPanel IP>Postfixi test etmek için Postfix üzerinden çalışan mail mailx gibi
komutları içeren mailutils paketi
apt-get install mailutilsPostfix ekipmanlarının indirilmesi
apt-get install postfixPostfix elemanlarının yapılandırılması
sudo nano /etc/postfix/main.cfsmtpd_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 = allNOT!! eğer burada Postfix ile alakalı ayarları sorarsa no
configuration seçeneğini işaretleyin
sudo service postfix restartSistemin çalışırlığının test edilmesi
echo “This is the body of the email” | mail -s “This is the subject line” user@example.comBu kısımda Postfixte bir eklenti olarak çalışan Spam assaasian
yazılımını yükleyeceğiz
apt-get install spamassassin spamcSpamassassinin ç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/spamassassinBurada Spamassassinin gerekli ayarlarını yapacağız
nano /etc/default/spamassassinSpamassasinnin aktif edilmesi
ENABLED=0satırının bulunup aşağıdaki satır ile değiştiriniz
ENABLED=1Güncellenme ve yeni spam listelerini getirmesi için
CRON=0satırını bulup aşağıdaki satır ile değiştiriniz
CRON=1SAHOME 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 startBu sebeple Postfixin ana konfigürasyon dosyasını editlememiz
gerekiyor
nano /etc/postfix/master.cfAşağıdaki satırı bulup bir altındaki ile değiştiriniz
#smtp inet n - - - - smtpdsmtp inet n - - - - smtpd -o content_filter=spamassassinSü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Öncelikle bu özelleştirmelerin yapılacağı konfigürasyon dosyasını
açıyoruz
nano /etc/spamassassin/local.cfAş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 1Servisi yeniden başlatıyoruz
service spamassassin restarttail -f /var/log/spamassassin/spamd.logKurulumu 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-cluebringerhttp://wiki.policyd.org/requirements
MySQL, PostgreSQL or SQLite
apt-get install mysql-server mysql-clientNet::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-perlCache::FastmMap (debian: libcache-fastmmap-perl, rpm:
perl-Cache-FastMmap)
apt-get install libcache-fastmmap-perlMail::SPF (required for CheckSPF module)
/usr/bin/perl -MCPAN -e ‘install Mail::SPF ‘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
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Ş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’;
exitBu query dosyasını mysqlde çalıştıracağız
mysql -u root -p cluebringer < policyd.mysqlcluebringer dosyasını editleyin
nano /etc/cluebringer/cluebringer.confAş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=mypasswordServisi başlatınız ve kontrol ediniz
service postfix-cluebringer start
service postfix-cluebringer statusPostfixin Policyd izinleri
nano /etc/postfix/main.cfsmtpd_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_mynetworksnano /etc/postfix/master.cf-Bu satırı listeye ekleyin
policy-spf unix - n n - - spawn
user=nobody argv=/usr/sbin/postfix-policyd-spf-perlBu kısımda policyd nin web arayüzü olan kısmının ayarlarını
yapacağız
nano /etc/cluebringer/cluebringer-webui.confAş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/Php5 mysql driverinin yüklenmesi</p>
apt-get install php5-mysqlBunların ayarları için diğer yazımızı inceleyebilirsiniz.
Footnotes
[^fn-1] http://www.postfix.org/postconf.5.html
cPanel Web Hosting ile gelişmiş yönetim paneli ile hizmetinizi yönetin.
Paketleri İncele