Menggunakan Solaris dan Linux server dan OpenSSH, apakah mungkin untuk mencegah pengguna menyalin file menggunakan "scp" sambil tetap mengizinkan akses shell dengan "ssh"?
Saya menyadari bahwa akses file jenis 'ssh $ server "cat" jauh lebih sulit untuk dicegah, tetapi saya perlu melihat tentang menghentikan "scp" sebagai permulaan.
Gagal, apakah ada cara untuk secara andal mencatat semua akses SCP di sisi server syslog
?
Jawaban:
Meskipun Anda dapat mengedit Anda
/etc/ssh/sshd_config
agar terlihat seperti ini:Saya malah akan menentukan untuk apa pengguna menggunakannya. Karena jika hanya ada beberapa perintah yang Anda ingin mereka akses, saya akan menghapus kemampuan mereka bahkan untuk memanggil
ssh
shell normal .Jika Anda benar-benar harus dapat menjalankan shell normal, hal yang paling Anda harapkan, adalah memperlambatnya, dan membuatnya lebih sulit.
sumber
Seperti yang telah dicatat orang lain, Anda tidak dapat memblokir scp (well, Anda bisa:,
rm /usr/bin/scp
tetapi itu tidak benar-benar membuat Anda ke mana pun).Yang terbaik yang dapat Anda lakukan adalah mengubah shell pengguna ke shell terbatas (rbash) dan hanya kemudian menjalankan perintah tertentu.
Ingat, jika mereka dapat membaca file, mereka dapat menyalin / menempelkannya dari layar. File biner? xxd / uuencode / mmencode semua menyiasati ini.
Saya juga menyarankan menggunakan proses akuntansi untuk membantu Anda melacak aktivitas.
sumber
Anda tidak mendapatkan apa-apa dengan menghentikan "scp" ketika Anda masih mengizinkan mekanisme tambahan yang benar-benar tak terbatas untuk mentransfer file. Melarang scp tetapi mengizinkan mekanisme lain untuk menyalin file adalah metode berbohong kepada auditor. Seringkali auditor meminta dibohongi. Biasanya saya melihat auditor bekerja dengan manajer untuk membuat perbaikan palsu, sehingga mereka dapat menyatakan sesuatu seperti "perintah transfer file scp telah dinonaktifkan, sehingga file tidak dapat disalin dari server menggunakan scp".
Sekarang mekanisme logging yang masuk akal akan lebih baik. Mungkin auditd akhirnya berfungsi di Linux. Mungkin Solaris akhirnya menambahkan beberapa mekanisme atau dtrace yang bisa digunakan dengan aman. Masuk akal untuk menginginkan OS untuk login setiap kali file diakses. Tentu saja tidak ada perbedaan antara "membaca" dan "menyalin". Tetapi ini dapat memuaskan auditor dan memberikan keamanan yang signifikan terhadap sistem. Log Anda bisa sangat berisik sehingga datanya tidak berguna, atau bahkan Anda terpaksa menyimpan jejak audit yang sangat pendek. (mis. Anda tidak dapat mencatat setiap read () - dan satu aplikasi yang melakukan sesuatu yang mengejutkan dapat membuat logging setiap open () menjadi bencana).
sumber
Tergantung pada apa SSH diperlukan untuk, Anda mungkin dapat mencapai tujuan ini (untuk non-sepele) file dengan menggunakan IPTable untuk mengakhiri sesi jika ukuran paket lebih besar, katakanlah 1.400 byte. Ini berarti bahwa ssh interaktif sebagian besar akan berfungsi, tetapi segera setelah sesuatu mencoba mengirim paket 1500 byte - seperti scp seharusnya untuk file yang lebih besar daripada 1499 byte dengan asumsi MTU standar 1500, itu akan memutuskan koneksi.
Ini juga akan mencegah serangan "catting" yang Anda sebutkan.
Sayangnya ini berarti bahwa Anda mungkin memiliki masalah mengedit beberapa file dengan editor teks, jika layar perlu menggambar lebih dari 1400 karakter, atau jika Anda perlu menyimpan file yang panjang atau melakukan daftar direktori yang panjang.
Dalam kasus paling sederhana perintah untuk melakukan ini mungkin terlihat seperti
Kita dapat membuat ini bekerja lebih baik dengan menggabungkan cek panjang paket dengan ipt_recent, sehingga Anda mengizinkan jumlah paket lebih besar dari 1400 byte dalam jangka waktu yang ditetapkan (katakanlah 8 paket per 5 detik) - ini akan memungkinkan paket hingga 12k untuk tergelincir melalui, tetapi dapat memberi Anda interaktivitas yang Anda perlukan untuk mengedit file, dll. Anda dapat, tentu saja, mengubah jumlah paket.
Ini mungkin terlihat seperti
Contoh aturan di atas hanya melindungi dari unggahan scp seperti
scp myfile.data remote.host:~
. Untuk melindungi tambahan terhadap unduhan scp sepertiscp remote.host:~/myfile.data /local/path
, ulangi aturan di atas tetapi ganti--dport
dengan--sport
.Seorang peretas yang cerdas dapat mengatasi keterbatasan ini dengan menetapkan MTU kurang dari 1400 pada mesinnya (atau memaksa mtu atau serupa). Selain itu, meskipun Anda tidak dapat membatasi ini untuk pengguna tertentu, Anda dapat membatasinya dengan IP dengan memodifikasi jalur iptables yang sesuai !!
Cheers, David Go
sumber
Taruhan terbaik Anda bukan untuk mengunci scp, tetapi menggunakan sistem file dengan ACL untuk mencegah akses baca. Anda mungkin dapat melakukan sesuatu dengan SELinux untuk mencegah aplikasi tertentu membaca dari file tertentu.
sumber
Tidak.
scp
Danssh
operasikan pada port yang sama dan gunakan protokol yang sama. Jika Anda membukassh
sesi, Anda bahkan dapat membagikan koneksi Anda dengan panggilan scp berikutnya menggunakan opsi sepertiControlMaster
.Jika Anda tidak ingin orang menyalin file tertentu dari mesin, Anda tidak boleh memberi mereka segala jenis akses shell ke mesin.
sumber
Ada cara untuk menggunakan 'scponly' sebagai shell untuk menonaktifkan ssh interaktif dan memungkinkan scp, tetapi saya tidak mengetahui adanya sesuatu yang ada yang bekerja secara terbalik.
Anda mungkin dapat menjelajahi peretasan shell scponly untuk mencapai yang sebaliknya.
sumber
Ini tidak mungkin sebenarnya setelah sedikit googling.
Lihatlah diskusi ini: http://www.mydatabasesupport.com/forums/unix-admin/387261-how-restrict-ssh-users-block-scp-sftp.html
sumber
Untuk apa nilainya, produk komersial CryptoAuditor mengklaim dapat mengontrol transfer file melalui SSH, dengan MITM ing koneksi dan menggunakan inspeksi paket dalam . Jelas tidak ada solusi yang aman dari copy + paste, uuencode / decode, FISH , dll. Yang menyenangkan adalah bahwa itu transparan (selain dari kemungkinan kesalahan sertifikat); tidak ada perangkat lunak agen untuk diinstal pada kedua ujung koneksi SSH, dan tidak ada portal / proxy untuk mengkonfigurasi.
Saya belum menggunakan produk, jadi YMMV.
sumber
Memblokir transfer file tanpa menghapus begitu banyak utilitas sistem sehingga meninggalkan mesin sama sekali tidak berguna adalah mustahil. Anda harus menyingkirkan semua yang mampu menampilkan konten file ke stdout, dan semua yang mampu menulis stdin ke stdout, dan pada saat Anda telah menghapus semua yang ada begitu sedikit yang tersisa sehingga tidak ada titik untuk memungkinkan akses shell sama sekali.
Jadi saya akan fokus pada alternatif logging Anda:
Ada sebuah program yang disebut "skrip" yang termasuk dalam hampir setiap distro, dan yang seharusnya mudah dipasang pada yang tidak. Ini adalah sesi logger yang merekam semua input dan output dari shell, opsional dengan data waktu sehingga dapat diputar ulang dan terlihat seperti Anda sedang mengawasi dari bahu pengguna ketika mereka melakukannya. (Lagi pula, 95%, kadang-kadang outputnya bobbles ketika ncurses terlibat, tetapi tidak terlalu sering.)
Halaman manualnya mencakup instruksi untuk mengaturnya sebagai shell login sistem. Pastikan log pergi ke suatu tempat di mana pengguna tidak bisa menghapusnya (atribut sistem file append-only (settable via chattr) dapat berguna untuk ini. Seperti halnya ACL atau skrip inotify)
Ini masih tidak mencegah pengguna menyalin file dari sistem, tetapi memungkinkan Anda meninjau apa yang dilakukan oleh pengguna mana dan kapan. Mungkin bukan tidak mungkin untuk memotong, tetapi memotong hampir pasti akan berakhir di log sehingga Anda setidaknya akan tahu ada yang tidak baik, bahkan jika mereka berhasil menyembunyikan persis apa itu.
sumber
Saya percaya Anda dapat menghapus instalan openssh-klien (atau yang setara) di server.
Saya pikir klien scp memanggil scp di server saat menyalin data jadi jika Anda menyingkirkan scp di server, maka Anda harus baik-baik saja.
sumber