Saya ingin dapat menggunakan SFTP untuk mengedit file yang memerlukan izin root.
Saya menggunakan otentikasi berbasis SSH Key - kunci rsa pada kartu pintar.
Jika sistem memerlukan sudo untuk melakukan perintah tingkat root, Bagaimana cara menyiasati ini?
Bisakah saya membuat cara memotong sudo hanya untuk SFTP?
Apakah ada cara untuk menjaga otentikasi sudo & kunci.
Saya menggunakan windows untuk terhubung ke Ubuntu. Saya perlu ini untuk bekerja dengan Mac yang terhubung ke Ubuntu juga.
Saya mengerti bagaimana melakukan SSH Tunneling ke admin layanan sistem. Saat ini, saya menggunakan login pengguna root secara langsung, tetapi login kata sandi dinonaktifkan. Saya tidak mengerti bagaimana menggunakan sudo dan SFTP pada saat yang bersamaan. Tampaknya menjadi praktik terbaik untuk meminta login sebagai pengguna non-root dan kemudian memerlukan penggunaan sudo karena log akan merekam siapa yang diberi hak yang lebih tinggi untuk setiap perintah.
Haruskah saya memusatkan perhatian pada hal ini ketika menggunakan otentikasi berbasis Kunci atau apakah ini perbedaan sepele dalam keamanan / pencatatan? Sepertinya otentikasi berbasis Key mencatat nomor seri pengguna di log, dan Anda dapat memiliki beberapa kunci untuk pengguna root untuk mengidentifikasi setiap pengguna. Ini sepertinya efek yang sama dengan menggunakan sudo kepada saya. Apakah aku salah?
sudo
.Jawaban:
SFTP adalah akses perintah ke operasi file, dengan batasan dari akun yang Anda gunakan. Anda harus menggunakan ssh untuk melakukan lebih banyak operasi administratif, membuat penggunaan sudo dan SFTP yang mustahil dilakukan secara bersamaan. Jika Anda memerlukan akses ke seluruh disk tanpa batasan menggunakan SFTP, lakukan itu menggunakan akun root. Pokoknya Anda dapat membuat login dengan root pada sftp dan ssh pada saat yang sama, tentu saja, menggunakan dua sesi yang berbeda.
Kunci keamanan meningkatkan keamanan dan mempermudah pencatatan, tidak memerlukan input keyboard. Hanya membantu membuat login, Anda dapat memiliki beberapa kata sandi untuk setiap pengguna akun dan memiliki efek yang sama.
EDIT: Saya lupa: Anda dapat membuat akun lain dengan efek yang sama dari root jika Anda menetapkan id pengguna ke 0, tetapi tidak punya akal, berbahaya dengan cara yang sama. Bisa memberikan sedikit kebingungan jika seseorang mencoba login seperti root, tetapi selain itu, tidak masuk akal.
sumber
Memanggil subsistem dengan sudo bekerja untuk saya.
Untuk host Ubuntu misalnya:
sumber
sudo /usr/libexec/openssh/sftp-server
)Di luar apa yang disarankan @MartinVonWittich dalam komentar di atas, Anda dapat menyiapkan pasangan kunci SSH khusus untuk aktivitas ini dan menambahkannya ke
/root/.ssh/authorized_keys
file pengguna root yang membatasi ruang lingkup mereka hanya untuk satu perintah.Ini akan memungkinkan sistem lain dengan kunci yang sesuai untuk pasangan ini untuk SFTP ke sistem ini sebagai root. Anda masih memiliki catatan koneksi ini di file Anda
syslog
dan / atausecure.log
(anggap distro Anda menyediakan level logging ini).CATATAN: Siapa pun yang mengakses server dalam metode ini akan memiliki akses cartes blanche, jadi gunakan dengan bijak. Lebih baik terus membaca dan menggabungkan kemampuan ini dengan chroot dan akses hanya baca, untuk membangun batasan yang lebih ketat dan akses yang ditargetkan ke lokasi tertentu sebagai root.
chroot & hanya baca
Teknik lain yang dapat Anda manfaatkan di sini adalah dengan membatasi koneksi SFTP sehingga itu chroot ke lokasi tertentu sebagai root, berdasarkan pada kunci SSH yang digunakan. Lihat jawaban saya untuk T&J T&J ini berjudul: " Batasi cadangan tanpa kata sandi dengan SFTP " untuk detail lebih lanjut.
Anda juga dapat mengontrol
sftp-server
melalui sakelar-R
dan-d
.sumber
sftp-server
tidak membuatnya lebih aman, bukan? Jika penyerang mendapatkan akses ke akun ini, ia dapat dengan mudah memberikan dirinya sendiri root shell menggunakan SFTP. Jadi batasan perintah sangat tidak berguna dari sudut pandang keamanan :)root
akses SFTP dalam bentuk apa pun hanya masalah, terutama ketika tidak di-chroot.Pendekatan sederhana yang saya ikuti adalah hanya sftp dan meletakkan file pada area panggung (
mkdir
direktori baru di mana Anda memiliki izin di server) dan kemudian ssh lagi untuk memindahkan file dari sana ke tujuan dengansudo cp
atausudo mv
.sumber
Saya memiliki masalah yang sama yaitu saya ingin menggunakan vimdiff untuk mengedit file konfigurasi pada sekelompok host yang hampir sama, dengan cssh dan sudo dan Anda mungkin dapat menyesuaikan solusi saya dengan alur kerja Anda.
sudoedit (bagian dari sudo) memungkinkan Anda untuk menggunakan editor apa pun sebagai pengguna biasa untuk mengedit file yang Anda tidak memiliki izin untuk menulis dan Anda dapat menentukan editor dengan variabel lingkungan. sudoedit menyalin file, memanggil editor dengan nama-nama salinan dan menunggu editor keluar, kemudian menyalin salinan yang dimodifikasi kembali ke tempatnya. jadi saya membuat 'editor' yang tidak mengedit, hanya mencatat file untuk digunakan nanti dan menunggu dan pembungkus di sekitar vimdiff yang menggunakan penanda itu.
file pertama adalah ~ / .bin / redit
yang kedua adalah ~ / .bin / redit1
Cara saya menggunakannya adalah saya menggunakan cssh untuk membuka koneksi ke semua empat host dan kemudian menggunakan perintah seperti
EDITOR=~/.bin/redit sudoedit /etc/conf/file
dan kemudian Dalam menjalankan jendela yang berbeda~/.bin/redit1
, buat perubahan, simpan dan keluar, kembali ke cssh dan tekan enter untuk melakukan perubahan dan keluar dari sudoedit (kecuali jika saya mengedit lebih dari satu file yang mana kasusnya memajukan ke file berikutnya dalam daftar dan Anda menjalankan redit1 lagi untuk file berikutnya.)Karena apa yang Anda lakukan tidak terlalu rumit, Anda tidak perlu redit1 karena hanya bekerja dengan satu host jarak jauh, Anda bisa mengarahkan editor sftp Anda ke host: .var / redit / host atau yang setara.
sumber
Apa yang saya lakukan adalah menggunakan scp bukan ftp, dan mengubah shell ke
sudo su -
dalam WinSCP ini dalam Advanced \ SCP \ Shell, tetapi ini hanya bekerja dengan protokol scp.sumber
Untuk sftp: Jika Anda memiliki akses sudo ssh shell, Anda dapat menambahkan nama pengguna Anda ke root usergroup di / etc / group dan kemudian berikan izin grup rx itu ke folder yang ingin Anda akses.
sumber
root
grup, saya terhubung melalui sftp tetapi tetap saja tidak memungkinkan saya untuk mengunduh file dari lokasi seperti '/ etc' dan seterusnya. Saya tidak yakin apakah saya melakukan sesuatu yang salah tetapi saya menduga jawaban ini tidak berhasil.Anda dapat menyisipkan ke file sshd_config Anda di sisi server:
Dengan cara ini siapa pun yang memiliki sudo NOPASSWD akan mendapatkan akses sftp yang telah di-root.
sumber
Subsystem
perintahnya? Di Ubuntu 16.04, saya mendapatkan "perintah tidak ditemukan"Menambahkan baris ini di / etc / ssh / sshd_config adalah perbaikan bagi saya, dan mengomentari baris subsistem yang ada
Subsystem sftp sudo -n true && sudo -n /usr/lib/openssh/sftp-server || /usr/lib/openssh/sftp-server
kemudian
sudo systemctl sshd restart
sumber