Efek entri di / etc / securetty

19

Secara default pada RHEL 5.5 yang saya miliki

[deuberger@saleen trunk]$ sudo cat /etc/securetty 
console
vc/1
vc/2
vc/3
vc/4
vc/5
vc/6
vc/7
vc/8
vc/9
vc/10
vc/11
tty1
tty2
tty3
tty4
tty5
tty6
tty7
tty8
tty9
tty10
tty11

Apa perbedaan antara masing-masing jenis entri (konsol, vc / , dan tty ). Secara khusus, apa hasil akhir dari menambah dan menghapus setiap jenis entri?

Pemahaman saya adalah mereka memengaruhi bagaimana dan kapan Anda bisa masuk, tetapi apakah ada efek lain? Dan kapan Anda dan kapan Anda tidak bisa masuk tergantung pada entri mana yang ada?

EDIT 1 Yang saya tahu adalah bahwa tty 1-6 sesuai dengan apakah Anda dapat masuk dari 6 konsol pertama yang Anda jangkau menggunakan CTRL-ALT-F1 hingga CTRL-ALT-F6. Saya selalu berpikir itu adalah konsol virtual, jadi saya agak bingung. Dan apa yang berhubungan dengan konsol juga? Terima kasih.

EDIT 2 Apa efeknya jika ada dalam mode pengguna tunggal?

Deuberger
sumber

Jawaban:

34

/etc/securettydikonsultasikan oleh modul pam_securetty untuk memutuskan dari mana terminal virtual (ttyS) root diijinkan masuk. Di masa lalu, /etc/securettydikonsultasikan oleh program-program seperti login langsung, tetapi sekarang PAM menanganinya. Jadi perubahan /etc/securettyakan memengaruhi apa pun yang menggunakan PAM dengan file konfigurasi yang menggunakan pam_securetty.so. Jadi, hanya program login yang terpengaruh secara default. /etc/pam.d/logindigunakan untuk login lokal dan /etc/pam.d/remotedigunakan untuk login jarak jauh (seperti telnet).

Jenis entri utama dan pengaruhnya adalah sebagai berikut:

  • Jika /etc/securettytidak ada, root diizinkan masuk dari tty manapun
  • Jika /etc/securettyada dan kosong, akses root akan dibatasi untuk mode pengguna tunggal atau program yang tidak dibatasi oleh pam_securetty (yaitu su, sudo, ssh, scp, sftp)
  • jika Anda menggunakan devfs (sistem file yang sudah tidak digunakan lagi untuk menangani / dev), menambahkan entri formulir vc / [0-9] * akan memungkinkan login root dari nomor konsol virtual yang diberikan
  • jika Anda menggunakan udev (untuk manajemen perangkat dinamis dan penggantian devfs), menambahkan entri formulir tty [0-9] * akan memungkinkan login root dari nomor konsol virtual yang diberikan
  • daftar konsol di securetty, biasanya tidak berpengaruh karena / dev / konsol menunjuk ke konsol saat ini dan biasanya hanya digunakan sebagai nama file tty dalam mode pengguna tunggal, yang tidak terpengaruh oleh /etc/securetty
  • menambahkan entri seperti pts / [0-9] * akan memungkinkan program yang menggunakan pseudo-terminal (pty) dan pam_securetty untuk login ke root dengan asumsi pty yang dialokasikan adalah salah satu yang terdaftar; biasanya merupakan ide yang bagus untuk tidak memasukkan entri ini karena ini merupakan risiko keamanan; itu akan memungkinkan, misalnya, seseorang untuk login ke root melalui telenet, yang mengirimkan kata sandi dalam plaintext (perhatikan bahwa pts / [0-9] * adalah format untuk udev yang digunakan dalam RHEL 5.5; akan berbeda jika menggunakan devfs atau bentuk lain dari manajemen perangkat)

Untuk mode pengguna tunggal, /etc/securettytidak dikonsultasikan karena sulogin digunakan sebagai ganti login. Lihat halaman manual sulogin untuk info lebih lanjut. Anda juga dapat mengubah program login yang digunakan /etc/inittabuntuk setiap runlevel.

Perhatikan bahwa untuk Anda sebaiknya tidak menggunakan /etc/securettyuntuk mengontrol login root melalui ssh. Untuk melakukan itu ubah nilai PermitRootLogin di /etc/ssh/sshd_config. Secara default /etc/pam.d/sshdtidak dikonfigurasikan untuk berkonsultasi dengan pam_securetty (dan karenanya /etc/securetty). Anda dapat menambahkan baris untuk melakukannya, tetapi ssh tidak menetapkan tty yang sebenarnya sampai beberapa saat setelah tahap auth, sehingga tidak berfungsi seperti yang diharapkan. Selama tahap auth dan akun - setidaknya untuk openssh - tty (PAM_TTY) hardcoded ke "ssh".

Jawaban di atas didasarkan pada RHEL 5.5. Sebagian besar akan berkaitan dengan distribusi saat ini dari sistem * nix lain, tetapi ada perbedaan, beberapa di antaranya saya catat, tetapi tidak semua.

Saya jawab sendiri karena jawaban yang lain tidak lengkap dan / atau tidak akurat. Banyak forum, blog, dll online lainnya memiliki informasi yang tidak akurat dan tidak lengkap dalam topik ini juga, jadi saya telah melakukan penelitian dan pengujian ekstensif untuk mencoba mendapatkan rincian yang benar. Jika sesuatu yang saya katakan salah, tolong beri tahu saya.

Sumber:

Deuberger
sumber
+1 untuk meluangkan waktu untuk merespons secara mendalam. Saya tidak yakin mengapa tidak ada jawaban yang diterima di sini. Sepertinya Anda telah menjawab pertanyaan OP. Saya suka komentar @Alexios, "vc / X dan ttyX adalah sinonim [ous] ..."
harperville
Debian baru saja dihapus / etc / securetty. Itu dianggap usang, dan bisa dibilang lebih banyak masalah daripada nilainya. Itu digunakan untuk telnet dan rlogin, tetapi untuk mendapatkan beberapa login kontainer untuk bekerja, pseudoterminals seperti "pts / 0" ditambahkan pada beberapa sistem, yang mengalahkan tujuan aslinya. Jika Anda perlu membatasi login root ke perangkat tertentu, ada mekanisme yang lebih andal. Lihat bugs.debian.org/731656
dlitz
4

vc/Xdan ttyXsinonim: jalur berbeda ke perangkat yang sama. Maksud dari redundansi adalah untuk menangkap berbagai kasus agar tidak mengunci Anda.

Secara tradisional, login(dan mungkin getty, saya tidak ingat pasti) akan memeriksa /etc/securettydan menolak rootlogin pada terminal yang tidak terdaftar. Pada sistem modern, ada cara lain untuk melakukan ini dan langkah-langkah keamanan lainnya juga. Periksa konten /etc/login.defs(yang juga mencakup securettyfungsionalitas dan direkomendasikan oleh halaman securetty(5)manual), dan juga /etc/pam.d/login, di mana Anda dapat mengontrol perilaku fitur ini.

Karena securettyhanya diperiksa oleh login, cara masuk yang tidak digunakan login(mis. SSH with use_login=no, X display manager, dll) tidak terpengaruh.

Alexios
sumber
Perlu dicatat bahwa pada busyboxsistem berbasiskan mungkin masih berguna untuk fakta sederhana bahwa itu logintidak memiliki /etc/login.defsdukungan.
phk