Materi Administrasi Linux Debian Kelas XII TJKT ini membekali siswa kelas XII TJKT untuk membaca struktur konfigurasi Debian, mengelola layanan dengan systemd, menganalisis log dengan journalctl, dan memperbaiki gangguan server secara sistematis.
Tujuan pembelajaran dan prasyarat
Setelah mempelajari materi administrasi Linux Debian lanjutan ini, siswa kelas XII TJKT mampu:
- Menjelaskan fungsi direktori dan file konfigurasi utama di /etc pada Debian.
- Mengubah konfigurasi dengan aman: backup, uji sintaks, terapkan, lalu verifikasi.
- Mengelola layanan dengan systemctl (start, stop, restart, reload, enable, disable, status).
- Membaca dan menyaring log sistem dengan journalctl dan file di /var/log.
- Mendiagnosis serta memperbaiki layanan yang gagal dengan alur troubleshooting yang runtut.
Prasyarat yang perlu disiapkan:
- Debian 12 (Bookworm) atau Debian 13 (Trixie) yang berjalan di VirtualBox, VMware, atau mesin fisik.
- Akun dengan hak
sudoatau aksesroot. - Perintah dasar:
ls,cd,cp,nano, danapt. - Konsep dasar jaringan: alamat IP, gateway, DNS, dan nomor port.
Struktur konfigurasi Debian
Hampir seluruh konfigurasi sistem Debian berupa file teks di direktori /etc. Dengan memahami peta direktori ini, administrator langsung tahu ke mana harus melihat ketika sebuah layanan berperilaku aneh.
| Path | Fungsi | Dipakai saat |
|---|---|---|
/etc/hostname, /etc/hosts | Nama host dan pemetaan nama ke IP lokal | Mengganti nama server, menguji nama tanpa DNS |
/etc/network/interfaces | IP statis atau DHCP (ifupdown) | Mengatur alamat IP server |
/etc/resolv.conf | Alamat DNS resolver | Nama domain tidak bisa di-resolve |
/etc/apt/sources.list dan /etc/apt/sources.list.d/ | Repositori paket | apt update gagal; instalasi baru Debian 13 umumnya memakai format deb822 (debian.sources) |
/etc/fstab | Partisi yang di-mount saat boot | Menambah disk, boot masuk emergency mode |
/etc/passwd, /etc/shadow, /etc/group | Akun, hash kata sandi, dan grup | Manajemen pengguna |
/etc/sudoers, /etc/sudoers.d/ | Hak sudo (edit dengan visudo) | Memberi hak administrator |
/etc/ssh/sshd_config | Konfigurasi server SSH | Akses remote |
/etc/systemd/system/ | Unit file buatan admin dan override | Membuat atau mengubah layanan |
/etc/systemd/journald.conf | Penyimpanan log journald | Log persisten, batas ukuran log |
/etc/rsyslog.conf, /etc/logrotate.conf | Aturan log teks dan rotasinya | Mengatur isi /var/log |
/etc/apache2/, /etc/bind/, /etc/dhcp/ | Konfigurasi web, DNS, dan DHCP server | Layanan jaringan |
Pola yang perlu dikenali
- Direktori berakhiran
.d(misalnya/etc/ssh/sshd_config.d/) menampung potongan konfigurasi yang dibaca berurutan. Ini cara paling rapi menambah pengaturan tanpa menyentuh file utama. - Apache memakai
sites-availabledansites-enabled; situs diaktifkan dengana2ensite. - File konfigurasi yang Anda ubah dilindungi saat upgrade paket:
dpkgakan bertanya apakah versi Anda dipertahankan. /etc/default/berisi variabel yang dibaca skrip layanan.
Alur aman mengubah konfigurasi
Terapkan lima langkah ini pada setiap perubahan, supaya kesalahan ketik tidak menjatuhkan layanan:
- Backup file yang akan diubah.
- Ubah dengan editor.
- Uji sintaks sebelum diterapkan.
- Terapkan dengan
reloadataurestart. - Verifikasi status dan log.
cp -a /etc/ssh/sshd_config /etc/ssh/sshd_config.bak # 1. backup
sudoedit /etc/ssh/sshd_config # 2. ubah
sudo sshd -t # 3. uji sintaks
sudo systemctl reload ssh # 4. terapkan
systemctl status ssh --no-pager sudo # 5. verifikasi
diff -u /etc/ssh/sshd_config.bak /etc/ssh/sshd_config # catat apa yang berubah
Setiap layanan punya perintah uji sendiri: apache2ctl configtest, named-checkconf, nginx -t, dan visudo -c.
Pengelolaan layanan dengan systemd
systemd adalah manajer sistem dan layanan yang berjalan sebagai proses pertama (PID 1) di Debian. Ia menjalankan layanan saat boot, memantaunya, dan mencatat keluarannya ke journal. Objek yang dikelola disebut unit: .service (layanan), .socket, .timer (penjadwal pengganti cron), .mount, dan .target (kelompok unit, mirip runlevel).
Perintah systemctl yang wajib dikuasai
| Perintah | Fungsi |
|---|---|
systemctl status ssh | Status, PID, dan beberapa baris log terakhir |
systemctl start ssh / stop ssh / restart ssh | Menjalankan, menghentikan, memulai ulang layanan |
systemctl reload ssh | Membaca ulang konfigurasi tanpa memutus layanan (jika didukung) |
systemctl enable --now ssh | Aktif otomatis saat boot sekaligus dijalankan sekarang |
systemctl disable ssh | Tidak lagi berjalan otomatis saat boot |
systemctl is-active ssh / is-enabled ssh | Cek singkat, cocok untuk skrip |
systemctl list-units --type=service | Daftar layanan yang dimuat |
systemctl --failed | Hanya unit yang gagal |
systemctl cat ssh | Menampilkan unit file lengkap beserta override |
systemctl list-dependencies ssh | Pohon dependensi unit |
systemctl mask nama | Memblokir unit sepenuhnya agar tidak bisa dijalankan |
Di Debian nama unit SSH adalah ssh.service (bukan sshd). Gunakan sudo untuk perintah yang mengubah keadaan layanan.
Membaca keluaran status
Perintah systemctl status memuat tiga hal penting: baris Loaded (lokasi unit file dan apakah enabled), baris Active (keadaan sekarang), dan potongan log di bagian bawah.
Keadaan Active | Artinya |
|---|---|
active (running) | Proses berjalan normal |
active (exited) | Selesai menjalankan tugas satu kali (umum pada layanan oneshot) |
inactive (dead) | Tidak berjalan, belum dijalankan atau sudah dihentikan |
activating (auto-restart) | Gagal lalu sedang dicoba ulang otomatis |
failed | Proses keluar dengan error atau gagal start; lanjutkan ke journalctl -u nama -xe |
Restart atau reload?
restart menghentikan lalu menjalankan ulang proses sehingga koneksi aktif terputus sesaat. reload hanya meminta proses membaca ulang konfigurasi. Pada server yang sedang dipakai, pilih reload bila layanan mendukungnya, dan selalu uji sintaks lebih dulu.
Target: pengganti runlevel
systemctl get-default # target bawaan saat boot
sudo systemctl set-default multi-user.target # server tanpa GUI
sudo systemctl isolate rescue.target # masuk mode rescue untuk perbaikan
Membuat unit service sendiri
Contoh berikut membuat layanan web sederhana. Pastikan python3 terpasang (sudo apt install python3). Simpan sebagai /etc/systemd/system/web-kelas.service:
[Unit]
Description=Web sederhana kelas XII TJKT
After=network.target
[Service]
User=www-data
ExecStart=/usr/bin/python3 -m http.server 8080 --directory /srv/web
Restart=on-failure
[Install]
WantedBy=multi-user.target
sudo mkdir -p /srv/web
echo "Halo dari layanan systemd" | sudo tee /srv/web/index.html
sudo systemctl daemon-reload # wajib setiap unit file dibuat/diubah
sudo systemctl enable --now web-kelas
systemctl status web-kelas --no-pager
curl http://localhost:8080
Untuk mengubah layanan bawaan paket tanpa menyentuh file aslinya, gunakan sudo systemctl edit ssh. Perintah ini membuat file override di /etc/systemd/system/ssh.service.d/override.conf yang tetap aman saat paket di-upgrade.
Log sistem: journald, rsyslog, dan /var/log
Debian punya dua jalur pencatatan: journald (format biner, dibaca dengan journalctl) dan rsyslog (file teks di /var/log). Pada instalasi minimal Debian 12 dan 13, rsyslog bisa saja tidak terpasang, sehingga file seperti /var/log/syslog tidak ada. journalctl tetap berfungsi. Jika Anda ingin file teks klasik, pasang dengan sudo apt install rsyslog.
journalctl: filter yang paling sering dipakai
| Tujuan | Perintah |
|---|---|
| Log terbaru secara real time | journalctl -f |
| Sejak boot terakhir | journalctl -b |
| Boot sebelumnya | journalctl -b -1 (daftar boot: journalctl --list-boots) |
| Satu layanan | journalctl -u ssh |
| Layanan dengan penjelasan error | journalctl -u apache2 -xe |
| Hanya error atau lebih parah | journalctl -p err -b |
| Rentang waktu | journalctl --since "09:00" --until "10:00" atau --since yesterday |
| Pesan kernel | journalctl -k |
| Milik satu pengguna | journalctl _UID=1000 --since today |
| Ukuran log sekarang | journalctl --disk-usage |
| Hapus log lama | sudo journalctl --vacuum-time=2weeks |
Tingkat prioritas log berurutan dari yang paling parah: 0 emerg, 1 alert, 2 crit, 3 err, 4 warning, 5 notice, 6 info, 7 debug. Opsi -p err menampilkan level 3 dan yang lebih parah.
Membuat log tersimpan permanen
Journal bisa tersimpan hanya di memori (/run/log/journal) sehingga hilang saat reboot. Cek dengan ls /var/log/journal. Jika direktori belum ada, buat dan atur penyimpanan persisten:
sudo mkdir -p /var/log/journal
sudoedit /etc/systemd/journald.conf # isi: Storage=persistent dan SystemMaxUse=200M
sudo systemctl restart systemd-journald
journalctl --disk-usage
File log klasik di /var/log
| File | Isi |
|---|---|
/var/log/syslog | Pesan sistem umum (butuh rsyslog) |
/var/log/auth.log | Login, sudo, dan SSH (butuh rsyslog) |
/var/log/kern.log | Pesan kernel (butuh rsyslog) |
/var/log/dpkg.log, /var/log/apt/history.log | Riwayat instalasi dan penghapusan paket |
/var/log/apache2/error.log, access.log | Log web server Apache |
/var/log/wtmp, /var/log/btmp | Riwayat login berhasil dan gagal, dibaca dengan last dan lastb |
Alat bantu baca file teks: tail -f untuk memantau, less untuk menjelajah, dan grep untuk mencari, misalnya sudo grep "Failed password" /var/log/auth.log | tail. Agar log tidak memenuhi disk, logrotate (diatur di /etc/logrotate.conf dan /etc/logrotate.d/) memutar dan mengompres file log secara berkala.
Latihan membaca satu baris log
Berikut contoh baris log SSH (data contoh):
Oct 27 10:15:02 debian sshd[1234]: Failed password for invalid user admin from 192.168.1.50 port 52144 ssh2
Baris ini terbaca dari kiri ke kanan: waktu kejadian, nama host, proses beserta PID (sshd[1234]), lalu pesan. Artinya ada percobaan login dengan akun admin yang tidak ada, dari alamat 192.168.1.50. Banyak baris serupa dalam waktu singkat adalah tanda percobaan tebak kata sandi.
Troubleshooting Debian: alur 6 langkah
Troubleshooting yang baik adalah kebiasaan bekerja runtut, bukan menebak perintah. Gunakan enam langkah ini setiap kali sebuah layanan atau jaringan bermasalah:
- Definisikan gejala. Apa yang tidak berfungsi, sejak kapan, dan apa yang baru saja diubah? Perubahan terakhir adalah tersangka utama.
- Cek status layanan.
systemctl status namadansystemctl --failed. - Baca log.
journalctl -u nama -xeataujournalctl -p err -b. - Uji konfigurasi. Jalankan perintah uji sintaks layanan, misalnya
apache2ctl configtestatausshd -t. - Periksa sumber daya dan jaringan.
df -h(disk),free -h(memori),ss -tulpn(port yang dipakai),ip adanip r(IP dan rute),pingdandig(konektivitas dan DNS). - Perbaiki, verifikasi, dokumentasikan. Ubah satu hal pada satu waktu, uji ulang, lalu catat penyebab dan perbaikannya.
Tabel kasus gangguan umum
| Gejala | Kemungkinan penyebab | Diagnosis | Perbaikan |
|---|---|---|---|
Layanan failed saat start | Salah sintaks konfigurasi, port bentrok | systemctl status X, journalctl -u X -xe, ss -tulpn | Perbaiki konfigurasi, hentikan proses yang memakai port yang sama |
| Tidak bisa SSH ke server | Layanan ssh mati, port salah, firewall menutup | systemctl status ssh, ss -tlnp, journalctl -u ssh | Jalankan layanan, cek sshd -t, periksa aturan firewall |
| Server tidak punya IP atau internet | /etc/network/interfaces salah, gateway keliru | ip a, ip r, systemctl status networking | Perbaiki file, lalu sudo systemctl restart networking |
| Nama domain tidak ter-resolve | /etc/resolv.conf kosong atau salah | cat /etc/resolv.conf, dig google.com | Isi nameserver yang benar |
| Disk penuh, layanan error | Log atau file besar di /var | df -h, sudo du -xh /var | sort -h | tail, journalctl --disk-usage | Bersihkan, journalctl --vacuum-time, atur logrotate |
apt update gagal | Repositori salah, tidak ada koneksi | cat /etc/apt/sources.list, ping deb.debian.org | Perbaiki sumber repositori dan koneksi |
| Boot berhenti di emergency mode | Baris /etc/fstab salah atau disk hilang | journalctl -xb -p 3, systemctl --failed | Perbaiki /etc/fstab, uji dengan mount -a |
| Situs web tidak terbuka | Apache mati, konfigurasi salah, port 80 tertutup | apache2ctl configtest, journalctl -u apache2, ss -tulpn | Perbaiki konfigurasi, reload, cek firewall |
| Layanan mati setelah reboot | Belum di-enable | systemctl is-enabled X | sudo systemctl enable X |
Kebiasaan yang mencegah masalah
- Selalu simpan salinan file konfigurasi sebelum mengubahnya.
- Pertahankan satu sesi SSH tetap terbuka saat mengubah konfigurasi SSH atau firewall, agar Anda tidak terkunci di luar server.
- Gunakan
reloadsetelah uji sintaks lulus, bukanrestartlangsung. - Catat setiap perubahan: tanggal, file, alasan, dan hasil.
Praktikum terpandu
Kerjakan tiga lab berikut di mesin virtual Debian. Setiap lab melatih satu kompetensi: konfigurasi, layanan, dan troubleshooting berbasis log.
Lab 1: Mengamankan SSH dengan alur konfigurasi aman
Tujuan: menonaktifkan login root lewat SSH tanpa memutus akses.
- Buka dua sesi terminal. Biarkan satu sesi tetap terhubung sebagai cadangan.
- Backup:
sudo cp -a /etc/ssh/sshd_config /etc/ssh/sshd_config.bak. - Edit
sudoedit /etc/ssh/sshd_config, ubah atau tambahkanPermitRootLogin no. - Uji sintaks:
sudo sshd -t(tidak ada keluaran berarti benar). - Terapkan:
sudo systemctl reload ssh. - Verifikasi:
systemctl status sshdanjournalctl -u ssh -n 20.
Hasil yang diharapkan: layanan active (running), login root lewat SSH ditolak, dan sesi cadangan tetap hidup.
Lab 2: Membuat dan memperbaiki layanan systemd
Tujuan: membuat unit web-kelas.service dari bagian sebelumnya lalu mendiagnosis kegagalannya.
- Buat unit file dan jalankan sampai
curl http://localhost:8080menampilkan teks. - Sabotase: ubah
ExecStartmenjadi path yang salah (misalnya/usr/bin/python4), lalusudo systemctl daemon-reloaddansudo systemctl restart web-kelas. - Amati
systemctl status web-kelasyang berstatusfailed. - Baca penyebabnya:
journalctl -u web-kelas -xe. - Perbaiki path,
daemon-reload,restart, lalu uji ulang dengancurl. - Uji
enable: reboot dan pastikan layanan berjalan sendiri (systemctl is-enabled web-kelas).
Hasil yang diharapkan: siswa bisa menunjukkan baris log yang menjelaskan kegagalan dan menyebut langkah perbaikannya.
Lab 3: Troubleshooting web server Apache
Tujuan: menemukan dan memperbaiki kesalahan konfigurasi menggunakan uji sintaks dan log.
- Pasang dan jalankan Apache:
sudo apt install apache2, lalu buka halaman bawaan dari klien. - Backup:
sudo cp -a /etc/apache2/apache2.conf /etc/apache2/apache2.conf.bak. - Rusak dengan sengaja: tambahkan satu baris berisi direktif yang salah ketik di akhir
apache2.conf. - Coba
sudo systemctl reload apache2, lalu amati pesan kegagalannya. - Diagnosis:
sudo apache2ctl configtestdanjournalctl -u apache2 -xe. - Pulihkan dari backup atau hapus baris yang salah, uji sintaks, lalu
reload. - Tulis laporan singkat: gejala, penyebab, langkah perbaikan, dan pencegahan.
Hasil yang diharapkan: configtest menampilkan Syntax OK dan halaman web dapat diakses kembali.
Soal latihan administrasi Linux Debian
Pilihan ganda
- Direktori utama penyimpanan file konfigurasi sistem di Debian adalah: (a)
/var, (b)/etc, (c)/usr, (d)/home. - Perintah untuk menampilkan hanya unit systemd yang gagal adalah: (a)
systemctl --failed, (b)systemctl list-all, (c)systemctl mask, (d)systemctl is-enabled. - Agar sebuah layanan berjalan otomatis setiap boot, perintah yang tepat adalah: (a)
systemctl start, (b)systemctl enable, (c)systemctl reload, (d)systemctl isolate. - Pernyataan yang benar tentang
reloaddanrestart: (a)reloadmembaca ulang konfigurasi tanpa menghentikan proses,restartmenghentikan lalu menjalankan ulang; (b)reloadselalu menghapus konfigurasi; (c) keduanya identik; (d)restarthanya membaca ulang konfigurasi. - Perintah untuk melihat log layanan SSH sejak boot terakhir adalah: (a)
journalctl -u ssh -b, (b)systemctl log ssh, (c)cat /etc/ssh, (d)journalctl --disk-usage. - Level prioritas log
errbernomor: (a) 0, (b) 3, (c) 5, (d) 7. - Perintah untuk menguji sintaks konfigurasi Apache adalah: (a)
apache2ctl configtest, (b)apache2 --clean, (c)systemctl cat apache2, (d)journalctl -k. - File yang mengatur partisi yang di-mount saat boot adalah: (a)
/etc/hosts, (b)/etc/fstab, (c)/etc/passwd, (d)/etc/resolv.conf.
Uraian
- Situs web di server Debian tidak bisa dibuka. Urutkan langkah troubleshooting Anda dan sebutkan perintah yang dipakai pada tiap langkah.
- Jelaskan tiga alasan mengapa file konfigurasi perlu di-backup dan diuji sintaksnya sebelum layanan di-
reload.
FAQ administrasi Linux Debian untuk siswa TJKT
Apa yang dipelajari dalam administrasi sistem jaringan kelas XII TJKT?
Siswa umumnya mendalami pengelolaan server berbasis Linux seperti Debian: konfigurasi, layanan jaringan (SSH, DNS, DHCP, web), pemantauan log, dan pemecahan masalah. Materi ini membahas fondasinya; cakupan pastinya mengikuti kurikulum dan modul sekolah Anda.
Apa perbedaan service dan systemctl?
systemctl adalah alat utama systemd dan lebih lengkap. Perintah service nama status di Debian masih bisa dipakai sebagai pembungkus yang meneruskan ke systemd, tetapi untuk belajar gunakan systemctl.
Di mana file log di Debian 12 dan 13?
Journal tersimpan di /var/log/journal (persisten) atau /run/log/journal (hilang saat reboot) dan dibaca dengan journalctl. File teks di /var/log seperti auth.log baru ada jika rsyslog terpasang.
Mengapa /var/log/syslog tidak ada di Debian saya?
Kemungkinan besar rsyslog belum terpasang. Pasang dengan sudo apt install rsyslog, atau langsung gunakan journalctl yang sudah tersedia.
Bagaimana cara melihat log layanan yang error?
Jalankan journalctl -u nama-layanan -xe untuk log terbaru beserta penjelasan, atau journalctl -u nama-layanan -b -p err untuk error sejak boot terakhir.
Bagaimana cara mengatasi service failed di Linux?
Ikuti alur enam langkah: tetapkan gejala, cek systemctl status, baca log dengan journalctl, uji konfigurasi, periksa disk, port, dan jaringan, lalu perbaiki dan verifikasi.
Apakah saya harus login sebagai root?
Tidak. Login sebagai pengguna biasa dan gunakan sudo hanya untuk perintah yang memerlukannya. Cara ini lebih aman dan meninggalkan jejak di log.
Debian versi berapa yang sebaiknya dipakai untuk belajar?
Gunakan rilis stabil yang dipakai sekolah Anda. Untuk materi ini, perintah di Debian 12 dan 13 pada dasarnya sama; perbedaan yang paling terlihat ada pada format file repositori APT.
