BUILDING SECURE SERVER SWISS BELLIN - KARAWANG Minggu 12 November 2017 Budi Komarudin Backbox Indonesia
00000
BUILDING SECURE SERVERSWISS BELLIN - KARAWANG
Minggu12 November 2017
Budi KomarudinBackbox Indonesia
PERKENALAN
– Pengajar Cyber Security di Pusdikhub TNI
Angkatan Darat, Cimahi, Bandung.
– Penggerak/Developer Open Source di
Backbox Indonesia.
– Kontributor di National Cyber Security
Defence.
– Server developer di Bnet Karawang.
Budi Komarudin
MATERI
• Pengamanan System Operasi
• Pengamanan Webserver
• Pengamanan SSH
• Pengamanan Database
• Pengamanan Web Application
• Tips Mengamankan Server
PENGAMANAN SYSTEM
OPERASI
• Tentukan system operasi yang menurut kita
lebih baik
• Update & upgrade paket yang terinstall di
server
• Bedakan password antara akun satu dengan
akun yang lain
• Cek log aktivitas di dalam system operasi
• Blok Ip yang mempunyai request terbanyak
• Install antivirus pada server
Review tentang System
Operasi Server
Arch-Kecepatan transfer sangat besar-Arsip exploitasi publik sangat sedikit-Repository database aplikasi ter up to date-Penggunaan resource sangat sedikit-Konfigurasi aplikasi terseting aman secara default
Review tentang System
Operasi Server
OpenBSD-Bisa meminimalisir serangan ddos-Konfigurasi aplikasi terseting lebih aman-Penggunaan disk sangat kecil
Review tentang System
Operasi Server
Review tentang System
Operasi Server
Fedora-Bisa meminimalisir serangan ddos-Repository database aplikasi ter up to date-Punya fitur anti jumping server
Update System
Ubuntu/Debian$ apt update$ apt upgrade
Centos/Fedora$ yum update$ yum upgrade
Slackware$ slackpkg update$ slackpkg upgrade
Arch LInux$ pacman -Syu
OpenBSD$ pkg_add -u
FreeBSD$ pkg update$ pkg upgrade
Kasus Tidak Membedakan
Password
Cek Aktivitas Server
$ lastlog$ history$ tailf -f /var/log/apache2/access.log$ sysdig -c spy_users$ logwatch$ watch netstat --inet$ netstat -ntulp
Cek Aktivitas Port
Instal tsusen$ apt-get install git python-pip python-pcapy screen$ pip install python-geoip python-geoip-geolite2$ git clone https://github.com/stamparm/tsusen
Cara eksekusi$ screen$ cd tsusen$ python tsusen.py
Cek Aktivitas Port
Blok IP Attacker
$ ufw insert 1 deny from 8.8.8.8 to any$ iptables -A INPUT -s 8.8.8.8 -j DROP
Pasang Antivirus
• maldet• clamav• rkhunter• chkrootkit
Pasang Antivirus
$ wget http://www.backboxindonesia.or.id/tmp/maldetect-current.tar.gz$ tar -xf maldetect-current.tar.gz$ cd maldetect-1.6.2/$ bash install.sh$ maldet -a
$ apt install clamav$ clamscan
$ apt install rkhunter$ rkhunter --check
$ apt install chkrootkit$ chkrootkit
PENGAMANAN WEBSERVER
• Sembunyikan versi web server
• Non aktifkan directory listing
• Batasi trafik masuk di setingan web server
Sembunyikan Versi
Aplikasi
$ nano /etc/apache2/conf-available/security.confSet jadi:-ServerToken Prod-ServerSignature Off
Restart apache/etc/init.d/apache2 restart
Sembunyikan Versi
Aplikasi
Sembunyikan Versi
Aplikasi
Nonaktifkan Directory Listing
Hapus script Indexes pada configurasi apache
$ nano /etc/apache2/apache2.confSet jadi:<Directory /var/www/>
Options FollowSymLinksAllowOverride None Require all granted
</Directory>
Nonaktifkan Directory Listing
Nonaktifkan Directory Listing
Batasi Trafic Masuk
$ nano /etc/apache2/apache2.confSet variable pada system-TimeOut 300-MaxClients 100-KeepAliveTimeout 60-LimitRequestFieldSize 500000
$ iptables -I INPUT -p icmp -j DROP
PENGAMANAN SSH
• Rubah port default menjadi port acak
• Jangan set password untuk user root
• Batasi hak akses setiap user saat
menginputkan password yang salah
Ganti Port SSH
$ nano /etc/ssh/sshd_configTambah script:-Port 45012
Restart service ssh/etc/init.d/ssh restart
Batasi Input Password
$ nano /etc/ssh/sshd_configTambah script:-MaxAuthTries 5
Restart service ssh/etc/init.d/ssh restart
SECURING DATABASE
• Gunakan firewall database
• Non aktifkan remote database
• Gunakan password saat mengakses halaman
phpmyadmin
Firewall Database
Installasi$ wget http://www.backboxindonesia.or.id/tmp/dbshield_1-2_amd64.deb$ dpkg -i dbshield_1-2_amd64.deb
$ DBShield
Rubah konfigurasi database yang tadinya port 3306 menjadi port 5000
Firewall Database
DEMO SESSION
Nonaktifkan Remote Database
$ nano /etc/mysql/mysql.conf.d/mysqld.cnf Gantibind-address = 127.0.0.1$ /etc/init.d/mysql restart
Nonaktifkan Remote Database
Password di PHPMyAdmin
$ nano /usr/share/phpmyadmin/index.phpTambahkan script ini:<?php$valid_passwords = array ("jangan" => "diheked");$valid_users = array_keys($valid_passwords);$user = $_SERVER['PHP_AUTH_USER'];$pass = $_SERVER['PHP_AUTH_PW'];$validated = (in_array($user, $valid_users)) && ($pass == $valid_passwords[$user]);
if (!$validated) {header('WWW-Authenticate: Basic realm="My Realm"');header('HTTP/1.0 401 Unauthorized');die ("Mau ngapain hayooo...");
}
Password di PHPMyAdmin
SECURING WEB APPLICATION
• Pasang SSL di web server
• Buat halaman login palsu
• Rubah alamat admin login menjadi halaman
acak
• Buat rule user agent di halaman admin
Pasang SSL di Server
https://www.digitalocean.com/community/tutorials/how-to-secure-apache-with-let-s-encrypt-on-ubuntu-16-04
Pasang SSL di Server
DEMO SESSION
Halaman Login Palsu
Halaman Login Palsu
Alamat url Admin Acak
Rule User Agent
$ nano /var/www/html/admin/index.phpTambahkan script ini:<?php$ua=$_SERVER['HTTP_USER_AGENT'];if($ua == 'secret'):else:echo "Mau ngapain hayoo..";die();endif;
TIPS MENGAMANKAN SERVER
• Bikin rule port yg di buka di firewall
• Nonaktifkan shell pada user yang aktif
• Hack back attacker
Rule Port Firewall
$ ufw enable$ ufw allow 80$ ufw allow 22$ ufw allow 21
Nonaktifkan Shell
$ usermod user -s /bin/falseatau$ usermod user -s /bin/jk_shell
Hack Back Attacker
SEKIAN......