Pengerasan server adalah proses meningkatkan keamanan server melalui berbagai metode. Kami memiliki banyak langkah untuk mengamankan server. Jauhkan diri Anda dan perusahaan Anda dengan melindungi sistem Linux Anda dari peretas, cracker, dan penyerang! Anda dapat mengubah kotak yang rentan menjadi server yang diperkuat melalui langkah-langkah berikut. Ini akan membantu Anda untuk mencegah serangan dari luar. Di sini saya menjelaskan pengerasan server CentOS.
Yang perlu diketahui
Panduan ini memandu Anda melalui langkah-langkah yang diperlukan untuk memperkuat keamanan CentOS 7. Memperkuat sistem akan membuatnya lebih ketat dan Anda mungkin mengalami masalah. Saya sarankan membuat mesin virtual duplikat yang dapat Anda gunakan untuk pemecahan masalah. Di bawah ini Anda akan menemukan daftar langkah-langkah dasar yang dapat dan harus Anda ambil untuk memperkuat server Anda segera setelah penyediaan.
1. Akses jarak jauh yang aman
Terkadang kami mengakses server kami dengan metode jarak jauh dan jika tidak lebih aman, kami dapat mengekspos server kami. Opsi OpenSSH dikendalikan melalui /etc/ssh/sshd_config
berkas.
a. Nonaktifkan metode otentikasi kata sandi SSH dan aktifkan metode otentikasi kunci publik
Penting untuk menonaktifkan metode login jarak jauh kata sandi dan mengaktifkan kunci publik otentikasi
Ubah ChallengeResponseAuthentication dan Otentikasi Kata Sandi untuk tidak untuk menonaktifkan metode sandi
NoChallengeResponseAuthentication noChallengeResponseAuthentication no
Otorisasi autentikasi kunci publik
RSAAuthentication yesPubkeyAuthentication yes
sekarang Anda dapat membuat pasangan kunci baru
# ssh-keygen -t rsa
b. Nonaktifkan login root langsung
Ini adalah risiko keamanan untuk mengizinkan root untuk login langsung ke server. Sebagai gantinya, Anda harus masuk ke sistem sebagai akun Anda dan kemudian melakukan su - untuk login sebagai root. Jadi Anda perlu mengubah PermitRootLogin ya ke PermitRootLogin no
No PermitRootLogin
c. Ubah port mendengarkan SSH default (misalnya:8500)
Terkadang tidak disarankan untuk menggunakan port default karena sudah dikenal oleh seluruh dunia dan merupakan risiko keamanan. Adalah baik untuk mempersonalisasi port yang akan digunakan
port 8500
2. Mengamankan Boot Loader dengan kata sandi grub
Dengan mengamankan boot loader, kita dapat mencegah akses ke mode pengguna tunggal yang masuk secara otomatis sebagai root. Ini dilakukan dengan GRUB dengan mengatur kata sandi yang disimpan dalam teks biasa secara default.
Untuk sistem Debian
# grub-mkpasswd-pbkdf2
Untuk Centos
# grub2-mkpasswd-pbkdf2
3. Mendengarkan Port Jaringan
Setelah mengonfigurasi layanan jaringan, penting untuk memperhatikan port mana yang benar-benar mendengarkan pada antarmuka jaringan sistem. Setiap port yang terbuka dapat menjadi bukti adanya penyusupan.
# nmap -sT -O localhostMemulai Nmap 6.40 ( http://nmap.org ) pada 07-06-2017 23:13 Laporan pemindaian UTCNmap untuk localhost (127.0.0.1)Host aktif (latency 0,000061s).Lainnya alamat untuk localhost (tidak dipindai):127.0.0.1rDNS catatan untuk 127.0.0.1:centos-01Tidak ditampilkan:995 port tertutupPORT STATE SERVICE22/tcp open ssh25/tcp open smtp80/tcp open http111/tcp open rpcbind2049/tcp open nfsUntuk membuat daftar semua port terbuka dan program terkait gunakan perintah di bawah
# netstat -tulpnKoneksi Internet aktif (hanya server)Proto Recv-Q Send-Q Alamat Lokal Alamat Asing Status PID/Nama program tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemd tcp 0 0 0.0 .0.0:20048 0.0.0.0:* DENGARKAN4. Persempit Izin
Persempit izin untuk file dan folder sistem untuk membatasi risiko.
# chmod 700 /root# chmod 700 /var/log/audit# chmod 740 /etc/rc.d/init.d/iptables# chmod 740 /sbin/iptables# chmod -R 700 /etc/skel# chmod 600 /etc/rsyslog.conf# chmod 640, /etc/security/access.conf# chmod 600 /etc/sysctl.conf5. Memeriksa Akun untuk Kata Sandi Kosong
Setiap akun yang memiliki kata sandi kosong berarti dibuka untuk akses tidak sah kepada siapa pun di web dan itu adalah bagian dari keamanan dalam server Linux. Untuk memeriksa akun dengan kata sandi kosong, gunakan perintah di bawah ini
# cat /etc/shadow | awk -F:'($2==""){print $1}'paulDemi keamanan, ada baiknya mengunci semua akun sandi kosong:
# passwd -l paulLocking password untuk pengguna paul.passwd:Berhasil6. Menyetel parameter kernel
Sysctl adalah antarmuka untuk memeriksa dan mengubah parameter secara dinamis dalam sistem operasi Linux. Edit
/etc/sysctl.conf
file untuk mengoptimalkan parameter kernelSysctl adalah perintah yang digunakan untuk mengubah parameter kernel pada saat dijalankan.
# sysctl -a
# sysctl -A
# sysctl net.ipv4.conf.all.rp_filter
To load settings, enter:
# sysctl -p
Copy-Paste konten berikut ke
/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 net.ipv4.conf.default.log_martians = 1 # Disable ICMP routing redirects sysctl -w net.ipv4.conf.all.accept_redirects=0 sysctl -w net.ipv6.conf.all.accept_redirects=0 sysctl -w net.ipv4.conf.all.send_redirects=0 sysctl -w net.ipv6.conf.all.send_redirects=0 # Disables the magic-sysrq key kernel.sysrq = 0 # Turn off the tcp_sack net.ipv4.tcp_sack = 0 # Turn off the tcp_timestamps net.ipv4.tcp_timestamps = 0 # Enable TCP SYN Cookie Protection net.ipv4.tcp_syncookies = 1 # Enable bad error message Protection net.ipv4.icmp_ignore_bogus_error_responses = 1
7. Nonaktifkan Layanan yang Tidak Diinginkan
Anda perlu menghapus semua layanan dan daemon yang tidak diinginkan (layanan yang berjalan di latar belakang) dari sistem start-up yang dimulai saat boot di run level 3 .
# chkconfig --list | grep '3:on'
Untuk menonaktifkan layanan, masukkan:
# service serviceName stop # chkconfig serviceName off
8. Memerlukan Otentikasi untuk Mode Pengguna Tunggal
Disarankan untuk meminta kata sandi root saat memasuki mode pengguna tunggal. Buka
/etc/sysconfig/init
file dan tambahkan baris:SINGLE=/sbin/sulogin
9. Linux yang Ditingkatkan Keamanan (SELinux)
SELinux adalah seperangkat aturan keamanan yang menentukan proses mana yang dapat mengakses file, direktori, port, dll. Setiap file, proses, direktori, dan port memiliki label keamanan khusus yang disebut konteks SELinux. Konteks hanyalah sebuah nama yang digunakan oleh kebijakan SELinux untuk menentukan apakah suatu proses dapat mengakses file, direktori atau port. Secara default, kebijakan tidak mengizinkan interaksi apa pun, jadi aturan eksplisit memberikan akses. Jika tidak ada aturan izinkan, tidak ada akses yang diizinkan.
mendapatkan kekuatan perintah memberi tahu kita mode apa SELinux berada.
Kita dapat mengubah mode SELinux menjadi enforcing dengan mengubah
SELINUX=enforcing
di/etc/sysconfig/selinux
Ada tiga arahan dalam file ini seperti yang dijelaskan di bawah ini.
- Menegakkan: Kebijakan keamanan SELinux diberlakukan.
- Permisif: SELinux mencetak peringatan alih-alih menegakkan.
- Dinonaktifkan: SELinux sepenuhnya dinonaktifkan.
Anda dapat memeriksa status SELinux dengan perintah
# sestatus
SELinux status: disabled
Anda melihat bahwa itu dinonaktifkan. Untuk mengaktifkannya, Anda dapat menggunakan
# setenforce enforcing
10. Siapkan firewall dengan iptables
iptables adalah program aplikasi ruang pengguna yang memungkinkan administrator sistem untuk mengonfigurasi tabel yang disediakan oleh Linux Kernel Firewall dan rantai serta aturan yang disimpannya.
a. Tutup semua port yang Tidak Diinginkan
iptables -A INPUT -p tcp --dport PORT_NUMBER -j DROP
b. Blokir IP yang buruk
iptables -A INPUT -s IP_ADDRESS -j DROP
c. Blokir Koneksi ke Antarmuka Jaringan
Untuk memblokir koneksi dari alamat IP tertentu ke antarmuka jaringan tertentu, gunakan perintah
# iptables -A INPUT -i ens0 -s 6.6.6.6 -j DROP
d. Buat daftar aturan iptables
Anda dapat melihat semua aturan iptables dengan perintah
iptables -L -n -v
11. Memverifikasi sistem File
Semua file yang mendukung bit SUID/SGID dapat digunakan untuk aktivitas jahat, ketika file yang dapat dieksekusi SUID/SGID memiliki masalah keamanan. Semua pengguna lokal atau jarak jauh dapat menggunakan file tersebut.
a. Identifikasi biner SUID dan SGID yang tidak diinginkan
find / \( -perm -4000 -o -perm -2000 \) -print
find / -path -prune -o -type f -perm +6000 -ls
b. Identifikasi file dunia yang dapat ditulis
find /dir -xdev -type d \( -perm -0002 -a ! -perm -1000 \) -print
c. Identifikasi file dan folder Yatim
find /dir -xdev \( -nouser -o -nogroup \) -print
12. Simpan /boot sebagai hanya-baca
Kernel Linux dan file terkait ada di direktori /boot yang secara default sebagai baca-tulis. Mengubahnya ke read-only mengurangi risiko modifikasi tidak sah dari file boot penting. Kita perlu mengedit /etc/fstab
file dan masukkan baris di bawah ini<
LABEL=/boot /boot ext2 defaults,ro 1 2
13. Tolak Semua Pembungkus TCP
Pembungkus TCP dapat menyediakan metode yang cepat dan mudah untuk mengontrol akses ke aplikasi yang terhubung dengannya. Jadi disarankan untuk memblokir semua aplikasi yang tidak digunakan dan kemudian hanya mengizinkan aplikasi yang akan digunakan.
Misalnya, kami akan memblokir semua aplikasi tetapi hanya ssh yang diotorisasi
echo "ALL:ALL" >> /etc/hosts.deny
echo "sshd:ALL" >> /etc/hosts.allow
14. Kunci cronjobs untuk pengguna yang tidak sah
Cron digunakan untuk mengotomatisasi pekerjaan pada waktu tertentu. Dimungkinkan untuk menentukan siapa yang mungkin dan mungkin tidak dapat menjalankan pekerjaan. Ini dikendalikan oleh penggunaan file bernama /etc/cron.allow
dan /etc/cron.deny
. Untuk mengunci pengguna menggunakan cron, cukup tambahkan nama pengguna di cron.deny dan untuk mengizinkan pengguna menjalankan cron tambahkan file cron.allow.
# echo ALL >>/etc/cron.deny
15. Amankan server dari buffer overflow
Buffer overflow terjadi ketika sebuah program atau proses mencoba untuk menulis lebih banyak data ke blok memori yang panjangnya tetap, atau buffer, daripada buffer yang dialokasikan untuk disimpan. Penting untuk melindungi server Anda lagi dari serangan ini
a. Aktifkan ExecShield
Ini membantu untuk mencegah stack smashing. Biasanya, eksploitasi buffer overflow menimpa alamat pengirim sehingga fungsi akan kembali ke alamat yang dipilih penyerang. Anda perlu mengaktifkan pada kernel saat ini
sysctl -w kernel.exec-shield=1
Anda juga dapat menambahkan baris di bawah ini ke /etc/sysctl.conf
kernel.exec-shield = 1
b. Centang / Aktifkan ASLR
Address Space Layout Randomization adalah fitur pertahanan untuk membuat buffer overflows lebih sulit. ASLR mempersulit penyerang untuk menemukan alamat yang dituju. Anda perlu mengaktifkan Penempatan Wilayah Memori Virtual acak dengan menyetel waktu proses untuk kernel.randomize_va_space
sysctl -q -n -w kernel.randomize_va_space=2
Tambahkan baris di bawah ini ke /etc/sysctl.conf
jika belum ada
kernel.randomize_va_space = 2
Kesimpulan
Ini adalah beberapa pertimbangan dasar bagi pengguna baru yang mencoba menjalankan server mereka sendiri. Ingatlah bahwa kerupuk selalu selangkah lebih maju; mereka terus mencari celah untuk diretas ke server Anda. Penting untuk diketahui bahwa, meskipun lebih baik terlambat daripada tidak sama sekali, langkah-langkah keamanan menurun keefektifannya semakin lama Anda menunggu untuk menerapkannya