Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Oleh Adhit Priyambodo adhit.priyambodo@ametis.co.id Keamanan Web Server Oleh Adhit Priyambodo adhit.priyambodo@ametis.co.id.

Presentasi serupa


Presentasi berjudul: "Oleh Adhit Priyambodo adhit.priyambodo@ametis.co.id Keamanan Web Server Oleh Adhit Priyambodo adhit.priyambodo@ametis.co.id."— Transcript presentasi:

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


Download ppt "Oleh Adhit Priyambodo adhit.priyambodo@ametis.co.id Keamanan Web Server Oleh Adhit Priyambodo adhit.priyambodo@ametis.co.id."

Presentasi serupa


Iklan oleh Google