setting qmail agar support ssl dan tls

October 25, 2011 by gregor · Leave a Comment
Filed under: Open mail relay, Qmail, Spam Filtering, linux, security, vpopmail 

Tujuan instalasi ini adalah agar pengguna dapat login ke mail server untuk mengirimkan email menggunakan email client non webmail. Di era personal computing yang saat ini makin personal, banyak pengguna yang ingin dapat menerima dan mengirimkan email langsung dari gadgetnya seperti blackberry, iphone, android, dll yang didalamnya terdapat aplikasi email client. Khusus pada smartphone android, seting outgoing email biasanya menggunakan ssl port 465 dan tls port 587, sehingga mail server harus menyiapkan port tersebut. Dan lebih baik kalau ssl dan tls tidak di port 25 agar tidak terkena filtering seperti rblsmtpd.

Bagi mail server yang proses instalasinya dahulu mengacu ke qmailrocks, harus mengkompilasi ulang qmail dengan menggunakan patch dari john simpson dengan proses sebagai berikut :

$ cd /home/gregor

$ wget http://cr.yp.to/software/qmail-1.03.tar.gz

$ wget http://qmail.jms1.net/patches/qmail-1.03-jms1.7.08.patch

$ tar xvzf qmail-1.03.tar.gz

$ cd qmail-1.03

$ patch < ../qmail-1.03-jms1.7.08.patch

$ make

$ qmailctl stop

$ make setup check

jika muncul pesan error seperti ini :

install: fatal: unable to write …/bin/qmail-lspawn: text busy

itu artinya qmail-send masih aktif. berikan perintah :

$ ps ax | grep qmail-send

lalu kill -9 pid nya. jika tidak ada pesan error berarti instalasi qmail berjalan lancar.

$ cd /service/qmail-smtpd/

$ cp run bak_run

$ wget http://qmail.jms1.net/scripts/service-qmail-smtpd-run

$ vi service-qmail-smtpd-run

lakukan penyesuaian sebagai berikut :

IP=127.0.0.1
PORT=25
SSL=0
SMTP_CDB=/etc/tcp/smtp.cdb
FORCE_TLS=0
DENY_TLS=0
AUTH=1
REQUIRE_AUTH=0
RBLSMTPD_PROG=”rblsmtpd”
RBLSMTPD_TIMEOUT=5

RBL_BAD=”zen.spamhaus.org bl.spamcop.net”

QMAILQUEUE=”$VQ/bin/qmail-scanner-queue”

lalu simpan dan keluar dari vi.

$ cp service-qmail-smtpd-run run

$ chmod 755 run

$ chmod 6711 ~vpopmail/bin/vchkpw

$ chmod 4711 /var/qmail/bin/qmail-scanner-queue

selanjutnya menyesuaikan akses kontrol tcpserver yang mengalami sedikit perubahan. biasanya /etc/tcp.smtp.cdb menjadi /etc/tcp/smtp.cdb  :

$ mkdir -m 755 /etc/tcp
$ cd /etc/tcp
$ wget http://qmail.jms1.net/etc-tcp-makefile
$ mv etc-tcp-makefile Makefile

$ vi smtp

isi dengan :

127.:allow,RELAYCLIENT=”",RBLSMTPD=”"

:allow

simpan dan keluar dari vi

$ make

$ qmailctl start

$ qmailctl stat

pastikan qmail-smtpd up lebih dari 5 detik. jika tidak, lihat log file untuk mengetahui pesan error yang muncul:

$ tail -f /var/log/qmail/qmail-smtpd/current | tai64nlocal

jika terdapat pesan error :

421 unable to read controls #4.3.0

berikan perintah :

$ touch /var/qmail/control/validrcptto.cdb

untuk membuat dummy file. namun jika ingin sungguh-sungguh memanfaatkan patch validrcptto dari john simpson maka harus membuat file validrcptto.cdb yang sesungguhnya menggunakan script mkvalidrcptto.

Selanjutnya seting TLS di port 587 lakukan sebagai berikut :

$ cd /var/qmail/supervise
$ mkdir -m 1755 qmail-smtpd-tls
$ cd qmail-smtpd-tls
$ wget http://qmail.jms1.net/scripts/service-qmail-smtpd-run
$ vi service-qmail-smtpd-run

lakukan penyesuaian sebagai berikut :

IP=192.168.10.25 (sesuaikan dengan ip server)
PORT=587
SSL=0
FORCE_TLS=1
DENY_TLS=0
AUTH=1
REQUIRE_AUTH=1
SMTP_CDB=/etc/tcp/smtptls.cdb
QMAILQUEUE=”$VQ/bin/qmail-scanner-queue.pl”

simpan lalu keluar dari vi

$ mv service-qmail-smtpd-run run

$ chmod 755 run

$ mkdir -m 755 log

$ cd log

$ wget http://qmail.jms1.net/scripts/service-any-log-run

$ vi service-any-log-run

lakukan penyesuaian menjadi :

exec env - PATH=”$VQ/bin:/usr/local/bin:/usr/bin:/bin” \
multilog t n10 s1048576 /var/log/qmail/qmail-smtpd-tls \
‘-*’ ‘+*ver: status:*’ =lstatus

simpan lalu keluar dari vi

$ mv service-any-log-run run

$ chmod 755 run

$ mkdir /var/log/qmail/qmail-smtpd-tls

$ chmod 750 /var/log/qmail/qmail-smtpd-tls

$ chown qmaill.root /var/log/qmail/qmail-smtpd-tls

$ cd /etc/tcp

$ vi smtptls

tambahkan :

127.:allow,RELAYCLIENT=”"
:allow

simpan lalu keluar dari vi

$ vi Makefile

sesuaikan menjadi :

all: smtp.cdb smtptls.cdb

simpan dan keluar dari vi

$ make

$ cd /usr/local/bin

$ wget http://qmail.jms1.net/scripts/vfixpermissions

$ chmod 755 vfixpermissions

$ ./vfixpermissions -s

$ chmod 0755 /var/qmail/bin/qmail-scanner-queue.pl

$ ln -s /var/qmail/supervise/qmail-smtpd-tls /service/

$ svstat /service/qmail-smtpd-tls

pastikan qmail-smtpd-tls up lebih dari 5 detik. jika tidak, lihat log file untuk mengetahui pesan error yang muncul:

$ tail -f /var/log/qmail/qmail-smtpd-tls/current | tai64nlocal

jika ada error “YOU HAVEN’T DISABLED SET-ID SCRIPTS IN THE KERNEL YET!” pastikan perubahan permission qmail-scanner:

$ chmod 0755 /var/qmail/bin/qmail-scanner-queue.pl

Selanjutnya seting SSL di port 465 lakukan sebagai berikut :

instalasi ucspi-ssl:

$ mkdir /package
$ chmod 1755 /package
$ cd /package

$ wget http://www.superscript.com/ucspi-ssl/ucspi-ssl-0.70.tar.gz

$ tar xzfv ucspi-ssl-0.70.tar.gz

$ cd host/superscript.com/net/ucspi-ssl-0.70

$ package/compile

jika muncul pesan error :compile:fatal: cannot make it-base it-sslperl lakukan :

$ package/compile base

$ package/rts base

$ package/install base

$ cd /var/qmail/supervise
$ mkdir -m 1755 qmail-smtpd-ssl
$ cd qmail-smtpd-ssl
$ wget http://qmail.jms1.net/scripts/service-qmail-smtpd-run
$ vi service-qmail-smtpd-run
lakukan penyesuaian :

IP=192.168.10.25 (sesuaikan dengan ip server)
PORT=465
SSL=1
FORCE_TLS=0
DENY_TLS=0
AUTH=1
REQUIRE_AUTH=1
SMTP_CDB=/etc/tcp/smtpssl.cdb
QMAILQUEUE=”$VQ/bin/qmail-scanner-queue.pl”

simpan lalu keluar dari vi

$ mv service-qmail-smtpd-run run

$ chmod 755 run

$ mkdir -m 755 log

$ cd log

$ wget http://qmail.jms1.net/scripts/service-any-log-run

$ vi service-any-log-run

lakukan penyesuaian menjadi :

exec env - PATH=”$VQ/bin:/usr/local/bin:/usr/bin:/bin” \
multilog t n10 s1048576 /var/log/qmail/qmail-smtpd-ssl \
‘-*’ ‘+*ver: status:*’ =lstatus

simpan lalu keluar dari vi

$ mv service-any-log-run run

$ chmod 755 run

$ mkdir /var/log/qmail/qmail-smtpd-ssl

$ chmod 750 /var/log/qmail/qmail-smtpd-ssl

$ chown qmaill.root /var/log/qmail/qmail-smtpd-ssl

$ cd /etc/tcp

$ vi smtpssl

tambahkan :

127.:allow,RELAYCLIENT=”"
:allow

simpan lalu keluar dari vi

$ vi Makefile

sesuaikan menjadi :

all: smtp.cdb smtptls.cdb smtpssl.cdb

simpan dan keluar dari vi

$ make

membuat file SSL key :

$ cd /var/qmail/control
$ openssl req -newkey rsa:1024 -x509 -nodes -days 3650 -out servercert.pem -keyout servercert.pem

isi dengan data yang sesuai.

$ chown root:nofiles servercert.pem
$ chmod 640 servercert.pem

$ cp servercert.pem clientcert.pem
$ chown root:qmail clientcert.pem
$ chmod 640 clientcert.pem

$ ln -s /var/qmail/supervise/qmail-smtpd-ssl /service/

$ svstat /service/qmail-smtpd-ssl

pastikan qmail-smtpd-tls up lebih dari 5 detik. jika tidak, lihat log file untuk mengetahui pesan error yang muncul:

$ tail -f /var/log/qmail/qmail-smtpd-ssl/current | tai64nlocal

chroot dengan jailkit di centos 5.5

October 7, 2011 by gregor · Leave a Comment
Filed under: linux, putty, security, ssh 

Sistem operasi yang digunakan dalam kasus ini adalah centos 5.5 64 bit dan jailkit versi 2.14. Tujuannya adalah agar user tertentu (eg. testuser) di chroot dengan hanya diberi permission shell yang minimal serta boleh menggunakan text editor vi.

sebagai user biasa :

$ wget http://olivier.sessink.nl/jailkit/jailkit-2.14.tar.bz2

$ tar jxvf jailkit-2.14.tar.bz2

$ cd jailkit-2.14
$ ./configure
$ make
$ su -

cd /home/gregor/jailkit-2.14

sebagai root :

$ make install

$ cp /etc/jailkit/jk_init.ini /etc/jailkit/jk_init.ini.orig
$ vi /etc/jailkit/jk_init.ini

tambahkan baris berikut :

[ldconfig]
executables = /sbin/ldconfig
regularfiles = /etc/ld.so.conf

cari section [editors] sesuaikan menjadi :

includesections = terminfo, ldconfig

cari section [basicshell] sesuaikan menjadi :

includesections = uidbasics, ldconfig

simpan lalu keluar dari vi

$ mkdir /home/jail
$ chown root:root /home/jail

inisisasi jail dengan perintah :

$ jk_init -v -j /home/jail basicshell editors

copy beberapa file ke jail

$ jk_cp -j /home/jail /usr/sbin/jk_lsh
$ jk_cp -j /home/jail /usr/bin/id

tambahkan user :

$ useradd testuser
$ passwd testuser

pindahkan user ke jail :

$ jk_jailuser -m -j /home/jail testuser

berikan direktori tmp untuk user dalam jail :

$ mkdir /home/jail/tmp
$ chmod a+rwx /home/jail/tmp

berikan bash shell untuk user dalam jail dengan menyesuaikan file passwd menjadi :

$ vi /home/jail/etc/passwd

testuser:x:501:501::/home/testuser:/bin/bash

cobalah untuk login dengan testuser dari komputer lain via ssh dan perhatikan bahwa testuser sudah di chroot.

mengurangi spam dengan rblsmtpd gratis

September 26, 2011 by gregor · Leave a Comment
Filed under: Qmail, linux 

Ada beberapa cara untuk memfilter email spam. salah satu yang umum diketahui adalah dengan spamassassin. Dengan menggunakan spamassassin di mail server, email diterima kemudian discan oleh spamassassin untuk dipilah sebagai spam atau  non spam. Pekerjaan spamassassin ini tentu saja membutuhkan sumber daya server dan makin banyak email yang harus discan makin banyak juga sumber daya yang diperlukan.

Cara lain yang dapat digunakan secara tersendiri maupun digabung dengan spamassassin adalah dengan rblsmptd atau real time blacklist. Metode ini melibatkan penggunaan DNS. Sebelum email diterima, mail server tujuan akan memeriksa apakah IP pengirim terdapat dalam daftar IP yang diketahui sebagai spammer. Jika terdaftar maka langsung ditolak. Sehingga sumber daya server dapat dihemat.

Beberapa organisasi non profit yang menyediakan daftar IP spammer antara lain adalah spamhaus dan spamcop. Kita dapat menggunakan layanan spamhaus secara gratis jika mail server kita bukan untuk tujuan komersial dan load nya kecil. Untuk dapat menggunakan layanan gratis ini dengan mail server qmail sangat mudah. Hanya 2 file yang perlu diubah. Yang pertama adalah /service/qmail-smtpd/run. Pada file tersebut carilah bagian yang seperti ini :

exec /usr/local/bin/softlimit -m 20000000 \
/usr/local/bin/tcpserver -v -R -l “$LOCAL” -x /etc/tcp.smtp.cdb -c
“$MAXSMTPD” \
-u “$QMAILDUID” -g “$NOFILESGID” 0 smtp  \
/var/qmail/bin/qmail-smtpd mail.jogjakota.go.id \
/home/vpopmail/bin/vchkpw /usr/bin/true 2>&1

lalu tambahkan hingga menjadi seperti ini :

exec /usr/local/bin/softlimit -m 20000000 \
/usr/local/bin/tcpserver -v -R -l “$LOCAL” -x /etc/tcp.smtp.cdb -c
“$MAXSMTPD” \
-u “$QMAILDUID” -g “$NOFILESGID” 0 smtp rblsmtpd -r zen.spamhaus.org -r
bl.spamcop.net
\
/var/qmail/bin/qmail-smtpd mail.jogjakota.go.id \
/home/vpopmail/bin/vchkpw /usr/bin/true 2>&1

File yang kedua adalah /etc/tcp.smtp. Umumnya isi file tersebut adalah :

127.:allow,RELAYCLIENT=”"
:allow

tambahkan sehingga menjadi seperti ini :

127.:allow,RELAYCLIENT=”",RBLSMTPD=”"
:allow

kemudian berikan perintah untuk rebuild file tcp.smtp.cdb :

$ tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp

kemudian berikan perintah untuk restart qmail :
$ qmailctl restart

Untukmengetahui apakah rblsmtpd bekerja atau tidak cek log file di /var/log/qmail/qmail-smtpd dengan perintah :

$ cd /var/log/qmail/qmail-smtpd

$ cat current | tai64nlocal | grep spamhaus

jika bekerja maka hasilnya kira-kira sebagai berikut :

2011-09-26 09:36:48.263908500 rblsmtpd: xxx.221.221.165 pid 8746: 451
http://www.spamhaus.org/query/bl?ip=xxx.221.221.165
2011-09-26 10:17:50.068918500 rblsmtpd: xxx.138.223.82 pid 12242: 451
http://www.spamhaus.org/query/bl?ip=xxx.138.223.82

Dengan menggunakan rblsmtpd spamhaus, kurang lebih 10% email yang berpotensi spam berhasil ditolak.

instalasi php dan apache di linux 64 bit

September 13, 2011 by gregor · Leave a Comment
Filed under: PHP, apache, linux 

Jika mengalami error ketika mencoba compile apache dan php di linux 64 bit cobalah untuk menambah opsi yang secara spesifik menyatakan 64 bit di baris configure.

Untuk apache tambahkan

--enable-lib64 --libdir=/usr/lib64

Untuk php tambahkan 

--with-libdir=lib64 --libdir=/usr/lib64

perlu dicatat bahwa lokasi php.ini akan berada di /usr/lib64

melindungi ssh dan apache dari serangan DOS dengan fail2ban

August 1, 2011 by gregor · Leave a Comment
Filed under: apache, linux, ssh 

1. pada debian instalasi fail2ban yang paling cepat dan mudah adalah dengan

$ apt-get install fail2ban

jika ingin mengkompilasi sendiri downlod source dari website fail2ban.

2. semua file konfigurasi fail2ban ada di folder /etc/fail2ban. file utama yang mengatur bagaimana fail2ban bekerja secara default ada di file /etc/fail2ban/jail.conf . sebaiknya file tersebut tidak diubah. untuk mengabaikan seting default dan mengatur fail2ban agar sesuai dengan kebutuhan kita, dapat dibuat file /etc/fail2ban/jail.local . fail2ban akan mengutamakan seting yang ada di file jail.local daripada jail.conf .

dalam tulisan ini yang akan dilindungi dari serangan denial of service (DOS) adalah ssh dan apache, untuk itu konfiurasi jail.local adalah sebagai berikut :

$ vi /etc/fail2ban/jail.local

tulis baris-baris berikut :

[DEFAULT]

#ignoreip adalah ip yang tak akan diblokir. misalnya localhost & ip kita sendiri.

#jika lebih dari satu maka masing-masing ip dipisahkan dengan spasi
ignoreip = 127.0.0.1 172.16.9.1
bantime  = 86400
maxretry = 5
backend = polling
destemail = root@localhost
action = iptables[name=%(__name__)s, port=%(port)s]

# JAILS
[ssh]

enabled = true
port        = ssh
filter        = sshd
logpath  = /var/log/auth.log
maxretry = 5

[http-get-dos]
enabled = true
port = http
filter = http-get-dos
logpath = /var/log/apache/access.log
maxretry = 300
findtime = 300

simpan dan keluar dari editor vi. namun sebelumnya, pastikan bahwa logpath sesuai dengan log ssh dan apache yang ada di komputer kita. log ssh pada redhat biasanya /var/log/secure . selanjutnya  :

$ vi /etc/fail2ban/filter.d/http-get-dos.conf

tuliskan baris-baris berikut :

[Definition]
failregex = ^<HOST> - - \[.*\] “GET
ignoreregex =

simpan lalu keluar dari editor vi.  dengan konfigurasi seperti diatas, untuk melindungi ssh fail2ban akan memblokir ip yang gagal login lebih dari 5 kali dalam satu sesi. untuk melindungi apache fail2ban akan memblokir ip yang melakukan GET sebanyak lebih dari 300 kali dalam 300 detik. aktivitas fail2ban dapat kita monitor dari log file di /var/log/fail2ban.log . untuk melihat rules iptables yang dibuat oleh fail2ban gunakan perintah

$ iptables -L

fail2ban dapat melindungi server dari serangan DOS namun kelemahan fail2ban adalah tidak dapat melindungi dari serangan distributed denial of service (DDOS). sebagai tambahan info, failregex untuk http-get-dos.conf diatas hanya akan berhasil jika format access.log adalah sebagai berikut :

xxx.xxx.xxx.xxx - - [23/Aug/2011:13:52:54 +0700] “GET …… dan seterusnya…..

untuk memastikan bahwa format access.log sesuai dengan failregex lakukan sebagai berikut :

$ tail -n 100 /var/log/apache/access.log > cuil.txt

$ fail2ban-regex /var/log/apache2/log23aug11-100baris /etc/fail2ban/filter.d/http-get-dos.conf

jika sesuai hasilnya kurang lebih sebagai berikut :

Date template hits:
0 hit(s): Month Day Hour:Minute:Second
0 hit(s): Weekday Month Day Hour:Minute:Second Year
0 hit(s): Weekday Month Day Hour:Minute:Second
0 hit(s): Year/Month/Day Hour:Minute:Second
0 hit(s): Day/Month/Year Hour:Minute:Second
200 hit(s): Day/Month/Year:Hour:Minute:Second
0 hit(s): Year-Month-Day Hour:Minute:Second
0 hit(s): Day-Month-Year Hour:Minute:Second[.Millisecond]
0 hit(s): TAI64N
0 hit(s): Epoch
0 hit(s): ISO 8601

Success, the total number of match is 100

However, look at the above section ‘Running tests’ which could contain important
information.

Next Page »