Install dan konfigurasi Server LPSE di Centos
Berikut langkah – langkah untuk instalasi dan konfigurasi SPSE v36sp3 dan v40 di centos |- Diasumsikan server sudah terinstall OS Centos ( saya menggunakan centos 6.5 x86_64)
- Aplikasi yang dibutuhkan SPSE adalah httpd (Apache), Postgresql (minimal versi 8), Postfix (sebagai pelempar email), JDK8(jdk1.8.0 versi source code), modsecurity2, modevasive, Aplikasi web SPSE versi terbaru (3.6sp3 dan 4.0) yang didapat dari LKPP.
- Asumsi IP Address server 192.168.1.5
- Semua pekerjaan menggunakan CLI
- Gunakan selalu user root untuk konfigurasi, ditandai dg “ # “
- Instalasi ini digunakan untuk server latihan, maka ada beberapa bagian yg tidak saya postingkan detail misalnya dalam pembuatan database saya tinggal import dari database dari LKPP
# nano /etc/sysconfig/network-scripts/ifcfg-eth0
Lalu restart service networknya
# /etc/init.d/network restart
atau menggunakan
# service network restart
# nano /home/appserv/epns-lat-36sp3/webapp/WEB-INF/classes/application.propertiesatau menggunakan
# service network restart
Lakukan update yum
# yum update
Install service Apache
# yum install httpd httpd-devel
Install service postgresql
# yum install postgresql-server
Install file2 pendukung lainnya
# yum install pcre* libxml2* libcurl* lua* libtool make wget
Start semua service
# service httpd start
# chkconfig httpd on
# service postgresql initdb
# service postgresql start
# chkconfig postgresql on
Persiapkan folder utk source, SPSE dan File Upload
# mkdir -p /home/source
# mkdir -p /home/appserv
# mkdir -p /home/file
# mkdir -p /home/file/file_latihan
Masukkan semua source yang didapat dari LKPP ke dalam folder
/home/source menggunakan aplikasi remote winscp diantaranya jdk1.8.0,
play-1.3.3, jce_policy-8.zip dan hasil pg_dump dari database server
latihan lkpp (misal epns-latihan.backup) serta aplikasi web spse( epns-lat-36sp3 dan spse-lat-40).
Copykan file jdk1.8.0 dan play-1.3.3 ke folder /usr/local/src
# cp -R /home/source/jdk1.8.0 /usr/local/src/
# cp -R /home/source/play-1.3.3 /usr/local/src/
# cd /home/source
# unzip jce_policy-8.zip
# cp -vr /home/source/UnlimitedJCEPolicyJDK8/* /usr/local/src/jdk1.8.0/jre/lib/security/
# cd /home/source
# unzip jce_policy-8.zip
# cp -vr /home/source/UnlimitedJCEPolicyJDK8/* /usr/local/src/jdk1.8.0/jre/lib/security/
# chmod 755 -R /usr/local/src/*
Copykan epns-lat-36sp3 dan spse-lat-40 ke /home/appserv
# cp -R /home/source/epns-lat-36sp3 /home/appserv/
# cp -R /home/source/spse-lat-40 /home/appserv/
Import database hasil dari pg_dump yang ada di folder source
# su postgres
$ createdb -U postgres -O epns epns-latihan
$ pg_restore -U postgres -Fc -vd epns-latihan /home/source/epns-latihan.backup
$ exit
# cp -R /home/source/spse-lat-40 /home/appserv/
Import database hasil dari pg_dump yang ada di folder source
# su postgres
$ createdb -U postgres -O epns epns-latihan
$ pg_restore -U postgres -Fc -vd epns-latihan /home/source/epns-latihan.backup
$ exit
Install modsecurity dan modevasive nya
# cd /usr/src
# nano /var/lib/pgsql/data/pg_hba.conf ==> (ubah methode ident menjadi trust)
# wget http://www.modsecurity.org/download/modsecurity-apache_2.6.8.tar.gz
# tar xzf modsecurity-apache_2.6.8.tar.gz
# cd modsecurity-apache_2.6.8
# ./configure
# make && make install
# cp modsecurity.conf-recommended /etc/httpd/conf.d/modsecurity.conf
# cd /usr/src
# wget http://www.zdziarski.com/blog/wp-content/uploads/2010/02/mod_evasive_1.10.1.tar.gz
# tar xzf mod_evasive_1.10.1.tar.gz
# cd mod_evasive
# apxs -cia mod_evasive20.c
Tambahkan konfigurasi pendukung utk spse kedalam httpd.conf.
# nano /etc/httpd/conf/httpd.conf
# nano /etc/httpd/conf/httpd.conf
Alias /latihan /home/appserv/epns-lat-36sp3
Alias /file_latihan /home/file/file_latihan
<DirectoryMatch /home/appserv/epns-lat-36sp3/webapp/WEB-INF>
AllowOverride None
Order deny,allow
deny from all
</DirectoryMatch>
AllowOverride None
Order deny,allow
deny from all
</DirectoryMatch>
ProxyRequests Off
ProxyVia Off
ProxyPreserveHost On
ProxyTimeout 6000
ProxyVia Off
ProxyPreserveHost On
ProxyTimeout 6000
ProxyPass /latihan http://localhost:8009/latihan
ProxyPassReverse /latihan http://localhost:8009/latihan
ProxyPassReverse /latihan http://localhost:8009/latihan
ProxyPass /eproc4lat http://localhost:9009/eproc4lat
ProxyPassReverse /eproc4lat http://localhost:9009/eproc4lat
ProxyPassReverse /eproc4lat http://localhost:9009/eproc4lat
SetOutputFilter DEFLATE
DeflateBufferSize 65536
DeflateCompressionLevel 9
DeflateFilterNote Input instream
DeflateFilterNote Output outstream
DeflateFilterNote Ratio ratio
DeflateMemLevel 9
DeflateWindowSize 15
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch “Windows 98” gzip-only-text/html
BrowserMatch “MSIE [45]” gzip-only-text/html
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
SetEnvIfNoCase Request_URI \.(?:gif|jpeg|jpe|jpg|png|ico|t?gz|zip|rar|pdf|doc|xls|dat)$ no-gzip dont-vary
LogFormat ‘”%r” %{outstream}n/%{instream}n (%{ratio}n%%)’ deflate
CustomLog /var/log/httpd/deflate_log deflate
DeflateBufferSize 65536
DeflateCompressionLevel 9
DeflateFilterNote Input instream
DeflateFilterNote Output outstream
DeflateFilterNote Ratio ratio
DeflateMemLevel 9
DeflateWindowSize 15
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch “Windows 98” gzip-only-text/html
BrowserMatch “MSIE [45]” gzip-only-text/html
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
SetEnvIfNoCase Request_URI \.(?:gif|jpeg|jpe|jpg|png|ico|t?gz|zip|rar|pdf|doc|xls|dat)$ no-gzip dont-vary
LogFormat ‘”%r” %{outstream}n/%{instream}n (%{ratio}n%%)’ deflate
CustomLog /var/log/httpd/deflate_log deflate
<IfModule mod_headers.c>
Header append Vary User-Agent env=!dont-vary
</IfModule>
Header append Vary User-Agent env=!dont-vary
</IfModule>
<VirtualHost *:80>
LogLevel warn
CustomLog /var/log/httpd/access.log combined
RedirectMatch ^/$ /eproc4lat
RedirectMatch ^/latihan$ /latihan/
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/x-javascript application/x-httpd-php
SetInputFilter DEFLATE
SetOutputFilter DEFLATE
</VirtualHost>
LogLevel warn
CustomLog /var/log/httpd/access.log combined
RedirectMatch ^/$ /eproc4lat
RedirectMatch ^/latihan$ /latihan/
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/x-javascript application/x-httpd-php
SetInputFilter DEFLATE
SetOutputFilter DEFLATE
</VirtualHost>
<IfModule mod_evasive20.c>
DOSHashTableSize 6194
DOSPageCount 25
DOSSiteCount 80
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 10
</IfModule>
DOSHashTableSize 6194
DOSPageCount 25
DOSSiteCount 80
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 10
</IfModule>
SecAuditEngine RelevantOnly
SecRequestBodyAccess On
SecResponseBodyAccess On
SecAuditLogParts ABCFHZ
SecAuditLog /var/log/httpd/audit_apache.log
SecDebugLog /var/log/httpd/modsec_debug.log
SecDebugLogLevel 3
SecDefaultAction log,auditlog,deny,status:403,phase:2,t:none
SecRuleEngine On
SecServerSignature “Netscape-Enterprise/6.0 PHP5.2.0 mod_asp/3.4.5”
SecRule ARGS “\.\./”
SecRule ARGS “<[[:space:]]*script”
#SecRule ARGS “<(.|\n)+>”
SecRule REQUEST_BODY “(document\.cookie|Set-Cookie|SessionID=)”
SecRule REQUEST_BODY “<[^>]*meta*\”?[^>]*>”
SecRule REQUEST_BODY “<[^>]*style*\”?[^>]*>”
SecRule REQUEST_BODY “<[^>]*script*\”?[^>]*>”
SecRule REQUEST_BODY “<[^>]*iframe*\”?[^>]*>”
SecRule REQUEST_BODY “<[^>]*object*\”?[^>]*>”
SecRule REQUEST_BODY “<[^>]*img*\”?[^>]*>”
SecRule REQUEST_BODY “<[^>]*applet*\”?[^>]*>”
SecRule REQUEST_BODY “<[^>]*form*\”?[^>]*>”
SecRule REQUEST_HEADERS:User-Agent “Nikto” “log,deny,status:403,msg:’Nikto Scanners Identified’”
SecRule HTTP_HOST “\x25”
SecRule HTTP_HOST “^$” “log,allow,msg:’no http host’”
SecRule HTTP_USER_AGENT “^$” “log,allow,msg:’No user agent’”
SecRule REQUEST_BODY “/^(etc|bin|sbin|tmp|var|opt|dev|kernel|exe)$/”
SecRule ARGS “delete[[:space:]]+from”
SecRule ARGS “insert[[:space:]]+into”
SecRule ARGS “select.+from”
SecRule ARGS “\<\!–\#”
#SecRule ARGS “((=))[^\n]*(<)[^\n]+(>)”
SecRule REQUEST_BODY “(\’|\”)”
#SecRule REQUEST_BODY “!^[\x20-\x7f]+$”
SecRule REQUEST_URI “^/(bin|cgi|cgi(\.cgi|-91[45]|-sys|-local|s|-win|-exe|-home|-perl)|(mp|web)cgi|(ht|ows-)bin|scripts|fcgi-bin)/”
SecRule REQUEST_BODY “/bin/ps”
SecRule ARGS “wget\x20”
SecRule ARGS “uname\x20-a”
SecRule REQUEST_BODY “/nessus_is_probing_you_”
SecRule REQUEST_URI “^OR 1=1–*”
SecRequestBodyAccess On
SecResponseBodyAccess On
SecAuditLogParts ABCFHZ
SecAuditLog /var/log/httpd/audit_apache.log
SecDebugLog /var/log/httpd/modsec_debug.log
SecDebugLogLevel 3
SecDefaultAction log,auditlog,deny,status:403,phase:2,t:none
SecRuleEngine On
SecServerSignature “Netscape-Enterprise/6.0 PHP5.2.0 mod_asp/3.4.5”
SecRule ARGS “\.\./”
SecRule ARGS “<[[:space:]]*script”
#SecRule ARGS “<(.|\n)+>”
SecRule REQUEST_BODY “(document\.cookie|Set-Cookie|SessionID=)”
SecRule REQUEST_BODY “<[^>]*meta*\”?[^>]*>”
SecRule REQUEST_BODY “<[^>]*style*\”?[^>]*>”
SecRule REQUEST_BODY “<[^>]*script*\”?[^>]*>”
SecRule REQUEST_BODY “<[^>]*iframe*\”?[^>]*>”
SecRule REQUEST_BODY “<[^>]*object*\”?[^>]*>”
SecRule REQUEST_BODY “<[^>]*img*\”?[^>]*>”
SecRule REQUEST_BODY “<[^>]*applet*\”?[^>]*>”
SecRule REQUEST_BODY “<[^>]*form*\”?[^>]*>”
SecRule REQUEST_HEADERS:User-Agent “Nikto” “log,deny,status:403,msg:’Nikto Scanners Identified’”
SecRule HTTP_HOST “\x25”
SecRule HTTP_HOST “^$” “log,allow,msg:’no http host’”
SecRule HTTP_USER_AGENT “^$” “log,allow,msg:’No user agent’”
SecRule REQUEST_BODY “/^(etc|bin|sbin|tmp|var|opt|dev|kernel|exe)$/”
SecRule ARGS “delete[[:space:]]+from”
SecRule ARGS “insert[[:space:]]+into”
SecRule ARGS “select.+from”
SecRule ARGS “\<\!–\#”
#SecRule ARGS “((=))[^\n]*(<)[^\n]+(>)”
SecRule REQUEST_BODY “(\’|\”)”
#SecRule REQUEST_BODY “!^[\x20-\x7f]+$”
SecRule REQUEST_URI “^/(bin|cgi|cgi(\.cgi|-91[45]|-sys|-local|s|-win|-exe|-home|-perl)|(mp|web)cgi|(ht|ows-)bin|scripts|fcgi-bin)/”
SecRule REQUEST_BODY “/bin/ps”
SecRule ARGS “wget\x20”
SecRule ARGS “uname\x20-a”
SecRule REQUEST_BODY “/nessus_is_probing_you_”
SecRule REQUEST_URI “^OR 1=1–*”
SecRequestBodyLimit 800000000
SecResponseBodyLimit 800000000
SecResponseBodyLimit 800000000
<LocationMatch /cgi-bin/>
SecRule REQUEST_URI “!(script1\.cgi|script2\.cgi|custom_email\.pl|form\.cgi\.exe)”
</LocationMatch>
SecRule REQUEST_URI “!(script1\.cgi|script2\.cgi|custom_email\.pl|form\.cgi\.exe)”
</LocationMatch>
#SecRule RESPONSE_STATUS “@streq 408” “phase:5,t:none,nolog,pass,setvar:ip.slow_dos_counter=+1,expirevar:ip.slow_dos_counter=60”
#SecRule IP:SLOW_DOS_COUNTER “@gt 25” “phase:1,t:none,log,drop,msg:’Client Connection Dropped due to high # of slow DoS alerts’”
#SecRule IP:SLOW_DOS_COUNTER “@gt 25” “phase:1,t:none,log,drop,msg:’Client Connection Dropped due to high # of slow DoS alerts’”
TYPE DATABASE USER CIDR-ADDRESS METHOD# “local” is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 trust
# IPv6 local connections:
host all all ::1/128 trust
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 trust
# IPv6 local connections:
host all all ::1/128 trust
(sesuaikan nama databasenya)
jdbc.url=jdbc:postgresql://localhost:5432/epns-latihan
# nano /home/appserv/epns-lat-36sp3/spse3
#JAVA_HOME : sesuaikan lokasi Java (jdk1.8.0)
JAVA_HOME=/usr/local/src/jdk1.8.0
#APP_HOME : sesuaikan lokasi folder SPSE 36sp3
APP_HOME=/home/appserv/epns-lat-36sp3
#Sesuaikan port proxy yg telah di konfigurasi pada httpd.conf
PORT=8009
#Sesuaikan dengan nama alias yg telah di konfigurasi pada httpd.conf
CONTEXT=/latihan
# nano /home/appserv/epns-lat-36sp3/update.shJAVA_HOME=/usr/local/src/jdk1.8.0
#APP_HOME : sesuaikan lokasi folder SPSE 36sp3
APP_HOME=/home/appserv/epns-lat-36sp3
#Sesuaikan port proxy yg telah di konfigurasi pada httpd.conf
PORT=8009
#Sesuaikan dengan nama alias yg telah di konfigurasi pada httpd.conf
CONTEXT=/latihan
#APP_HOME : sesuaikan lokasi aplikasi SPSE 36sp3
APP_HOME=/home/appserv/epns-lat-36sp3
#setting JAVA_HOME dan PLAY_HOME
#JAVA_HOME : sesuaikan lokasi Java (jdk1.8.0)
if [ ! ${JAVA_HOME} ]; then
JAVA_HOME=/usr/local/src/jdk1.8.0
Lalu setelah konfigurasi diatas di simpan, beri hak akses pada file
spse3 dan update.sh lalu jalankan semua aplikasi pendukungnya serta
jalankan aplikasi spse nyaAPP_HOME=/home/appserv/epns-lat-36sp3
#setting JAVA_HOME dan PLAY_HOME
#JAVA_HOME : sesuaikan lokasi Java (jdk1.8.0)
if [ ! ${JAVA_HOME} ]; then
JAVA_HOME=/usr/local/src/jdk1.8.0
# cd /home/appserv/epns-lat-36sp3/
# chmod +x spse3
# chmod +x update.sh
# service httpd restart
# service postgresql restart
# ./update.sh (tetap dlm folder /home/appserv/epns-lat-36sp3. utk mengetahui kita berada di folder mana, ketik pwd)
# ./spse3 start ( setelah muncul notifikasi spse sedang jalan, tekan control + c (ctrl + c) untuk meneruskan konfig spse v40)
Setelah itu, cek apakah spse v36 sudah running melalui browser client. Apabila telah running, kita lanjutkan dengan konfigurasi spse v40. cari dan sesuaikan seperti yg tertera di bawah ini..
# cd /home/appserv/spse-lat-40
# nano conf/application.conf
http.path=/eproc4lat
http.port=9009
db.url=jdbc:postgresql://localhost:5432/epns-latihan
sirup.url=http://sirup.lkpp.go.id/sirup-lat
sikap.url=http://latihan-lpse.lkpp.go.id/sikap
spse3.url=http://192.168.1.5/latihan (sesuaikan dg ip / host domain tempat spse v36 latihan digunakan)
# nano spse4http.port=9009
db.url=jdbc:postgresql://localhost:5432/epns-latihan
sirup.url=http://sirup.lkpp.go.id/sirup-lat
sikap.url=http://latihan-lpse.lkpp.go.id/sikap
spse3.url=http://192.168.1.5/latihan (sesuaikan dg ip / host domain tempat spse v36 latihan digunakan)
#JAVA_HOME : sesuaikan lokasi Java (jdk1.8.0)
JAVA_HOME=/usr/local/src/jdk1.8.0
#APP_HOME : sesuaikan dengan lokasi folder aplikasi SPSE v40
APP_HOME=/home/appserv/spse-lat-40
#Play Home : sesuaikan dengan lokasi folder Play
PLAY_HOME=/usr/local/src/play-1.3.3
#Play Version
PLAY_VERSION=play-1.3.3
#sesuaikan dengan port proxy untuk spse v40 latihan pada konfigurasi httpd.conf
PORT=9009
Setelah di simpan, beri hak akses pada file spse4 lalu jalankanJAVA_HOME=/usr/local/src/jdk1.8.0
#APP_HOME : sesuaikan dengan lokasi folder aplikasi SPSE v40
APP_HOME=/home/appserv/spse-lat-40
#Play Home : sesuaikan dengan lokasi folder Play
PLAY_HOME=/usr/local/src/play-1.3.3
#Play Version
PLAY_VERSION=play-1.3.3
#sesuaikan dengan port proxy untuk spse v40 latihan pada konfigurasi httpd.conf
PORT=9009
# chmod +x spse4
# ./spse4 start
Apabila tidak ada kendala atau error pada aplikasi spse4 diatas, silahkan dicoba melalui browser client
Jika ada kendala / error, bisa di cek errornya pada file log
# tail -f /home/appserv/epns-lat-36sp3/logs/system.out ==> (untuk spse v36)
# tail -f /home/appserv/spse-lat-40/logs/system.out ==> (untuk spse 40)
Dari file tersebut bisa di ketahui berjalan atau tidaknya aplikasi spse kita. Apabila aplikasi sudah berjalan normal, step terakhir kita masukkan service spse ke dalam file rc.local
# nano /etc/rc.local
/home/appserv/spse-lat-40/spse4 stop
/home/appserv/epns-lat-36sp3/spse3 stop
/home/appserv/epns-lat-36sp3/spse3 stop
/home/appserv/spse-lat-40/spse4 start
/home/appserv/epns-lat-36sp3/spse3 start
touch /var/lock/subsys/local
Pastikan file tersebut sudah dapat dieksekusi oleh sistem apabila OS
kita reboot atau karena pemadaman listrik sehingga server harus kita
hidupkan ulang../home/appserv/epns-lat-36sp3/spse3 start
touch /var/lock/subsys/local
# chmod +x /etc/rc.d/rc.local
Alhamdulillah, instalasi dan konfigurasi telah selesai. Selanjutnya saya beri sedikit tips & trik untuk OS Centos, karena default dari os ini, security berada pada kondisi menutup semua port. Ini bisa dilakukan pada awal sebelum install dan konfigurasi spse, namun saya letakkan pada bagian bawah karena diharapkan teman2 lebih mengetahui terlebih dahulu security2 pada setiap OS sebelum melakukan peng instalan ataupun konfigurasi. Sangat disarankan, jangan mendisable iptables (firewall) namun sesuaikan…
Disabled selinux dengan cara
# nano /etc/sysconfig/selinux
SELINUX=disabled
Lalu konfigurasi firewall kita agar aplikasi dapat di akses dr luar.
Untuk memudahkan, kita install dulu system-config-firewall-tui beserta
depedensinya# yum -y install dbus dbus-python system-config-firewall-tui
# service messagebus start
# system-config-firewall-tui
akan muncul seperti ini
pilih customize lalu pilih www (http) menggunakan tab
lalu close dan ok. lakukan penyesuaian firewall dengan menggunakan fasilitas tsb untuk memudahkan kita.
Selesai sudah perjumpaan kita untuk Install dan Konfigurasi SPSE pada OS Centos, mudah mudahan bermanfaat untuk kita semua.
sumber : http://infolpse.pasuruankab.go.id/home/?p=23