Ringkasan dokumen tersebut adalah:
Dokumen tersebut membahas tentang keamanan Apache Web Server dan protokol Secure Socket Layer (SSL), meliputi penjelasan tentang definisi web server dan Apache web server, arsitektur web portal, faktor kemungkinan serangan terhadap web server, definisi SSL dan kenapa diperlukan SSL, serta praktek instalasi dan konfigurasi Apache web server dan SSL menggunakan OpenSSL.
1. Keamanan Apache Web Server
Dan Secure Socket Layer (SSL)
Oleh
Muchammad Sholeh
Staff Keamanan Sistem Informasi
Sistem Informasi Perangkat Lunak dan Konten – Depkominfo
mailto : muchammad.sholeh@gmail.com/sholeh@depkominfo.go.id
Sosialisasi Topologi Keamanan Informasi – E-Government ( Depkominfo)
14 – 15 Juli 2008
Hotel Acacia - Jakarta
2.
Teori
Topik
−
Definisi Web Server
−
Definisi Apache Web Server
−
Arsitektur Web Portal
−
Faktor Kemungkinan Serangan
Terhadap Web Server
−
Definisi SSL & Kenapa SSL
Praktek
−
Instalasi Apache Web Server
−
Konfigurasi Apache Web Server
−
Instalasi SSL Dengan Openssl
−
Konfigurasi SSL
−
Test !!!
−
Question!!!
3. Definisi Web Server
Webserver adalah suatu layanan untuk menterjemahkan
permintaan serta permohonan dari bahasa pemrograman
web (seperti HTML,PHP,ASP) untuk ditampilkan pada
protokol HTTP yang terdapat pada port 80 atau sering
disebut HTTP Server, dimana hasil permintaan itu dapat
ditampilkan lewat browser mozilla, IE, dll.
4. Aplikasi Web Server
Apache Web Server - The HTTP Web Server
Apache Tomcat
Internet Information Services (IIS)
DLL
Target
5. Definisi Apache Web Server
Apache web server merupakan aplikasi perangkat lunak
web server open source yang mudah di konfigurasi sesuai
kebutuhan serta handal, lebih lengkap bisa dilihat dan di
download : http://jakarta.apache.org/
6. Keunggulan Apache Web Server
Free software (Gratis!!!!!)
Multiplatform, Apache dapat berjalan di beberapa sistem
operasi (BSD, Linux, Microsoft Windows,dll ) serta platform
lainnya
Fleksibel, mudah settingnya (fleksibilitas untuk di setting
dengan PHP dan MySQL
Dapat di tambahkan modul baru seperti Mod_security (by: Ivan
Ristic)
8. Faktor Kemungkinan Serangan Terhadap
Webserver
3 Faktor Serangan
DoS, Sniffing attack,dll
Sql Injection, Cross Site Scripting,dll
Serangan
Berbasis Aplikasi
User - unprivileged
Serangan
Berbasis Jaringan
Komputer
Serangan
Berbasis Aturan
User
9. Serangan Berbasis Aplikasi
Windows/Linux Server
Web Application
Database Server
Web Server
Ancaman berbasis web seperti
SQL injection, XSS
Serangan
Berbasis Aplikasi
User Interface
13. Serangan Berbasis User
Windows/Linux Server
Web Application
Database Server
Web Server
Ancaman terhadap user yang
tidak mempunyai
otorisasi/privileged untuk
merubah isi konten website
tersebut
Serangan
Berbasis User
User Interface
15. Kenapa SSL Protocol
Menjamin kerahasiaan pesan, sehingga tidak
bisa dibaca oleh pihak yang tidak diinginkan
Menjamin keutuhan pesan, sehingga tidak bisa
diubah-ubah di tengah jalan
Menjamin keabsahan/keaslian, sehingga
meyakinkan pihak-pihak yang berkomunikasi
antara client dan server
Meminimalisasi serangan sniffing data
16. suatu serangan yang merekam atau menangkap data/message
yang lewat melalui jaringan, dimana serangan ini tidak dapat dihindarkan
Sniffing Attack (Tools sniff : snort, tcpdump, ettercap,wireshark)
17. Ilustrasi HTTP Vs HTTPS
Normal HTTP (80)
User
X
User
Intruder/penyusup
SSL Certificate
Secure HTTP (443)
Encrypted Connection
18. Definisi Dari SSL
Salah satu cara untuk meningkatkan keamanan web server adalah dengan
menggunakan enkripsi pada komunikasi terhadap tingkat socket. Dengan
menggunakan enkripsi, orang tidak bisa menyadap data-data (transaksi)
yang dikirimkan dari client ke web server. Dengan kata lain SSL (Secure Socket Layer)
Hanya mengamankan jalur komunikasi (secure connection) transaksi yang terbungkus
dan terenkripsi/acak antara client dan server.
20. Tools Dari Scanning Web Server
Nikto.pl
WebScarab
Webshag v1.00 - Web Server Auditing Tool
DLL
Source : http://sectools.org/web-scanners.html
23. Test Apache Web Server
# /etc/init.d/apache2 start
buka browser mozilla dan ketik http://
localhost/
Note : Biasanya pada saat instalasi apache 2 selesai, maka layanan apache 2
automatic run tanpa harus menjalankan service
28. Footprinting
Sistem Operasi ?
Versi Aplikasi ?
Teknik paling awal sekali yang harus dilakukan oleh seorang hacker sebelum serangan
di lakukan adalah melakukan proses footprinting, atau dalam bahasa keren-nya intelejen awal
tentang segala sesuatu yang berkaitan dengan target yang dituju. Dengan cara ini seorang penyerang akan
memperoleh profile / postur keamanan yang lengkap dari organisasi / jaringan yang akan di serang, untuk
menggali semua informasi yang ada pada target mulai dari OS , Aplikasi, port informasi, dll
31. ServerSignature Off
Berfungsi untuk menyembunyikan informasi yang ada pada apache web server
baik itu versi dan operating system platform tersebut, karena seorang attacker
akan berusaha untuk menggali informasi yang ada pada komputer target guna untuk
melancarkan serangannya
ServerTokens Prod
Berfungsi untuk menyembunyikan informasi yang ada pad apache web server,
agar memudahkan attacker mengumpulkan informasi yang ada pada server
32. Contoh (cont)
Ada beberapa pilihan penggunaan directive ServerTokens ini, yaitu (sebagai contoh):
ServerTokens Prod : menghasilkan respon server -> Apache
ServerTokens Major : menghasilkan respon server -> Apache/2
ServerTokens Minor : menghasilkan respon server -> Apache/2.0
ServerTokens Min : menghasilkan respon server -> Apache/2.0.41
ServerTokens OS : menghasilkan respon server -> Apache/2.0.41 (Unix)
ServerTokens Full ( atau tidak dideklarasikan) : menghasilkan respon server -> Apache/2.0.41
(Unix) PHP/4.2.2 MyMod/1.2
35. Meminimalisasi Serangan DoS
(Denial of Service)
Serangan bertubi-tubi terhadap server secara terus menerus untuk mengirimkan paket
dengan berkapasitas besar sehingga melumpuhkan layanan terhadap server, dengan
kata lain serangan yang bertujuan utk menghabiskan resources/sumber yang dimiiki oleh
komputer target atau server. Misalkan menggunakan tools DosHttp,Syndrop, dll.
dll
36. Meminimalisasi Serangan DoS
(Denial of Service)
Timeout 60 (Menunjukkan berapa lama waktu pengiriman dan
penerimaan request diizinkan.Defaultnya adalah 300 detik)
KeepAlive On ( Kemampuan server menerima request secara
simultan yang berasal dari satu koneksi)
KeepAliveTimeout 15 ( Waktu yang ditentukan untuk menunggu
request selanjutnya dari satu koneksi, maka anda bisa rubah menjadi
15, hal ini akan meminimalkan server kita di serang oleh DOS)
StartServers 10 (Jumlah server yang dijalankan oleh apache untuk
inisialisasi ketika apache pertama kali dieksekusi)
MinSpareServers 10 (Jumlah server yang dibutuhkan untuk melayani
setiap request yang masuk) ->biasa digunakan untuk situs web yang
sangat sibuk
MaxSpareServers 20 (Jumlah server yang dibutuhkan untuk melayani
setiap request yang masuk)
37. Buffer Overflows
Buffer Overflow adalah suatu serangan yang
menyerang engine (web server) yang memiliki
vulnerability (kelemahan) dalam masalah alokasi
memori (buffer) dengan cara memaksakan
malicious code/script jahat agar dieksekusi oleh
engine (web server) untuk memperoleh akses root
shell
H ttpd A ttack
38. H ttpd A ttack
Kerawanan serta kelemahan yang terdapat dalam HTTPD ataupun
webserver ada lima macam: buffer overflows, httpd bypasses,
cross scripting, web code vulnerabilities, dan URL floods.
HTTPD Buffer Overflow bisa terjadi karena attacker menambahkan
errors pada port yang digunakan untuk web traffic dengan cara
memasukan banyak carackter dan string untuk menemukan
tempat overflow yang sesuai. Ketika tempat untuk overflow
ditemukan, seorang attacker akan memasukkan string yang akan
menjadi perintah yang dapat dieksekusi. Bufer-overflow dapat
memberikan attacker akses ke command prompt
39. /* connects to the vulnerable webdexproxy server. */
unsigned short proxy_connect(char *hostname,unsigned short port){
signed int sock;
struct hostent *t;
struct sockaddr_in s;
sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
s.sin_family=AF_INET;
s.sin_port=htons(port);
printf("[*] attempting to connect: %s:%d.n",hostname,port);
if((s.sin_addr.s_addr=inet_addr(hostname))){
if(!(t=gethostbyname(hostname)))
printe("couldn't resolve hostname.",1);
memcpy((char *)&s.sin_addr,(char *)t->h_addr,sizeof(s.sin_addr));
}
signal(SIGALRM,sig_alarm);
alarm(TIMEOUT);
if(connect(sock,(struct sockaddr *)&s,sizeof(s)))
printe("webdesproxy connection failed.",1);
alarm(0);
printf("[*] successfully connected: %s:%d.n",hostname,port);
sleep(1);
printf("[*] sending string:n");
printf("[+] "GET http://[NOPSx250][JMP4][EIP/"CALL ESP"][NOPSx32]"
"[SHELLCODE]/nn"n");
write(sock,getbuf(tbl.addr),BUFSIZE);
sleep(1);
printf("[*] closing connection.nn");
close(sock);
return(0);
}
Potongan Script Buffer
Overflow yang dibuat
dari bahasa C untuk, lebih jelasnya lihat
di http://www.milw0rm.com/exploits/3913
40. Buffer Overflows
(cont)
LimitRequestBody 10240 (Membatasi request secara
keseluruhan dari client ke server)
LimitRequestFields 40 (membatasi maksimal kapasitas dari
fields header sebuah permohonan pesan terhadap web server)
LimitRequestFieldsize 100 (membatasi maksimum ukuran dari
http request field header terhadap web server)
LimitRequestLine 500 (Membatasi maksimum ukuran baris dari
http request terhadap web server)
Tambahkan Konfigurasi diatas pada directory : /etc/apache2/httpd.conf
menggunakan editor nano atau pico
42. Install SSL Menggunakan
OpenSSL
OpenSSL adalah sebuah toolkit kriptografi yang mengimplementasikan protokol jaringan Secure
Sockets Layer (SSL v2/v3) dan Transport Layer Security (TLS v1) termasuk berbagai standar
kriptografi lainnya yang di butuhkan. Openssl sendiri adalah program di Linux yang sifatnya
command line tidak menggunakan grafik user interface (GUI).
43. Install SSL (Secure
Socket Layer)
# apt-get install openssl ssl-cert
Library dari SSL
Toolkit Cryptography
Enter
44. Membuat Folder Utk
Key dari SSL
Enter
$ sudo mkdir -p /etc/apache2/training/ssl
$ cd /etc/apache2/training/ssl
Enter
sholeh@sholeh-desktop:/etc/apache2/training/ssl$
Sudah berada pada folder ssl
46. Membuat Certificate
Signing Request
(CSR)
# openssl req -new -key training.key > training.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
----Country Name (2 letter code) [AU]:ID
State or Province Name (full name) [Some-State]:Indonesia
Locality Name (eg, city) []:Jakarta Pusat
Organization Name (eg, company) [Internet Widgits Pty Ltd]:DEPKOMINFO
Organizational Unit Name (eg, section) []:Keamanan Sistem Informasi
Common Name (eg, YOUR name) []:depkominfo.go.id
Email Address []:sholeh@kamsifo.web.id
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:ketikaja
An optional company name []:SIPLK
47. Memberikan Signature
Untuk Certificate
# openssl x509 -req -days 365 -in training.csr -signkey training.key -out training.cert
Signature ok
subject=/C=ID/ST=Indonesia/L=Jakarta Pusat/O=DEPKOMINFO/
OU=Keamanan Sistem
Informasi/CN=depkominfo.go.id/emailAddress=sholeh@kamsifo.web.id
Getting Private key
root@sholeh-desktop:/etc/apache2/training/ssl# ls
training.cert training.csr training.key
Key yang telah kita buat terkumpul dalam satu folder
48. Cont
Tambahkan port 443 pada :
# /etc/apache2/port.conf
gunakan editor pico untuk memasukan port 443, seperti dibawah ini :
# pico /etc/apache2/port.conf
Ketik Listen 443
Karena protokol SSL berjalan di port 443
49. Cont
Setelah itu ketik dibawah ini pada folder /etc/apache2/site-available/secure dengan
editor text pico, dengan perintah pico /etc/apache2/site-available/secure :
NameVirtualHost *:443
<VirtualHost *:443>
ServerName localhost
Serveradmin admin@kamsifo.web.id
DocumentRoot /var/www/
SSLEngine On
SSLCertificateFile /etc/apache2/training/ssl/training.cert
SSLCertificateKeyFile /etc/apache2/training/ssl/training.key
ErrorLog /home/depkominfo/secure/log/error.log
CustomLog /home/depkominfo/secure/log/custom.log combined
ServerSignature On
</VirtualHost>
50. Cont
Untuk mengaktifkan modul ssl, ketik :
# a2enmod ssl
This module is already enabled!
Untuk mengaktifkan site secure, ketik :
# a2ensite secure
This site is already enabled!
Restart apache 2 dengan perintah :
# /etc/init.d/apache2 force-reload -> Enter
60. Kesimpulan
Tetap Sadar akan Betapa Pentingnya
Keamanan Informasi
Training/Pelatihan IT Security
Membangun Pengetahuan IT Security Lewat
Miling List (Linux Security,Security Focus,
Internet Alert dll )
Tetap Menjaga Keamanan dan Selalu Review
Prosedur, Ceklist Keamanan dan Kebijakan IT
Security Sesuai Kebutuhan
61. Beberapa Link Bagus Untuk Dikunjungi :
http://www.owasp.org/index.jsp
http://www.webappsec.org/projects/
http://www.cgisecurity.com/
http://www.isecom.org/osstmm/
http://www.milw0rm.com/dos.php