Difference between revisions of "20 Linux Server Hardening Security Tips"
Onnowpurbo (talk | contribs) |
Onnowpurbo (talk | contribs) |
||
(57 intermediate revisions by the same user not shown) | |||
Line 10: | Line 10: | ||
# [[GnuPG]] memungkinkan kita untuk mengenkrip dan sign komunikasi data yang kita lakukan. [[GnuPG]] juga mempunyai sistem manajemen key yang baik dan akses ke berbagai directory public key. | # [[GnuPG]] memungkinkan kita untuk mengenkrip dan sign komunikasi data yang kita lakukan. [[GnuPG]] juga mempunyai sistem manajemen key yang baik dan akses ke berbagai directory public key. | ||
# [[Fugu]] adalah tampilan grafis dari aplikasi commandline [[Secure File Transfer]] ([[SFTP]]). [[SFTP]] mirip dengan [[FTP]], tapi tidak sama dengan [[FTP]] karena semua sesi komunikasi di enkrip. Artinya lebih sukar untuk di tembus oleh pihak ketiga. Aplikasi yang lain adalah [[FileZilla]] - sebuah client cross-platform yang mendukung [[FTP]], FTP over SSL/TLS ([[FTPS]]), dan [[SSH]] File Transfer Protocol ([[SFTP]]). | # [[Fugu]] adalah tampilan grafis dari aplikasi commandline [[Secure File Transfer]] ([[SFTP]]). [[SFTP]] mirip dengan [[FTP]], tapi tidak sama dengan [[FTP]] karena semua sesi komunikasi di enkrip. Artinya lebih sukar untuk di tembus oleh pihak ketiga. Aplikasi yang lain adalah [[FileZilla]] - sebuah client cross-platform yang mendukung [[FTP]], FTP over SSL/TLS ([[FTPS]]), dan [[SSH]] File Transfer Protocol ([[SFTP]]). | ||
− | # [[OpenVPN]] adalah cost-effective, dan ringan SSL VPN. | + | # [[OpenVPN]] adalah solusi cost-effective, dan ringan untuk SSL VPN. |
# [[Lighttpd SSL]] ([[Secure Server Layer]]) konfigurasi dan instalasi https | # [[Lighttpd SSL]] ([[Secure Server Layer]]) konfigurasi dan instalasi https | ||
# [[Apache SSL]] ([[Secure Server Layer]]) konfigurasi dan instalasi https (mod_ssl) | # [[Apache SSL]] ([[Secure Server Layer]]) konfigurasi dan instalasi https (mod_ssl) | ||
Line 36: | Line 36: | ||
==Satu layanan jaringan per sistem atau per VM Instance== | ==Satu layanan jaringan per sistem atau per VM Instance== | ||
− | Jalankan layanan jaringan yang | + | Jalankan layanan jaringan yang berbeda di server atau VM instance yang terpisah. Hal ini membatasi jumlah layanan yang dapat di jebol. Untuk memberikan bayangan, jika semua layanan di pasang dalam satu server atau VM instance, maka jika seorang penyerang berhasil mengexploit sebuah software seperti Apache flow, dia akan memperoleh akses ke seluruh server termasuk layanan sepertu [[MySQL]], [[e-mail]] server dan masih banyak lagi. Lihat bagaimana cara menginstalasi software virtualisasi: |
* Install dan Setup Software Xen Virtualization pada Linux CentOS 5 | * Install dan Setup Software Xen Virtualization pada Linux CentOS 5 | ||
Line 61: | Line 61: | ||
== User Account dan Kebijakan Password Kuat == | == User Account dan Kebijakan Password Kuat == | ||
− | Gunakan perintah useradd/usermod untuk membuat dan memelihara account pengguna. Pastikan Anda memiliki kebijakan password yang baik dan kuat. Sebagai contoh, password yang baik mencakup minimal 8 karakter dan campuran huruf, angka, karakter khusus, | + | Gunakan perintah useradd/usermod untuk membuat dan memelihara account pengguna. Pastikan Anda memiliki kebijakan password yang baik dan kuat. Sebagai contoh, password yang baik mencakup minimal 8 karakter dan campuran huruf, angka, karakter khusus, huruf besar, huruf kecil, dan lain-lain. Yang paling penting adalah memilih password yang bisa Anda ingat. Gunakan tool seperti "ripper John" (di Kali Linux menggunakan perintah john) untuk mengetahui password yang lemah dari pengguna pada server anda. |
+ | |||
+ | Install dan konfigurasi libpam-cracklib untuk menegakkan kebijakan password. Instalasi di Ubuntu, dapat menggunakan perintah, | ||
+ | |||
+ | apt-get install libpam-cracklib | ||
+ | |||
+ | Edit konfigurasi, | ||
+ | |||
+ | vi /etc/pam.d/common-password | ||
+ | |||
+ | Tambahkan, misalnya, | ||
+ | |||
+ | password required pam_cracklib.so retry=2 minlen=10 difok=6 | ||
+ | |||
+ | |||
+ | ===Cek Password yang Lemah=== | ||
+ | |||
+ | Untuk mencek password yang lemah, pada dasarnya kita meng-crack password menggunakan tool seperti john di Kali Linux. Cara yang bisa dilakukan adalah, | ||
+ | |||
+ | Copy (bisa dengan scp) 2 file ini dari server | ||
+ | |||
+ | /etc/passwd | ||
+ | /etc/shadow | ||
+ | |||
+ | Ke komputer Kali Linux, dan lakukan | ||
+ | |||
+ | unshadow passwd shadow > unshadowed.txt | ||
+ | john --wordlist=/usr/share/john/password.lst --rules unshadowed.txt | ||
===Umur Password=== | ===Umur Password=== | ||
Line 68: | Line 95: | ||
chage -M 99999 userName | chage -M 99999 userName | ||
+ | |||
+ | Untuk men-set X hari, masukan | ||
+ | |||
+ | chage -M X userName | ||
Untuk mendapatkan informasi password yang telah kadaluarsa, masukkan: | Untuk mendapatkan informasi password yang telah kadaluarsa, masukkan: | ||
Line 95: | Line 126: | ||
* Search for all account without password and lock them | * Search for all account without password and lock them | ||
* Use Linux groups to enhance security | * Use Linux groups to enhance security | ||
+ | |||
+ | ===Paksa Ubah Password=== | ||
+ | |||
+ | Untuk memaksa mengubah password saat login pertama kali | ||
+ | |||
+ | chage -d 0 <username> | ||
===Pembatasan Penggunaan Password Lama=== | ===Pembatasan Penggunaan Password Lama=== | ||
Anda dapat menghalangi / membatasi pengguna dalam menggunakan atau mendaur ulang password lama menggunakan Linux. Parameter modul pam_unix dapat dikonfigurasi untuk mengingat password terdahulu yang tidak dapat digunakan kembali. | Anda dapat menghalangi / membatasi pengguna dalam menggunakan atau mendaur ulang password lama menggunakan Linux. Parameter modul pam_unix dapat dikonfigurasi untuk mengingat password terdahulu yang tidak dapat digunakan kembali. | ||
+ | |||
+ | Di Ubuntu edit, | ||
+ | |||
+ | vi /etc/pam.d/common-password | ||
+ | |||
+ | Tambahkan | ||
+ | |||
+ | password sufficient pam_unix.so use_authtok md5 shadow remember=13 | ||
+ | |||
+ | atau | ||
+ | |||
+ | password sufficient pam_unix2.so use_authtok md5 shadow remember=13 | ||
===Kunci Account User setelah beberapa kali gagal Login=== | ===Kunci Account User setelah beberapa kali gagal Login=== | ||
Line 105: | Line 154: | ||
faillog | faillog | ||
+ | |||
+ | atau lihat | ||
+ | |||
+ | /var/log/auth.log | ||
+ | |||
+ | Install dan konfigurasi libpam-cracklib untuk menegakkan kebijakan password. Mengaktifkan faillog di Ubuntu, edit | ||
+ | |||
+ | vi /etc/pam.d/common-auth | ||
+ | |||
+ | Masukan di paling atas | ||
+ | |||
+ | auth required pam_tally.so no_magic_root | ||
+ | account required pam_tally.so deny=3 no_magic_root lock_time=300 | ||
Untuk mengunci sebuah account setelah gagal login, jalankan: | Untuk mengunci sebuah account setelah gagal login, jalankan: | ||
Line 120: | Line 182: | ||
===Verifikasi tidak ada Account dengan password kosong?=== | ===Verifikasi tidak ada Account dengan password kosong?=== | ||
− | + | Untuk mem-verifikasi agar tidak ada Account dengan password kosong dapat dilakukan dengan ketik perintah berikut | |
# awk -F: '($2 == "") {print}' /etc/shadow | # awk -F: '($2 == "") {print}' /etc/shadow | ||
− | + | Selanjutnya, kita bisa mengunci account dengan [[password]] kosong: | |
# passwd -l accountName | # passwd -l accountName | ||
Line 139: | Line 201: | ||
Jika anda melihat kalimat yang lain, buang atau pastikan account tersebut memang di ijinkan untuk menggunakan UID 0. | Jika anda melihat kalimat yang lain, buang atau pastikan account tersebut memang di ijinkan untuk menggunakan UID 0. | ||
+ | |||
+ | ==Aktifkan sudoer== | ||
+ | |||
+ | Aktifkan beberapa user untuk menjadi superuser | ||
+ | Buat usernya, | ||
+ | |||
+ | adduser UserName | ||
+ | passwd UserName | ||
+ | |||
+ | Install sudo | ||
+ | |||
+ | apt install sudo | ||
+ | |||
+ | Masukan UserName sebagai sudo | ||
+ | |||
+ | usermod –aG wheel UserName | ||
+ | |||
+ | Test | ||
+ | |||
+ | su - UserName | ||
+ | sudo ls -la /root | ||
+ | |||
+ | Alternatif lain edit file /etc/sudoers | ||
+ | |||
+ | visudo | ||
+ | |||
+ | pastikan ada, | ||
+ | |||
+ | root ALL=(ALL) ALL | ||
+ | UserName ALL=(ALL) ALL | ||
+ | |||
+ | Test | ||
+ | |||
+ | su — UserName | ||
+ | sudo ls —la /root | ||
+ | |||
+ | |||
+ | |||
==Disable Login sebagai root== | ==Disable Login sebagai root== | ||
− | Jangan pernah login sebagai user root. Anda sebaiknya menggunakan sudo untuk menjalankan perintah level root jika diperlukan. sudo ini dapat meningkatkan keamanan sistem tanpa berbagi password root dengan pengguna lainnya dan admin. Perintah sudo juga menyediakan audit sederhana dan fitur pelacakan. | + | |
+ | Jangan pernah remote login sebagai user root. Anda sebaiknya menggunakan sudo untuk menjalankan perintah level root jika diperlukan. sudo ini dapat meningkatkan keamanan sistem tanpa berbagi password root dengan pengguna lainnya dan admin. Perintah sudo juga menyediakan audit sederhana dan fitur pelacakan. | ||
+ | |||
+ | Disable remote login root, dengan edit | ||
+ | |||
+ | vi /etc/ssh/sshd_config | ||
+ | |||
+ | Pastikan | ||
+ | |||
+ | PermitRootLogin prohibit-password | ||
+ | StrictModes yes | ||
+ | |||
+ | atau yang lebih ketat, | ||
+ | |||
+ | PermitRootLogin no | ||
==Keamanan Fisik Server== | ==Keamanan Fisik Server== | ||
Line 151: | Line 265: | ||
==Disable Layanan Yang Tidak Perlu== | ==Disable Layanan Yang Tidak Perlu== | ||
− | + | Agar server aman, kita perlu me-nonaktif-kan semua layanan yang tidak perlu dan daemon (layanan yang berjalan di latar belakang). Kita harus menghapus semua layanan yang tidak perlu dari sistem start-up. Ketikkan perintah berikut untuk melihat daftar semua layanan yang dihidupkan secara otomatis pada saat boot di runlevel #3: | |
− | + | chkconfig --list | grep '3:on' | |
Untuk mematikan layanan dan disable saat boot, masukkan: | Untuk mematikan layanan dan disable saat boot, masukkan: | ||
− | + | service serviceName stop | |
− | # chkconfig | + | chkconfig serviceName off |
+ | |||
+ | Di Ubuntu, agak berbeda dengan RedHat, untuk melihat servis yang enabled (runlevel #3 on) bisa menggunakan | ||
+ | |||
+ | systemctl list-unit-files -t service | grep enabled | ||
+ | systemctl list-unit-files --type=service | grep enabled | ||
+ | |||
+ | |||
+ | Untuk mematikan / disable saat boot, bisa ketik | ||
+ | |||
+ | systemctl disable serviceName | ||
+ | |||
+ | List Perbandingan Perintah chkconfig vs. systemctl | ||
+ | |||
+ | |||
+ | {| border="1" cellpadding=2 style="border-collapse: collapse" | ||
+ | ! SysVinit | ||
+ | ! systemd | ||
+ | |- | ||
+ | | service example start | ||
+ | | systemctl start example | ||
+ | |- | ||
+ | | service example stop | ||
+ | | systemctl stop example | ||
+ | |- | ||
+ | | service example restart | ||
+ | | systemctl restart example | ||
+ | |- | ||
+ | | service example reload | ||
+ | | systemctl reload example | ||
+ | |- | ||
+ | | service example condrestart | ||
+ | | systemctl condrestart example | ||
+ | |- | ||
+ | | service example status | ||
+ | | systemctl status example | ||
+ | |- | ||
+ | | chkconfig example on | ||
+ | | systemctl enable example | ||
+ | |- | ||
+ | | chkconfig example off | ||
+ | | systemctl disable example | ||
+ | |- | ||
+ | | chkconfig example --list | ||
+ | | systemctl is-enabled example | ||
+ | |- | ||
+ | | chkconfig | ||
+ | | systemctl list-unit-files --type=service | ||
+ | |- | ||
+ | | chkconfig example --add | ||
+ | | systemctl daemon-reload | ||
+ | |} | ||
+ | |||
===Mencari Port Network yang Aktif=== | ===Mencari Port Network yang Aktif=== | ||
Line 171: | Line 337: | ||
nmap -sT -O server.example.com | nmap -sT -O server.example.com | ||
− | Gunakan iptables untuk menutup port tersebut atau matikan layanan jaringan yang tidak di inginkan dan gunakan perintah | + | Gunakan iptables untuk menutup port tersebut atau matikan layanan jaringan yang tidak di inginkan dan gunakan perintah systemctl. |
− | === | + | ====Detect Port Scan==== |
− | + | Install | |
− | + | ||
− | * | + | sudo apt-get install psad |
+ | |||
+ | Edit | ||
+ | |||
+ | vi /etc/syslog.conf | ||
+ | |||
+ | kern.info |/var/lib/psad/psadfifo | ||
+ | |||
+ | |||
+ | Restart | ||
+ | |||
+ | /etc/init.d/sysklogd restart | ||
+ | /etc/init.d/klogd | ||
+ | |||
+ | Edit | ||
+ | |||
+ | vi /etc/psad/psad.conf | ||
+ | |||
+ | EMAIL_ADDRESSES vivek@nixcraft.in; | ||
+ | HOSTNAME server.nixcraft.in; | ||
+ | HOME_NET NOT_USED; ### only one interface on box | ||
+ | IGNORE_PORTS udp/53, udp/5000; | ||
+ | ENABLE_AUTO_IDS Y; | ||
+ | IPTABLES_BLOCK_METHOD Y; | ||
+ | |||
+ | Restart | ||
+ | |||
+ | /etc/init.d/psad restart | ||
+ | |||
+ | |||
+ | Modif iptables | ||
+ | |||
+ | iptables -A INPUT -j LOG | ||
+ | iptables -A FORWARD -j LOG | ||
+ | |||
+ | Report | ||
+ | |||
+ | psad -S | ||
+ | |||
+ | Detail iptables ada di | ||
+ | https://www.cyberciti.biz/faq/linux-detect-port-scan-attacks/ | ||
+ | |||
+ | ====Netstat untuk melihat serangan==== | ||
+ | |||
+ | * [[Netstat: melihat serangan dari netstat]] | ||
==Hapus X Windows== | ==Hapus X Windows== | ||
Line 195: | Line 405: | ||
==Linux Kernel /etc/sysctl.conf Hardening== | ==Linux Kernel /etc/sysctl.conf Hardening== | ||
− | /etc/sysctl.conf adalah file yang digunakan untuk mengkonfigurasi parameter kernel pada saat runtime. Linux membaca dan menerapkan pengaturan dari /etc/sysctl.conf pada saat boot. Contoh konfigurasi pada /etc/sysctl.conf: | + | /etc/sysctl.conf adalah file yang digunakan untuk mengkonfigurasi parameter kernel pada saat runtime. Linux membaca dan menerapkan pengaturan dari /etc/sysctl.conf pada saat boot. Contoh penguatan konfigurasi pada /etc/sysctl.conf: |
# Turn on execshield | # Turn on execshield | ||
Line 210: | Line 420: | ||
net.ipv4.conf.all.log_martians = 1 | net.ipv4.conf.all.log_martians = 1 | ||
− | == | + | ==Pisahkan Partisi Disk== |
− | + | Pisahkan file [[sistem operasi]] dari file user agar system lebih baik dan lebih aman. Pastikan file system berikut di mount di partisi yang berbeda: | |
* /usr | * /usr | ||
Line 219: | Line 429: | ||
* /tmp | * /tmp | ||
− | + | Buat partis yang beda untuk root dari Apache dan FTP server. Edit file /etc/fstab dan pastikan tambahkan opsi konfigurasi berikut: | |
− | # noexec - | + | # noexec - Tidak bisa menjalankan (execute) semua binary di partisi tersebut (binary tidak bisa di exec tapi script di ijinkan). |
− | # nodev - | + | # nodev - Tidak mengijinkan device character atau device spesial lainnya di partisi tersebut (device file seperti zero, sda dll tidak dapat digunakan). |
− | # nosuid - | + | # nosuid - Tidak dapat menset akses SUID/SGID di partisi ini (menghalangi setuid bit). |
− | + | Contoh isi /etc/fstab untuk membatasi akses user ke /dev/sda5 (ftp server root directory): | |
/dev/sda5 /ftpdata ext3 defaults,nosuid,nodev,noexec 1 2 | /dev/sda5 /ftpdata ext3 defaults,nosuid,nodev,noexec 1 2 | ||
Line 235: | Line 445: | ||
# Aktifkan kuota per sistem file dengan memodifikasi file /etc/fstab. | # Aktifkan kuota per sistem file dengan memodifikasi file /etc/fstab. | ||
# Lakukan remount file system (s). | # Lakukan remount file system (s). | ||
− | # Membuat database file | + | # Membuat database file kuots dan menghasilkan tabel penggunaan disk. |
# Tetapkan kebijakan kuota. | # Tetapkan kebijakan kuota. | ||
# Lihat tutorial penerapan kuota disk untuk rincian lebih lanjut. | # Lihat tutorial penerapan kuota disk untuk rincian lebih lanjut. | ||
Line 248: | Line 458: | ||
* konfigurasi Firewall Linux untuk IPv6 beserta script lain yang tersedia klik di sini. | * konfigurasi Firewall Linux untuk IPv6 beserta script lain yang tersedia klik di sini. | ||
− | == | + | ==Matikan Binari dengan SUID dan SGID Yang Tidak Diinginkan== |
− | + | Semua bit SUID/SGID yang di enable dapat di salahgunakan saat SUID/SGID executable ada masalah keamanan atau bug. Semua local atau remote user akan dapat menggunakan file tersebut. Ada baiknya kita mencari semua file tersebut, untuk mencarinya dapat menggunakan perintah berikut: | |
#See all set user id files: | #See all set user id files: | ||
Line 260: | Line 470: | ||
find / -path -prune -o -type f -perm +6000 -ls | find / -path -prune -o -type f -perm +6000 -ls | ||
− | + | Anda perlu melakukan analisa / investigasi pada setiap file yang di laporkan. See reported file man page for further details. | |
− | |||
− | + | ===File yang World-Writable=== | |
+ | |||
+ | Semua orang dapat memodifikasi file yang world-writable yang menyebabkan masalah keamanan. Gunakan perintah berikut untuk menemukan semua file yang di set world writable dan sticky bits: | ||
find /dir -xdev -type d \( -perm -0002 -a ! -perm -1000 \) -print | find /dir -xdev -type d \( -perm -0002 -a ! -perm -1000 \) -print | ||
− | + | Kita perlu melakukan analisa dari semua file yang di laporkan dan set ijin user dan group yang benar atau bahkan membuang / men-delete-nya sekalian. | |
− | ===Noowner | + | ===File Noowner=== |
− | + | File yang tidak ada pemiliknya dapat menyebabkan masalah keamanan. Cari file tersebut menggunakan perintah berikut | |
find /dir -xdev \( -nouser -o -nogroup \) -print | find /dir -xdev \( -nouser -o -nogroup \) -print | ||
+ | find / -xdev \( -nouser -o -nogroup \) -print | ||
− | + | Kita perlu melakukan analisa pada setiap file yang di laporkan dan kita perlu memberikan user & group yang benar atau membuang / men-delete file tersebut. | |
− | == | + | ==Gunakan Layanan Authentikasi Terpusat== |
− | + | Tanpa system authentikasi yang terpusat, data user auth menjadi tidak konsisten, yang mungkin akan menyebabkan banyak data, credential, account yang out-of-date tidak ter-delete. Sebuah layanan authentikasi yang terpusat memungkinkan kita untuk memelihara kontrol terhadap data Linux / UNIX account dan authentikasi. Kita dapat menyimpan data auth yang tersinkonisasi pada beberapa server. Jangan menggunakan layanan NIS untuk authentikasi yang terpusat. Gunakan OpenLDAP untuk client dan server. | |
===Kerberos=== | ===Kerberos=== | ||
− | Kerberos | + | Kerberos akan melakukan authentikasi sebagai sebuah layanan authentikasi pihak ketiga yang dapat di percaya menggunakan cryptographic shared secret dengan asumsi packet akan berjalan di sebuah jaringan yang tidak aman yang dapat dibaca, di modifikasi dan di insert / dimasukan. Kerberos dibangun menggunakan [[symmetric-key cryptography]] dan membutuhkan sebuah pusat distribusi kunci (key). Kita dapat membuat remote login, remote copy, copy file inter-system secara aman dan berbagai pekerjaan dengan resiko tinggi secara aman dan banyak lagi yang dapat di kontrol oleh Kerberos. Oleh karenanya, jika pengguna melakukan authentikasi untuk layanan jaringan menggunakan Kerberos, maka pengguna yang tidak di undang yang berusaha untuk memperoleh password dengan cara memonitor traffic di jaringan pada dasarnya akan tersingkir dengan sendirinya. See how to setup and use Kerberos. |
− | ==Logging | + | ==Logging dan Auditing== |
− | + | Kita perlu mengkonfigurasi logging dan auditing untuk mencatat semua usaha hacking dan cracking. Secara default syslog akan menyimpan data di directory /var/log/. Catatan ini sangat berguna untuk melihat jika ada software yang salah konfigurasi yang menjadikan sistem kita terbuka terhadap serangan. Ada baiknya melihat artikel yang berkaitan dengan logging berikut: | |
# [[Linux log file locations]] | # [[Linux log file locations]] | ||
Line 295: | Line 507: | ||
# man pages syslogd, syslog.conf and logrotate. | # man pages syslogd, syslog.conf and logrotate. | ||
− | ===Monitor | + | ===Monitor Message Log yang mencurigakan menggunakan Logwatch / Logcheck=== |
− | + | Membaca log menggunakan logwatch atau logcheck. Install menggunakan perintah | |
+ | |||
+ | apt-get install logcheck | ||
+ | apt-get install logwatch | ||
+ | |||
+ | Dengan tool ini akan membuat pembacaan log menjadi lebih mudah. Kita dapat memperoleh laporan yang lebih detail dari hal yang mencurigakan di syslog melalui e-mail. | ||
+ | Menjalankan menggunakan perintah | ||
+ | |||
+ | sudo -u logcheck logcheck | ||
+ | |||
+ | Sebuah contoh dari laporan syslog adalah sebagai berikut: | ||
################### Logwatch 7.3 (03/24/06) #################### | ################### Logwatch 7.3 (03/24/06) #################### | ||
Line 348: | Line 570: | ||
(Note output is truncated) | (Note output is truncated) | ||
− | |||
− | + | ===System Accounting menggunakan auditd=== | |
+ | |||
+ | auditd adalah layanan untuk melakukan system auditing. Dia bertanggung jawab untuk menulis catatan audit ke disk. Pada saat startup, aturan di /etc/audit.rules akan di baca oleh daemon ini. Kita dapat membuka file /etc/audit.rules dan membuat perubahan seperti setup audit log file dan berbagai opsi lainnya. Dengan auditd kita dapat menjawab pertanyaan berikut: | ||
# System startup and shutdown events (reboot / halt). | # System startup and shutdown events (reboot / halt). | ||
Line 366: | Line 589: | ||
==Secure OpenSSH Server== | ==Secure OpenSSH Server== | ||
− | + | SSH protocol di rekomendasikan untuk melakukan remote login dan remote transfer file. Akan tetapi, ssh sangat terbuka akan serangan. Cara membuat aman OpenSSH server dapat di baca di: | |
* Top 20 OpenSSH Server Best Security Practices. | * Top 20 OpenSSH Server Best Security Practices. | ||
− | == | + | ==Instalasi dan Penggunaan Intrusion Detection System== |
− | + | Sebuah [[network intrusion detection system]] ([[NIDS]]) adalah sebuah [[intrusion detection system]] yang akan berusaha mendeteksi berbagai aktifitas yang tidak baik seperti serangan [[denial of service]], port scans atau bahkan usaha untuk mengcrack ke dalam komputer dengan cara memonitor traffic jaringan. | |
− | + | Sebaiknya dilakukan mengecekan integritas software sebelum system online dan masuk ke lingkungan produksi / operasional. Jika di mungkinkan ada baiknya di install software AIDE sebelum system tersambung ke jaringan apapun. AIDE adalah sebuah host-based intrusion detection system (HIDS) dia akan memonitor dan analisa internal dari system. | |
Snort is a software for intrusion detection which is capable of performing packet logging and real-time traffic analysis on IP networks. | Snort is a software for intrusion detection which is capable of performing packet logging and real-time traffic analysis on IP networks. | ||
Line 423: | Line 646: | ||
* [[Keamanan Jaringan]] | * [[Keamanan Jaringan]] | ||
+ | * [[Cyber Security: Detect and remove trojans in a Linux operating system]] | ||
[[Category: Linux]] | [[Category: Linux]] |
Latest revision as of 02:41, 15 June 2023
Sumber: http://www.cyberciti.biz/tips/linux-security.html
Mengamankan server Linux anda sangat penting untuk memproteksi data, hak cipta, dan waktu, dari tangan2 jahil para cracker. Sistem administrator bertanggung jawab untuk keamanan linux. Pada bagian ini akan di jelaskan 20 tip untuk mengamankan instalasi linux standard.
Enkripsi Komunikasi Data
Semua data yang di kirimkan melalui jaringan akan terbuka untuk di monitoring. Enkrip data yang dikirim sebisa mungkin dengan password atau menggunakan kunci / key / sertifikat.
- Gunakan scp, ssh, rsync, atau sftp untuk melakukan file transfer. Kita juga dapat me-mount file system di remote server atau home directory kita menggunakan sshfs dan fuse tool.
- GnuPG memungkinkan kita untuk mengenkrip dan sign komunikasi data yang kita lakukan. GnuPG juga mempunyai sistem manajemen key yang baik dan akses ke berbagai directory public key.
- Fugu adalah tampilan grafis dari aplikasi commandline Secure File Transfer (SFTP). SFTP mirip dengan FTP, tapi tidak sama dengan FTP karena semua sesi komunikasi di enkrip. Artinya lebih sukar untuk di tembus oleh pihak ketiga. Aplikasi yang lain adalah FileZilla - sebuah client cross-platform yang mendukung FTP, FTP over SSL/TLS (FTPS), dan SSH File Transfer Protocol (SFTP).
- OpenVPN adalah solusi cost-effective, dan ringan untuk SSL VPN.
- Lighttpd SSL (Secure Server Layer) konfigurasi dan instalasi https
- Apache SSL (Secure Server Layer) konfigurasi dan instalasi https (mod_ssl)
Jangan gunakan FTP, Telnet, dan Rlogin / Rsh
Dalam kondisi jaringan yang normal, maka username, password, dari perintah FTP / telnet / rsh dan proses transfer file akan dengan mudah di tangkap oleh mereka yang berada di jaringan yang sama mengunakan sniffer. Solusi untuk hal ini dapat menggunakan OpenSSH , SFTP, atau FTPS (FTP over SSL), yang menambahkan enkripsi SSL atau TLS ke FTP. di turunan RedHat kita dapat menulis perintah berikut untuk membuang perintah NIS, rsh dan berbagai layanan yang kadaluarsa lainnya:
# yum erase inetd xinetd ypserv tftp-server telnet-server rsh-serve
Minimalkan Software Aplikasi untuk Minimalisasi Kelemahan
Apakah kita membutuhkan berbagai layanan terinstalasi? Hindari instalasi software yang tidak dibutuhkan untuk menghindari kelemahan di software. Gunakan RPM package manager seperti yum atau apt-get dan / atau dpkg untuk melihat semua software yang terinstalasi di sistem. Delete paket yang tidak di inginkan.
# yum list installed # yum list packageName # yum remove packageName
atau
# dpkg --list # dpkg --info packageName # apt-get remove packageName
Satu layanan jaringan per sistem atau per VM Instance
Jalankan layanan jaringan yang berbeda di server atau VM instance yang terpisah. Hal ini membatasi jumlah layanan yang dapat di jebol. Untuk memberikan bayangan, jika semua layanan di pasang dalam satu server atau VM instance, maka jika seorang penyerang berhasil mengexploit sebuah software seperti Apache flow, dia akan memperoleh akses ke seluruh server termasuk layanan sepertu MySQL, e-mail server dan masih banyak lagi. Lihat bagaimana cara menginstalasi software virtualisasi:
- Install dan Setup Software Xen Virtualization pada Linux CentOS 5
- Bagaimana Cara Setup OpenVZ pada RHEL / Linux CentOS
Menjaga Kernel Linux dan Software Tetap Up to Date
Menerapkan patch keamanan merupakan bagian penting dari menjaga server Linux. Linux menyediakan semua alat yang diperlukan untuk menjaga sistem anda diperbarui, dan juga memungkinkan untuk upgrade antar versi dengan mudah. Semua pembaruan keamanan harus ditinjau ulang dan diterapkan sesegera mungkin. Sekali lagi, gunakan manajer paket RPM seperti yum dan atau apt-get dan atau dpkg untuk menerapkan semua update keamanan.
# yum update
atau
# apt-get update && apt-get upgrade
Anda dapat mengkonfigurasi Red Hat / CentOS / Fedora Linux untuk mengirim notifikasi update paket yum update email. Pilihan lain adalah dengan menggunakan semua update keamanan melalui cron job. Dalam Debian / Ubuntu Linux Anda dapat menggunakan apticron untuk mengirim notifikasi keamanan.
Menggunakan Linux Security Extension
Linux hadir dengan berbagai patch keamanan yang dapat digunakan untuk menjaga terhadap program yang salah konfigurasi atau yang diambil alih pihak lain. Jika memungkinkan menggunakan SELinux dan ekstensi keamanan Linux lainnya untuk melakukan pembatasan pada jaringan dan program lainnya. Sebagai contoh, SELinux menyediakan berbagai kebijakan keamanan untuk kernel Linux.
SELinux
Saya sangat menyarankan menggunakan SELinux yang menyediakan sebuah Mandatory Access Control (MAC) yang fleksibel. Berdasarkan standar Linux Discretionary Access Control (DAC), sebuah aplikasi atau proses yang berjalan sebagai user (UID atau SUID) memiliki izin pengguna untuk objek seperti file, socket dan proses lainnya. Menjalankan sebuah kernel MAC melindungi sistem dari aplikasi berbahaya atau cacat yang dapat merusak atau menghancurkan sistem. Lihat dokumentasi Redhat resmi yang menjelaskan konfigurasi SELinux.
User Account dan Kebijakan Password Kuat
Gunakan perintah useradd/usermod untuk membuat dan memelihara account pengguna. Pastikan Anda memiliki kebijakan password yang baik dan kuat. Sebagai contoh, password yang baik mencakup minimal 8 karakter dan campuran huruf, angka, karakter khusus, huruf besar, huruf kecil, dan lain-lain. Yang paling penting adalah memilih password yang bisa Anda ingat. Gunakan tool seperti "ripper John" (di Kali Linux menggunakan perintah john) untuk mengetahui password yang lemah dari pengguna pada server anda.
Install dan konfigurasi libpam-cracklib untuk menegakkan kebijakan password. Instalasi di Ubuntu, dapat menggunakan perintah,
apt-get install libpam-cracklib
Edit konfigurasi,
vi /etc/pam.d/common-password
Tambahkan, misalnya,
password required pam_cracklib.so retry=2 minlen=10 difok=6
Cek Password yang Lemah
Untuk mencek password yang lemah, pada dasarnya kita meng-crack password menggunakan tool seperti john di Kali Linux. Cara yang bisa dilakukan adalah,
Copy (bisa dengan scp) 2 file ini dari server
/etc/passwd /etc/shadow
Ke komputer Kali Linux, dan lakukan
unshadow passwd shadow > unshadowed.txt john --wordlist=/usr/share/john/password.lst --rules unshadowed.txt
Umur Password
Perintah change mengubah jumlah hari antara perubahan password dan tanggal perubahan password terakhir. Informasi ini digunakan oleh sistem untuk menentukan kapan seorang pengguna harus mengubah passwordnya. File /etc/login.defs mendefinisikan konfigurasi situs-khusus untuk deretan shadow password termasuk konfigurasi umur password. Untuk menonaktifkan fitur umur password, masukkan:
chage -M 99999 userName
Untuk men-set X hari, masukan
chage -M X userName
Untuk mendapatkan informasi password yang telah kadaluarsa, masukkan:
chage -l userName
Akhirnya, Anda juga dapat mengedit /etc/shadow seperti berikut:
{userName}:{password}:{lastpasswdchanged}:{Minimum_days}:{Maximum_days}:{Warn}:{Inactive}:{Expire}:
Dimana,
- Minimum_days: Jumlah minimum dari hari yang diperlukan antara perubahan password, yaitu jumlah hari yang tersisa sebelum pengguna diijinkan mengubah passwordnya.
- Maximum_days: Jumlah maksimum hari password berlaku (setelah itu pengguna akan dipaksa untuk mengubah passwordnya).
- Warn : Jumlah hari sebelum password akan berakhir, pengguna akan diperingatkan bahwa passwordnya harus diubah.
- Expire : Tanggal mutlak saat login tidak mungkin lagi dapat dilakukan.
Sebaiknya untuk tidak mengedit /etc/shadow secara langsung:
# chage -M 60 -m 7 -W 7 userName
Rekomendasi Bacaan:
- Linux: Force Users To Change Their Passwords Upon First Login
- Linux turn On / Off password expiration / aging
- Lock the user password
- Search for all account without password and lock them
- Use Linux groups to enhance security
Paksa Ubah Password
Untuk memaksa mengubah password saat login pertama kali
chage -d 0 <username>
Pembatasan Penggunaan Password Lama
Anda dapat menghalangi / membatasi pengguna dalam menggunakan atau mendaur ulang password lama menggunakan Linux. Parameter modul pam_unix dapat dikonfigurasi untuk mengingat password terdahulu yang tidak dapat digunakan kembali.
Di Ubuntu edit,
vi /etc/pam.d/common-password
Tambahkan
password sufficient pam_unix.so use_authtok md5 shadow remember=13
atau
password sufficient pam_unix2.so use_authtok md5 shadow remember=13
Kunci Account User setelah beberapa kali gagal Login
Di Linux kita dapat menggunakan perintah faillog untuk memperlihatkan catatan faillog atau untuk menset batas kegagalan login. faillog akan mem-format tampilan / content dari catatan log dari database / log file /var/log/faillog. Dia juga dapat digunakan untuk menghitung dan membatasi kegagalan login. Untuk melihat percobaan login yang gagal, tulis:
faillog
atau lihat
/var/log/auth.log
Install dan konfigurasi libpam-cracklib untuk menegakkan kebijakan password. Mengaktifkan faillog di Ubuntu, edit
vi /etc/pam.d/common-auth
Masukan di paling atas
auth required pam_tally.so no_magic_root account required pam_tally.so deny=3 no_magic_root lock_time=300
Untuk mengunci sebuah account setelah gagal login, jalankan:
faillog -r -u userName
Kita dapat menggunakan perintah passwd untuk mengunci dan membuka kunci sebuah account:
# kunci account passwd -l userName
# membuka kunci account passwd -u userName
Verifikasi tidak ada Account dengan password kosong?
Untuk mem-verifikasi agar tidak ada Account dengan password kosong dapat dilakukan dengan ketik perintah berikut
# awk -F: '($2 == "") {print}' /etc/shadow
Selanjutnya, kita bisa mengunci account dengan password kosong:
# passwd -l accountName
Pastikan tidak ada Account Non-Root yang mempunyai UID 0
Hanya account root yang mempunyai UID 0 dengan ijin penuh untuk mengakses system. Tuliskan perintah berikut untuk menampilkan semua account dengan UID yang di set 0:
# awk -F: '($3 == "0") {print}' /etc/passwd
Anda harusnya hanya melihat satu kalimat ini
root:x:0:0:root:/root:/bin/bash
Jika anda melihat kalimat yang lain, buang atau pastikan account tersebut memang di ijinkan untuk menggunakan UID 0.
Aktifkan sudoer
Aktifkan beberapa user untuk menjadi superuser Buat usernya,
adduser UserName passwd UserName
Install sudo
apt install sudo
Masukan UserName sebagai sudo
usermod –aG wheel UserName
Test
su - UserName sudo ls -la /root
Alternatif lain edit file /etc/sudoers
visudo
pastikan ada,
root ALL=(ALL) ALL UserName ALL=(ALL) ALL
Test
su — UserName sudo ls —la /root
Disable Login sebagai root
Jangan pernah remote login sebagai user root. Anda sebaiknya menggunakan sudo untuk menjalankan perintah level root jika diperlukan. sudo ini dapat meningkatkan keamanan sistem tanpa berbagi password root dengan pengguna lainnya dan admin. Perintah sudo juga menyediakan audit sederhana dan fitur pelacakan.
Disable remote login root, dengan edit
vi /etc/ssh/sshd_config
Pastikan
PermitRootLogin prohibit-password StrictModes yes
atau yang lebih ketat,
PermitRootLogin no
Keamanan Fisik Server
Anda harus melindungi akses terhadap server Linux secara fisik. Lakukan konfigurasi pada BIOS seperti menonaktifkan boot dari perangkat eksternal seperti DVD/CD/USB. Anda juga dapat menambahkan password pada grub boot loader untuk memperketat akses terhadap server Linux. Anda juga disarankau untuk menyimpan Data penting yang terkait dengan produksi harus terkunci di IDCs (Internet Data Center) dan semua orang harus melewati semacam pemeriksaan keamanan sebelum mengakses server Anda. Lihat juga:
- 9 Tips Untuk Melindungi akses terhadap server Linux secara Fisik.
Disable Layanan Yang Tidak Perlu
Agar server aman, kita perlu me-nonaktif-kan semua layanan yang tidak perlu dan daemon (layanan yang berjalan di latar belakang). Kita harus menghapus semua layanan yang tidak perlu dari sistem start-up. Ketikkan perintah berikut untuk melihat daftar semua layanan yang dihidupkan secara otomatis pada saat boot di runlevel #3:
chkconfig --list | grep '3:on'
Untuk mematikan layanan dan disable saat boot, masukkan:
service serviceName stop chkconfig serviceName off
Di Ubuntu, agak berbeda dengan RedHat, untuk melihat servis yang enabled (runlevel #3 on) bisa menggunakan
systemctl list-unit-files -t service | grep enabled systemctl list-unit-files --type=service | grep enabled
Untuk mematikan / disable saat boot, bisa ketik
systemctl disable serviceName
List Perbandingan Perintah chkconfig vs. systemctl
SysVinit | systemd |
---|---|
service example start | systemctl start example |
service example stop | systemctl stop example |
service example restart | systemctl restart example |
service example reload | systemctl reload example |
service example condrestart | systemctl condrestart example |
service example status | systemctl status example |
chkconfig example on | systemctl enable example |
chkconfig example off | systemctl disable example |
chkconfig example --list | systemctl is-enabled example |
chkconfig | systemctl list-unit-files --type=service |
chkconfig example --add | systemctl daemon-reload |
Mencari Port Network yang Aktif
Gunakan perintah berikut untuk melihat port yang terbuka dan program yang berasosiasi dengan port tersebut:
netstat -tulpn
atau
nmap -sT -O localhost nmap -sT -O server.example.com
Gunakan iptables untuk menutup port tersebut atau matikan layanan jaringan yang tidak di inginkan dan gunakan perintah systemctl.
Detect Port Scan
Install
sudo apt-get install psad
Edit
vi /etc/syslog.conf
kern.info |/var/lib/psad/psadfifo
Restart
/etc/init.d/sysklogd restart /etc/init.d/klogd
Edit
vi /etc/psad/psad.conf
EMAIL_ADDRESSES vivek@nixcraft.in; HOSTNAME server.nixcraft.in; HOME_NET NOT_USED; ### only one interface on box IGNORE_PORTS udp/53, udp/5000; ENABLE_AUTO_IDS Y; IPTABLES_BLOCK_METHOD Y;
Restart
/etc/init.d/psad restart
Modif iptables
iptables -A INPUT -j LOG iptables -A FORWARD -j LOG
Report
psad -S
Detail iptables ada di https://www.cyberciti.biz/faq/linux-detect-port-scan-attacks/
Netstat untuk melihat serangan
Hapus X Windows
X windows pada server tidak diperlukan. Tidak ada alasan untuk menjalankan X Windows pada server khusus mail dan server web Apache. Anda dapat menonaktifkan dan menghapus X Windows untuk meningkatkan keamanan server dan kinerja. Edit /etc/inittab dan ubah runlevel ke 3. Akhirnya, untuk menghapus sistem X Windows, masukkan:
# yum groupremove "X Window System"
Pengaturan Iptables dan TCPWrappers
Iptables adalah firewall (Netfilter) standar yang disediakan oleh kernel Linux. Gunakan firewall untuk memfilter lalu lintas dan hanya mengijinkan lalu lintas yang diperlukan. Anda juga dapat menggunakan sistem jaringan TCPWrappers ACL berbasis host untuk menyaring akses jaringan ke Internet. Anda dapat mencegah banyak serangan Denial of Service dengan bantuan Iptables:
- Lighttpd Traffic Shaping: Katup Koneksi Per IP Single (Batas Rate).
- How to: Linux Iptables memblokir serangan umum.
- psad: Linux Deteksi Dan Blok serangan Pemindaian terhadap Port secara Real Time.
Linux Kernel /etc/sysctl.conf Hardening
/etc/sysctl.conf adalah file yang digunakan untuk mengkonfigurasi parameter kernel pada saat runtime. Linux membaca dan menerapkan pengaturan dari /etc/sysctl.conf pada saat boot. Contoh penguatan konfigurasi pada /etc/sysctl.conf:
# Turn on execshield kernel.exec-shield=1 kernel.randomize_va_space=1 # Enable IP spoofing protection net.ipv4.conf.all.rp_filter=1 # Disable IP source routing net.ipv4.conf.all.accept_source_route=0 # Ignoring broadcasts request net.ipv4.icmp_echo_ignore_broadcasts=1 net.ipv4.icmp_ignore_bogus_error_messages=1 # Make sure spoofed packets get logged net.ipv4.conf.all.log_martians = 1
Pisahkan Partisi Disk
Pisahkan file sistem operasi dari file user agar system lebih baik dan lebih aman. Pastikan file system berikut di mount di partisi yang berbeda:
- /usr
- /home
- /var and /var/tmp
- /tmp
Buat partis yang beda untuk root dari Apache dan FTP server. Edit file /etc/fstab dan pastikan tambahkan opsi konfigurasi berikut:
- noexec - Tidak bisa menjalankan (execute) semua binary di partisi tersebut (binary tidak bisa di exec tapi script di ijinkan).
- nodev - Tidak mengijinkan device character atau device spesial lainnya di partisi tersebut (device file seperti zero, sda dll tidak dapat digunakan).
- nosuid - Tidak dapat menset akses SUID/SGID di partisi ini (menghalangi setuid bit).
Contoh isi /etc/fstab untuk membatasi akses user ke /dev/sda5 (ftp server root directory):
/dev/sda5 /ftpdata ext3 defaults,nosuid,nodev,noexec 1 2
Kuota disk
Pastikan Kuota Disk diaktifkan untuk semua pengguna. Untuk menerapkan kuota disk, gunakan langkah-langkah berikut:
- Aktifkan kuota per sistem file dengan memodifikasi file /etc/fstab.
- Lakukan remount file system (s).
- Membuat database file kuots dan menghasilkan tabel penggunaan disk.
- Tetapkan kebijakan kuota.
- Lihat tutorial penerapan kuota disk untuk rincian lebih lanjut.
Matikan IPv6
Internet Protocol version 6 (IPv6) memberikan lapisan Internet baru dari TCP / IP protocol suite yang menggantikan Internet Protocol version 4 (IPv4) dan memberikan banyak manfaat. Saat ini ada alat yang baik keluar yang dapat memeriksa sistem melalui jaringan untuk masalah keamanan IPv6. Kebanyakan distro Linux mulai memungkinkan protokol IPv6 secara default. Cracker dapat mengirimkan lalu lintas data jahat melalui IPv6 yang tidak termonitor oleh admin. Kecuali konfigurasi jaringan menuntut hal itu, berikut ini adalah cara untuk menonaktifkan IPv6 atau mengkonfigurasi Linux firewall IPv6:
- Mematikan jaringan IPv6 di RedHat / Centos.
- Mematikan jaringan IPv6 di Debian / Ubuntu And Other Linux Distros.
- Linux IPv6 Howto - Chapter 19. Security.
- konfigurasi Firewall Linux untuk IPv6 beserta script lain yang tersedia klik di sini.
Matikan Binari dengan SUID dan SGID Yang Tidak Diinginkan
Semua bit SUID/SGID yang di enable dapat di salahgunakan saat SUID/SGID executable ada masalah keamanan atau bug. Semua local atau remote user akan dapat menggunakan file tersebut. Ada baiknya kita mencari semua file tersebut, untuk mencarinya dapat menggunakan perintah berikut:
#See all set user id files: find / -perm +4000 # See all group id files find / -perm +2000 # Or combine both in a single command find / \( -perm -4000 -o -perm -2000 \) -print find / -path -prune -o -type f -perm +6000 -ls
Anda perlu melakukan analisa / investigasi pada setiap file yang di laporkan. See reported file man page for further details.
File yang World-Writable
Semua orang dapat memodifikasi file yang world-writable yang menyebabkan masalah keamanan. Gunakan perintah berikut untuk menemukan semua file yang di set world writable dan sticky bits:
find /dir -xdev -type d \( -perm -0002 -a ! -perm -1000 \) -print
Kita perlu melakukan analisa dari semua file yang di laporkan dan set ijin user dan group yang benar atau bahkan membuang / men-delete-nya sekalian.
File Noowner
File yang tidak ada pemiliknya dapat menyebabkan masalah keamanan. Cari file tersebut menggunakan perintah berikut
find /dir -xdev \( -nouser -o -nogroup \) -print find / -xdev \( -nouser -o -nogroup \) -print
Kita perlu melakukan analisa pada setiap file yang di laporkan dan kita perlu memberikan user & group yang benar atau membuang / men-delete file tersebut.
Gunakan Layanan Authentikasi Terpusat
Tanpa system authentikasi yang terpusat, data user auth menjadi tidak konsisten, yang mungkin akan menyebabkan banyak data, credential, account yang out-of-date tidak ter-delete. Sebuah layanan authentikasi yang terpusat memungkinkan kita untuk memelihara kontrol terhadap data Linux / UNIX account dan authentikasi. Kita dapat menyimpan data auth yang tersinkonisasi pada beberapa server. Jangan menggunakan layanan NIS untuk authentikasi yang terpusat. Gunakan OpenLDAP untuk client dan server.
Kerberos
Kerberos akan melakukan authentikasi sebagai sebuah layanan authentikasi pihak ketiga yang dapat di percaya menggunakan cryptographic shared secret dengan asumsi packet akan berjalan di sebuah jaringan yang tidak aman yang dapat dibaca, di modifikasi dan di insert / dimasukan. Kerberos dibangun menggunakan symmetric-key cryptography dan membutuhkan sebuah pusat distribusi kunci (key). Kita dapat membuat remote login, remote copy, copy file inter-system secara aman dan berbagai pekerjaan dengan resiko tinggi secara aman dan banyak lagi yang dapat di kontrol oleh Kerberos. Oleh karenanya, jika pengguna melakukan authentikasi untuk layanan jaringan menggunakan Kerberos, maka pengguna yang tidak di undang yang berusaha untuk memperoleh password dengan cara memonitor traffic di jaringan pada dasarnya akan tersingkir dengan sendirinya. See how to setup and use Kerberos.
Logging dan Auditing
Kita perlu mengkonfigurasi logging dan auditing untuk mencatat semua usaha hacking dan cracking. Secara default syslog akan menyimpan data di directory /var/log/. Catatan ini sangat berguna untuk melihat jika ada software yang salah konfigurasi yang menjadikan sistem kita terbuka terhadap serangan. Ada baiknya melihat artikel yang berkaitan dengan logging berikut:
- Linux log file locations
- How to send logs to a remote loghost.
- How do I rotate log files?.
- man pages syslogd, syslog.conf and logrotate.
Monitor Message Log yang mencurigakan menggunakan Logwatch / Logcheck
Membaca log menggunakan logwatch atau logcheck. Install menggunakan perintah
apt-get install logcheck apt-get install logwatch
Dengan tool ini akan membuat pembacaan log menjadi lebih mudah. Kita dapat memperoleh laporan yang lebih detail dari hal yang mencurigakan di syslog melalui e-mail. Menjalankan menggunakan perintah
sudo -u logcheck logcheck
Sebuah contoh dari laporan syslog adalah sebagai berikut:
################### Logwatch 7.3 (03/24/06) #################### Processing Initiated: Fri Oct 30 04:02:03 2009 Date Range Processed: yesterday ( 2009-Oct-29 ) Period is day. Detail Level of Output: 0 Type of Output: unformatted Logfiles for Host: www-52.nixcraft.net.in ################################################################## --------------------- Named Begin ------------------------ **Unmatched Entries** general: info: zone XXXXXX.com/IN: Transfer started.: 3 Time(s) general: info: zone XXXXXX.com/IN: refresh: retry limit for master ttttttttttttttttttt#53 exceeded (source ::#0): 3 Time(s) general: info: zone XXXXXX.com/IN: Transfer started.: 4 Time(s) general: info: zone XXXXXX.com/IN: refresh: retry limit for master ttttttttttttttttttt#53 exceeded (source ::#0): 4 Time(s) ---------------------- Named End ------------------------- --------------------- iptables firewall Begin ------------------------ Logged 87 packets on interface eth0 From 58.y.xxx.ww - 1 packet to tcp(8080) From 59.www.zzz.yyy - 1 packet to tcp(22) From 60.32.nnn.yyy - 2 packets to tcp(45633) From 222.xxx.ttt.zz - 5 packets to tcp(8000,8080,8800) ---------------------- iptables firewall End ------------------------- --------------------- SSHD Begin ------------------------ Users logging in through sshd: root: 123.xxx.ttt.zzz: 6 times ---------------------- SSHD End ------------------------- --------------------- Disk Space Begin ------------------------ Filesystem Size Used Avail Use% Mounted on /dev/sda3 450G 185G 241G 44% / /dev/sda1 99M 35M 60M 37% /boot ---------------------- Disk Space End ------------------------- ###################### Logwatch End ######################### (Note output is truncated)
System Accounting menggunakan auditd
auditd adalah layanan untuk melakukan system auditing. Dia bertanggung jawab untuk menulis catatan audit ke disk. Pada saat startup, aturan di /etc/audit.rules akan di baca oleh daemon ini. Kita dapat membuka file /etc/audit.rules dan membuat perubahan seperti setup audit log file dan berbagai opsi lainnya. Dengan auditd kita dapat menjawab pertanyaan berikut:
- System startup and shutdown events (reboot / halt).
- Date and time of the event.
- User respoisble for the event (such as trying to access /path/to/topsecret.dat file).
- Type of event (edit, access, delete, write, update file & commands).
- Success or failure of the event.
- Records events that Modify date and time.
- Find out who made changes to modify the system's network settings.
- Record events that modify user/group information.
- See who made changes to a file etc.
See our quick tutorial which explains enabling and using the auditd service.
Secure OpenSSH Server
SSH protocol di rekomendasikan untuk melakukan remote login dan remote transfer file. Akan tetapi, ssh sangat terbuka akan serangan. Cara membuat aman OpenSSH server dapat di baca di:
- Top 20 OpenSSH Server Best Security Practices.
Instalasi dan Penggunaan Intrusion Detection System
Sebuah network intrusion detection system (NIDS) adalah sebuah intrusion detection system yang akan berusaha mendeteksi berbagai aktifitas yang tidak baik seperti serangan denial of service, port scans atau bahkan usaha untuk mengcrack ke dalam komputer dengan cara memonitor traffic jaringan.
Sebaiknya dilakukan mengecekan integritas software sebelum system online dan masuk ke lingkungan produksi / operasional. Jika di mungkinkan ada baiknya di install software AIDE sebelum system tersambung ke jaringan apapun. AIDE adalah sebuah host-based intrusion detection system (HIDS) dia akan memonitor dan analisa internal dari system.
Snort is a software for intrusion detection which is capable of performing packet logging and real-time traffic analysis on IP networks.
Protecting Files, Directories and Email
Linux offers excellent protections against unauthorized data access. File permissions and MAC prevent unauthorized access from accessing data. However, permissions set by the Linux are irrelevant if an attacker has physical access to a computer and can simply move the computer's hard drive to another system to copy and analyze the sensitive data. You can easily protect files, and partitons under Linux using the following tools:
- To encrypt and decrypt files with a password, use gpg command.
- Linux or UNIX password protect files with openssl and other tools.
- See how to encrypting directories with ecryptfs.
- TrueCrypt is free open-source disk encryption software for Windows 7/Vista/XP, Mac OS X and Linux.
- Howto: Disk and partition encryption in Linux for mobile devices.
- How to setup encrypted Swap on Linux.
Mengamankan Email Server
Anda dapat menggunakan SSL certificate dan gpg key untuk mengamankan komunikasi e-mail pada kedua komputer server dan klien:
- Linux Securing Dovecot IMAPS / POP3S Server with SSL Configuration
- Linux Postfix SMTP (Mail Server) SSL Certificate Installations and Configuration
- Courier IMAP SSL Server Certificate Installation and Configuration.
- Configure Sendmail SSL encryption for sending and receiving email.
- Enigmail: Encrypted mail with Mozilla thunderbird.
Rekomendasi Lainnya:
- Backups - It cannot be stressed enough how important it is to make a backup of your Linux system. A proper offsite backup allows you to recover from cracked server i.e. an intrusion. The traditional UNIX backup programs are dump and restore are also recommended.
- How to: Looking for Rootkits.
- Howto: Enable ExecShield Buffer Overflows Protection.
- Subscribe to Redhat or Debian Linux security mailing list or RSS feed.
Bacaan Rekomendasi
- Red Hat Enterprise Linux - Security Guide.
- Linux security cookbook- Koleksi yang bagus tentag resep keamanan untuk admin Linux baru.
- Snort 2.1 Intrusion Detection, Second Edition - Pengenalan yang bagus untuk Snort dan Intrusion detection pada Linux.
- Hardening Linux - Hardening Linux mengidentifikasi banyak risiko menjalankan host Linux dan aplikasinya dan memberikan contoh-contoh praktis dan metode-metode untuk meminimalkan risiko tersebut.
- Linux Security HOWTO
Pada bagian berikutnya dari seri ini saya akan membahas bagaimana mengamankan aplikasi spesifik (seperti proxy, Mail, LAMP, Database) dan beberapa alat-alat keamanan lainnya.