chroot dengan jailkit di centos 5.5
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.
melindungi ssh dan apache dari serangan DOS dengan fail2ban
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.
fail2ban dapat diaktifkan atau dinonaktifkan dengan perintah start atau stop, misalnya:
$ /etc/init.d/fail2ban stop
ssh tanpa password
untuk keperluan backup data secara otomatis via /etc/crontab, dibutuhkan ssh tanpa password dari lokal ke remote. berikut ini cara singkat untuk melakukannya :
di komputer lokal :
$ ssh-keygen
lalu tekan enter 3 kali.
$ ssh-copy-id -i ~/.ssh/id_rsa.pub user@remote
$ ssh user@remote
login ssh lama atau lambat
Sepengetahuan saya ada 2 penyebab mengapa kita harus menunggu lama kemunculan prompt login ketika hendak login ke remote komputer atau server dengan ssh. Penyebab yang pertama adalah seting DNS lookup yang secara default diaktifkan pada konfigurasi sshd (/etc/ssh/sshd_config) di komputer atau server yang hendak diremote. Untuk menonaktifkannya bukalah file sshd_config:
$ vi /etc/ssh/sshd_config
carilah baris UseDNS yang secara default bernilai yes, gantilah sehingga menjadi
UseDNS no
Penyebab kedua adalah diaktfikannya seting GSSAPI. Untuk melihat apakah seting ini aktif kita dapat menambahkan opsi -v pada baris perintah ssh sebagai berikut :
$ ssh -l gregor 192.168.18.5 -v
hasilnya kira-kira sebagai berikut :
…….
debug1: Authentications that can continue: publickey,gssapi-with-mic,password
debug1: Next authentication method: gssapi-with-mic
debug1: An invalid name was supplied
Cannot determine realm for numeric host address
debug1: An invalid name was supplied
Cannot determine realm for numeric host address
debug1: An invalid name was supplied
terlihat bahwa yang membuat lama adalah metode otentikasi gssapi-with-mic. jika kita memang hanya menggunakan password sebagai metode otentifikasi, maka metode gssapi-with-mic dapat dinonaktifkan. Bukalah file sshd_config pada komputer yang hendak diremote dan cari lah baris GSSAPIAuthentication.
$ vi /etc/ssh/sshd_config
ganti menjadi GSSAPIAuthentication no kemudian simpan dan keluar dari editor vi lalu restart sshd dengan :
$ service sshd restart
atau
$ /etc/rc.d/init.d/sshd restart
backing up vpopmail with rsync and ssh non standard port
this is for redhat and friends using openssh from rpm.
backup server is the server where we want to put the backup files.
remoteserver is the server where the vpopmail is.
backup server pulls data on remoteserver.
on backup server as root:
$ssh-keygen -t dsa -b 1024 -f /root/.ssh/rsync-key
just press enter for passphrase
$cd /root/.ssh
$scp /root/.ssh/rsync-key.pub root@remoteserver:/root/.ssh/
on remoteserver as root :
$cd /root/.ssh
$touch authorized_keys
$chmod 600 authorized_keys
$cat rsync-key.pub >> authorized_keys
$rm rsync-key.pub
$vi /etc/ssh/sshd_config
add or change as these :
PermitRootLogin forced-commands-only
AllowUsers root
save and exit
$service sshd restart
$vi /root/.ssh/rsync-only
add these lines :
#!/bin/sh
logger -t ssh-command “$SSH_ORIGINAL_COMMAND”
echo $SSH_ORIGINAL_COMMAND > /tmp/work.$$
if ! grep -q ‘^rsync –server ‘ /tmp/work.$$
then
logger -t rsync-key INVALID COMMAND “\”$SSH_ORIGINAL_COMMAND\”"
exit 1
fi
rm /tmp/work.$$
exec $SSH_ORIGINAL_COMMAND
save and exit
$chmod 755 /root/.ssh/rsync-only
$vi authorized_keys
change this :
ssh-dss AAAAB3NzaC1ksdfjskdjfkdjsdjas…..etc
to this :
command=”/root/.ssh/rsync-only” ssh-dss AAAAB3NzaC1ksdfjskdjfkdjsdjas…..etc
on backup server as root :
$vi /etc/crontab
add this line (all in one line) to backup every wednesday at 4 am :
0 4 * * 3 root rsync -aS –delete -e “ssh -i /root/.ssh/rsync-key -p 222″ root@remoteserver:/home/vpopmail/domains /home/mail/cron
save and exit
remote server is using non standard ssh port. that’s what -p 222 is for.
$service crond restart
references:
http://goodcleanemail.com/index.php?option=com_content&task=view&id=45
http://www.qmailinfo.org/index.php/ExampleRsyncScripts
http://qmail.jms1.net/backup.shtml







