Upload presentasi
Presentasi sedang didownload. Silahkan tunggu
Diterbitkan olehRafli Dimas Telah diubah "10 tahun yang lalu
1
Oleh Adhit Priyambodo adhit.priyambodo@ametis.co.id
Keamanan Web Server Oleh Adhit Priyambodo
2
Outline Pengenalan Web Server Instalasi & Konfigurasi Web Server
Pengenalan Secure Socket Layer Instalasi & Konfigurasi SSL pada Web Server Pengenalan Apache Authentication Instalasi & Konfigurasi Apache Authentication Pengenalan Mod Security Instalasi & Konfigurasi Mod Security Pengenalan Denial of Service Cara untuk mengurangi resiko DoS Pengenalan Reverse Proxy Instalasi & Konfigurasi Reverse Proxy
3
Apache Web Server Aplikasi Web Server Opensource
Dikembangkan oleh Apache Group Dapat berjalan pada beberapa sistem operasi, seperti Linux, Windows, BSD-Unix, Mac OS, dan lain-lain
4
Fitur utama Apache Mendukung protokol HTTP/1.1 Mendukung Virtual Host
Mendukung autentikasi HTTP Mendukung SSL untuk komunikasi terenkripsi Mendukung CGI Terintegrasi dengan bahasa pemrograman PHP, Perl dan bahasa pemrograman script lain Dan lain-lain
5
Instalasi Apache (1) Pada Distro Linux Debian, gunakan fasilitas apt-get. apt-get install apache2 Reading package lists … Done Building dependency tree…Done The following extra packages will be installed: apache2-mpm-worker apache2.2-common Suggested packages: www-browser apache2-doc The following NEW packages will be installed: apache2 apache2-mpm-worker apache2.2-common 0 upgraded, 3 newly installed, 0 to remove and 61 not upgraded. Need to get 1444kB of archives. After unpacking 4170kB of additional disk space will be used. Do you want to continue [Y/n]?y
6
Instalasi Apache (2) Pada Distro Linux Debian, gunakan fasilitas dpkg.
dpkg –-install <nama file .deb>
7
Halaman default Apache
8
Virtual Host Salah satu keunggulan Apache adalah Apache dapat melayani beberapa website dalam satu mesin server sekaligus. Virtual Host dapat dikonfigurasi sebagai: Name-based, menggunakan domain yang telah dikonfigurasi pada DNS(Anda bisa menambahkan record CNAME untuk membuat alias pada DNS) IP-based, menggunakan IP alias.
9
Konfigurasi Virtual Host
Contoh konfigurasi DNS untuk mendukung Virtual Host Buat direktori /home/depkominfo/secure/log Kemudian buat sebuah file index.html pada direktori /home/depkominfo/secure IN A secure.depkominfo.go.id. CNAME web.depkominfo.go.id CNAME mkdir –p /home/depkominfo/secure/log echo “<h3>Welcome to Secure.Depkominfo.Go.ID</h3>” > /home/depkominfo/secure/index.html
10
Konfigurasi Virtual Host(cont)
Buat sebuah file dengan name ‘secure’ di direktori /etc/apache/site-available yang berisi baris berikut: Aktifkan vhost menggunakan perintah a2ensite NameVirtualHost *:80 <VirtualHost *:80> ServerName secure.depkominfo.go.id ServerAdmin DocumentRoot /home/depkominfo/secure/ ErrorLog /home/depkominfo/secure/log/error.log CustomLog /home/depkominfo/secure/log/access.log combined ServerSignature On </VirtualHost> a2ensite secure /etc/init.d/apache2 reload
11
Halaman Web menggunakan Virtual Host
12
Eavesdropping
13
Tanpa SSL
14
Dengan SSL
15
Bagaimana Mengatasinya ?
16
Secure Socket Layer
17
SSL pada Apache SSL(Secure Socket Layer) kali pertama ditemukan oleh Netscape Communication untuk mendukung komunikasi terenkripsi antara Web browser client dengan Web server. Untuk dukungan SSL pada Apache, kita bisa menggunakan Apache-SSL atau mod_ssl.
18
Konfigurasi SSL pada Apache
Buat direktori kerja dengan nama ‘ssl’, kemudian buat private key menggunakan perintah openssl Buat CSR(Certificate Signing Request) dan isi data sesuai dengan nama instansi Anda. mkdir ssl cd ssl openssl genrsa 1024 > depkominfo.key Generating RSA private key, 1024 bit long modulus e is (0x10001)
19
Konfigurasi SSL pada Apache(cont)
Kemudian berikan signature openssl req –new –key depkominfo.key >depkominfo.csr Country Name (2 letter code) [GB]:ID State or Province Name (full name) [Some-State]: Jakarta Locality Name (eg, city) []:Jakarta Organization Name (eg, company) []:Depkominfo Organizational Unit Name (eg, section) [ ]:IT Divisi Common Name [ ]:secure.depkominfo.go.id Address [ openssl x509 -req -days 365 -in depkominfo.csr -signkey depkominfo.key -out depkominfo.cert Signature ok subject=/C=ID/L=Jakarta/O=Depkominfo/CN=secure.depkominfo.go.id/ Getting Private key
20
Konfigurasi SSL pada Apache(cont)
Kopikan file key dan certificate ke direktori Apache dan berikan hak akses 400 Tambahkan baris berikut pada /etc/apache2/ports.conf mkdir –p /etc/apache2/depkominfo/ssl cp depkominfo.key depkominfo.cert /etc/apache2/depkominfo.go.id/ssl chmod 400 /etc/apache2/depkominfo.go.id/ssl/* Listen 443
21
Konfigurasi SSL pada Apache(cont)
Tambahkan direktif berikut pada konfigurasi Virtual Host Aktifkan modul SSL menggunakan perintah a2enmod Akses website menggunakan HTTPS SSLEngine On SSLCertificateFile /etc/apache2/depkominfo.go.id/ssl/depkominfo.cert SSLCertificateKeyFile /etc/apache2/depkominfo.go.id/ssl/depkominfo.key a2enmod ssl Module ssl installed; run /etc/init.d/apache2 force-reload to enable. /etc/init.d/apache2 force-reload
22
Halaman Web yang menggunakan SSL
23
Penggunaan Certificate Authority Terpisah
24
Pembuatan Certificate Authority
Pembuatan Kunci CA openssl genrsa –out ca.key 1024 Pembuatan Certificate Authority openssl req –new –x509 –key ca.key –out ca.crt –days 3650 Informasi Certificate Authority openssl x509 –text –in ca.crt -noout
25
Pembuatan Certificate
Pembuatan Key untuk CSR openssl genrsa –out server.key 1024 Pembuatan CSR openssl req –new –key server.key –out server.csr Informasi CSR openssl req –text –in server.csr -noout
26
Pengesahan Certificate
Pengesahan CSR dengan CA openssl x509 -req -in server.csr -out server.crt -sha1 –CA ca.crt -CAkey ca.key -CAcreateserial -days 3650 Informasi Signed Certificate openssl x509 –in server.crt –text –noout Export Certificate ke Format PKCS12 openssl pkcs12 -export –in server.crt –inkey server.key –out server.p12
27
Konfigurasi SSL pada Apache
Kopikan file key dan certificate ke direktori Apache dan berikan hak akses 400 Tambahkan baris berikut pada /etc/apache2/ports.conf mkdir –p /etc/apache2/depkominfo.go.id/ssl cp server.key server.crt ca.crt /etc/apache2/depkominfo.go.id/ssl chmod 400 /etc/apache2/depkominfo.go.id/ssl/* Listen 443
28
Konfigurasi SSL pada Apache
Tambahkan direktif berikut pada konfigurasi Virtual Host Aktifkan modul SSL menggunakan perintah a2enmod Akses website menggunakan HTTPS SSLEngine On SSLCertificateFile /etc/apache2/depkominfo.go.id/ssl/server.crt SSLCertificateKeyFile /etc/apache2/depkominfo.go.id/ssl/server.key SSLCACertificateFile /etc/apache2/depkominfo.go.id/ssl/ca.crt a2enmod ssl Module ssl installed; run /etc/init.d/apache2 force-reload to enable. /etc/init.d/apache2 force-reload
29
SSL Mutual Authentication
30
Pembuatan Client Certificate
Pembuatan Key untuk CSR openssl genrsa –out client.key 1024 Pembuatan CSR openssl req –new –key client.key –out client.csr Informasi CSR openssl req –text –in client.csr -noout
31
Pengesahan Certificate
Pengesahan CSR dengan CA openssl x509 -req -in client.csr -out client.crt -sha1 –CA ca.crt -CAkey ca.key -CAcreateserial -days 3650 Informasi Signed Certificate openssl x509 –in client.crt –text –noout Export Certificate ke Format PKCS12 openssl pkcs12 -export –in client.crt –inkey client.key –out client.p12
32
Konfigurasi SSL pada Apache
Tambahkan direktif berikut pada konfigurasi Virtual Host SSLEngine On SSLCertificateFile /etc/apache2/depkominfo.go.id/ssl/server.crt SSLCertificateKeyFile /etc/apache2/depkominfo.go.id/ssl/server.key SSLCACertificateFile /etc/apache2/depkominfo.go.id/ssl/ca.crt SSLVerifyClient require SSLVerifyDepth 1
33
Import Personal Certificate
34
Import Personal Certificate
35
Apache Authentication
36
Autentikasi menggunakan Modul Auth Basic
Secara default telah disertakan bersama paket Apache. Sederhana dan mudah dikonfigurasi. Informasi username dan password disimpan dalam file plaintext.
37
Konfigurasi Modul Auth Basic
Gunakan perintah htpasswd untuk membuat user. Tambahkan baris berikut pada file konfigurasi Virtual Host. mkdir /etc/apache2/depkominfo.go.id/user htpasswd –c /etc/apache2/depkominfo.go.id/user/users admin htpasswd /etc/apache2/depkominfo.go.id/user/users adhit <Directory /home/depkominfo/secure/member/> AuthType Basic AuthName “Staf Divisi IT Depkominfo” AuthUserFile /etc/apache2/depkominfo.go.id/user/users Require valid-user </Directory>
38
Konfigurasi Modul Auth Basic(cont)
Reload service Apache /etc/init.d/apache2 reload
39
Autentikasi menggunakan Modul MySQL Auth
Informasi user disimpan dalam database MySQL. Mendukung beberapa metode enkripsi, seperti MD5, SHA, dan lain-lain.
40
Installasi Modul MySQL Auth
Gunakan fasilitas apt-get apt-get install libapache2-mod-auth-mysql Reading package lists... Done Building dependency tree Reading state information... Done The following NEW package will be installed: libapache2-mod-auth-mysql 0 upgraded, 1 newly installed, 0 to remove and 364 not upgraded. Need to get 22.4kB of archives.
41
Konfigurasi Modul MySQL Auth
Buat user di database MySQL yang akan kita gunakan untuk koneksi ke database.
42
Konfigurasi Modul MySQL Auth(cont)
Buat database untuk menyimpan tabel user.
43
Konfigurasi Modul MySQL Auth(cont)
Tambahkan baris berikut pada file konfigurasi Apache Tambahkan baris berikut pada konfigurasi Virtual Host atau simpan dalam file .htaccess pada direktori yang akan kita proteksi. Auth_MySQL_Info localhost depkominfo d3pk0minf0 AuthBasicAuthoritative Off AuthName “Khusus Staff IT Divisi Depkominfo - MySQLAuth” AuthType Basic <LIMIT GET POST> Auth_MySQL_DB auth Auth_MySQL_Encrypted_Passwords On Auth_MySQL_Encryption_Types PHP_MD5 Crypt Require valid-user </LIMIT>
44
Konfigurasi Modul MySQL Auth(cont)
Aktifkan modul MySQL Auth dan reload service Apache a2enmod auth_mysql Module auth_mysql installed: run /etc/init.d/apache2 force-reload to enable /etc/init.d/apache2 force-reload Reloading web server config: apache2.
45
Halaman website menggunakan autentikasi MySQL Auth
46
Autentikasi menggunakan Modul PgSQL Auth
Informasi user disimpan di database PostgreSQL Mendukung beberapa metode enkripsi, seperti MD5, SHA, dan lain-lain
47
Installasi Modul PgSQL Auth
Gunakan fasilitas apt-get apt-get install libapache2-mod-auth-pgsql Reading package lists... Done Building dependency tree Reading state information... Done The following NEW package will be installed: libapache2-mod-auth-mysql 0 upgraded, 1 newly installed, 0 to remove and 365 not upgraded. Need to get 19.8kB of archives.
48
Konfigurasi Modul PgSQL Auth
Buat user untuk koneksi ke database PostgreSQL Login sebagai user depkominfo dan buat tabel untuk menyimpan data user(pada bagian ini, kita tidak mengenkripsi password, Anda dapat mencobanya dengan menambahkan beberapa direktif yang tersedia pada modul ini).
49
Konfigurasi Modul PgSQL Auth(cont)
50
Konfigurasi Modul PgSQL Auth(cont)
Tambahkan baris berikut pada konfigurasi Virtual Host atau file .htaccess AuthBasicAuthoritative Off AuthName “Khusus Staff Divisi IT Depkominfo – PgSQL” AuthType Basic Auth_PG_host localhost Auth_PG_port Auth_PG_user depkominfo Auth_PG_pwd d3pk0minf0 Auth_PG_database depkominfo Auth_PG_pwd_table pgsql_auth Auth_PG_uid_field username Auth_PG_pwd_field passwd Auth_PG_encrypted Off <Limit GET POST> Require valid-user </Limit>
51
Konfigurasi Modul PgSQL Auth(cont)
Aktifkan modul PgSQL Auth dan reload service Apache a2enmod auth_pgsql Module auth_pgsql installed: run /etc/init.d/apache2 force-reload to enable /etc/init.d/apache2 force-reload Reloading web server config: apache2.
52
Halaman website menggunakan autentikasi PgSQL Auth
53
Web Application Firewall
Mod Security
54
Mod Security Web Application firewall opensource.
Dikembangkan oleh Ivan Ristic . Dirilis menggunakan lisensi GPL dan Commercial. Tersedia rules untuk memaksimalkan kerja Mod Security.
55
Fitur utama Mod Security
Request filtering. Setiap request yang datang akan dianalisa sebelum request tersebut diproses oleh Web Server atau modul lain. Audit logging Setiap request bisa di-log secara detail untuk proses analisa nantinya. Mendukung teknik anti-evasion secara otomatis. HTTPS filtering Dan lain-lain.
56
Installasi Mod Security
Download paket binary dari Gunakan perintah dpkg untuk menginstall paket.
57
Konfigurasi Mod Security
Salin konfigurasi minimal Mod Security yang terletak di /usr/share/doc/libapache2-mod-security2/examples/ ke file konfigurasi Apache2.
58
Konfigurasi Mod Security(cont)
# Basic configuration options SecRuleEngine On SecRequestBodyAccess On SecResponseBodyAccess Off SecUploadKeepFiles Off # Handling of file uploads SecDebugLog logs/modsec_debug.log # Debug log SecDebugLogLevel 0 SecAuditEngine RelevantOnly # Serial audit log SecAuditLogRelevantStatus ^5 SecAuditLogParts ABIFHZ SecAuditLogType Serial SecAuditLog logs/modsec_audit.log # Maximum request body size we will accept for buffering SecRequestBodyLimit SecRequestBodyInMemoryLimit # Store up to 128 KB in memory # Buffer response bodies of up to 512 KB in length SecResponseBodyLimit
59
Konfigurasi Mod Security(cont)
Aktifkan modul Mod Security dan reload service Apache
60
Chroot Apache menggunakan Mod Security
Chroot akan “memenjarakan” Apache dalam suatu environment sehingga Apache tidak dapat “melihat” proses atau bagian dari filesistem di luar lingkungan tersebut. Untuk menghindari “kerusakan” pada sistem akibat ulah attacker.
61
Konfigurasi Chroot Apache
Buat direktori chroot Tambahkan baris berikut pada file konfigurasi Apache. Reload service Apache mkdir –p /chroot/var/www mkdir –p /chroot/var/run/apache2 mkdir –p /chroot/etc cp /etc/mime.types /chroot/etc/ SecChrootDir /chroot DocumentRoot /chroot/var/www
62
Mengubah Server Signature menggunakan Mod Security
Server Signature adalah informasi yang muncul pada bagian bawah halaman yang di-generate oleh Apache (misal pada halaman directory listing).
63
Mengubah Server Signature menggunakan Mod Security(cont)
Tambahkan baris berikut pada file konfigurasi Apache dan reload service Apache. SecServerSignature “Microsof-IIS/7.0”
64
Mengubah Server Signature menggunakan Mod Security(cont)
65
Reverse Proxy
66
Reverse Proxy Mesin gateway yang memungkinkan sebuah Web server menyediakan content dari Web server lain secara transparan.
67
Reverse Proxy Kelebihan: Menyembunyikan topologi network dari luar.
Client memiliki satu mesin untuk mengakses ke Web server. Mampu menjalankan berbagai aplikasi yang berjalan pada sistem operasi yang berbeda dalam satu mesin. Dan lain-lain.
68
Contoh kasus Depkominfo memiliki sebuah domain
secure.depkominfo.go.id dan sebuah IP public yang bisa diakses dari internet. Depkominfo menginginkan aplikasi server yang berada di Web server private.depkominfo.go.id dapat diakses dari luar (private.depkominfo.go.id adalah domain internal yang menggunakan IP private sehingga tidak dikenal di internet).
69
Konfigurasi Reverse Proxy
Pada mesin secure.depkominfo.go.id Tambahkan baris berikut pada file konfigurasi Virtual Host. Direktif ProxyPass akan memetakan remote server (private.depkominfo.go.id) ke url local server ( Aktifkan modul proxy dan proxy_http menggunakan perintah a2enmod. ProxyPass /private ProxyPassReverse /private
70
Halaman website menggunakan Reverse Proxy
71
Denial of Service
72
TCP SYN Flood Merupakan salah satu bentuk serangan DoS (Denial of Service) dan bertujuan agar server yang menjadi target tidak dapat menyelesaikan TCP handshake sehingga service yang disediakan oleh server menjadi unavailable. Ilustrasi Normal three-way TCP handshake
73
TCP SYN Flood(cont) Pada SYN flood, attacker akan mengirimkan paket SYN dalam jumlah besar kepada target .
74
Contoh TCP SYN Flooding
75
TCP SYN Flood(cont) Untuk melindungi server Anda dari serangan SYN flood, kita bisa membatasi jumlah paket SYN baru yang datang dari client. Untuk menyimpan konfigurasi secara permanen, tambahkan baris berikut pada file /etc/sysctl.conf echo 4096 >/proc/sys/net/ipv4/tcp_max_syn_backlog echo 1 > /proc/sys/net/ipv4/tcp_syncookies net.ipv4.tcp_max_syn_backlog = 4096 net.ipv4.tcp_syncookies = 1
76
Bogon IP Prefiks yang tidak boleh berada dalam tabel routing internet dan merupakan IP public, tetapi tidak didelegasikan atau dialokasikan oleh IANA(Internet Assigned Numbers Authority) atau RIR(Regional Internet Registry). Biasanya digunakan oleh attacker untuk melakukan serangan DDoS atau menyebarkan Spam
77
Memfilter Bogon IP Download database Bogon dari website Gunakan script berikut untuk memasukkan IP Bogon ke dalam tabel filter iptables. Router:# wget #!/bin/bash #Filename: iptables.sh iptables –N BOGONS for x in `grep ^[0-9] bogons-cidr-all.txt` do echo iptables –A BOGONS –s $x –j REJECT iptables –A BOGONS –s $x –j REJECT done
78
Memfilter Bogon IP(cont)
Jalankan script sebagai berikut Router:# ls bogons-cidr-all.txt iptables.sh Router:# sh iptables.sh iptables –A BOGONS –s /7 –j REJECT iptables –A BOGONS –s /8 –j REJECT iptables –A BOGONS –s /8 –j REJECT iptables –A BOGONS –s /8 –j REJECT
Presentasi serupa
© 2024 SlidePlayer.info Inc.
All rights reserved.