Untuk mengamankan server web Anda yang menggunakan Debian 12, Apache, PHP 8, dan MariaDB, Anda perlu melakukan beberapa langkah pengamanan dari berbagai aspek, termasuk sistem, web server, database, dan firewall. Berikut adalah langkah-langkahnya:
1. Keamanan Dasar Sistem Debian 12
1.1. Update dan Upgrade Sistem
Pastikan sistem Anda selalu diperbarui:
apt update && apt upgrade -y
1.2. Buat Pengguna Baru dan Nonaktifkan Root Login
Buat user baru selain root:
adduser admin
usermod -aG sudo admin
Kemudian, nonaktifkan login root dengan mengedit file:
nano /etc/ssh/sshd_config
Ubah:
PermitRootLogin no
PasswordAuthentication no
Simpan, lalu restart SSH:
systemctl restart ssh
1.3. Gunakan SSH Key untuk Login
Buat kunci SSH di komputer lokal:
ssh-keygen -t rsa -b 4096
Salin kunci publik ke server:
ssh-copy-id admin@IP-SERVER
2. Mengamankan Apache
2.1. Nonaktifkan Modul yang Tidak Perlu
Cek modul yang aktif:
apache2ctl -M
Nonaktifkan modul yang tidak diperlukan, contoh:
a2dismod autoindex
a2dismod status
a2dismod userdir
systemctl restart apache2
2.2. Lindungi File Konfigurasi Apache
Edit file konfigurasi:
nano /etc/apache2/apache2.conf
Tambahkan:
<Directory />
Options None
AllowOverride None
Require all denied
</Directory>
Simpan lalu restart Apache:
systemctl restart apache2
2.3. Sembunyikan Informasi Versi Apache
Edit file:
nano /etc/apache2/conf-enabled/security.conf
Ubah:
ServerTokens Prod
ServerSignature Off
Restart Apache:
systemctl restart apache2
2.4. Batasi Akses ke File Sensitif
Cegah akses ke .htaccess dan file tersembunyi:
nano /etc/apache2/apache2.conf
Tambahkan:
<FilesMatch "^\.">
Require all denied
</FilesMatch>
Restart Apache:
systemctl restart apache2
3. Mengamankan PHP 8
Edit file konfigurasi PHP:
nano /etc/php/8.0/apache2/php.ini
Cari dan ubah:
expose_php = Off
disable_functions = exec,system,shell_exec,passthru,popen,proc_open
allow_url_fopen = Off
display_errors = Off
log_errors = On
Restart Apache:
systemctl restart apache2
4. Mengamankan MariaDB
4.1. Jalankan Skrip Keamanan MariaDB
mysql_secure_installation
Ikuti langkah-langkah:
- Set root password
- Hapus anonymous user
- Larang remote login untuk root
- Hapus database test
4.2. Nonaktifkan Remote Login untuk Root
Edit file konfigurasi MariaDB:
nano /etc/mysql/mariadb.conf.d/50-server.cnf
Tambahkan:
[mysqld]
bind-address = 127.0.0.1
Restart MariaDB:
systemctl restart mariadb
5. Konfigurasi Firewall (UFW)
Pastikan UFW aktif:
apt install ufw -y
ufw enable
Izinkan layanan penting:
ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw status
6. Memasang Fail2Ban
Fail2Ban membantu melindungi dari serangan brute force:
apt install fail2ban -y
Edit konfigurasinya:
nano /etc/fail2ban/jail.local
Tambahkan:
[sshd]
enabled = true
bantime = 3600
findtime = 600
maxretry = 5
Restart Fail2Ban:
systemctl restart fail2ban
7. Menggunakan SSL (HTTPS)
Instal Certbot untuk mendapatkan SSL gratis dari Let’s Encrypt:
apt install certbot python3-certbot-apache -y
certbot --apache
Atur agar SSL diperbarui otomatis:
certbot renew --dry-run
Dengan konfigurasi ini, server web Anda akan jauh lebih aman dari serangan. 🚀