Difference between revisions of "20 Linux Server Hardening Security Tips"

From OnnoWiki
Jump to navigation Jump to search
 
(101 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 
Sumber: http://www.cyberciti.biz/tips/linux-security.html
 
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.
  
Securing your Linux server is important to protect your data, intellectual property, and time, from the hands of crackers (hackers). The system administrator is responsible for security Linux box. In this first part of a Linux server security series, I will provide 20 hardening tips for default installation of Linux system.
+
==Enkripsi Komunikasi Data==
  
==Encrypt Data Communication==
+
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.
  
All data transmitted over a network is open to monitoring. Encrypt transmitted data whenever possible with password or using keys / certificates.
+
# 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)
  
# Use scp, ssh, rsync, or sftp for file transfer. You can also mount remote server file system or your own home directory using special sshfs and fuse tools.
+
===Jangan gunakan [[FTP]], [[Telnet]], dan [[Rlogin]] / [[Rsh]]===
# GnuPG allows to encrypt and sign your data and communication, features a versatile key managment system as well as access modules for all kind of public key directories.
 
# Fugu is a graphical frontend to the commandline Secure File Transfer application (SFTP). SFTP is similar to FTP, but unlike FTP, the entire session is encrypted, meaning no passwords are sent in cleartext form, and is thus much less vulnerable to third-party interception. Another option is FileZilla - a cross-platform client that supports FTP, FTP over SSL/TLS (FTPS), and SSH File Transfer Protocol (SFTP).
 
# OpenVPN is a cost-effective, lightweight SSL VPN.
 
# Lighttpd SSL (Secure Server Layer) Https Configuration And Installation
 
# Apache SSL (Secure Server Layer) Https (mod_ssl) Configuration And Installation
 
  
===Avoid Using FTP, Telnet, And 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:
  
Under most network configurations, user names, passwords, FTP / telnet / rsh commands and transferred files can be captured by anyone on the same network using a packet sniffer. The common solution to this problem is to use either OpenSSH , SFTP, or FTPS (FTP over SSL), which adds SSL or TLS encryption to FTP. Type the following command to delete NIS, rsh and other outdated service:
+
# yum erase inetd xinetd ypserv tftp-server telnet-server rsh-serve
  
# yum erase inetd xinetd ypserv tftp-server telnet-server rsh-serve
+
==Minimalkan Software Aplikasi untuk Minimalisasi Kelemahan==
  
==Minimize Software to Minimize Vulnerability==
+
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.
  
Do you really need all sort of web services installed? Avoid installing unnecessary software to avoid vulnerabilities in software. Use the RPM package manager such as yum or apt-get and/or dpkg to review all installed set of software packages on a system. Delete all unwanted packages.
 
 
  # yum list installed
 
  # yum list installed
 
  # yum list packageName
 
  # yum list packageName
 
  # yum remove packageName
 
  # yum remove packageName
OR
+
 
 +
atau
 +
 
 
  # dpkg --list
 
  # dpkg --list
 
  # dpkg --info packageName
 
  # dpkg --info packageName
 
  # apt-get remove packageName
 
  # apt-get remove packageName
  
==One Network Service Per System or VM Instance==
+
==Satu layanan jaringan per sistem atau per VM Instance==
  
Run different network services on separate servers or VM instance. This limits the number of other services that can be compromised. For example, if an attacker able to successfully exploit a software such as Apache flow, he / she will get an access to entire server including other services such as MySQL, e-mail server and so on. See how to install Virtualization software:
+
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 and Setup XEN Virtualization Software on CentOS Linux 5
+
* Install dan Setup Software Xen Virtualization pada Linux CentOS 5
* How To Setup OpenVZ under RHEL / CentOS Linux
+
* Bagaimana Cara Setup OpenVZ pada RHEL / Linux CentOS
  
==Keep Linux Kernel and Software Up to Date==
+
==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.
  
Applying security patches is an important part of maintaining Linux server. Linux provides all necessary tools to keep your system updated, and also allows for easy upgrades between versions. All security update should be reviewed and applied as soon as possible. Again, use the RPM package manager such as yum and/or apt-get and/or dpkg to apply all security updates.
 
 
  # yum update
 
  # yum update
OR
+
atau
 
  # apt-get update && apt-get upgrade
 
  # apt-get update && apt-get upgrade
  
You can configure Red hat / CentOS / Fedora Linux to send yum package update notification via email. Another option is to apply all security updates via a cron job. Under Debian / Ubuntu Linux you can use apticron to send security notifications.
+
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.
  
==Use Linux Security Extensions==
+
==Menggunakan Linux Security Extension==
  
Linux comes with various security patches which can be used to guard against misconfigured or compromised programs. If possible use SELinux and other Linux security extensions to enforce limitations on network and other programs. For example, SELinux provides a variety of security policies for Linux kernel.
+
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===
 
===SELinux===
  
I strongly recommend using SELinux which provides a flexible Mandatory Access Control (MAC). Under standard Linux Discretionary Access Control (DAC), an application or process running as a user (UID or SUID) has the user's permissions to objects such as files, sockets, and other processes. Running a MAC kernel protects the system from malicious or flawed applications that can damage or destroy the system. See the official Redhat documentation which explains SELinux configuration.
+
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,
  
==User Accounts and Strong Password Policy==
+
Copy (bisa dengan scp) 2 file ini dari server 
  
Use the useradd / usermod commands to create and maintain user accounts. Make sure you have a good and strong password policy. For example, a good password includes at least 8 characters long and mixture of alphabets, number, special character, upper & lower alphabets etc. Most important pick a password you can remember. Use tools such as "John the ripper" to find out weak users passwords on your server. Configure pam_cracklib.so to enforce the password policy.
+
/etc/passwd
 +
/etc/shadow
  
===Password Aging===
+
Ke komputer Kali Linux, dan lakukan
  
The chage command changes the number of days between password changes and the date of the last password change. This information is used by the system to determine when a user must change his/her password. The /etc/login.defs file defines the site-specific configuration for the shadow password suite including password aging configuration. To disable password aging, enter:
+
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
 
  chage -M 99999 userName
  
To get password expiration information, enter:
+
Untuk men-set X hari, masukan
 +
 
 +
chage -M X userName
 +
 
 +
Untuk mendapatkan informasi password yang telah kadaluarsa, masukkan:
  
 
  chage -l userName
 
  chage -l userName
  
Finally, you can also edit the /etc/shadow file in the following fields:
+
Akhirnya, Anda juga dapat mengedit /etc/shadow seperti berikut:
  
 
  {userName}:{password}:{lastpasswdchanged}:{Minimum_days}:{Maximum_days}:{Warn}:{Inactive}:{Expire}:
 
  {userName}:{password}:{lastpasswdchanged}:{Minimum_days}:{Maximum_days}:{Warn}:{Inactive}:{Expire}:
  
Where,
+
Dimana,
  
# Minimum_days: The minimum number of days required between password changes i.e. the number of days left before the user is allowed to change his/her password.
+
# Minimum_days: Jumlah minimum dari hari yang diperlukan antara perubahan password, yaitu jumlah hari yang tersisa sebelum pengguna diijinkan mengubah passwordnya.
# Maximum_days: The maximum number of days the password is valid (after that user is forced to change his/her password).
+
# Maximum_days: Jumlah maksimum hari password berlaku (setelah itu pengguna akan dipaksa untuk mengubah passwordnya).
# Warn : The number of days before password is to expire that user is warned that his/her password must be changed.
+
# Warn : Jumlah hari sebelum password akan berakhir, pengguna akan diperingatkan bahwa passwordnya harus diubah.
# Expire : Days since Jan 1, 1970 that account is disabled i.e. an absolute date specifying when the login may no longer be used.
+
# Expire : Tanggal mutlak saat login tidak mungkin lagi dapat dilakukan.
  
I recommend chage command instead of editing the /etc/shadow by hand:
+
Sebaiknya untuk tidak mengedit /etc/shadow secara langsung:
  
 
  # chage -M 60 -m 7 -W 7 userName
 
  # chage -M 60 -m 7 -W 7 userName
  
Recommend readings:
+
Rekomendasi Bacaan:
  
 
* Linux: Force Users To Change Their Passwords Upon First Login
 
* Linux: Force Users To Change Their Passwords Upon First Login
Line 93: Line 127:
 
* Use Linux groups to enhance security
 
* Use Linux groups to enhance security
  
===Restricting Use of Previous Passwords===
+
===Paksa Ubah Password===
  
You can prevent all users from using or reuse same old passwords under Linux. The pam_unix module parameter remember can be used to configure the number of previous passwords that cannot be reused.
+
Untuk memaksa mengubah password saat login pertama kali
  
===Locking User Accounts After Login Failures===
+
chage -d 0 <username>
  
Under Linux you can use the faillog command to display faillog records or to set login failure limits. faillog formats the contents of the failure log from /var/log/faillog database / log file. It also can be used for maintains failure counters and limits.To see failed login attempts, enter:
+
===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
 
  faillog
  
To unlock an account after login failures, run:
+
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
 
  faillog -r -u userName
  
Note you can use passwd command to lock and unlock accounts:
+
Kita dapat menggunakan perintah passwd untuk mengunci dan membuka kunci sebuah account:
  
  # lock account
+
  # kunci account
 
  passwd -l userName
 
  passwd -l userName
  
  # unlocak account
+
  # membuka kunci account
 
  passwd -u userName
 
  passwd -u userName
  
===How Do I Verify No Accounts Have Empty Passwords?===
+
===Verifikasi tidak ada Account dengan password kosong?===
  
Type the following command
+
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
  
Lock all empty password accounts:
+
Selanjutnya, kita bisa mengunci account dengan [[password]] kosong:
  
 
  # passwd -l accountName
 
  # passwd -l accountName
  
===Make Sure No Non-Root Accounts Have UID Set To 0===
+
===Pastikan tidak ada Account Non-Root yang mempunyai UID 0===
  
Only root account have UID 0 with full permissions to access the system. Type the following command to display all accounts with UID set to 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
 
  # awk -F: '($3 == "0") {print}' /etc/passwd
  
You should only see one line as follows:
+
Anda harusnya hanya melihat satu kalimat ini
  
 
  root:x:0:0:root:/root:/bin/bash
 
  root:x:0:0:root:/root:/bin/bash
  
If you see other lines, delete them or make sure other accounts are authorized by you to use 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,
  
==Disable root Login==
+
adduser UserName
 +
passwd UserName
  
Never ever login as root user. You should use sudo to execute root level commands as and when required. sudo does greatly enhances the security of the system without sharing root password with other users and admins. sudo provides simple auditing and tracking features too.
+
Install sudo
  
==Physical Server Security==
+
apt install sudo
  
You must protect Linux servers physical console access. Configure the BIOS and disable the booting from external devices such as DVDs / CDs / USB pen. Set BIOS and grub boot loader password to protect these settings. All production boxes must be locked in IDCs (Internet Data Center) and all persons must pass some sort of security checks before accessing your server. See also:
+
Masukan UserName sebagai sudo
  
* 9 Tips To Protect Linux Servers Physical Console Access.
+
usermod –aG wheel UserName
  
==Disable Unwanted Services==
+
Test
  
Disable all unnecessary services and daemons (services that runs in the background). You need to remove all unwanted services from the system start-up. Type the following command to list all services which are started at boot time in run level # 3:
+
su - UserName
 +
sudo ls -la /root
  
# chkconfig --list | grep '3:on'
+
Alternatif lain edit file /etc/sudoers
  
To disable service, enter:
+
visudo
  
# service serviceName stop
+
pastikan ada,
# chkconfig serviceName off
 
  
#9.1: Find Listening Network Ports
+
root ALL=(ALL) ALL
 +
UserName ALL=(ALL) ALL
  
Use the following command to list all open ports and associated programs:
+
Test
netstat -tulpn
 
OR
 
nmap -sT -O localhost
 
nmap -sT -O server.example.com
 
Use iptables to close open ports or stop all unwanted network services using above service and chkconfig commands.
 
#9.2: See Also
 
  
    * update-rc.d like command on Redhat Enterprise / CentOS Linux.
+
su — UserName
    * Ubuntu / Debian Linux: Services Configuration Tool to Start / Stop System Services.
+
sudo ls —la /root
    * Get Detailed Information About Particular IP address Connections Using netstat Command.
 
  
#10: Delete X Windows
 
  
X Windows on server is not required. There is no reason to run X Windows on your dedicated mail and Apache web server. You can disable and remove X Windows to improve server security and performance. Edit /etc/inittab and set run level to 3. Finally, remove X Windows system, enter:
 
# yum groupremove "X Window System"
 
#11: Configure Iptables and TCPWrappers
 
  
Iptables is a user space application program that allows you to configure the firewall (Netfilter) provided by the Linux kernel. Use firewall to filter out traffic and allow only necessary traffic. Also use the TCPWrappers a host-based networking ACL system to filter network access to Internet. You can prevent many denial of service attacks with the help of Iptables:
 
  
    * Lighttpd Traffic Shaping: Throttle Connections Per Single IP (Rate Limit).
+
==Disable Login sebagai root==
    * How to: Linux Iptables block common attack.
 
    * psad: Linux Detect And Block Port Scan Attacks In Real Time.
 
  
#12: Linux Kernel /etc/sysctl.conf Hardening
+
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.
  
/etc/sysctl.conf file is used to configure kernel parameters at runtime. Linux reads and applies settings from /etc/sysctl.conf at boot time. Sample /etc/sysctl.conf:
+
Disable remote login root, dengan edit
  
# Turn on execshield
+
vi /etc/ssh/sshd_config
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
 
  
#13: Separate Disk Partitions
+
Pastikan
  
Separation of the operating system files from user files may result into a better and secure system. Make sure the following filesystems are mounted on separate partitions:
+
PermitRootLogin prohibit-password
 +
StrictModes yes
  
    * /usr
+
atau yang lebih ketat,
    * /home
 
    * /var and /var/tmp
 
    * /tmp
 
  
Create septate partitions for Apache and FTP server roots. Edit /etc/fstab file and make sure you add the following configuration options:
+
PermitRootLogin no
  
  1. noexec - Do not set execution of any binaries on this partition (prevents execution of binaries but allows scripts).
+
==Keamanan Fisik Server==
  2. nodev - Do not allow character or special devices on this partition (prevents use of device files such as zero, sda etc).
 
  3. nosuid - Do not set SUID/SGID access on this partition (prevent the setuid bit).
 
  
Sample /etc/fstab entry to to limit user access on /dev/sda5 (ftp server root directory):
+
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:
  
/dev/sda5  /ftpdata          ext3    defaults,nosuid,nodev,noexec 1 2
+
* 9 Tips Untuk Melindungi akses terhadap server Linux secara Fisik.
  
#13.1: Disk Quotas
+
==Disable Layanan Yang Tidak Perlu==
  
Make sure disk quota is enabled for all users. To implement disk quotas, use the following steps:
+
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:
  
  1. Enable quotas per file system by modifying the /etc/fstab file.
+
chkconfig --list | grep '3:on'
  2. Remount the file system(s).
 
  3. Create the quota database files and generate the disk usage table.
 
  4. Assign quota policies.
 
  5. See implementing disk quotas tutorial for further details.
 
  
#14: Turn Off IPv6
+
Untuk mematikan layanan dan disable saat boot, masukkan:
  
Internet Protocol version 6 (IPv6) provides a new Internet layer of the TCP/IP protocol suite that replaces Internet Protocol version 4 (IPv4) and provides many benefits. Currently there are no good tools out which are able to check a system over network for IPv6 security issues. Most Linux distro began enabling IPv6 protocol by default. Crackers can send bad traffic via IPv6 as most admins are not monitoring it. Unless network configuration requires it, disable IPv6 or configure Linux IPv6 firewall:
+
service serviceName stop
 +
chkconfig serviceName off
  
    * RedHat / Centos Disable IPv6 Networking.
+
Di Ubuntu, agak berbeda dengan RedHat, untuk melihat servis yang enabled (runlevel #3 on) bisa menggunakan
    * Debian / Ubuntu And Other Linux Distros Disable IPv6 Networking.
 
    * Linux IPv6 Howto - Chapter 19. Security.
 
    * Linux IPv6 Firewall configuration and scripts are available here.
 
  
#15: Disable Unwanted SUID and SGID Binaries
+
systemctl list-unit-files -t service | grep enabled
 +
systemctl list-unit-files --type=service | grep enabled
  
All SUID/SGID bits enabled file can be misused when the SUID/SGID executable has a security problem or bug. All local or remote user can use such file. It is a good idea to find all such files. Use the find command as follows:
 
#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
 
  
You need to investigate each reported file. See reported file man page for further details.
+
Untuk mematikan / disable saat boot, bisa ketik
#15.1: World-Writable Files
 
  
Anyone can modify world-writable file resulting into a security issue. Use the following command to find all world writable and sticky bits set files:
+
systemctl disable serviceName
find /dir -xdev -type d \( -perm -0002 -a ! -perm -1000 \) -print
 
You need to investigate each reported file and either set correct user and group permission or remove it.
 
#15.2: Noowner Files
 
  
Files not owned by any user or group can pose a security problem. Just find them with the following command which do not belong to a valid user and a valid group
+
List Perbandingan Perintah chkconfig vs. systemctl
find /dir -xdev \( -nouser -o -nogroup \) -print
 
You need to investigate each reported file and either assign it to an appropriate user and group or remove it.
 
#16: Use A Centralized Authentication Service
 
  
Without a centralized authentication system, user auth data becomes inconsistent, which may lead into out-of-date credentials and forgotten accounts which should have been deleted in first place. A centralized authentication service allows you maintaining central control over Linux / UNIX account and authentication data. You can keep auth data synchronized between servers. Do not use the NIS service for centralized authentication. Use OpenLDAP for clients and servers.
 
#16.1: Kerberos
 
  
Kerberos performs authentication as a trusted third party authentication service by using cryptographic shared secret under the assumption that packets traveling along the insecure network can be read, modified, and inserted. Kerberos builds on symmetric-key cryptography and requires a key distribution center. You can make remote login, remote copy, secure inter-system file copying and other high-risk tasks safer and more controllable using Kerberos. So, when users authenticate to network services using Kerberos, unauthorized users attempting to gather passwords by monitoring network traffic are effectively thwarted. See how to setup and use Kerberos.
+
{| border="1" cellpadding=2 style="border-collapse: collapse"
#17: Logging and Auditing
+
! 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
 +
|}
  
You need to configure logging and auditing to collect all hacking and cracking attempts. By default syslog stores data in /var/log/ directory. This is also useful to find out software misconfiguration which may open your system to various attacks. See the following logging related articles:
 
  
  1. Linux log file locations.
+
===Mencari Port Network yang Aktif===
  2. How to send logs to a remote loghost.
 
  3. How do I rotate log files?.
 
  4. man pages syslogd, syslog.conf and logrotate.
 
  
#17.1: Monitor Suspicious Log Messages With Logwatch / Logcheck
+
Gunakan perintah berikut untuk melihat port yang terbuka dan program yang berasosiasi dengan port tersebut:
  
Read your logs using logwatch or logcheck. These tools make your log reading life easier. You get detailed reporting on unusual items in syslog via email. A sample syslog report:
+
netstat -tulpn
  
################### Logwatch 7.3 (03/24/06) ####################
+
atau
        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 ------------------------
+
  nmap -sT -O localhost
 +
nmap -sT -O server.example.com
  
**Unmatched Entries**
+
Gunakan iptables untuk menutup port tersebut atau matikan layanan jaringan yang tidak di inginkan dan gunakan perintah systemctl.
    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 -------------------------
+
====Detect Port Scan====
  
  --------------------- iptables firewall Begin ------------------------
+
Install
  
  Logged 87 packets on interface eth0
+
  sudo apt-get install psad
  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 -------------------------
+
Edit
  
  --------------------- SSHD Begin ------------------------
+
  vi /etc/syslog.conf
  
  Users logging in through sshd:
+
  kern.info      |/var/lib/psad/psadfifo
    root:
 
      123.xxx.ttt.zzz: 6 times
 
  
---------------------- SSHD End -------------------------
 
  
--------------------- Disk Space Begin ------------------------
+
Restart
  
Filesystem            Size  Used Avail Use% Mounted on
+
  /etc/init.d/sysklogd restart
  /dev/sda3            450G  185G  241G  44% /
+
  /etc/init.d/klogd
  /dev/sda1              99M  35M  60M  37% /boot
 
  
---------------------- Disk Space End -------------------------
+
Edit
  
  ###################### Logwatch End #########################
+
  vi /etc/psad/psad.conf
  
(Note output is truncated)
+
EMAIL_ADDRESSES            vivek@nixcraft.in;
#17.2: System Accounting with auditd
+
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;
  
The auditd is provided for system auditing. It is responsible for writing audit records to the disk. During startup, the rules in /etc/audit.rules are read by this daemon. You can open /etc/audit.rules file and make changes such as setup audit file log location and other option. With auditd you can answers the following questions:
+
Restart
  
   1. System startup and shutdown events (reboot / halt).
+
/etc/init.d/psad restart
  2. Date and time of the event.
+
 
  3. User respoisble for the event (such as trying to access /path/to/topsecret.dat file).
+
 
  4. Type of event (edit, access, delete, write, update file & commands).
+
Modif iptables
  5. Success or failure of the event.
+
 
  6. Records events that Modify date and time.
+
iptables -A INPUT -j LOG
  7. Find out who made changes to modify the system's network settings.
+
iptables -A FORWARD -j LOG
  8. Record events that modify user/group information.
+
 
  9. See who made changes to a file etc.
+
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==
 +
 
 +
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.
 
See our quick tutorial which explains enabling and using the auditd service.
#18: Secure OpenSSH Server
 
  
The SSH protocol is recommended for remote login and remote file transfer. However, ssh is open to many attacks. See how to 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.
  
#19: Install And Use Intrusion Detection System
+
==Instalasi dan Penggunaan Intrusion Detection System==
  
A network intrusion detection system (NIDS) is an intrusion detection system that tries to detect malicious activity such as denial of service attacks, port scans or even attempts to crack into computers by monitoring network traffic.
+
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.
  
It is a good practice to deploy any integrity checking software before system goes online in a production environment. If possible install AIDE software before the system is connected to any network. AIDE is a host-based intrusion detection system (HIDS) it can monitor and analyses the internals of a computing system.
+
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.
#20: Protecting Files, Directories and Email
+
 
 +
==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:
 
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.
+
* To encrypt and decrypt files with a password, use gpg command.
    * Linux or UNIX password protect files with openssl and other tools.
+
* Linux or UNIX password protect files with openssl and other tools.
    * See how to encrypting directories with ecryptfs.
+
* 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.
+
* 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.
+
* Howto: Disk and partition encryption in Linux for mobile devices.
    * How to setup encrypted Swap on Linux.
+
* How to setup encrypted Swap on Linux.
 
 
#20.1: Securing Email Servers
 
 
 
You can use SSL certificates and gpg keys to secure email communication on both server and client computers:
 
  
    * Linux Securing Dovecot IMAPS / POP3S Server with SSL Configuration.
+
===Mengamankan Email Server===
    * Linux Postfix SMTP (Mail Server) SSL Certificate Installations and Configuration.
 
    * Courier IMAP SSL Server Certificate Installtion and Configuration.
 
    * Configure Sendmail SSL encryption for sending and receiving email.
 
    * Enigmail: Encrypted mail with Mozilla thunderbird.
 
  
Other Recommendation:
+
Anda dapat menggunakan [[SSL]] certificate dan [[gpg]] key untuk mengamankan komunikasi e-mail pada kedua komputer server dan klien:
  
    * 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.
+
* [[Howto: Linux Dovecot Secure IMAPS / POP3S SSL Server configuration | Linux Securing Dovecot IMAPS / POP3S Server with SSL Configuration]]
    * How to: Looking for Rootkits.
+
* [[Linux Postfix SMTP (Mail Server) SSL Certificate Installations and Configuration | Linux Postfix SMTP (Mail Server) SSL Certificate Installations and Configuration]]
    * Howto: Enable ExecShield Buffer Overflows Protection.
+
* [[Courier IMAP SSL Server Certificate Installation and Configuration]].
    * Subscribe to Redhat or Debian Linux security mailing list or RSS feed.
+
* [[Configure Sendmail SSL encryption for sending and receiving email]].
 +
* [[Enigmail: Encrypted mail with Mozilla thunderbird]].
  
Recommend readings:
+
====Rekomendasi Lainnya:====
  
  1. Red Hat Enterprise Linux - Security Guide.
+
* [[How To Set Red hat / CentOS Linux Remote Backup / Snapshot Server | 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.
  2. Linux security cookbook- A good collections of security recipes for new Linux admin.
+
* [[Linux Detecting / Checking Rootkits with Chkrootkit and rkhunter Software | How to: Looking for Rootkits]].
  3. Snort 2.1 Intrusion Detection, Second Edition - Good introduction to Snort and Intrusion detection under Linux.
+
* Howto: Enable ExecShield Buffer Overflows Protection.
  4. Hardening Linux - Hardening Linux identifies many of the risks of running Linux hosts and applications and provides practical examples and methods to minimize those risks.
+
* Subscribe to Redhat or Debian Linux security mailing list or RSS feed.
  5. [http://tldp.org/HOWTO/html_single/Security-HOWTO/ Linux Security HOWTO]]
 
  
In the next part of this series I will discuss how to secure specific applications (such as Proxy, Mail, LAMP, Database) and a few other security tools. Did I miss something? Please add your favorite system security tool or tip in the comments.
+
==Bacaan Rekomendasi==
  
 +
# [http://www.redhat.com/docs/manuals/enterprise/RHEL-4-Manual/en-US/Security_Guide/ Red Hat Enterprise Linux] - Security Guide.
 +
# [http://www.amazon.com/gp/product/0596003919?ie=UTF8&tag=cyberciti-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=0596003919 Linux security cookbook]- Koleksi yang bagus tentag resep keamanan untuk admin Linux baru.
 +
# [http://www.amazon.com/gp/product/1931836043?ie=UTF8&tag=cyberciti-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=1931836043 Snort 2.1 Intrusion Detection, Second Edition] - Pengenalan yang bagus untuk Snort dan Intrusion detection pada Linux.
 +
# [http://www.amazon.com/gp/product/1590594444?ie=UTF8&tag=cyberciti-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=1590594444 Hardening Linux] - Hardening Linux mengidentifikasi banyak risiko menjalankan host Linux dan aplikasinya dan memberikan contoh-contoh praktis dan metode-metode untuk meminimalkan risiko tersebut.
 +
# [http://tldp.org/HOWTO/html_single/Security-HOWTO/ 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.
  
 
==Referensi==
 
==Referensi==
Line 404: 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.

  1. 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.
  2. 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.
  3. 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).
  4. OpenVPN adalah solusi cost-effective, dan ringan untuk SSL VPN.
  5. Lighttpd SSL (Secure Server Layer) konfigurasi dan instalasi https
  6. 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,

  1. Minimum_days: Jumlah minimum dari hari yang diperlukan antara perubahan password, yaitu jumlah hari yang tersisa sebelum pengguna diijinkan mengubah passwordnya.
  2. Maximum_days: Jumlah maksimum hari password berlaku (setelah itu pengguna akan dipaksa untuk mengubah passwordnya).
  3. Warn : Jumlah hari sebelum password akan berakhir, pengguna akan diperingatkan bahwa passwordnya harus diubah.
  4. 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:

  1. noexec - Tidak bisa menjalankan (execute) semua binary di partisi tersebut (binary tidak bisa di exec tapi script di ijinkan).
  2. nodev - Tidak mengijinkan device character atau device spesial lainnya di partisi tersebut (device file seperti zero, sda dll tidak dapat digunakan).
  3. 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:

  1. Aktifkan kuota per sistem file dengan memodifikasi file /etc/fstab.
  2. Lakukan remount file system (s).
  3. Membuat database file kuots dan menghasilkan tabel penggunaan disk.
  4. Tetapkan kebijakan kuota.
  5. 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:

  1. Linux log file locations
  2. How to send logs to a remote loghost.
  3. How do I rotate log files?.
  4. 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:

  1. System startup and shutdown events (reboot / halt).
  2. Date and time of the event.
  3. User respoisble for the event (such as trying to access /path/to/topsecret.dat file).
  4. Type of event (edit, access, delete, write, update file & commands).
  5. Success or failure of the event.
  6. Records events that Modify date and time.
  7. Find out who made changes to modify the system's network settings.
  8. Record events that modify user/group information.
  9. 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:

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

  1. Red Hat Enterprise Linux - Security Guide.
  2. Linux security cookbook- Koleksi yang bagus tentag resep keamanan untuk admin Linux baru.
  3. Snort 2.1 Intrusion Detection, Second Edition - Pengenalan yang bagus untuk Snort dan Intrusion detection pada Linux.
  4. Hardening Linux - Hardening Linux mengidentifikasi banyak risiko menjalankan host Linux dan aplikasinya dan memberikan contoh-contoh praktis dan metode-metode untuk meminimalkan risiko tersebut.
  5. 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.

Referensi

Pranala Menarik