Koneksi SSH Dengan Port Knocking

Melanjutkan tulisan sebelumnya tentang Mengatur Firewall Centos 6, menarik untuk lebih meningkatkan lagi keamanan service yang dibuka pada server.

Port Knocking adalah teknik yang digunakan untuk mengamankan koneksi atau akses port dari pengguna yang tidak diinginkan. Dengan menggunakan teknik ini kita memelihara satu atau beberapa port yang dikonfigurasi sebelumnya ditutup dan ini hanya akan dibuka menggunakan urutan pengetukan (knocking) terhadap port-port komunikasi yang sudah ditetapkan, sebagai contoh : port 22 (default ssh) hanya akan dibuka jika sudah dilakukan ‘knocking’ pada port 1000, 2000 dan 3000 secara berurutan. Perintah knocking dari sisi client dapat menggunakan Nmap, Telnet atau aplikasi yang memang diperuntukan sebagai knocking client.

Let’s start!

Saya menggunakan Linux Centos 6.5 x64 (untuk distro lainnya silakan command disesuaikan)

1. yum install libpcap*
2. cd /usr/local/src
3. wget -c http://pkgs.repoforge.org/knock/knock-0.5-3.el6.rf.x86_64.rpm
4. rpm -ivh knock-0.5-3.el6.rf.x86_64.rpm
5. konfigurasi :

baris ini, pada tulisan saya sebelumnya silakan di ‘#’, karena nantinya akan dihandle oleh knockd :

## iptables -A INPUT -p tcp –dport 22 -j ACCEPT
iptables -A INPUT -p tcp –dport 80 -j ACCEPT

nano /etc/knockd.conf :

[options]
logfile = /var/log/knockd.log

[openSSH]
sequence = 1000,2000,3000
seq_timeout = 30
tcpflags = syn
Start_command = /sbin/iptables -I INPUT -s %IP% -p tcp –dport 22 -j ACCEPT

[closeSSH]
sequence = 1001,2002,3003
seq_timeout = 30
command = /sbin/iptables -D INPUT -s %IP% -p tcp –dport 22 -j ACCEPT
tcpflags = syn

ctrl + x + s

6. service knockd start
7. chkconfig knockd on
8. reboot server

Cara knocking di client sebagai berikut :

9. Client Linux
open connection :
# nmap -p 1000 SERVER-IP
# nmap -p 2000 SERVER-IP
# nmap –p 3000 SERVER-IP

close connection :
# nmap -p 1001 SERVER-IP
# nmap -p 2002 SERVER-IP
# nmap –p 3003 SERVER-IP

10. Client Windows dapat mengunduh dari Knocking Client Windows

11. hasil log knockd
# tail /var/log/knockd.log

[2016-02-10 05:20] 10.0.0.99: openSSH: Stage 1
[2016-02-10 05:21] 10.0.0.99: openSSH: Stage 2
[2016-02-10 05:21] 10.0.0.99: openSSH: Stage 3
[2016-02-10 05:21] 10.0.0.99: openSSH: OPEN SESAME
[2016-02-10 05:21] openSSH:

Selamat Mencoba! D.W.Y.O.R

ref :
1. http://tecadmin.net/secure-ssh-connections-with-port-knocking-linux/#
2. http://gregsowell.com/?p=2020
3. https://en.wikipedia.org/wiki/Port_knocking

Solusi SPSE4 Logout ‘Forbidden’

SPSE4-latihan tidak mau logout dan menampilkan tulisan ‘Forbidden’, ketika di tail -f /var/log/error_log hasilnya sebagai berikut :

[Fri Feb 26 12:02:28 2016] [error] [client 10.0.0.99] ModSecurity: Warning. Match of “rx ^[\\\\x20-\\\\x7f]+$” against “REQUEST_BODY” required. [file “/etc/httpd/conf/httpd.conf”] [line “1125”] [id “1234582”] [hostname “192.168.100.195”] [uri “/eproc4lat/user/logout”] [unique_id “VtCFJH8AAAEAACPYALsAAAAB”]

berikan saja tanda ‘#’ dibaris ‘1125’ pada file ‘/etc/httpd/conf/httpd.conf’ dan restart layanan httpd dengan ‘service httd restart’.

## SecRule REQUEST_BODY “!^[\x20-\x7f]+$””id:1234582”

D.W.Y.O.R (**Selalu backup file conf asal sebelum dilakukan perubahan, agar tidak ‘nyanyuk’)

*UPDATE 2016-10-25 :

setelah mendapat pencerahan dari om guntur, ada solusi lain tanpa ‘##’ untuk ‘logout forbidden’, dengan menambahkan baris sbb untuk mendisable id 1234582 pada saat mengakses /eproc4 :

<IfModule mod_security2.c>
<Location /eproc4>
SecRuleEngine Off
SecRuleRemoveById 1234582
</Location>
</IfModule>

sehingga baris :

SecRule REQUEST_BODY “!^[\x20-\x7f]+$””id:1234582”

tetap aktif/enable ketika mengakses spse v3.6

solusi ini sebenarnya juga berlaku untuk semua “SecRule..Id” dengan menambahkan “SecRuleRemoveById #nomorid” yang menyebabkan masalah (DENIED) pada /eproc4.

Solusi APENDO4 ‘Gagal Kirim’

Rekan Trainer kesulitan melanjutkan proses simulasi lelang pada SPSE4-latihan dikarenakan setiap dokumen penawaran dikirim menggunakan Apendo (v4.1.1) muncul pesan : “gagal dikirim”.

Dilakukan penelusuran dan torch terhadap aktifitas Apendo4, tidak ada yang janggal dan port yang digunakan pun masih sesuai dengan yang dipakai oleh server SPSE4-latihan.

Troubleshooting dilanjutkan dengan mengakses langsung port_java yang menjalankan SPSE4-latihan, ternyata Apendo4 berhasil mengirim dokumen penawaran dengan mulus bila SPS4-latihan diakses dengan cara sebagai berikut :

http://ip_SPSE4-latihan:port_java/eproc4lat atau http://domain_SPSE4-latihan:port_java/eproc4lat

(* ini dijadikan solusi sementara untuk bisa melanjutkan simulasi SPSE4-latihan)

Dari sini diketahui bahwa masalah terjadi ketika httpd mentranslatekan port 80 (web) menjadi port 9090 (spse4_java), yang dihandle oleh ProxyPass dan ProxyPassReverse, hasil dari tail -f /var/log/httpd/error_log :

[Fri Feb 26 11:56:01 2016] [error] [client 10.0.0.99] ModSecurity: Access denied with code 400 (phase 2). Match of “eq 0” against “REQBODY_ERROR” required. [file “/etc/httpd/conf.d/modsecurity.conf”] [line “60”] [id “200002”] [msg “Failed to parse request body.”] [data “Multipart: Multiple boundary parameters in C-T.”] [severity “CRITICAL”] [hostname “192.168.100.195”] [uri “/eproc4lat/lt17/upload”] [unique_id “VtCDoX8AAAEAAAWzANgAAAAA”]

[Fri Feb 26 11:58:12 2016] [error] [client 10.0.0.99] ModSecurity: Access denied with code 400 (phase 2). Match of “eq 0” against “MULTIPART_STRICT_ERROR” required. [file “/etc/httpd/conf.d/modsecurity.conf”] [line “81”] [id “200003”] [msg “Multipart request body failed strict validation: PE 1, BQ 0, BW 0, DB 0, DA 0, HF 0, LF 0, SM 0, IQ 0, IP 0, IH 0, FL 0”] [hostname “192.168.100.195”] [uri “/eproc4lat/lt17/upload”] [unique_id “VtCEJH8AAAEAACOoANQAAAAC”]

“ModSecurity : Access denied with code 400” ternyata Apendo4 tidak bisa konek ke port aplikasi SPSE4-latihan karena Mod_Security memblokir koneksi dan menganggap koneksi tersebut berbahaya dengan warning ‘[severity “CRITICAL”]’.

Karena ini adalah server latihan dan faktor security masih bisa dikompromikan, langsung menuju baris 60 dan 81 di /etc/httpd/conf.d/modsecurity.conf dan berikan tanda # untuk disable.

Restart layanan httpd : service httpd restart

Selamat Mencoba, D.W.Y.O.R

(**Biasakan mencantumkan kode sumbernya ketika anda mengkopi-paste tulisan dari blog ini**)

Mengatur Firewall Centos 6

Defaultnya centos sudah membawa firewall ketika di install, seperti dinyatakan oleh wiki.centos.org : “CentOS has an extremely powerful firewall built in, commonly referred to as iptables, but more accurately is iptables/netfilter”.

Kita hanya perlu melakukan penyesuaian agar port2 yang diperlukan saja yang dapat diakses menuju server kita, untuk melakukan pengujian port bisa menggunakan :

http://mxtoolbox.com/PortScan.aspx

Langkah-langkah penyesuaian konfigurasi iptables sebagai berikut :

1. rpm -qa iptables # memeriksa paket iptables apakah sudah terpasang?
2. iptables -L -n # memeriksa apa saja list iptables yang sedang berjalan/aktif
3. iptables -F; iptables -X; iptables -Z # flush/pembersihan terhadap isi rule iptables

untuk memudahkan pengaturan rule iptables bisa dengan membuat sebuah file yang berisi aturan iptables dan menjalankannya ketika sistem boot :

4. touch /etc/myfirewall.sh
5. nano /etc/firewall.sh # kopi dan paste teks dibawah ke firewall.sh

### awal file ###

#!/bin/bash
iptables -F
#
# Allow SSH connections on tcp port 22 and port 80 (http)
# tambahkan baris untuk port yang diijinkan untuk diakses seperti contoh dibawah ini
# bila ssh dijalankan selain di port 22, sesuaikan dengan port yang digunakannya.
#
iptables -A INPUT -p tcp –dport 22 -j ACCEPT
iptables -A INPUT -p tcp –dport 80 -j ACCEPT
#
# Set default policies for INPUT, FORWARD and OUTPUT chains
#
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
#
# Set access for localhost
#
iptables -A INPUT -i lo -j ACCEPT
#
# Accept packets belonging to established and related connections
#
iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
#
# Save settings
#
/sbin/service iptables save
#
# List rules
#
iptables -L -v

### akhir file ###

6. chmod +x /etc/myfirewall.sh
7. /etc/./myfirewall.sh # ujicoba menjalankan file secara manual
8. nano /etc/rc.local

tambahkan autostart pada rc.local agar file myfirewall.sh dijalankan otomatis ketika sistem di reboot, menjadi :

/etc/./myfirewall.sh
touch /var/lock/subsys/local

9. reboot server
10. iptables -L -v # untuk mengecek kembali iptables/firewall sudah dijalankan pada server
11. http://mxtoolbox.com/PortScan.aspx # cek kembali port yang open di server

selamat mencoba…DWYOR!

ref :
1. https://wiki.centos.org/HowTos/Network/IPTables
2. https://www.vultr.com/docs/setup-iptables-firewall-on-centos-6

Mengatasi Vulnerability di CENTOS 6

Untuk rekan pengguna os CENTOS 6 untuk aplikasi SPSE baik versi 36 maupun 4, ada beberapa vulnerabilty (kerentanan) pada os tersebut, diantara nya di bash dan glibc nya.

seperti dilansir oleh situs berita http://inet.detik.com/read/2014/09/27/095649/2702923/323/bug-shellshock-bisa-ancam-perbankan

Langkah pengujian untuk vulnerability bash bisa dilakukan sebagai berikut :

[root@ip-local-private ~]# env x='() { :;}; echo vulnerable’ bash -c “echo this is a test”

=====================================
Apabila outputnya seperti dibawah ini :

vulnerable
this is a test

Maka server anda rentan dan harus diupdate paket bashnya.

=====================================
Apabila outputnya seperti dibawah ini :

this is a test

ataupun seperti dibawah ini :

bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x’

this is a test

Maka server anda tidak harus di update paket bashnya.

Perbaikan / patch atas bugs tersebut caranya cukup mudah, lakukan 2 langkah berikut :

yum clean all
yum update

kemudian lakukan pengujian ulang atas bugs diatas.

jadi yang rajin meng-update os nya ya kawan!

(http://arifzulfikarp.blogspot.co.id/2014/10/update-bash-package-di-centosrhel-64.html)

Dump / Backup dan Restore Database SPSE

untuk keperluan upgrade spse36 ke 36sp2 dan spse4, kadangkala diperlukan dump / backup database di server lama dan merestore nya kembali ke server baru, berikut step nya :

1. di server lama yang menjalankan spse36 :

su – postgres

psql -l
(untuk keluar, gunakan :q, misal db yang akan dibackup = epns-latihan)

pg_dump -U postgres epns-latihan -f epns-latihan.sql
(perhatikan folder/direktory tempat .sql nya dibuat)

copikan file epns-latihan.sql ke server baru yang menjalankan spse36sp2

2. di server baru yang menjalankan spse36sp2/spse4 :

su – postgres
psql -l

bila db belum ada, maka create terlebih dahulu :

createdb -U postgres -O epns epns_latihan

lalu import/restore db nya :

psql -U postgres -d epns-latihan -f epns-latihan.sql

(perhatikan folder tempat meletakan epns-latihan.sql)

D.W.Y.O.R

Meng-ssl alias https-kan domain/webpage LPSE

hanya catatan kecil biar gak hilang, dicomot dari sumber sbb :

1. https://www.digitalocean.com/community/tutorials/how-to-create-a-ssl-certificate-on-apache-for-centos-6
2. https://www.centos.org/forums/viewtopic.php?f=23&t=50117
3. http://serverfault.com/questions/160768/stop-apache-from-asking-for-ssl-password-each-restart
4. http://m0d0.blogspot.co.id/2010/07/remove-password-from-ssl-certificate.html

file yang diperlukan oleh httpd : *.key dan *.crt

sertifikat ssl gratis bisa di’google’ dengan key ‘free ssl certificate generator’

selamat mencoba!

[SOLVED] Failed to add the host to the list of known hosts (/root/.ssh/known_hosts)

LOCAL = 192.168.100.200
REMOTE = 192.168.100.210

Make a SSH connection to REMOTE from LOCAL:

LOCAL# ssh -i /data/ssh/replication 192.168.100.210

2 errors are displayed :
– Could not create directory ‘/root/.ssh’.
– Failed to add the host to the list of known hosts (/root/.ssh/known_hosts).

To fix this a did:
LOCAL# mount -uw /
LOCAL# mkdir -p /root/.ssh/
LOCAL# chmod 700 /root/.ssh
LOCAL# nano /root/.ssh/known_hosts
LOCAL# ssh -i /data/ssh/replication 192.168.100.210

No errors like above on your display (hopefully :D)

REMOTE# exit
LOCAL# mount -ur /

sumber : (https://forums.freenas.org/index.php?threads/replication-setting-up-ssh-key-based-authentication.2480/)