verifikasi konfigurasi sshd

19

Bagaimana saya bisa memverifikasi konfigurasi sshd?

Misalnya, saya ingin memastikan bahwa pengaturan ini diatur dan diterapkan:

AllowUsers user1 user2 
PasswordAuthentication no
PermitRootLogin no

Apakah satu-satunya cara memverifikasi konten file secara manual sshd_config, atau dapatkah saya memeriksa sshduntuk memastikan?

JuanPablo
sumber
2
Apa yang Anda maksud dengan memverifikasi? Apakah Anda bertanya bagaimana memastikan bahwa perubahan konfigurasi yang Anda buat valid? Apakah Anda bertanya apakah ada beberapa alat seperti serat yang akan memeriksa konfigurasi yang valid?
Zoredache
2
Saya tidak berpikir pertanyaannya tidak jelas: sebenarnya tidak ada cara untuk memeriksa nilai untuk opsi konfigurasi. Jika Anda melihat #UseLogin nodi file ssd_config Anda, itu berarti UseLogin adalah ya atau UseLogin tidak? Anda harus merujuk pada manual untuk menemukan nilai default, yang dapat diubah selama kompilasi. Sejauh ini dari pertanyaan yang tidak berguna ...
Xorax

Jawaban:

27

Ada mode tes diperpanjang, dipanggil dengan opsi baris perintah -T, yang melakukan ini. Sebagai contoh:

% sudo sshd -T | egrep -i 'allowusers|passwordauth|permitroot'
permitrootlogin yes
passwordauthentication yes

Opsi ini sudah ada di Portable OpenSSH sejak 2008, lih. komit e7140f2 . Ini dirilis dengan 5.1p1, dibuat pada Juli 2008, lih. rilis catatan untuk 5.1 , sehingga ada di hampir semua instalasi server OpenSSH yang didukung hari ini.

Josip Rodin
sumber
3
Namun perlu dicatat bahwa ini akan menampilkan pengaturan + pengaturan default dari /etc/ssh/sshd_configfile. Pengaturan dari file tersebut mungkin belum benar-benar aktif, sampai sshdmemuatnya dengan sesuatu seperti /etc/init.d/ssh reloadatau yang setara pada sistem Anda.
mivk
2
@mivk poin bagus, tapi itu cukup banyak untuk kursus, karena itu khas bahwa kita menggunakan jenis-jenis perintah tepat setelah membuat perubahan, tetapi sebelum benar-benar menerapkannya, karena kita ingin memverifikasi apa yang akan terjadi. Misalnya, apache2ctl -Sberperilaku dengan cara yang sama.
Josip Rodin
4

Sementara ini tidak akan membuang semua definisi server Anda, Anda dapat mencoba menghubungkan ke server dengan bendera verbose debug: ssh -v user@server. Itu akan memberi Anda banyak informasi yang akan mencerminkan opsi yang diaktifkan dalam konfigurasi sshd.

Misalnya, lihat output dari koneksi ini dengan -v switch (tanda tangan kunci, domain dan alamat IP yang disamarkan dengan sengaja):

OpenSSH_6.0p1, OpenSSL 0.9.8w 23 Apr 2012
debug1: Reading configuration data /home/claudio/.ssh/config
debug1: /home/claudio/.ssh/config line 13: Applying options for serv01
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Connecting to somedomain.com [185.113.29.221] port 22.
debug1: Connection established.
debug1: identity file /home/claudio/.ssh/id_dsa type 2
debug1: identity file /home/claudio/.ssh/id_dsa-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.9
debug1: match: OpenSSH_5.9 pat OpenSSH_5*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.0
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: sending SSH2_MSG_KEX_ECDH_INIT
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ECDSA 3a:0d:b8:18:ca:67:4c:54:0f:c8:b2:1e:48:53:69:28
debug1: Host '[somedomain.com]:22' is known and matches the ECDSA host key.
debug1: Found key in /home/claudio/.ssh/known_hosts:7
Warning: Permanently added the ECDSA host key for IP address '[185.113.29.221]:22' to the list of known hosts.
debug1: ssh_ecdsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password,keyboard-interactive
debug1: Next authentication method: publickey
debug1: Offering DSA public key: /home/claudio/.ssh/id_dsa
debug1: Server accepts key: pkalg ssh-dss blen 433
debug1: Authentication succeeded (publickey).
Authenticated to somedomain.com ([185.113.29.221]:22).
debug1: channel 0: new [client-session]
debug1: Requesting [email protected]
debug1: Entering interactive session.

Dari sana Anda dapat melihat metode otentikasi yang diizinkan: publickey, kata sandi, keyboard-interactive. Anda juga dapat melihat bahwa roaming tidak diizinkan oleh server ini, dan bahwa claudio pengguna dapat terhubung menggunakan kunci publiknya.

Anda dapat meningkatkan tingkat output informasi yang menetapkan lebih banyak huruf "v", tetapi kemudian Anda mungkin mendapatkan informasi level lebih rendah dari yang Anda inginkan.

Claudio
sumber
3

konfigurasi sshd ini biasanya ditemukan dalam file berikut: /etc/ssh/sshd_config.

Untuk menanyakan konfigurasi runtime, Anda dapat menggunakan mode uji lanjutan sshd -Tyang juga memungkinkan Anda menguji kecocokan pengaturan klien.

gparent
sumber
1
Saya tidak berpikir ini menjawab pertanyaan yang diajukannya, tetapi pertanyaannya tidak sepenuhnya jelas.
Zoredache
1
Sepertinya dia bertanya bagaimana memverifikasi konfigurasi. Sejauh yang saya ketahui, tidak ada cara untuk menanyakan konfigurasi sshd saat runtime. Dengan demikian, konfigurasi hanya dapat ditemukan di file yang saya sebutkan.
gparent
Seperti yang Anda katakan, pertanyaan itu tidak masuk akal jadi saya pikir mungkin OP tidak tahu di mana file itu atau nama tepatnya.
gparent
Jika Anda akan menurunkan saya untuk alasan yang sama sekali tidak sah setelah 4 tahun, gunakan akal sehat Anda dan periksa riwayat pertanyaan, lalu sarankan edit.
gparent
@gparent pertanyaan aslinya agak kabur, dan ada kesalahan ketik pada path file config, jadi Anda seharusnya menggunakan fungsi edit untuk memperbaiki string dalam pertanyaan; dan bagaimanapun, jawaban untuk pertanyaan verifikasi sekarang ditunjukkan di atas
Josip Rodin
2

tidak ada cara yang diketahui untuk menanyakan konfigurasi instance sshd yang sedang berjalan, saya pikir, jika Anda merujuk server openssh. tergantung pada apa yang ingin Anda lakukan, Anda bisa menggunakan flag -t untuk menguji file konfigurasi untuk memastikan bahwa itu valid sebelum me-restart server, sehingga Anda tidak dikeluarkan, esp. jika Anda tidak memiliki akses out-of-band ke server.

johnshen64
sumber
2

Masalah dengan melihat file / etc / ssh / sshd_config seperti yang disarankan oleh jawaban lain adalah bahwa itu tidak selalu mengandung seluruh konfigurasi. File ini berisi nilai-nilai variabel konfigurasi apa pun yang ingin Anda atur untuk over-ride default, dan seperti yang dikirim berisi komentar default yang dibangun untuk sshd.

Jika file konfigurasi khusus dipasang sebagai pengganti versi yang dikirimkan, Anda kehilangan pandangan tentang default yang dikompilasi ke sshd, dan jika itu adalah custom build, default mungkin tidak cocok dengan komentar di sshd_config yang terlihat.

Selain itu, sangat mungkin untuk menjalankan sshd dengan file konfigurasi alternatif dengan opsi -f, sehingga yang disimpan di / etc / ssh / sshd_config mungkin tidak mencerminkan pengaturan saat ini.

Ini membuat pertanyaan itu cukup valid, dan sejauh yang saya tahu, tidak dapat dijawab dengan pasti.

Peter Gathercole
sumber
Semua itu benar, tetapi itu tidak berlaku untuk 99% server yang akan menjalankan sshd yang diinstal dari sebuah paket yang memiliki konfigurasi default dikompilasi.
Andrew Schulman
Jawaban Anda bermanfaat, tetapi pertanyaannya memang mungkin untuk dijawab dengan pasti, sudah cukup lama sekarang, silakan lihat jawaban saya di bawah ini.
Josip Rodin