<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://noctkj.net/index.php?action=history&amp;feed=atom&amp;title=Linux_%3A_Praktikum_Hardening_SSH_dan_Audit_Konfigurasi</id>
	<title>Linux : Praktikum Hardening SSH dan Audit Konfigurasi - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://noctkj.net/index.php?action=history&amp;feed=atom&amp;title=Linux_%3A_Praktikum_Hardening_SSH_dan_Audit_Konfigurasi"/>
	<link rel="alternate" type="text/html" href="https://noctkj.net/index.php?title=Linux_:_Praktikum_Hardening_SSH_dan_Audit_Konfigurasi&amp;action=history"/>
	<updated>2026-11-11T17:45:44Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://noctkj.net/index.php?title=Linux_:_Praktikum_Hardening_SSH_dan_Audit_Konfigurasi&amp;diff=1731&amp;oldid=prev</id>
		<title>Maintenance script: Revisi: sudut audit server warisan + tautan artikel konsep pasangan (Page 761)</title>
		<link rel="alternate" type="text/html" href="https://noctkj.net/index.php?title=Linux_:_Praktikum_Hardening_SSH_dan_Audit_Konfigurasi&amp;diff=1731&amp;oldid=prev"/>
		<updated>2026-11-11T11:20:25Z</updated>

		<summary type="html">&lt;p&gt;Revisi: sudut audit server warisan + tautan artikel konsep pasangan (Page 761)&lt;/p&gt;
&lt;a href=&quot;https://noctkj.net/index.php?title=Linux_:_Praktikum_Hardening_SSH_dan_Audit_Konfigurasi&amp;amp;diff=1731&amp;amp;oldid=1728&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://noctkj.net/index.php?title=Linux_:_Praktikum_Hardening_SSH_dan_Audit_Konfigurasi&amp;diff=1728&amp;oldid=prev</id>
		<title>Maintenance script: Protected &quot;Linux : Praktikum Hardening SSH dan Audit Konfigurasi&quot;: Proteksi editorial: edit/move sysop ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite))</title>
		<link rel="alternate" type="text/html" href="https://noctkj.net/index.php?title=Linux_:_Praktikum_Hardening_SSH_dan_Audit_Konfigurasi&amp;diff=1728&amp;oldid=prev"/>
		<updated>2026-11-11T11:18:26Z</updated>

		<summary type="html">&lt;p&gt;Protected &amp;quot;&lt;a href=&quot;/index.php/Linux_:_Praktikum_Hardening_SSH_dan_Audit_Konfigurasi&quot; title=&quot;Linux : Praktikum Hardening SSH dan Audit Konfigurasi&quot;&gt;Linux : Praktikum Hardening SSH dan Audit Konfigurasi&lt;/a&gt;&amp;quot;: Proteksi editorial: edit/move sysop ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite))&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 18:18, 11 November 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://noctkj.net/index.php?title=Linux_:_Praktikum_Hardening_SSH_dan_Audit_Konfigurasi&amp;diff=1727&amp;oldid=prev</id>
		<title>Maintenance script: Praktikum pendamping: hardening SSH, audit konfigurasi efektif (sshd -T/-C), dan lima lapis bukti akses</title>
		<link rel="alternate" type="text/html" href="https://noctkj.net/index.php?title=Linux_:_Praktikum_Hardening_SSH_dan_Audit_Konfigurasi&amp;diff=1727&amp;oldid=prev"/>
		<updated>2026-11-11T11:18:22Z</updated>

		<summary type="html">&lt;p&gt;Praktikum pendamping: hardening SSH, audit konfigurasi efektif (sshd -T/-C), dan lima lapis bukti akses&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;SSH hardening&amp;#039;&amp;#039;&amp;#039; sering diajarkan sebagai daftar baris sakti: matikan password, matikan root, ganti port. Di server nyata, daftar itu sering gagal bukan karena salah tulis, tetapi karena berkas yang kamu edit bukan berkas yang dibaca &amp;lt;code&amp;gt;sshd&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Artikel ini adalah lab pendamping: kamu akan membangun baseline hardening di &amp;#039;&amp;#039;&amp;#039;instance sshd kedua&amp;#039;&amp;#039;&amp;#039; yang tidak menyentuh layanan produksi, lalu mematahkannya satu per satu. Tujuannya bukan menghafal opsi, tetapi bisa menunjuk bukti: setting mana yang benar-benar aktif, untuk user mana, dan dari mana asalnya.&lt;br /&gt;
&lt;br /&gt;
== 🎯 Tujuan ==&lt;br /&gt;
Setelah mengikuti lab ini, kamu bisa:&lt;br /&gt;
&lt;br /&gt;
* Menjelaskan &amp;#039;&amp;#039;&amp;#039;lima lapis keputusan akses SSH&amp;#039;&amp;#039;&amp;#039; dan berhenti di lapis pertama yang gagal.&lt;br /&gt;
* Membaca konfigurasi efektif &amp;lt;code&amp;gt;sshd&amp;lt;/code&amp;gt; lewat &amp;lt;code&amp;gt;sshd -T&amp;lt;/code&amp;gt;, bukan menebak dari isi berkas.&lt;br /&gt;
* Membuktikan bahwa urutan &amp;lt;code&amp;gt;Include&amp;lt;/code&amp;gt; membuat nilai dari &amp;lt;code&amp;gt;sshd_config.d/&amp;lt;/code&amp;gt; menang atas berkas utama.&lt;br /&gt;
* Menguji &amp;lt;code&amp;gt;Match&amp;lt;/code&amp;gt; untuk dua user berbeda pada satu berkas konfigurasi.&lt;br /&gt;
* Menegakkan kunci-saja, larangan root, &amp;lt;code&amp;gt;AllowUsers&amp;lt;/code&amp;gt;, dan izin berkas yang benar.&lt;br /&gt;
* Menjelaskan kenapa &amp;lt;code&amp;gt;sshd -t&amp;lt;/code&amp;gt; wajib dijalankan sebelum reload atau restart.&lt;br /&gt;
&lt;br /&gt;
== 📍 Konteks nyata ==&lt;br /&gt;
Bayangkan pos jaga sekolah. Ada gerbang (jaringan), daftar nama yang boleh masuk (identitas), kartu atau sidik jari (metode), kunci ruang tertentu (kewenangan), dan buku tamu (jejak).&lt;br /&gt;
&lt;br /&gt;
Kalau gerbangnya terbuka tetapi daftar nama tidak pernah dibaca, penjaga tetap meloloskan siapa pun. Itulah yang terjadi saat kamu menulis &amp;lt;code&amp;gt;PasswordAuthentication no&amp;lt;/code&amp;gt; di berkas utama, sementara berkas lain di folder &amp;lt;code&amp;gt;sshd_config.d/&amp;lt;/code&amp;gt; menulis &amp;lt;code&amp;gt;yes&amp;lt;/code&amp;gt; dan dibaca lebih dulu.&lt;br /&gt;
&lt;br /&gt;
* 💡 &amp;#039;&amp;#039;&amp;#039;Tips:&amp;#039;&amp;#039;&amp;#039; pegangan pertama hardening SSH: &amp;#039;&amp;#039;&amp;#039;berkas yang kamu tulis belum tentu berkas yang dibaca&amp;#039;&amp;#039;&amp;#039;. Selalu tutup pekerjaan dengan &amp;lt;code&amp;gt;sshd -T&amp;lt;/code&amp;gt; dan &amp;lt;code&amp;gt;-C&amp;lt;/code&amp;gt;, bukan dengan perasaan &amp;quot;sudah saya matikan&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Perintah &amp;lt;code&amp;gt;sshd -T&amp;lt;/code&amp;gt; adalah mode uji lanjutan: ia mencetak &amp;#039;&amp;#039;&amp;#039;konfigurasi efektif&amp;#039;&amp;#039;&amp;#039; setelah semua &amp;lt;code&amp;gt;Include&amp;lt;/code&amp;gt; dan &amp;lt;code&amp;gt;Match&amp;lt;/code&amp;gt; diterapkan. Tanpa alat itu, kamu hanya membaca niat, bukan kenyataan.&lt;br /&gt;
&lt;br /&gt;
== 🧠 Konsep singkat ==&lt;br /&gt;
Akses SSH adalah keputusan berlapis, bukan satu saklar. Setiap lapis bisa menolak lebih dulu, dan lapis sesudahnya tidak akan pernah dievaluasi.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Lapis !! Pertanyaan !! Alat bukti&lt;br /&gt;
|-&lt;br /&gt;
| 1. Jaringan || Apakah paket sampai ke port yang benar? || &amp;lt;code&amp;gt;ss -tlnp&amp;lt;/code&amp;gt;, aturan firewall&lt;br /&gt;
|-&lt;br /&gt;
| 2. Identitas || Apakah akun ini boleh login dari sini? || &amp;lt;code&amp;gt;AllowUsers&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DenyUsers&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 3. Metode || Dengan apa identitas dibuktikan? || &amp;lt;code&amp;gt;PubkeyAuthentication&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;PasswordAuthentication&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 4. Kewenangan || Setelah masuk, boleh melakukan apa? || &amp;lt;code&amp;gt;PermitRootLogin&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;sudo -l&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 5. Jejak || Apa yang tercatat setelah semuanya? || &amp;lt;code&amp;gt;journalctl -u ssh&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lastb&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Aturan kerjanya sederhana: &amp;#039;&amp;#039;&amp;#039;berhenti di lapis pertama yang gagal&amp;#039;&amp;#039;&amp;#039;. Kalau &amp;lt;code&amp;gt;Connection refused&amp;lt;/code&amp;gt;, jangan mengutak-atik &amp;lt;code&amp;gt;AllowUsers&amp;lt;/code&amp;gt;. Kalau kunci ditolak padahal akun benar, jangan menyalakan password sebagai &amp;quot;solusi&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== 🔹 Nilai pertama yang menang ===&lt;br /&gt;
&amp;lt;code&amp;gt;sshd_config(5)&amp;lt;/code&amp;gt; menulis aturan yang mudah terlewat: untuk setiap kata kunci, &amp;#039;&amp;#039;&amp;#039;nilai pertama yang ditemukan itulah yang dipakai&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Artinya urutan berkas menentukan hasil. Paket Debian dan Ubuntu menaruh &amp;lt;code&amp;gt;Include /etc/ssh/sshd_config.d/*.conf&amp;lt;/code&amp;gt; di &amp;#039;&amp;#039;&amp;#039;baris paling atas&amp;#039;&amp;#039;&amp;#039; berkas utama. Manpage-nya menyebut terang-terangan: opsi di folder itu akan &amp;#039;&amp;#039;&amp;#039;menimpa&amp;#039;&amp;#039;&amp;#039; opsi di &amp;lt;code&amp;gt;/etc/ssh/sshd_config&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* ⚠️ &amp;#039;&amp;#039;&amp;#039;Hati-hati:&amp;#039;&amp;#039;&amp;#039; kalau kamu menambahkan &amp;lt;code&amp;gt;PasswordAuthentication no&amp;lt;/code&amp;gt; di bagian bawah berkas utama, tetapi ada &amp;lt;code&amp;gt;50-cloud-init.conf&amp;lt;/code&amp;gt; berisi &amp;lt;code&amp;gt;PasswordAuthentication yes&amp;lt;/code&amp;gt;, maka nilai &amp;lt;code&amp;gt;yes&amp;lt;/code&amp;gt; yang menang. Berkasnya benar, hasilnya salah.&lt;br /&gt;
&lt;br /&gt;
=== 🔹 Satu berkas, dua kebenaran ===&lt;br /&gt;
&amp;lt;code&amp;gt;Match&amp;lt;/code&amp;gt; membuat blok bersyarat: jika kriteria terpenuhi, kata kunci di dalamnya &amp;#039;&amp;#039;&amp;#039;menimpa&amp;#039;&amp;#039;&amp;#039; bagian global. Ini fitur, bukan bug — tetapi berbahaya kalau kamu mengira satu setting berlaku untuk semua orang.&lt;br /&gt;
&lt;br /&gt;
Karena itu &amp;lt;code&amp;gt;sshd -T&amp;lt;/code&amp;gt; punya pasangan: &amp;lt;code&amp;gt;-C&amp;lt;/code&amp;gt; (connection spec). Dengan &amp;lt;code&amp;gt;-C user=...,addr=...,host=...&amp;lt;/code&amp;gt;, kamu bisa bertanya &amp;quot;kalau user ini datang dari alamat ini, konfigurasi efektifnya apa?&amp;quot;. Dua user, satu berkas, dua jawaban berbeda.&lt;br /&gt;
&lt;br /&gt;
* 📊 &amp;#039;&amp;#039;&amp;#039;Angka penting:&amp;#039;&amp;#039;&amp;#039; bawaan OpenSSH yang sering jadi sumber kejutan: &amp;lt;code&amp;gt;MaxAuthTries 6&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;MaxStartups 10:30:100&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LoginGraceTime 120&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ClientAliveInterval 0&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;PermitRootLogin prohibit-password&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;PasswordAuthentication yes&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;StrictModes yes&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== 🧩 Istilah penting ==&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Konfigurasi efektif&amp;#039;&amp;#039;&amp;#039; — hasil akhir setelah semua &amp;lt;code&amp;gt;Include&amp;lt;/code&amp;gt; dan &amp;lt;code&amp;gt;Match&amp;lt;/code&amp;gt; diterapkan, bukan isi mentah satu berkas.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Include&amp;#039;&amp;#039;&amp;#039; — perintah menyisipkan berkas lain pada posisi baris itu; di Debian diletakkan di awal berkas.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Drop-in&amp;#039;&amp;#039;&amp;#039; — berkas kecil di &amp;lt;code&amp;gt;sshd_config.d/&amp;lt;/code&amp;gt; untuk menambah atau menimpa pengaturan tanpa menyentuh berkas utama.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Match block&amp;#039;&amp;#039;&amp;#039; — blok bersyarat berdasarkan &amp;lt;code&amp;gt;User&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Group&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Address&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Host&amp;lt;/code&amp;gt;, atau &amp;lt;code&amp;gt;LocalPort&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;prohibit-password&amp;#039;&amp;#039;&amp;#039; — nilai &amp;lt;code&amp;gt;PermitRootLogin&amp;lt;/code&amp;gt; yang mematikan password untuk root, tetapi &amp;#039;&amp;#039;&amp;#039;masih mengizinkan kunci&amp;#039;&amp;#039;&amp;#039;. Ini bukan &amp;quot;root mati&amp;quot;.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;StrictModes&amp;#039;&amp;#039;&amp;#039; — pemeriksaan izin dan pemilik berkas kunci sebelum login diterima.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;MaxAuthTries&amp;#039;&amp;#039;&amp;#039; — batas percobaan autentikasi per koneksi; kegagalan mulai dicatat setelah mencapai separuh nilai.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;MaxStartups&amp;#039;&amp;#039;&amp;#039; — batas koneksi yang belum terautentikasi, ditulis &amp;lt;code&amp;gt;start:rate:full&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;AuthenticationMethods&amp;#039;&amp;#039;&amp;#039; — daftar metode yang harus berhasil berurutan, misalnya kunci lalu password.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;authorized_keys&amp;#039;&amp;#039;&amp;#039; — berkas kunci publik yang boleh masuk sebagai user tersebut.&lt;br /&gt;
&lt;br /&gt;
== 🔧 Praktik: baseline hardening di instance kedua ==&lt;br /&gt;
Lab ini memakai &amp;#039;&amp;#039;&amp;#039;instance sshd kedua di port 2222&amp;#039;&amp;#039;&amp;#039; dengan berkas konfigurasi sendiri. Layanan SSH asli di port 22 tidak disentuh, jadi kamu tidak bisa terkunci di tengah jalan.&lt;br /&gt;
&lt;br /&gt;
* ⚠️ &amp;#039;&amp;#039;&amp;#039;Hati-hati:&amp;#039;&amp;#039;&amp;#039; jangan pernah menguji &amp;quot;matikan password&amp;quot; langsung di server yang hanya bisa kamu akses lewat SSH. Selalu siapkan jalur kedua: konsol VM, snapshot, atau instance uji seperti di lab ini.&lt;br /&gt;
&lt;br /&gt;
=== 🔹 Langkah 1 — potret dulu, jangan ubah apa pun ===&lt;br /&gt;
# Siapkan satu user uji dan satu kunci di VM latihan Debian atau Ubuntu.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
sudo useradd -m -s /bin/bash lab&lt;br /&gt;
sudo passwd lab&lt;br /&gt;
sudo -u lab mkdir -p /home/lab/.ssh&lt;br /&gt;
sudo -u lab ssh-keygen -t ed25519 -f /home/lab/.ssh/id_lab -N &amp;quot;&amp;quot;&lt;br /&gt;
sudo -u lab cp /home/lab/.ssh/id_lab.pub /home/lab/.ssh/authorized_keys&lt;br /&gt;
sudo chmod 700 /home/lab/.ssh&lt;br /&gt;
sudo chmod 600 /home/lab/.ssh/authorized_keys&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Potret konfigurasi yang sedang berlaku, sebelum menyentuh apa pun.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
sudo sshd -T | sort &amp;gt; /tmp/baseline-sshd.txt&lt;br /&gt;
sudo sshd -T | grep -Ei &amp;#039;^(port|permitrootlogin|passwordauthentication|pubkeyauthentication|maxauthtries|allowusers|usepam)&amp;#039;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Catat hasilnya di lembar kerja. &amp;#039;&amp;#039;&amp;#039;Tanpa baseline, kamu tidak punya pembanding&amp;#039;&amp;#039;&amp;#039; untuk membuktikan perubahanmu bekerja.&lt;br /&gt;
&lt;br /&gt;
* 🧪 &amp;#039;&amp;#039;&amp;#039;Uji cepat:&amp;#039;&amp;#039;&amp;#039; &amp;lt;code&amp;gt;sudo sshd -T | wc -l&amp;lt;/code&amp;gt; memberi jumlah baris konfigurasi efektif. Kalau angkanya berubah setelah edit, ada sesuatu yang benar-benar terbaca — bukan sekadar tersimpan.&lt;br /&gt;
&lt;br /&gt;
=== 🔹 Langkah 2 — bangun instance kedua di port 2222 ===&lt;br /&gt;
# Buat salinan konfigurasi terpisah supaya produksi aman.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
sudo mkdir -p /tmp/ssh-lab/sshd_config.d&lt;br /&gt;
sudo mkdir -p /run/sshd&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Tulis konfigurasi lab yang mandiri. Perhatikan &amp;lt;code&amp;gt;Include&amp;lt;/code&amp;gt; di baris pertama — ini meniru perilaku paket Debian.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
sudo tee /tmp/ssh-lab/sshd_config &amp;gt; /dev/null &amp;lt;&amp;lt;&amp;#039;EOF&amp;#039;&lt;br /&gt;
Include /tmp/ssh-lab/sshd_config.d/*.conf&lt;br /&gt;
Port 2222&lt;br /&gt;
PidFile /tmp/ssh-lab/sshd.pid&lt;br /&gt;
HostKey /etc/ssh/ssh_host_ed25519_key&lt;br /&gt;
LogLevel VERBOSE&lt;br /&gt;
PasswordAuthentication yes&lt;br /&gt;
PubkeyAuthentication yes&lt;br /&gt;
PermitRootLogin prohibit-password&lt;br /&gt;
UsePAM yes&lt;br /&gt;
EOF&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Validasi, lalu jalankan instance lab di latar belakang dengan berkas log sendiri.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
sudo sshd -t -f /tmp/ssh-lab/sshd_config&lt;br /&gt;
sudo /usr/sbin/sshd -f /tmp/ssh-lab/sshd_config -E /tmp/ssh-lab/sshd.log&lt;br /&gt;
ss -tlnp | grep 2222&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Uji dua jalur login sebagai pembanding. Keduanya harus berhasil sebelum kamu mematahkan apa pun.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
ssh -p 2222 -i /home/lab/.ssh/id_lab lab@127.0.0.1 &amp;#039;echo masuk-dengan-kunci&amp;#039;&lt;br /&gt;
ssh -p 2222 lab@127.0.0.1 &amp;#039;echo masuk-dengan-password&amp;#039;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 🔹 Langkah 3 — buktikan lapis metode (kunci saja) ===&lt;br /&gt;
# Ubah satu baris di konfigurasi lab, lalu reload instance lab saja, bukan layanan sistem.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
sudo sed -i &amp;#039;s/^PasswordAuthentication yes/PasswordAuthentication no/&amp;#039; /tmp/ssh-lab/sshd_config&lt;br /&gt;
sudo sshd -t -f /tmp/ssh-lab/sshd_config&lt;br /&gt;
sudo kill -HUP $(sudo cat /tmp/ssh-lab/sshd.pid)&lt;br /&gt;
sudo sshd -T -f /tmp/ssh-lab/sshd_config | grep -i passwordauth&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Minta klien memaksa jalur password. Jawaban yang benar adalah penolakan yang menyebut metode yang tersisa.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
ssh -p 2222 -o PubkeyAuthentication=no lab@127.0.0.1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Hasil yang diharapkan: &amp;lt;code&amp;gt;Permission denied (publickey).&amp;lt;/code&amp;gt; Perhatikan daftar metodenya — hanya &amp;lt;code&amp;gt;publickey&amp;lt;/code&amp;gt;, tanda password benar-benar tidak ditawarkan lagi.&lt;br /&gt;
&lt;br /&gt;
=== 🔹 Langkah 4 — buktikan lapis identitas (root dan AllowUsers) ===&lt;br /&gt;
# Matikan root, lalu batasi user yang boleh masuk.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
sudo tee /tmp/ssh-lab/sshd_config.d/10-identitas.conf &amp;gt; /dev/null &amp;lt;&amp;lt;&amp;#039;EOF&amp;#039;&lt;br /&gt;
PermitRootLogin no&lt;br /&gt;
AllowUsers lab@127.0.0.1&lt;br /&gt;
EOF&lt;br /&gt;
sudo sshd -t -f /tmp/ssh-lab/sshd_config&lt;br /&gt;
sudo kill -HUP $(sudo cat /tmp/ssh-lab/sshd.pid)&lt;br /&gt;
sudo sshd -T -f /tmp/ssh-lab/sshd_config | grep -Ei &amp;#039;^(permitrootlogin|allowusers)&amp;#039;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Bandingkan arti tiga nilai &amp;lt;code&amp;gt;PermitRootLogin&amp;lt;/code&amp;gt; berikut. Ini sumber salah paham paling sering.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Nilai !! Password root !! Kunci root&lt;br /&gt;
|-&lt;br /&gt;
| yes || boleh || boleh&lt;br /&gt;
|-&lt;br /&gt;
| prohibit-password || ditolak || boleh&lt;br /&gt;
|-&lt;br /&gt;
| no || ditolak || ditolak&lt;br /&gt;
|}&lt;br /&gt;
# Uji dari akun lain: user yang tidak ada di &amp;lt;code&amp;gt;AllowUsers&amp;lt;/code&amp;gt; harus ditolak walau kuncinya sah.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
sudo useradd -m -s /bin/bash tamu&lt;br /&gt;
sudo -u tamu mkdir -p /home/tamu/.ssh&lt;br /&gt;
sudo -u tamu ssh-keygen -t ed25519 -f /home/tamu/.ssh/id_tamu -N &amp;quot;&amp;quot;&lt;br /&gt;
sudo -u tamu cp /home/tamu/.ssh/id_tamu.pub /home/tamu/.ssh/authorized_keys&lt;br /&gt;
sudo chmod 700 /home/tamu/.ssh&lt;br /&gt;
sudo chmod 600 /home/tamu/.ssh/authorized_keys&lt;br /&gt;
ssh -p 2222 -i /home/tamu/.ssh/id_tamu tamu@127.0.0.1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Hasil yang diharapkan: &amp;lt;code&amp;gt;Permission denied (publickey).&amp;lt;/code&amp;gt; Di log server muncul &amp;lt;code&amp;gt;User tamu not allowed because not listed in AllowUsers&amp;lt;/code&amp;gt; — bukti lapis 2 yang menolak, bukan lapis 3.&lt;br /&gt;
&lt;br /&gt;
* 💡 &amp;#039;&amp;#039;&amp;#039;Tips:&amp;#039;&amp;#039;&amp;#039; pola &amp;lt;code&amp;gt;USER@HOST&amp;lt;/code&amp;gt; di &amp;lt;code&amp;gt;AllowUsers&amp;lt;/code&amp;gt; menerima alamat dalam bentuk CIDR, misalnya &amp;lt;code&amp;gt;lab@192.168.100.0/24&amp;lt;/code&amp;gt;. Ini cara murah membatasi akses hanya dari LAN lab tanpa menyentuh firewall.&lt;br /&gt;
&lt;br /&gt;
=== 🔹 Langkah 5 — jebakan urutan Include ===&lt;br /&gt;
Ini uji paling penting di artikel ini. Kamu akan membuat dua berkas yang saling bertentangan, lalu melihat siapa yang menang.&lt;br /&gt;
&lt;br /&gt;
# Tulis &amp;lt;code&amp;gt;no&amp;lt;/code&amp;gt; di berkas utama, lalu &amp;lt;code&amp;gt;yes&amp;lt;/code&amp;gt; di drop-in. Urutan &amp;lt;code&amp;gt;Include&amp;lt;/code&amp;gt; menentukan pemenangnya.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
sudo tee /tmp/ssh-lab/sshd_config.d/90-warisan.conf &amp;gt; /dev/null &amp;lt;&amp;lt;&amp;#039;EOF&amp;#039;&lt;br /&gt;
PasswordAuthentication yes&lt;br /&gt;
EOF&lt;br /&gt;
sudo sshd -T -f /tmp/ssh-lab/sshd_config | grep -i passwordauth&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Hasil yang diharapkan: &amp;lt;code&amp;gt;passwordauthentication yes&amp;lt;/code&amp;gt;. Padahal berkas utama jelas menulis &amp;lt;code&amp;gt;no&amp;lt;/code&amp;gt;. Penyebabnya bukan salah tulis, tetapi &amp;#039;&amp;#039;&amp;#039;urutan baca&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
* 🔥 &amp;#039;&amp;#039;&amp;#039;Kasus nyata:&amp;#039;&amp;#039;&amp;#039; sebuah SMK mematikan login password di &amp;lt;code&amp;gt;/etc/ssh/sshd_config&amp;lt;/code&amp;gt; untuk server CBT. Image cloud yang dipakai menyisakan &amp;lt;code&amp;gt;50-cloud-init.conf&amp;lt;/code&amp;gt; berisi &amp;lt;code&amp;gt;PasswordAuthentication yes&amp;lt;/code&amp;gt;, dan berkas itu dibaca lebih dulu. Selama tujuh bulan password tetap berlaku; akun &amp;lt;code&amp;gt;operator&amp;lt;/code&amp;gt; dengan sandi &amp;lt;code&amp;gt;operator123&amp;lt;/code&amp;gt; dipakai bergantian oleh empat orang. Nilai dua kelas berubah suatu malam, dan admin sempat menyalahkan siswa karena di berkas yang ia buka, password sudah mati.&lt;br /&gt;
&lt;br /&gt;
# Bersihkan drop-in palsu itu, lalu pastikan nilai kembali &amp;lt;code&amp;gt;no&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
sudo rm /tmp/ssh-lab/sshd_config.d/90-warisan.conf&lt;br /&gt;
sudo sshd -T -f /tmp/ssh-lab/sshd_config | grep -i passwordauth&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 🔹 Langkah 6 — dua kebenaran dari Match ===&lt;br /&gt;
# Sekarang buat pengecualian yang sah: password hanya untuk user &amp;lt;code&amp;gt;lab&amp;lt;/code&amp;gt;, sisanya kunci saja.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
sudo tee /tmp/ssh-lab/sshd_config.d/20-pengecualian.conf &amp;gt; /dev/null &amp;lt;&amp;lt;&amp;#039;EOF&amp;#039;&lt;br /&gt;
PasswordAuthentication no&lt;br /&gt;
Match User lab&lt;br /&gt;
    PasswordAuthentication yes&lt;br /&gt;
EOF&lt;br /&gt;
sudo sshd -t -f /tmp/ssh-lab/sshd_config&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Tanyakan konfigurasi efektif untuk dua user berbeda. Perhatikan nilai yang berbeda untuk kunci yang sama.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
sudo sshd -T -f /tmp/ssh-lab/sshd_config -C user=lab,addr=127.0.0.1,host=laptop | grep -i passwordauth&lt;br /&gt;
sudo sshd -T -f /tmp/ssh-lab/sshd_config -C user=tamu,addr=127.0.0.1,host=laptop | grep -i passwordauth&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Hasil yang diharapkan: &amp;lt;code&amp;gt;yes&amp;lt;/code&amp;gt; untuk &amp;lt;code&amp;gt;lab&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;no&amp;lt;/code&amp;gt; untuk &amp;lt;code&amp;gt;tamu&amp;lt;/code&amp;gt;. Satu berkas, dua kebenaran — dan kamu bisa menunjuk buktinya.&lt;br /&gt;
&lt;br /&gt;
* ⚠️ &amp;#039;&amp;#039;&amp;#039;Hati-hati:&amp;#039;&amp;#039;&amp;#039; &amp;lt;code&amp;gt;Match&amp;lt;/code&amp;gt; tidak bisa membatalkan keputusan lapis sebelumnya. Kalau user sudah ditolak &amp;lt;code&amp;gt;AllowUsers&amp;lt;/code&amp;gt;, pengecualian password tidak akan pernah dievaluasi.&lt;br /&gt;
&lt;br /&gt;
=== 🔹 Langkah 7 — izin berkas dan StrictModes ===&lt;br /&gt;
# Rusak izin direktori home dengan sengaja, lalu coba masuk dengan kunci.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
sudo chmod 777 /home/lab&lt;br /&gt;
ssh -p 2222 -i /home/lab/.ssh/id_lab lab@127.0.0.1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Hasil yang diharapkan: penolakan, dan di log server muncul pesan semacam &amp;lt;code&amp;gt;Authentication refused: bad ownership or modes for directory /home/lab&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* 📊 &amp;#039;&amp;#039;&amp;#039;Angka penting:&amp;#039;&amp;#039;&amp;#039; &amp;lt;code&amp;gt;StrictModes&amp;lt;/code&amp;gt; bawaannya &amp;lt;code&amp;gt;yes&amp;lt;/code&amp;gt;. Artinya &amp;lt;code&amp;gt;sshd&amp;lt;/code&amp;gt; memeriksa pemilik dan izin direktori home serta &amp;lt;code&amp;gt;authorized_keys&amp;lt;/code&amp;gt;. Direktori home yang bisa ditulis semua orang dianggap sebagai risiko pembajakan kunci.&lt;br /&gt;
&lt;br /&gt;
# Kembalikan izin yang benar, lalu ulangi. Login harus berhasil lagi tanpa mengubah konfigurasi apa pun.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
sudo chown lab:lab /home/lab&lt;br /&gt;
sudo chmod 750 /home/lab&lt;br /&gt;
sudo chmod 700 /home/lab/.ssh&lt;br /&gt;
sudo chmod 600 /home/lab/.ssh/authorized_keys&lt;br /&gt;
ssh -p 2222 -i /home/lab/.ssh/id_lab lab@127.0.0.1 &amp;#039;echo izin-beres&amp;#039;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 🔹 Langkah 8 — batas percobaan dan jejak log ===&lt;br /&gt;
# Turunkan &amp;lt;code&amp;gt;MaxAuthTries&amp;lt;/code&amp;gt; ke 2, reload instance lab, lalu paksa klien menawarkan beberapa kunci.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
sudo tee /tmp/ssh-lab/sshd_config.d/30-batas.conf &amp;gt; /dev/null &amp;lt;&amp;lt;&amp;#039;EOF&amp;#039;&lt;br /&gt;
MaxAuthTries 2&lt;br /&gt;
EOF&lt;br /&gt;
sudo sshd -t -f /tmp/ssh-lab/sshd_config&lt;br /&gt;
sudo kill -HUP $(sudo cat /tmp/ssh-lab/sshd.pid)&lt;br /&gt;
ssh -p 2222 -o IdentitiesOnly=no -i /home/lab/.ssh/id_lab lab@127.0.0.1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Perhatikan log server. Dengan &amp;lt;code&amp;gt;LogLevel VERBOSE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;sshd&amp;lt;/code&amp;gt; mencatat sidik jari kunci dan percobaan yang gagal.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
sudo tail -n 20 /tmp/ssh-lab/sshd.log&lt;br /&gt;
sudo grep -c &amp;#039;Failed password&amp;#039; /tmp/ssh-lab/sshd.log&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Hasil yang diharapkan: baris &amp;lt;code&amp;gt;Accepted publickey for lab&amp;lt;/code&amp;gt; lengkap dengan sidik jari &amp;lt;code&amp;gt;SHA256:...&amp;lt;/code&amp;gt;, dan hitungan percobaan gagal yang bisa kamu tunjuk angkanya.&lt;br /&gt;
&lt;br /&gt;
* 🧪 &amp;#039;&amp;#039;&amp;#039;Uji cepat:&amp;#039;&amp;#039;&amp;#039; &amp;lt;code&amp;gt;sudo journalctl -u ssh -n 30 --no-pager&amp;lt;/code&amp;gt; membaca jejak layanan asli. Untuk percobaan gagal dari jaringan, &amp;lt;code&amp;gt;sudo lastb -n 10&amp;lt;/code&amp;gt; memberi daftar singkat.&lt;br /&gt;
&lt;br /&gt;
=== 🔹 Langkah 9 — validasi sebelum reload ===&lt;br /&gt;
# Rusak satu kata kunci dengan sengaja, lalu lihat siapa yang menangkap kesalahan itu.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
sudo sh -c &amp;#039;echo PasswordAuthenticaion no &amp;gt;&amp;gt; /tmp/ssh-lab/sshd_config&amp;#039;&lt;br /&gt;
sudo sshd -t -f /tmp/ssh-lab/sshd_config; echo &amp;quot;kode keluar: $?&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Hasil yang diharapkan: &amp;lt;code&amp;gt;Bad configuration option: passwordauthenticaion&amp;lt;/code&amp;gt; dan kode keluar bukan nol. &amp;#039;&amp;#039;&amp;#039;Inilah rem darurat&amp;#039;&amp;#039;&amp;#039; yang mencegah server mati karena salah ketik.&lt;br /&gt;
# Buktikan akibatnya kalau rem itu dilewati: hentikan instance lab, jalankan ulang dengan berkas yang rusak.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
sudo kill $(sudo cat /tmp/ssh-lab/sshd.pid)&lt;br /&gt;
sudo /usr/sbin/sshd -f /tmp/ssh-lab/sshd_config -E /tmp/ssh-lab/sshd.log; echo &amp;quot;kode keluar: $?&amp;quot;&lt;br /&gt;
ss -tlnp | grep 2222&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Hasil yang diharapkan: instance gagal start dan port 2222 hilang. Di server produksi, skenario ini berarti kehilangan akses sampai ada orang membetulkan berkas dari konsol.&lt;br /&gt;
&lt;br /&gt;
=== 🔹 Langkah 10 — bersih-bersih dan lembar bukti ===&lt;br /&gt;
# Perbaiki berkas, tutup instance lab, hapus bahan uji.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
sudo sed -i &amp;#039;/PasswordAuthenticaion/d&amp;#039; /tmp/ssh-lab/sshd_config&lt;br /&gt;
sudo sshd -t -f /tmp/ssh-lab/sshd_config&lt;br /&gt;
sudo kill $(sudo cat /tmp/ssh-lab/sshd.pid) 2&amp;gt;/dev/null&lt;br /&gt;
sudo rm -rf /tmp/ssh-lab&lt;br /&gt;
sudo userdel -r lab&lt;br /&gt;
sudo userdel -r tamu&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Tulis lembar bukti berisi tujuh baris: port lab, nilai &amp;lt;code&amp;gt;passwordauthentication&amp;lt;/code&amp;gt; per user, nilai &amp;lt;code&amp;gt;permitrootlogin&amp;lt;/code&amp;gt;, isi &amp;lt;code&amp;gt;allowusers&amp;lt;/code&amp;gt;, pesan penolakan tiap uji, cuplikan log &amp;lt;code&amp;gt;Accepted publickey&amp;lt;/code&amp;gt;, dan bukti port 2222 sudah tertutup.&lt;br /&gt;
&lt;br /&gt;
== 🏭 Dipakai di dunia kerja ==&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Sekolah:&amp;#039;&amp;#039;&amp;#039; server CBT dan e-rapor biasanya diakses admin dari ruang guru. Kunci-saja plus &amp;lt;code&amp;gt;AllowUsers&amp;lt;/code&amp;gt; per subnet membuat akun bersama tidak lagi jadi pintu masuk, tanpa mengganggu jadwal ujian.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Kantor distributor:&amp;#039;&amp;#039;&amp;#039; vendor aplikasi minta akses remote. Kebijakan &amp;lt;code&amp;gt;PermitRootLogin no&amp;lt;/code&amp;gt; dan kunci per-vendor yang bisa dicabut membuat akses berhenti tepat saat kontrak berhenti.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Klinik dan layanan data pribadi:&amp;#039;&amp;#039;&amp;#039; rekam medis hanya boleh dibuka staf tertentu. &amp;lt;code&amp;gt;AllowUsers&amp;lt;/code&amp;gt; dan &amp;lt;code&amp;gt;AuthenticationMethods&amp;lt;/code&amp;gt; adalah kontrol yang bisa ditunjukkan saat audit, bukan sekadar niat baik.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Hosting dan VPS:&amp;#039;&amp;#039;&amp;#039; server yang menghadap internet menerima puluhan ribu percobaan login per hari. Kunci-saja membuat tebakan password tidak lagi punya sasaran.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;ISP dan warnet:&amp;#039;&amp;#039;&amp;#039; perangkat jaringan dikelola dari jarak jauh lewat SSH. Akses berbasis kunci mencegah sandi default perangkat dipakai ulang di semua unit.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Industri:&amp;#039;&amp;#039;&amp;#039; jaringan operasi dan server HMI tidak boleh diakses dari sembarang host. Batas alamat di &amp;lt;code&amp;gt;AllowUsers&amp;lt;/code&amp;gt; menjadi lapis pertama sebelum firewall dalam.&lt;br /&gt;
&lt;br /&gt;
== ✅ Verifikasi ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Lapis !! Perintah !! Bukti lulus&lt;br /&gt;
|-&lt;br /&gt;
| 1. Jaringan || &amp;lt;code&amp;gt;ss -tlnp&amp;lt;/code&amp;gt; || hanya port yang direncanakan terbuka&lt;br /&gt;
|-&lt;br /&gt;
| 2. Identitas || &amp;lt;code&amp;gt;sshd -T -C user=tamu,...&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;allowusers&amp;lt;/code&amp;gt; hanya memuat user sah&lt;br /&gt;
|-&lt;br /&gt;
| 3. Metode || &amp;lt;code&amp;gt;ssh -o PubkeyAuthentication=no&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;Permission denied (publickey)&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 3. Metode || &amp;lt;code&amp;gt;sshd -T -C user=lab,...&amp;lt;/code&amp;gt; || nilai sesuai pengecualian &amp;lt;code&amp;gt;Match&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 4. Kewenangan || &amp;lt;code&amp;gt;ssh root@host&amp;lt;/code&amp;gt; || ditolak sesuai &amp;lt;code&amp;gt;PermitRootLogin&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 4. Kewenangan || &amp;lt;code&amp;gt;sudo -l -U lab&amp;lt;/code&amp;gt; || tidak ada hak berlebih&lt;br /&gt;
|-&lt;br /&gt;
| 5. Jejak || &amp;lt;code&amp;gt;grep -c &amp;#039;Failed password&amp;#039;&amp;lt;/code&amp;gt; || angka percobaan tercatat&lt;br /&gt;
|-&lt;br /&gt;
| 5. Jejak || &amp;lt;code&amp;gt;grep &amp;#039;Accepted publickey&amp;#039;&amp;lt;/code&amp;gt; || ada sidik jari &amp;lt;code&amp;gt;SHA256:...&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Umum || &amp;lt;code&amp;gt;sshd -t&amp;lt;/code&amp;gt; || kode keluar 0, tanpa pesan&lt;br /&gt;
|}&lt;br /&gt;
Kalau satu baris gagal, jangan lanjut ke baris berikutnya. Perbaiki lapis itu dulu, lalu ulangi dari atas.&lt;br /&gt;
&lt;br /&gt;
== ⚠️ Kesalahan umum &amp;amp; troubleshooting ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Pesan atau gejala !! Artinya !! Tindakan&lt;br /&gt;
|-&lt;br /&gt;
| Connection refused || tidak ada daemon di port itu || &amp;lt;code&amp;gt;ss -tlnp&amp;lt;/code&amp;gt;, cek &amp;lt;code&amp;gt;Port&amp;lt;/code&amp;gt;, cek firewall&lt;br /&gt;
|-&lt;br /&gt;
| Permission denied (publickey) || hanya kunci, dan kunci tidak cocok || &amp;lt;code&amp;gt;ssh -vvv&amp;lt;/code&amp;gt;, cek &amp;lt;code&amp;gt;AuthorizedKeysFile&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Permission denied (publickey,password) || password masih ditawarkan tapi gagal || cek &amp;lt;code&amp;gt;sshd -T -C&amp;lt;/code&amp;gt;, status akun&lt;br /&gt;
|-&lt;br /&gt;
| bad ownership or modes for directory || &amp;lt;code&amp;gt;StrictModes&amp;lt;/code&amp;gt; menolak izin home || &amp;lt;code&amp;gt;chmod 750&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;chown user:user&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Too many authentication failures || &amp;lt;code&amp;gt;MaxAuthTries&amp;lt;/code&amp;gt; habis || pakai &amp;lt;code&amp;gt;-o IdentitiesOnly=yes&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| User ... not allowed because not listed in AllowUsers || lapis identitas menolak || tambahkan pola di &amp;lt;code&amp;gt;AllowUsers&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Bad configuration option: ... || salah ketik kata kunci || &amp;lt;code&amp;gt;sshd -t&amp;lt;/code&amp;gt; lalu perbaiki barisnya&lt;br /&gt;
|-&lt;br /&gt;
| no hostkeys available -- exiting || &amp;lt;code&amp;gt;HostKey&amp;lt;/code&amp;gt; hilang atau tak terbaca || &amp;lt;code&amp;gt;ssh-keygen -A&amp;lt;/code&amp;gt;, cek path &amp;lt;code&amp;gt;HostKey&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Missing privilege separation directory: /run/sshd || direktori runtime belum ada || &amp;lt;code&amp;gt;mkdir -p /run/sshd&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Address already in use || port lab sudah dipakai || &amp;lt;code&amp;gt;ss -tlnp&amp;lt;/code&amp;gt;, ganti port instance&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* ⚠️ &amp;#039;&amp;#039;&amp;#039;Hati-hati:&amp;#039;&amp;#039;&amp;#039; &amp;lt;code&amp;gt;systemctl restart ssh&amp;lt;/code&amp;gt; dengan berkas rusak adalah cara paling cepat kehilangan server. Di Debian, kegagalan start meninggalkan layanan mati dan port tertutup. Selalu &amp;lt;code&amp;gt;sshd -t&amp;lt;/code&amp;gt; dulu, dan pastikan kamu punya konsol atau snapshot.&lt;br /&gt;
&lt;br /&gt;
* 💡 &amp;#039;&amp;#039;&amp;#039;Tips:&amp;#039;&amp;#039;&amp;#039; saat men-debug klien, tambahkan &amp;lt;code&amp;gt;-v&amp;lt;/code&amp;gt; (cukup) atau &amp;lt;code&amp;gt;-vvv&amp;lt;/code&amp;gt; (detail). Di sisi server, &amp;lt;code&amp;gt;LogLevel VERBOSE&amp;lt;/code&amp;gt; memberi sidik jari kunci tanpa membocorkan isi sesi. Kembalikan ke &amp;lt;code&amp;gt;INFO&amp;lt;/code&amp;gt; setelah selesai.&lt;br /&gt;
&lt;br /&gt;
== 🔐 Catatan keamanan &amp;amp; etika ==&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;LogLevel DEBUG bukan alat permanen.&amp;#039;&amp;#039;&amp;#039; Manpage &amp;lt;code&amp;gt;sshd_config(5)&amp;lt;/code&amp;gt; menyebut level DEBUG melanggar privasi pengguna. Nyalakan sebentar, matikan lagi.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Kunci adalah identitas, bukan berkas biasa.&amp;#039;&amp;#039;&amp;#039; Kunci privat mode &amp;lt;code&amp;gt;600&amp;lt;/code&amp;gt;, direktori &amp;lt;code&amp;gt;.ssh&amp;lt;/code&amp;gt; mode &amp;lt;code&amp;gt;700&amp;lt;/code&amp;gt;, dan jangan pernah menyalinnya ke flashdisk bersama.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;prohibit-password bukan &amp;quot;root mati&amp;quot;.&amp;#039;&amp;#039;&amp;#039; Kalau ingin root benar-benar tertutup, tulis &amp;lt;code&amp;gt;no&amp;lt;/code&amp;gt; dan pastikan ada akun lain dengan &amp;lt;code&amp;gt;sudo&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Cabut akses dengan mencabut kunci.&amp;#039;&amp;#039;&amp;#039; Hapus baris di &amp;lt;code&amp;gt;authorized_keys&amp;lt;/code&amp;gt; atau pakai &amp;lt;code&amp;gt;AuthorizedKeysCommand&amp;lt;/code&amp;gt; terpusat; mengganti password tidak menyentuh kunci yang sudah tertanam.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Log menyimpan data pribadi.&amp;#039;&amp;#039;&amp;#039; Alamat IP, nama user, dan sidik jari kunci adalah data orang. Jangan menempel log mentah ke grup chat umum.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Lab di server bersama butuh izin.&amp;#039;&amp;#039;&amp;#039; Instance kedua tidak mengganggu produksi, tetapi membuat user dan mengubah izin home tetap terlihat pengguna lain. Kembalikan kondisi awal setelah selesai.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Etika:&amp;#039;&amp;#039;&amp;#039; materi ini untuk mengamankan server milik sendiri atau yang kamu diberi izin. Mencoba teknik ini pada server orang lain adalah pelanggaran hukum, bukan latihan.&lt;br /&gt;
&lt;br /&gt;
== 📌 Kesimpulan ==&lt;br /&gt;
Hardening SSH bukan daftar baris yang ditempel, tetapi urutan lapis yang harus dibuktikan satu per satu: jaringan, identitas, metode, kewenangan, jejak.&lt;br /&gt;
&lt;br /&gt;
Alat paling jujurnya bukan ingatanmu, melainkan &amp;lt;code&amp;gt;sshd -T&amp;lt;/code&amp;gt; dan &amp;lt;code&amp;gt;sshd -T -C&amp;lt;/code&amp;gt;. Dua perintah itu menunjukkan apa yang benar-benar dipakai &amp;lt;code&amp;gt;sshd&amp;lt;/code&amp;gt; untuk user dan alamat tertentu, termasuk saat drop-in menimpa berkas utama.&lt;br /&gt;
&lt;br /&gt;
Langkah berikutnya: ambil satu server latihan milikmu, potret baseline-nya, lalu jalankan lab ini dari Langkah 2 sampai Langkah 9 tanpa menyentuh layanan di port 22.&lt;br /&gt;
&lt;br /&gt;
== 🔗 Materi terkait ==&lt;br /&gt;
* [[Linux : Mengamankan SSH Server dengan Port Custom]] — dasar memindahkan port dan konsekuensi operasionalnya.&lt;br /&gt;
* [[Linux : Membatasi Percobaan Login SSH dengan Fail2ban]] — lapis tambahan setelah &amp;lt;code&amp;gt;MaxAuthTries&amp;lt;/code&amp;gt;.&lt;br /&gt;
* [[Mengijinkan User Tertentu Remote SSH]] — versi ringkas pembatasan user.&lt;br /&gt;
* [[Merubah Default Port SSH]] — perubahan port dan penyesuaian klien.&lt;br /&gt;
* [[Instalasi SSH Server di Debian Linux]] — prasyarat pemasangan layanan.&lt;br /&gt;
* [[Linux : Praktikum Audit Akun, Group, dan Hak sudo]] — audit identitas dan kewenangan setelah hardening.&lt;br /&gt;
&lt;br /&gt;
== 📚 Referensi ==&lt;br /&gt;
* Debian Manpages — [https://manpages.debian.org/bookworm/openssh-server/sshd_config.5.en.html sshd_config(5)], bookworm.&lt;br /&gt;
* Debian Manpages — [https://manpages.debian.org/bookworm/openssh-server/sshd.8.en.html sshd(8)], termasuk opsi &amp;lt;code&amp;gt;-t&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-T&amp;lt;/code&amp;gt;, dan &amp;lt;code&amp;gt;-C&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Debian Manpages — [https://manpages.debian.org/bookworm/openssh-client/ssh.1.en.html ssh(1)] dan [https://manpages.debian.org/bookworm/openssh-client/ssh-keygen.1.en.html ssh-keygen(1)].&lt;br /&gt;
* Debian Wiki — [https://wiki.debian.org/SSH SSH].&lt;br /&gt;
* OpenSSH Project — [https://www.openssh.com/manual.html manual resmi].&lt;br /&gt;
&lt;br /&gt;
[[Category:TKJ]]&lt;br /&gt;
[[Category:Linux]]&lt;br /&gt;
[[Category:Server]]&lt;br /&gt;
[[Category:Cyber Security]]&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
</feed>