Friday, April 17, 2009

Squid zph

5 komentar

Setelah membaca artikel tutor squid zph berikut ini :

Tutor 1
Tutor 2
Tutor 3

Akhirnya squid zph berjalan dengan baik di tempat saya bekerja, squid versi yang di pakai versi 2.7 stable 6 dengan freebsd 7.1 sebagai box nya dan mikrotik sebagai bw limiter.

Maaf, saya belum tampilkan parsing settingan di squid.conf nya, hanya tampilkan mikrotik grafik zph nya saja di bawah ini :




Thanks to Mas Adi aka Firewaxx :)

Rgds


[get this widget]

Tuesday, February 3, 2009

Apache secure server

1 komentar

Saya sama sekali masih awam tentang bagaimana membuat web server yang aman, ini hanya merupakan pengalaman yang pernah di praktek-kan berdasarkan trial-error. Membaca berulang2 pendapat serta postingan para master security untuk kemudian di jadikan sebagai referensi.

Di sini tidak akan dibahas tentang OS Freebsd itu sendiri, karena sebelumnya sudah pernah dibahas disini .
Saya akan coba langsung lompat ke level aplikasinya.
Keindahan Freebsd salah satunya adalah fasilitas management portnya, karena sudah terbiasa-kan dengan penggunaan port maka pembahasan instalasi aplikasi di sini tidak melalui tarball

Apache
# cd /usr/ports/www/apache*

silahkan pilih sendiri versi apachenya, muat module-module yang hanya diperlukan saja
# make config ( versi 2.2 saja )
# make install && make clean

edit httpd.conf
ServerTokens ProductOnly
ServerSignature Off

Matikan service yg tidak dibutuhkan
DirectoryBrowsing di set ke : -Indexing
Server Side Includes : -Includes
Symbolic Links : -FollowSymLinks
CGI Execution : -ExecCGI ( jika tidak pakai cgi )

Matikan module LoadModule userdir_module dengan # jikasudah terlanjur di load, karena akan menjadi target sasaran buat enumeration, misal : http://www.xxxxxxx.ac.id/~arif/ atau http://www.xxxxxxx.ac.id/~bagong/

pakai mode Suexec untuk vhost

PHP
# cd /usr/ports/lang/php5
# make config ( pastikan opsi Apache - Build Apache Module di centang )

edit php.ini

safe_mode = On
expose_php = Off
magic_quotes = On
register_globals = off
display errors = off
disable_functions = show_source, system, proc_terminate,
shell_exec, exec, passthru, proc_open, phpinfo, popen

Jika dalam 1 mesin memiliki banyak domain/sub-domain dan ada beberapa yang harus "di baut " lebih keras karena alasan keamanan, kita bisa gunakan metode suhosin dengan catatan php-nya sudah di support. Matikan (#) disable_functions, dari semua fungsi-fungsi yg ada dibawah pilah2 semua dengan kebutuhan anda.

(VirtualHost _default_:443)
ServerAlias www.xxxxx.com
ServerAdmin webmaster@xxxxx.com
DocumentRoot /var/www/html1
php_admin_value suhosin.executor.func.blacklist "passthru, show_source, shell_exec, system, pcntl_exec, popen, pclose, proc_open, proc_nice, proc_terminate, proc_get_status, proc_close, leak, apache_child_terminate, posix_kill, posix_mkfifo, posix_setpgid, posix_setsid, posix_setuid, escapeshellcmd, escapeshellarg"
(/VirtualHost)

catatan : ( .. ) = < ... >, karena blogspot tidak bisa menerima tag < .. > untuk ditampilkan, teman blogger ada yang bisa kasih solusi ?


Phpsecinfo
# cd /usr/ports/security/phpsecinfo
# make install clean
# mv /usr/local/www/phpsecinfo to DocumenRoot


Fungsinya adalah untuk mengecek apakah settingan php.ini sudah sesuai dengan standard keamanan dari PHP. Warna Merah merupakan risiko tertinggi dan Hijau yang terendah.

Mod_security
# cd /usr/ports/www/mod_security21

# make install clean

install mod_security untuk mengurangi ketololan programmer. Sangat berguna untuk mengurangi resiko directory transversal, SQL injection, XSS, Remote code execution, Command Injection. Ketika ditemui pola URL yang aneh, mod_security bisa memberikan respons HTTP error ke client misal HTTP 404/500/403.

edit httpd.conf
LoadFile /usr/local/lib/libxml2.so
LoadModule security2_module libexec/apachexx/mod_security2.so

modsec akan membaca configurasi yg terletak di /usr/local/etc/apachexx/Includes/mod_security2
remove semua *.conf ke direktori khusus kecuali modsecurity_crs_10_config.conf

edit modsecurity_crs_10_config.conf
SecRuleEngine On

opsi DetectionOnly modsec hanya akan mencatat log setiap serangan tapi tidak akan men-denied, sedangkan opsi On akan mencatat sekaligus men-denied jika pola serangan cocok dengan pola rule-rule yang ada.

Tambah Rule
--------------
Perlu diperhatikan apa saja yg sudah di pasang di web server anda, misal phpnuke carilah rule2 yang berkaitan dengan phpnuke tersebut, download sesuai dengan versi mod_sec itu sendiri misal 2.0-2.1 ( linux/unix ) download rule disini
Dikarenakan panjangnya rule yang ada, silahkan anda ekstrak rule tersebut, untuk pola rule injection banyak terdapat pada rules.conf dan jitp.conf. Kemudian copy-paste ke modsecurity_crs_10_config.conf

Dari catatan log mod_sec yg selama ini saya perhatikan, paling banyak adalah log sql injection, , blind sql injection, xss-injection, php generic injection dan command injection

Biar si penyusup mendapat peringatan, kasih ini :
edit httpd.conf

ErrorDocument 400 http://politicalhumor.about.com/library/images/blbushchimpanzee.htm
ErrorDocument 403 http://politicalhumor.about.com/library/images/blbushchimpanzee.htm
ErrorDocument 501 http://politicalhumor.about.com/library/images/blbushchimpanzee.htm

hehehe .....

edit modsecurity_crs_10_config.conf

# ===================== SQL SECTION ================= #

# Blind SQL injection

SecRule REQUEST_FILENAME|ARGS|ARGS_NAMES "(?:\b(?:(?:s(?:ys\.(?:user_(?:(?:t(?:ab(?:_column|le)|rigger)|object|view)s|c(?:onstraints|atalog))|all_tables|tab)|elect\b.{0,40}\b(?:substring|ascii|user))|m(?:sys(?:(?:queri|ac)e|relationship|column|object)s|ysql\.user)|c(?:onstraint_type|harindex)|waitfor\b\W*?\bdelay|attnotnull)\b|(?:locate|instr)\W+\()|\@\@spid\b)" \
"capture,t:htmlEntityDecode,t:lowercase,t:replaceComments,ctl:auditLogParts=+E,log,auditlog,msg:'Blind SQL Injection

SecRule REQUEST_HEADERS|XML:/*|!REQUEST_HEADERS:Referer "(?:\b(?:(?:s(?:ys\.(?:user_(?:(?:t(?:ab(?:_column|le)|rigger)|object|view)s|c(?:onstraints|atalog))|all_tables|tab)|elect\b.{0,40}\b(?:substring|ascii|user))|m(?:sys(?:(?:queri|ac)e|relationship|column|object)s|ysql\.user)|c(?:onstraint_type|harindex)|waitfor\b\W*?\bdelay|attnotnull)\b|(?:locate|instr)\W+\()|\@\@spid\b)" \
"capture,t:urlDecodeUni,t:htmlEntityDecode,t:lowercase,t:replaceComments,ctl:auditLogParts=+E,log,auditlog,msg:'Blind SQL Injection Attack. Matched signature <%{TX.0}>',id:'950007',severity:'2'"

Panjang sekali yah ? gak muat di sini , cukup 2 rule saja yg ditampilkan dari sekitar > 100an rule yg saya pasang.

Mod_evasive
# cd /usr/ports/www/mod_evasive

# make install clean

mod_evasive dulu dikenal sebagai mod_dosevasive adalah apache modul yang berfungsi sebagai pencegah HTTP DoS atau DDoS (Denial of Service) attack atau lazimnya brute force attack pada web server.

edit httpd.conf
LoadModule evasive20_module libexec/apache2/mod_evasive20.so


DOSHashTableSize 3097
DOSPageCount 5
DOSSiteCount 30
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 6000 <-- deny IP dlm second jika tertangkap basah DOSEmailNotify arif@xxxxxxxxx.ac.id DOSLogDir "/var/log/blacklist"


touch /var/log/blacklist

Rootkit Hunter

berguna untuk mengecek jika ada rootkits, backdoors serta local exploits

# cd /usr/ports/security/rkhunter
# make install clean
update :
rkhunter --update

scanning :
rkhunter -c

Chkrootkit
# cd /usr/ports/security/chkrootkit
# make install clean
# rehash

black# chkrootkit
ROOTDIR is `/'
Checking `amd'... not infected
Checking `basename'... not infected
Checking `biff'... not infected
Checking `chfn'... not infected
Checking `chsh'... not infected
Checking `cron'... not infected
Checking `crontab'... not infected
Checking `date'... not infected
dstnya ..

perhatikan jika ada kata Infected !!!

Logcheck
# cd /usr/port/security/logcheck
# make install clean

detilnya lihat disini

Firewall
Di sini saya menggunakan PF sebagai pageran ( jawa )

ok langsung saja

# ee /etc/pf.conf
int_if ="xl0"

table (bruteforce) persist
set loginterface $int_if
scrub in all

antispoof quick for { lo $int_if }
set skip on lo

block quick from (bruteforce)
block log all ( blok semua port yg tidak diperlukan, hanya 80,443 saja yg aktif )

pass out on $int_if proto { tcp, udp } all keep state
pass out on $int_if proto icmp all

pass in on $int_if proto { tcp, udp } from any to $int_if port 80 flags S/SA keep state (max-src-conn 50, max-src-conn-rate 15/5, overload flush global)
pass in on $int_if proto { tcp, udp } from any to $int_if port 443 flags S/SA keep state (max-src-conn 50, max-src-conn-rate 15/5, overload flush global)

pass in log on $int_if proto icmp from any to $int_if

maksud angka 50 diatas adalah akses dari 1 host secara simultan yg di perbolehkan, sementara 15/5 artinya hanya di ijinkan 15 hit web maksimal dalam 5 detik.

CMIIW dan mohon masukkannya dari anda jika ada tambahan, kurang lebihnya mohon dimaklumi, dikarenakan pengetahuan saya yg masih terbatas ini.

Rgds


Referensi :

http://www.jasakom.com/forum/viewtopic.php?f=129&t=696
http://www.cyberciti.biz/faq/freebsd-install-configure-mod_security/
http://mild-info.com/2008/12/best-server-security-configuration.php
http://blogs.techrepublic.com.com/10things/?p=477



[get this widget]

Thursday, December 4, 2008

ComixWall ... wow cool :)

0 komentar

Saya lagi tertarik mempelajari Router RuarrRRrr BiasAa yang satu ini, yup Comixwall

Based on OpenBSD 4.3 dan Fungsi Utamanya sebagai router yg dilengkapi dengan IDS/IPS yang terintegrasi dan segudang feature yang lain ( DNS, Squid, Spamd dll )

Silah lihat di bawah ini



Juga lihat RRD Grafisnya yang Keren Habis ...



Aktifitas log di IDS/IPS



Dengan fitur selengkap ini, ternyata masih bisa running dengan baik di Pentium 3 866 dan Memori 384 mb.

Especially Million Thanks to Soner Tari :)

Rgds

[get this widget]