DNS sunucunuzun versiyonunu gizleyin

Güvenlik politikası olarak belirsizliği seviyorsanız sunucularınızın üstünde çalışan uygulamaların kimliklerini dışa vermemelerini istiyorsunuzdur.Daha önceki bir yazıda kısaca Apache Web Sunucusunun kimliğini gizlemeden bahsetmiştim, bu yazıda da DNS sunucumuzun versiyonunu maskelemeden bahsedeceğim.

Sunucumuzu maskelemeden önce dışarıya karşı ne gibi bilgiler veriyor bakalım :

$ dig @ns1.mydomain.com -c CH -t txt version.bind
; <<>> DiG 9.7.2-P2 <<>> @ns1.mydomain.com -c CH -t txt version.bind
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64071
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0
;; WARNING: recursion requested but not available
;; QUESTION SECTION:
;version.bind.            CH    TXT
;; ANSWER SECTION:
version.bind.        0    CH    TXT    "9.2.4"
;; AUTHORITY SECTION:
version.bind.        0    CH    NS    version.bind.
;; Query time: 84 msec
;; SERVER: 00.00.00.00#53(00.00.00.00)
;; WHEN: Thu Jan 27 20:58:38 2011
;; MSG SIZE  rcvd: 62

Yukarda görüldüğü gibi Bind DNS sunucusu öntanımlı olarak dışarıya  kendi ve versiyonu ile ilgili bilgileri vermektedir.Bind DNS sunucumuzun versiyonu "9.2.4" müş.Kimliğimizi dışarıya vermemek ya da yanıltmak için "named.conf" dosyamızın içindeki "options" kısmına "version" satırını ekleyerek kimliğimizi dışarıya karşı maskeleyelim."version" satırı için istediğimiz bir isim ekleyebiliriz.

# vi /var/named/chroot/etc/named.conf

options { directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; recursion no ; allow-transfer { none; }; dnssec-enable yes; version "DNS Server" ;

Sunucumuzu yeniden başlatalım :

# /sbin/service named restart

Yukarda görüldüğü gibi "options" kısmına " version "DNS Server" ; " satırını ekledik.DNS sunucumuzun versiyonunu tekrar sorgulattığımızda artık bize "DNS Server" adını göstermesi lazım.

 $ dig @ns1.mydomain.com -c CH -t txt version.bind

; <<>> DiG 9.7.2-P2 <<>> @ns1.mydomain.com -c CH -t txt version.bind
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 29215
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;version.bind.            CH    TXT

;; ANSWER SECTION:
version.bind.        0    CH    TXT    "DNS Server"

;; AUTHORITY SECTION:
version.bind.        0    CH    NS    version.bind.

;; Query time: 110 msec
;; SERVER: 00.00.00.00#53(00.00.00.00)
;; WHEN: Thu Jan 27 21:11:16 2011
;; MSG SIZE  rcvd: 60

Artık DNS sunucumuz versiyon bilgisi vermiyor.Onun yerine yazmış olduğumuz "DNS Server" yazısını ekrana yazıyor.Sadece bunu yaparak DNS sunucumuzu güvende mi tutuyoruz?Elbetteki hayır! Şu an sadece sunucumuzun versiyonunu maskelemiş olduk.Yoksa  maskeleyemedik mi ???

Aslında tam olarak da maskeleyemedik."Finger print DNS " yazılımı ile kolayca sunucumuzun kimliğini ifşa edebilirler.Kimse etmeden ilk biz deneyelim."fpdns" yazılımı neredeyse her dağıtımın deposunda mevcut.Hemen bu yazılımı kuralım:

# yum install fpdns

"fpdns" yazılımını kurduktan sonra sunucumuzu sorgulatalım.

$  fpdns ns1.mydomain.com
fingerprint (ns1.mydomain.com, 00.00.00.00): BIND 9.2.3rc1 -- 9.4.0a0

Yukarda görüldüğü gibi demek ki çok da iyi saklayamamışız :)

Kullanıcıları ve süreçleri kontrol etme

Sistem üzerinde tam denetim sağlamak özellikle güvenlik açısından çok önemlidir.Çünkü herhangi bir saldırı sadece dışardan değil , içerden de gelebilir ve ya kullanıcı sistem üzerinde zararlı bir program çalıştırabilir.İşte bu nokta da kullanıcıları ve süreçleri  kontrol altında tutmak gerekir.

GNU/Linux üzerinde "acct" (GNU Accounting Utilities ) adlı araçla kullanıcı ve süreçleri izleyebiliriz.İlk olarak eğer sistem üzerinde "acct" kurulu değil ise kurulumunu yapalım.

# yum install psacct ( CentOS için )
Diğer bazı dağıtımlarda "psacct" yerine "acct" yazarak kurabilirsiniz.Örneğin ;
# emerge acct   (Gentoo için)
# yum install acct ( Suse için )

Kurulum yaptıktan sonra "/var" dizini altında "account" adlı bir klasör ve bu klasörün içinde "pacct" adlı dosya oluşturması gerekir.Eğer bu klasör ve dosyayı oluşturmamışsa elle oluşturalım.

# mkdir /var/account
# touch /var/account/pacct
# chmod 660 /var/account/pacct

Süreç kayıtlarını aktif hale getirelim.

# accton /var/account/pacct

"acct" uygulamasını başlangıça ekleyelim ve çalıştıralım.( CentOS )

# chkconfig psacct on
# service psacct start

Artık "acct" uygulaması ile gelen bazı yararlı komutları inceleyelim."ac" komutu ile başlayalım."ac" komutu kullanıcının sistem üzerinde ne kadar süredir bağlı kaldığını gösterir.

 # ac
 total      537.71

Yukarda görüldüğü gibi "ac" komutu hiç bir parametre almadan sadece komutu veren kullanıcının ne kadar süre sistemde olduğunu gösteriyor.Eğer sistem üzerinde tüm kullanıcıların ne kadar süre sistem üzerinde olduklarını görmek için ise "-p"(people)  parametresi kullanıyoruz.

# ac -p
 ares                           537.95
 zeus                           100.00
 total      637.95
  • İkinci yararlı komutumuz ise "lastcomm" . "lastcomm" komutu ile hangi komutu kim,ne zaman,nerede verildiği hakkında bilgi verir.
# lastcomm
grep                   root     pts/0      0.00 secs Fri Jan 21 06:56
sh                F    root     pts/0      0.00 secs Fri Jan 21 06:56
sh                F    root     pts/0      0.00 secs Fri Jan 21 06:56
sed                    root     pts/0      0.00 secs Fri Jan 21 06:56
sh                F    root     pts/0      0.00 secs Fri Jan 21 06:56
sed                    root     pts/0      0.00 secs Fri Jan 21 06:56
sh                F    root     pts/0      0.00 secs Fri Jan 21 06:56
grep                   root     pts/0      0.00 secs Fri Jan 21 06:56
sh                F    root     pts/0      0.00 secs Fri Jan 21 06:56
sh                F    root     pts/0      0.00 secs Fri Jan 21 06:56
sed                    root     pts/0      0.00 secs Fri Jan 21 06:56
sh                F    root     pts/0      0.00 secs Fri Jan 21 06:56
sed                    root     pts/0      0.00 secs Fri Jan 21 06:56
sh                F    root     pts/0      0.00 secs Fri Jan 21 06:56
grep                   root     pts/0      0.00 secs Fri Jan 21 06:56
sh                F    root     pts/0      0.00 secs Fri Jan 21 06:56
sh                F    root     pts/0      0.00 secs Fri Jan 21 06:56
sed                    root     pts/0      0.00 secs Fri Jan 21 06:56

"lastcomm" komutu parametresiz sistem üzerinde verilen tüm komutları listeler.Eğer belli bir kullanıcının verdiği komutları görmek istersek "lastcomm" komutundan sonra "kullanıcı adı"nı yazıyoruz.

# lastcomm ares
bash                   ares pts/1      0.02 secs Fri Jan 21 03:46
clear                  ares pts/1      0.00 secs Fri Jan 21 04:43
bash              F    ares pts/1      0.00 secs Fri Jan 21 04:43
bash              F    ares pts/1      0.00 secs Fri Jan 21 04:43
bash                   ares pts/0      0.04 secs Thu Jan 20 19:39
clear                  ares pts/0      0.00 secs Fri Jan 21 04:43
ssh                    ares pts/1      0.03 secs Fri Jan 21 03:46
firefox              X ares __       1860.00 secs Thu Jan 20 16:24
plugin-containe        ares __       454.73 secs Thu Jan 20 16:24
task1                X ares __         0.35 secs Fri Jan 21 04:35
gnome-panel       F    ares __         0.00 secs Fri Jan 21 04:35
xauth            S     ares pts/0      0.00 secs Fri Jan 21 04:31
whoami                 ares pts/0      0.00 secs Fri Jan 21 04:31
uname                  ares pts/0      0.00 secs Fri Jan 21 04:31
uname                  ares pts/0      0.00 secs Fri Jan 21 04:31
  • Diğer bir komut ise "sa" . "sa" komutu ile kayıt altına komutları ve bu komutların kaç defa çalıştırıldığını gösterir.
# sa
8014       0.16re       0.00cp         0avio      4475k   mv
 5495       0.01re       0.00cp         0avio      2052k   dirname
 5484       0.78re       0.00cp         0avio      5707k   libtoolize*
 4377       0.18re       0.00cp         0avio      2071k   stty
 3621       0.02re       0.00cp         0avio      3445k   touch
 3258       0.09re       0.00cp         0avio      2326k   tr
 3214       0.14re       0.00cp         0avio      2319k   mkdir
 3055       0.01re       0.00cp         0avio      3365k   true
 2711       7.00re       0.00cp         0avio      2251k   collect2
 2687       0.13re       0.00cp         0avio      2658k   head
 2557       0.01re       0.00cp         0avio      2034k   expr
 2118       0.28re       0.00cp         0avio      2752k   sort
 1868       0.00re       0.00cp         0avio      2183k   uname
 1860       0.08re       0.00cp         0avio      5617k   autoconf-2.65*
 1610       0.09re       0.00cp         0avio     17421k   python2.6*
 1466       0.02re       0.00cp         0avio      1894k   ln
 1320       0.00re       0.00cp         0avio      3721k   chgrp
 1225       0.00re       0.00cp         0avio      5547k   shtool*

"acct" ile gelen diğer bazı komutlar ise ;

last =Sisteme en son giriş yapan kullanıcılar listeler.

dump-acct = Kayıt dosyasını okunabilir  şekilde ekrana yazdırır.

"acct" ve komutları hakkında daha fazla bilgi için man sayfalarına ve şuraya bakabilirsiniz.

Qmail-Toaster kaldırmak için script

Qmail-Toaster kurulumu için hazırlanmış olan scriptler işimizi kolaylaştırıyordu.Kaldırmak içinde yine bir script işimizi kolaylaşıtırıyor.Qmail-Toaster mail listesinde  bunun için hazırlanmış bir script ile karşılaştım .İhtiyacımız olduğunda kullanabiliriz.

NOT: Script içinde "MYSQLPW" için vpopmail veritabanının parolasını girip,düzenlenmeyi unutmayın!

Scripti dosya halinde indirmek için tıklayın .

#!/bin/sh
# CentOS 5
# Remove Qmail-Toaster
# Removes all the qmailtoaster rpms except zlib.  Deletes all the needed users.
#Deletes the Database. Deletes ALL the files and directories left behind. THIS
#WILL WIPE THE SLATE CLEAN.  YOU WERE WARNED. No Guarantee it will work for you.
# Modify as you see fit. Pass improvements back to below email.
#
#
#
# Set mysql password
MYSQLPW=your pasword here
#
# Remove rpms in order of deps.
echo
echo "Removing *ALL* Toaster RPMs in order of deps, except zlib"
rpm -e simscan-toaster
rpm -e clamav-toaster
rpm -e spamassassin-toaster
rpm -e squirrelmail-toaster
rpm -e vqadmin-toaster
rpm -e isoqlog-toaster
rpm -e maildrop-toaster-devel
rpm -e maildrop-toaster
rpm -e qmailmrtg-toaster
rpm -e qmailadmin-toaster
rpm -e ezmlm-cgi-toaster
rpm -e ezmlm-toaster
rpm -e control-panel-toaster
rpm -e autorespond-toaster
rpm -e courier-imap-toaster
rpm -e qmail-pop3d-toaster
rpm -e qmail-toaster
rpm -e vpopmail-toaster
rpm -e ucspi-tcp-toaster
rpm -e daemontools-toaster
rpm -e send-emails-toaster
#
#Drop vpopmail database.
#
echo
echo "Dropping vpopmail database"
mysqladmin -f -uroot -p$MYSQLPW drop vpopmail
#
#Delete directories and files.
#
echo
echo "Removing all directories and files associated with Qmail-Toaster"
rm -f /etc/freshclam.conf.rpmsave
rm -f /etc/tcprules.d/tcp.smtp.rpmsave
rm -Rf /etc/ezmlm
rm -Rf /etc/isoqlog
rm -Rf /etc/log.d/scripts/services/vpopmail
rm -Rf /etc/log.d/scripts/services/courier
rm -Rf /etc/log.d/scripts/services/clamav
rm -Rf /etc/log.d/scripts/services/qmail
rm -f /usr/src/redhat/RPMS/i386/*toaster*.rpm
rm -f /usr/src/redhat/RPMS/noarch/*toaster*.rpm
rm -Rf /usr/share/toaster
rm -Rf /usr/share/clamav
rm -Rf /usr/src/qtms-install
rm -Rf /usr/src/qtms
rm -Rf /usr/share/doc/isoqlog
rm -Rf /usr/share/courier
rm -Rf /var/qmail
rm -Rf /var/log/clamav
rm -Rf /var/log/qmail
rm -Rf /home/vpopmail
echo
echo "All done."
#
#
exit

Sunucu kimliği maskeleme

Sunucu ve uygulamalar hakkında saldırganlara bilgi vermek güvenlik zaafiyeti yaratabilir.Saldırganlara bu kolaylığı vermemek için bilgileri saklamamız gerekir.Özellikle web sunucusu hakkında dışarıya bilgi vermek hem sunucu tarafında hemde uygulama tarafında zaafiyet yaratır.Dünyanın popüler ve özgür web sunucusu "Apache" de sunucu imzasını(ServerSignature) ve web server bilgilerini (ServerTokens) konfigurasyon dosyasında değerlerini değiştirerek gizleyebiliriz.

Apache'nin sunucumuzun işletim sistemini,kendisini ve kurulu olan modülleri göstermemesi için "/etc/httpd/conf/httpd.conf" dosyası içinde;

ServerSignature Off ServerTokens Prod

değerlerini atayarak ayarlayabiliyoruz.Fakat sadece bunları yaparak sunucumuzun ne olduğunu saklayamıyoruz.Örnek olarak "netcraft" kolaylıkla web sunucumuzun "Apache" olduğunu   söylecektir.Eğer test etmek istiyorsanız netcraft.com adresine girerek ya da kısaca " http://toolbar.netcraft.com/site_report?url=site_adiniz.com " şeklinde sorgulatarak öğrenebiliriz.

Netcraft'tan  :

Yukarda görüldüğü gibi sunucu kimliğimizin "Apache" olduğu ortada.Başka bir şekilde " nmap " ile tarayarak da test edelim.("Nmap nedir?" diyorsanız buradan )Sisteminizde "nmap" mevcut değilse paket yöneticisi yardımı ile kurun.

# yum install nmap
Eğer grafik arabirimi ile kullanmak istiyorsanız "zenmap" i kurabilirsiniz."zenmap"i de kurmak için;
# yum install zenmap

Sistemimize "nmap" kuruldu ise sunucunuzun ip  adresini ya da adını yazarak taratın.Eğer sunucuyu maskelememişsek nmap Apache'nin parmak izini(fingerprint) tanıyacaktır ve size 80. portta Apache sunucusunun çalıştığını söylecektir.

Zenmap'ten :

Demek ki Apache'deki "ServerSignature Off " ve "ServerTokens Prod" değerleri sunucu bilgisini gizleyemiyor sadece kısıtlama yapabiliyor.Şimdi sunucu bilgilerimizi tamamen saklayalım.Bu maskeleme işlemini Apache'nin "mod_security" ile yapacağız.Eğer "mod_security" modülü yüklü değilse yükleyelim.CentOS üzerine bu modülü yüklemek için "EPEL" deposunu eklemiş olmanız gerekiyor.(" Epel deposu eklemek için yardım ")Paket yöneticisi ile hemen yükleyelim;

# yum install mod_security

Modülü kurduktan sonra ilk önce "mod_security" kuralları aktif edelim."modsecurity_crs_10_config.conf" dosyasına "SecRuleEngine On" satırını ekleyelim.

# vi /etc/httpd/modsecurity.d/modsecurity_crs_10_config.conf
+  SecRuleEngine On

Şu an "mod_security" modülümüz hazır.Artık Apache'nin kimliğini maskeleyelim.Bunun için biraz önce " SecRuleEngine On " satırını eklediğimiz "modsecurity_crs_10_config.conf" dosyasına "SecServerSignature " satırını eklemeliyiz."SecServerSignature " değeri için istediğiniz ismi girebilirsiniz,hatta farklı aldatmaca sunucu kimlikleri de kullanabilirsiniz.Örnek olarak :

+ SecServerSignature  " Ulak Web Server"

Yukardaki satırı ekledikten sonra Apache'deki "ServerTokens" değerini "Major" olarak değiştirin.

# vi /etc/httpd/conf/httpd.conf
" ServerTokens Major "

Bu değişikliği de yaptıysanız "Apache"yi yeniden başlatalım.

# service httpd restart

Web sunucumuzun kimliği dışarıya karşı maskelendi.Artık testler yaparak kontrol edebiliriz.

EPEL ve RPMforge depolarını ekleyin

CentOS resmi depoları kısıtlı ve aradığımız bazı paket ve ya uygulamaları bu depolarda bulamayabiliriz.Fakat EPEL ve RPMforge depoları ile neredeyse ihtiyacımız olan birçok paket ve uygulamaları kapsar nitelikte.Sizde EPEL ve RPMforge depolarından herhangi birini ya da ikisini de  ekleyerek deponuzu genişletebilirsin.

"RPMforge " deposunu ekleyelim:

  • İlk olarak kendi sürüm ve mimarimize uygun paketi indirelim:

CentOS 6 :

i686 http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.i686.rpm

x86_64 : http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm

CentOS 5 :

i686 : http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.i386.rpm

x86_64 : http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm

  • Kendimizi uygun olan paketi indirdikten sonra deponun anahtarlarını içe aktaralım .

#   rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt

  • Anahtar listesini aktardığımıza göre indirdiğimiz "rpm"  paketini kontrol edelim.

# rpm -K rpmforge-release-0.5.2-2.el.rf..rpm (kendi mimarinize ve sürümünüze uygun indirdiğiniz paket)

  • Doğruluğu teyit edildiğine göre artık paketi yükleyip,depomuzu ekleyelim.

# rpm -i rpmforge-release-0.5.2-2.el.rf..rpm

EPEL deposunu ekleyelim:

  • EPEL deposu içinde ilk olarak kendi mimarimize ve sürmümüze uygun olan paketi indirelim;

CentOS 6 (Beta aşamasında ) :

i386 : http://download.fedora.redhat.com/pub/epel/beta/6/i386/epel-release-6-5.noarch.rpm

x86_64 : http://download.fedora.redhat.com/pub/epel/beta/6/x86_64/epel-release-6-5.noarch.rpm

CentOS 5 :

i386 : http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm

x86_64 : http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm

  • Kendi mimarimize ve sürümümüze uygun paketi indirdikten sonra depomuzu kuralım.

# rpm -i epel-release--.noarch.rpm

* Ya da hiçbir paket indirmeden doğrudan paketi kurup,depoyu ekleyebiliriz.

rpm -ivh http://download.fedora.redhat.com/pub/epel///epel-release--.noarch.rpm

Depolarımızı sisteme ekledik fakat bu depolarda sistemde yüklü olan taban ya da diğer paketlerin,uygulamaların farklı sürümleri mevcut olabilir.Sistem kararlılığını riske atmamak için bu depoların önceliğini değiştirelim ya da sadece ihtiyacımız olduğu zaman kullanalım.

1.İhtiyaç halinde depolar:

  • Eklediğimiz depoları ihtiyaç halinde ,istediğimiz zaman kullanmak için öntanımlı olarak "geçersiz" bırakalım.Depoları geçersiz bırakmak için depo konfigurasyon dosyalarındaki "enabled=1" ifadesini "enabled=0" olarak değiştirelim.

# vi /etc/yum.repos.d/rpm.forge.repo

# vi /etc/yum.repos.d/epel.repo

Yukardaki dosyaları bir editör ile açtıktan sonra depoları "enabled=1" yaparak geçersiz kılalım.Ya da diğer bir yolla :

# sed -i “s/enabled=1/enabled=0/” /etc/yum.repos.d/epel.repo

# sed -i “s/enabled=1/enabled=0/” /etc/yum.repos.d/rpm.forge.repo

Şeklinde yaparak da değeri değiştirebilirsiniz.Depoların geçersiz olup olmadığını kontrol edelim.

# yum repolist all

Bu komutla eklediğimiz depoların karşısında geçersiz olduğunu gösteren kırmızı ile "disabled" yazısını göreceksiniz.Artık depolara ihtiyacımız olduğunda  "yum" komutundan sonra "--enablerepo=epel" ya da "--enablerepo=rpmforge" şeklinde yazarak kullanabiliriz.Örnek :

# yum --enablerepo=epel install mod_security

2.Depoların önceliğini değiştirelim:

  • Yukarda dediğim gibi eklediğimiz bu depoların herhangi bir kararsızlığa mahal vermemesi için depolar için öncelik ayarı yapabiliriz.Depolara öncelik ayarı yapmak için "yum-priorities" paketini kuralım.

# yum install yum-priorities

  • Paketini kurduktan sonra ekli olan tüm depoları geçerli yapabiliriz.Depoları geçerli hale getirmek için "enable=0" değerini "enable=1" yapın.Artık depolara öncelik verelim.Depolara öncelik atamak için "priority=DEĞER" şeklinde bir öncelik tanımlayabiliriz.Mesela CentOS'un kendi depolarına "priority=1" değerini atalım.Diğer EPEL ve RPMforge depolarına "priority=2" değerini atayalım.Depolara değer atamak için "priority" değerlerini depo konfigurasyon dosyalarına her depo alt satırına ekleyelim.Örnek:

# vi /etc/yum.repos.d/epel.repo

[epel] name=Extra Packages for Enterprise Linux 5 - $basearch

baseurl=http://download.fedoraproject.org/pub/epel/5/$basearch

mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=epel-5&arch=$basearch enabled=0 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL priority=2

QMail-Toaster DKIM kurulumu

QMail-Toaster Mail sunucunuz üzerinde mailleri DKIM(DomainKeys Identified Mail) ile imzalamaya kısaca değineceğim.DKIM ile imzalamak mail sunucunuzdan çıkan her mailin gerçekten sizin sunucunuzdan çıktığını kanıtlamak için kullanılır.Özellikle bazı büyük mail sağlayıcıları yahoo,gmail bunu kullanmaktadır.

Qmail-Toaster üzerine DKIM'i kurmaya başalamadan önce eğer Centos(ya da RHEL,FEDORA) üzerine "rpmforge" deposunu eklemediyseniz hemen ekleyelim."RpmForge" ek deposunu eklemek için kendi dağıtım ve sürümünüze uygun rpmforge "rpm" paketini "http://dag.wieers.com/rpm/packages/rpmforge-release/" adresinden indirelim ve indirdiğimiz paketi kuralım.

$ wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm (Centos 5 64 bit için)
# rpm -i rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm

"RpmForge"  paketini kurduktan sonra paket depolarını güncelleyin.

# yum update

Böylece depomuza "rpmforge" ek deposunu ekledik.Şimdi "DKIM" kurulumuna geçebiliriz.İlk QMail-Toaster'ın DKIM scriptlerini sisteme indirelim.

$ wget http://qmailtoaster.com/dkim.tgz

$ tar zxvf dkim.tgz
$ cd  dkim

"dkim" paketini sisteme indirip,açtıktan sonra kurulum adımlarına devam edelim.Eksik perl paketlerini sisteme kuralım;(bazı paketler Centos dağıtım depolarında bulunmadığı için "rpmforge" ek depolarını kurmuştuk.Özellikle "perl-Mail-DKIM" paketi ve bağımlılıkları dağıtım deposunda bulunmuyor.)

# yum install perl-XML-Simple perl-Mail-DKIM perl-XML-Parser

Eksik paketlerimizde kurulduysa bu adımda başarı ile tamamlandı.Artık "DKIM"i "QMail"e adapte edelim.Bunun için ise control dosyalarının olduğu bölüme "dkim" adlı bir dizin oluşturup içine "dkim" imzamızı oluşturalım.Aşağıdaki adımları sırayla takip edin;

# mkdir /var/qmail/control/dkim
# cp signconf.xml /var/qmail/control/dkim/
# chown -R qmailr:qmail /var/qmail/control/dkim/
# dknewkey /var/qmail/control/dkim/global.key > /var/qmail/control/dkim/public.txt
# perl -pi -e 's/global.key/dkim1/' /var/qmail/control/dkim/public.txt
# qmailctl stop

Bu adımlardan sonra imzamızı oluşturduk ve en sonunda "qmail"i durdurduk,şimdi eski "qmail-remote" dosyasını "dkim" paketi ile gelen "qmail-remote" dosyası değiştirip izinleri ayarlayalım.

# mv /var/qmail/bin/qmail-remote /var/qmail/bin/qmail-remote.orig
# mv qmail-remote /var/qmail/bin
# chmod 777 /var/qmail/bin/qmail-remote
# chown root:qmail /var/qmail/bin/qmail-remote
# qmailctl start

Buraya kadar hiçbir hata ile karşılaşmadıysanız "DKIM" başarı ile kuruldu ve artık geriye sadece dns'imize oluşan TXT kaydını eklemek kaldı.

$ cat /var/qmail/control/dkim/public.txt

Yukardaki komuttan sonra çıkan TXT kaydını DNS Zone dosyanızda yayınlayın.Tüm adımlar bu kadar.Artık mailleriniz "DKIM" ile imzalanacak.

How to setup DKIM with qmail-toaster

DNS sunucunuzda 'recursive query'leri durdurun!

DNS sunucunuz üzerinde "recursion"(recursive query) istekleri aktif ise dışardan sorgulamalara açık demektir.Bu da dns sunucunuzun dışarıdan boş yere meşgul olması demektir.DNS sunucunuzun bu istekleri açık olup olmadığını sorgulatın."intodns" adlı site dns sunucunuz hakkında detaylı bir rapor veren güzel bir site.Bu siteye girip dns sunucunuzu sorgulatarak sağlığı hakkında bilgi alın.(Kısaca tarayıcınıza "http://intodns.com/domain-adiniz.com" şeklinde de sorgulatabilirsiniz.)

Sorgu raporu içindeki "Recursive Query" sekmesinde hata alıyorsanız sunucunuz dışardan sorgulara açık demektir.BIND DNS serverda "recursion"u kapatmak için named.conf adlı ayar dosyamıza "recursion on" satırını ekleyelim:

#vi /var/named/chroot/etc/named.conf

"Options" bölümü içine "recursion no;" satırını ekleyin ve ya kendiniz dışında herkese kapatmak için ise " allow-recursion { 127.0.0.1 ; } ; " satırını ekleyebilirsiniz ve yeniden başlatın.

# service named restart

Parola korumalı GRUB

İpucu: Sisteminizin güvenliği açısından bilgisayarın açılışında “GRUB” a parola koyma ihtiyacı duyabilirsin.Eğer “GRUB” a parola koymak istiyorsanız:

/boot/grub/grub.conf” dosyasına ” password ” satırını ekleyelim.Ama password satırını eklemeden önce ekleyeceğimiz parolayı ‘md5′ kriptolayalım.

# grub

GNU GRUB version 0.97  (640K lower / 9216K upper memory)

[ Minimal BASH-like line editing is supported.  For the first word, TAB lists possible command completions.  Anywhere else TAB lists the possible completions of a device/filename. ]

grub> md5crypt

Password: ** Encrypted: $1$M1Gou/$U4rKvFwErxqZkpt9MiHYm0

grub>

Yukarıda gördüğünüz gibi şifreleyeceğim parolayı yazıp ‘Encrypted’ halini aldım.Buradaki şifreli parolamı ( $1$M1Gou/$U4rKvFwErxqZkpt9MiHYm0 ) kopyalayıp “/boot/grub/grub.conf” dosyasındaki ‘password‘ satırına ekleyelim.

password --md5 $1$M1Gou/$U4rKvFwErxqZkpt9MiHYm0

Böylece artık “GRUB” ekranında belirlediğiniz parola ile giriş yapabileceksiniz.

Hatay Kırıkhan Linux Eğitimi

Geçtiğimiz yaz 26 Temmuz – 6 Ağustos 2010 tarihleri arasında ilki düzenlenen “Kırıkhan Meslek YüksekOkulu Linux Eğitimi”nin ardından yeni bir eğitim talebi daha istenmişti ve tarih tesadüfen beş ay sonra yine Aralık ayının 26′sına denk geldi.Yazın ki eğitim iki hafta sürmüştü fakat bu zaman aralığı okulda final dönemi öncesi olduğu için 4 güne sığmak zorunda kaldı. Kırıkhan Meslek YüksekOkulu’ndaki öğrencilerin eğitime yoğun ilgisi sevindiriciydi fakat laboratuardaki bilgisayarların sınırlı olması ,bilgisayar sayısı kadar öğrenci almayı gerektirdi.Linux eğitimlerinin düzenlemesini destekleyen ve teşvik eden Kırıkhan MYO Müdürü Yrd.Doç.Oğuz Kılıçoğlu hocamızdan,okuldaki diğer hocalara,güvenlikten memurlara kadar eğitime büyük bir ilgi ve merak vardı.

26 Aralık’ta başlayan eğitim 29 Aralık’ta öğrencilerin korktuğu fakat buna gerek olmayan seviyeli bir sınav ile sona erdi.Sınav genel olarak başarılı ve eğitim amacına ulaşmıştı.Eğitim devam ederken boş bulduğum vakitlerde Antakya yemeklerinden yemeyi de ihmal etmedim.4 gün içerisinde birbirinde güzel birçok lezzet tattım.Bu yüzden Hatay’lılar memleketlerinin değerini çok iyi bilsinler.İstanbul’da bu lezzetleri bulamıyoruz :)

Düzenlenen eğitimin organizasyonunda sorumlu Adem Bayırlı ve Doğan Özdağ arkadaşlarımızın yorulmadan koşturması ve böyle bir eğitimin düzenlemesine en büyük emeği vermelerine minnattarım ve teşekkürlerlerimi sunuyorum.Ayrıca Kırıkhan MYO Müdürü Oğuz Hocamıza ve okuldaki diğer hocalarımızdan öğrencilere kadar eğitime emeği geçen herkese sonsuz teşekkürlerimi iletiyorum.Tekrar görüşmek üzere.