Sistem Linux adalah hal yang rumit. Di luar kotak, setiap distribusi menyertakan sejumlah layanan yang dimaksudkan untuk membantu Anda menyiapkan dan menjalankan semuanya. Beberapa distribusi mengaktifkan lebih sedikit layanan secara default, dan beberapa mengaktifkan lebih banyak. Perbedaannya terletak pada kenyamanan. Beberapa distribusi mencoba membuat Anda siap dan berjalan dengan cepat, sehingga mereka memiliki serangkaian besar layanan default yang diaktifkan untuk memudahkan Anda menyiapkan, masuk, dan mengonfigurasi. Yang lain mengambil pendekatan yang berlawanan dan hampir tidak menginstal apa pun secara default.
Artikel ini adalah awal dari seri pendek, di mana kita akan berbicara sedikit tentang pengerasan, sedikit tentang segmentasi, dan akhirnya bagaimana memindai jaringan kita untuk melihat apakah kita melakukannya dengan benar. Jadi tunggu sebentar dan biarkan saya menunjukkan kepada Anda melalui beberapa lapisan pertahanan.
Instal lebih sedikit perangkat lunak
Ketika saya menginstal sistem baru, saya mencoba untuk menginstal sesedikit mungkin. Saya mulai dengan set paket dasar dan benar-benar tidak menginstal yang lain. Sangat mudah untuk menambahkan layanan setelah instalasi, jadi mengapa mempersulit prosesnya? Selain itu, jika Anda sering melakukan ini, Anda mungkin ingin menginstal dari sistem Kickstart (atau template). Jadi, Anda ingin menyiapkannya sesederhana dan seumum mungkin.
Untuk artikel ini, saya menginstal sistem dasar Red Hat Enterprise Linux (RHEL) 7.6 untuk melakukan beberapa pengujian nyata. Saya melakukan minimal selama instalasi, memilih base
paket mengatur dan mengatur kata sandi, nama pengguna, dan jaringan saya. Saya juga mengaktifkan Network Time Protocol (NTP).
Identifikasi port yang terbuka
Setelah instalasi, kita dapat melihat daftar port yang terbuka. Port adalah cara layanan yang berjalan di server Anda memungkinkan sistem lain untuk terhubung dengannya. Server web, misalnya, akan mengikat port 80 dan 443 ke layanan server web. Dalam artikel ini, kami akan mengidentifikasi layanan apa yang memiliki port terbuka di penginstalan dasar Anda, dan kemudian melihat cara membuat daftar layanan dan menonaktifkan layanan yang tidak kami inginkan.
Pada sistem Red Hat Enterprise Linux 7.6, kami menggunakan ss
perintah untuk melihat informasi ini. Pada sistem yang masih dikirimkan dengan netstat
, Anda akan menggunakan netstat
perintah.
Menjalankan ss
pada sistem pengujian kami menunjukkan beberapa port terbuka:
[root@rhel76test ~]# ss -tulnp --no-header | awk '{print($1, $5, $7)}'
udp *:68 users:(("dhclient",pid=3316,fd=6))
udp 127.0.0.1:323 users:(("chronyd",pid=2974,fd=1))
udp ::1:323 users:(("chronyd",pid=2974,fd=2))
tcp *:22 users:(("sshd",pid=3523,fd=3))
tcp 127.0.0.1:25 users:(("master",pid=3771,fd=13))
tcp :::22 users:(("sshd",pid=3523,fd=4))
tcp ::1:25 users:(("master",pid=3771,fd=14))
Sepertinya basis RHEL 7.6 tidak buruk. Perhatikan di kolom kedua, beberapa port yang terbuka menunjukkan IP dan kemudian port, dan yang lainnya memiliki *
dan kemudian pelabuhan. Entri yang terlihat seperti 127.0.0.1:25
berarti mereka hanya mendengarkan di localhost. Hasil ini berarti bahwa mereka tidak dapat diakses dari jarak jauh. Layanan yang terlihat seperti *:22
berarti mereka mendengarkan di antarmuka apa pun. Demikian juga, untuk alamat IPv6, kami memiliki ::1:323
, dan :::22
. ::1
entri adalah localhost, :::
terbuka lebar.
Apa artinya semua ini adalah bahwa sistem ini hanya memiliki dua port IPv4, dan satu port IPv6, terbuka untuk dunia. dhclient
service mungkin merupakan contoh yang baik dari sesuatu yang dapat kami nonaktifkan (yang akan menutup portnya), tetapi hanya jika server Anda tidak menggunakan DHCP untuk mendapatkan alamat IP-nya. Dalam kasus server pengujian saya, memang demikian.
Nonaktifkan layanan
Membuat daftar layanan dan menghentikan/menonaktifkannya relatif mudah di Red Hat Enterprise Linux 7. Kami akan menggunakan systemd
untuk membuat daftar semua unit yang aktif, lalu memintanya untuk menghentikan dan menonaktifkan unit yang tidak ingin kita jalankan.
Untuk membuat daftar semua layanan yang berjalan, Anda dapat menggunakan systemctl list-units --type=service --state=running
. Pada sistem pengujian saya, hasilnya menunjukkan 19 layanan yang sangat sederhana, dan sebagian besar tampaknya diperlukan. Kami akan memilih satu untuk didemonstrasikan, meskipun:
[root@rhel76test ~]# systemctl list-units --type=service --state=running
UNIT LOAD ACTIVE SUB DESCRIPTION
auditd.service loaded active running Security Auditing Service
chronyd.service loaded active running NTP client/server
crond.service loaded active running Command Scheduler
dbus.service loaded active running D-Bus System Message Bus
firewalld.service loaded active running firewalld - dynamic firewall daemon
[email protected] loaded active running Getty on tty1
lvm2-lvmetad.service loaded active running LVM2 metadata daemon
NetworkManager.service loaded active running Network Manager
polkit.service loaded active running Authorization Manager
postfix.service loaded active running Postfix Mail Transport Agent
qemu-guest-agent.service loaded active running QEMU Guest Agent
rhnsd.service loaded active running LSB: Starts the Spacewalk Daemon
rhsmcertd.service loaded active running Enable periodic update of entitlement certificates.
rsyslog.service loaded active running System Logging Service
sshd.service loaded active running OpenSSH server daemon
systemd-journald.service loaded active running Journal Service
systemd-logind.service loaded active running Login Service
systemd-udevd.service loaded active running udev Kernel Device Manager
tuned.service loaded active running Dynamic System Tuning Daemon
Katakanlah kita tidak ingin Postfix dimuat saat boot. Kami cukup menggunakan systemctl stop postfix
, lalu systemctl disable postfix
, seperti ini:
[root@rhel76test ~]# systemctl stop postfix
[root@rhel76test ~]# systemctl disable postfix
Removed symlink /etc/systemd/system/multi-user.target.wants/postfix.service.
[root@rhel76test ~]# systemctl list-units --type=service --state=running | grep postfix
Sekarang, Anda mungkin tidak ingin menonaktifkan Postfix, tetapi Anda mengerti maksudnya.
Menutup
Jadi, begitulah. Saya belajar sesuatu hari ini:Di luar kotak, Red Hat Enterprise Linux 7.6 cukup rapi dan rapi. Saya harap Anda mempelajari cara mencari dan menonaktifkan layanan untuk menurunkan permukaan serangan Anda.
Nantikan angsuran berikutnya dari seri ini, di mana saya akan berbicara tentang segmentasi jaringan dan firewall
Terima kasih telah membaca!