Konsultan Admin Remote Linux - Praktik Terbaik [ditutup]

19

Kami melibatkan konsultan di India sebagai Administrator Linux kami. Kami tidak mengenalnya dengan baik dan dia membutuhkan akses Root ke semua server kami untuk melakukan tugasnya (termasuk audit keamanan).

Apa praktik terbaik untuk mengaktifkan konsultan jarak jauh untuk pekerjaan sedemikian rupa sehingga kami terlindung dari aktivitas ganas apa pun?

Terima kasih sebelumnya.

Anderson Tess
sumber
66
Jika Anda tidak mempercayai seseorang, jangan beri mereka akses ke server Anda. Periode. Pekerjakan seseorang yang bisa Anda percayai.
EEAA
6
Mau tak mau bertanya-tanya apakah ini adalah tindakan yang diamanatkan oleh atasan dan Anda sedang mencari amunisi / argumen yang baik untuk menentangnya?
Matt
5
LOL ... Apakah ini ide yang bagus?
ewwhite
5
Jika Anda memberikan seseorang akses root ke server Anda, Anda sama sekali tidak memiliki cara sama sekali untuk melindungi diri Anda secara sistematis dari aktivitas ganas pada mesin (s) yang dimiliki individu tersebut untuk mengakses root.
Craig
3
Semoga Anda memiliki cadangan offline yang bagus
CaffeineAddiction

Jawaban:

55

Jangan . Juga, Anda berada dalam bahaya ketidakmampuan seperti kebencian dari apa yang saya lihat tentang cara khas perusahaan menangani ini.

Saya ingin mengatakan, mungkin ada administrator sistem yang hebat di India, tetapi cara banyak perusahaan melakukan hal-hal buruk.

Jika Anda pergi ke toko bengkel, kemungkinan besar Anda akan melihat potongan yang cukup besar untuk mereka, dan banyak dari mereka tidak mungkin telah memeriksa karyawan mereka dengan benar. Saya sudah bicara dengan tiga, salah satunya bekerja untuk saya dan tidak satupun dari mereka yang melakukan wawancara teknis.

Jadi, jika Anda harus mempekerjakan seseorang dari jarak jauh, demi Tuhan, wawancarai dia sendiri dan pastikan dia tahu pekerjaannya. Administrasi sistem terlalu penting untuk diserahkan kepada seseorang secara membabi buta

Sekarang saya sudah menangani bagian "ketidakmampuan" itu,

Administrasi adalah ungkapan yang cukup luas. Dan seseorang dengan akses root dapat melakukan apa saja . Sekarang, secara pribadi saya pikir membuat akun untuk admin, dan memberinya kemampuan untuk meningkatkan dirinya melalui sudo adalah ide yang lebih baik (yang harus ditangani oleh sistem manajemen konfigurasi Anda jika Anda memiliki banyak server). Yang mengatakan, bahkan itu bergantung pada sejumlah kepercayaan. Ada begitu banyak cerita di luar sana tentang kerusakan parah yang bisa dilakukan sysadmin yang tidak puas. Ubah semua kata sandi Anda? Tentu Anda bisa masuk pada akhirnya, tetapi itu tidak sepele, dan mungkin akan lebih mahal daripada Anda menabung.

Jadi, pertimbangkan lokal. Jika tidak, pertimbangkan seseorang yang telah Anda periksa sendiri dan langsung direkrut .

Journeyman Geek
sumber
35
Saya memiliki waktu yang cukup sulit memberikan akses istimewa ke orang satu pintu turun dari saya apalagi seseorang 12 zona waktu. Pikiranku membingungkan bahwa siapa pun bahkan akan menganggap ini sebagai opsi.
EEAA
7
Jika Anda melalui bengkel, Anda bahkan tidak akan tahu siapa yang benar-benar memiliki kredensial root tersebut, Anda tidak memiliki jaminan bahwa orang yang bekerja pada sistem Anda hari ini adalah orang yang sama yang akan mengerjakannya besok, Anda tidak memiliki jaminan bahwa orang-orang ini tidak benar-benar akan mengirim surel kata sandi tingkat root Anda satu sama lain secara jelas (saya sudah terlalu sering melihatnya), dan sebagainya.
Craig
2
Tidak ada yang harus login ke distro Linux modern sebagai root. Akun root bahkan seharusnya tidak memiliki kata sandi. Sebagai gantinya, harus ada pengguna yang memiliki suotoritas untuk meningkatkan diri mereka ke root. Ketika seseorang mengatakan mereka membutuhkan "akses root", inilah yang seharusnya mereka minta. Jika orang ini mengatakan dia membutuhkan "kata sandi root", dia tidak kompeten untuk melakukan pekerjaan itu.
Monty Harder
@MontyHarder maksud Anda (tertentu) pengguna harus memiliki sudootoritas untuk meningkatkan diri mereka ke root? Jika tidak, bisakah Anda menguraikan praktik terbaik Anda untuk digunakan suuntuk meningkatkan diri sendiri untuk melakukan rooting tanpa memiliki, dan mendistribusikan, kata sandi root?
MadHatter mendukung Monica
2
@MontyHarder yang sangat masuk akal, itu tidak seperti yang Anda katakan pertama kali; sudodan sudua hal yang sangat berbeda. Terima kasih telah mengklarifikasi.
MadHatter mendukung Monica
33

Seperti yang telah disebutkan, jangan lakukan ini.

Satu-satunya cara Anda dapat melindungi diri sendiri adalah dengan melakukan sesuatu seperti ini:

  1. Bersikeras bahwa konsultan menggunakan sistem manajemen konfigurasi yang Anda pilih.
  2. Konsultan akan menulis manifes manajemen konfigurasi untuk tindakan yang perlu Anda selesaikan.
  3. Konsultan akan menguji manifes pada sistem pengujian.
  4. Saat siap, konsultan akan melakukan konfigurasi ke repositori kode.
  5. Semua perubahan ditinjau oleh salah satu anggota staf Anda atau konsultan lain yang sama sekali tidak ada hubungannya dengan yang pertama, dan tidak memiliki cara untuk menghubungi mereka.
  6. Setelah perubahan ditandatangani, mereka diterapkan ke server oleh Anda atau anggota staf Anda. Konsultan asli seharusnya tidak memiliki akses ke sistem Anda.

Seperti yang seharusnya jelas, ini adalah proses yang sangat canggung dan tidak efisien, tetapi jika Anda bersikeras menerima pekerjaan dari individu yang tidak dipercaya, ini adalah salah satu cara untuk menangani banyak hal.

Namun, seperti yang saya rekomendasikan, Anda sebaiknya mempekerjakan orang yang dikenal dan dipercaya.

EEAA
sumber
Kenapa tidak? Saya bekerja dari jarak jauh, mengelola sekitar +300 server khusus, dalam satu jam saya bisa menghancurkan semuanya jika saya mau. Tetapi tentu saja saya tidak akan melakukan itu, bahkan jika saya dipecat. Saya bertanggung jawab untuk membuat cadangan, memiliki hak istimewa tertinggi (bukan hanya saya, beberapa dari kita), dan kita bisa menjadi jahat kapan saja. Alasan mengapa kita tidak - adalah moral dan etika. Kami mencintai perusahaan dan karyawan dan pekerjaan kami secara umum. Hal utama di sini adalah mempercayai seseorang, dan menemukan orang yang bermoral untuk pekerjaan ini.
buron
@ buron Anda berbicara tentang situasi yang berbeda. Saya kira Anda dipercaya oleh perusahaan tempat Anda berkonsultasi, jika tidak mereka tidak akan memberi Anda izin yang Anda miliki. Dalam kasus OP, jelas bahwa mereka tidak mempercayai konsultan ini, itulah sebabnya saya merekomendasikan untuk tidak memberikan izin kepada orang ini pada sistem apa pun yang penting.
EEAA
Yah, kepercayaan harus diperoleh. :)
buron
10

Apa praktik terbaik untuk mengaktifkan konsultan jarak jauh untuk pekerjaan sedemikian rupa sehingga kami terlindung dari aktivitas ganas apa pun?

Dari perspektif hukum: uji tuntas sebelumnya dan hukuman ketat untuk pelanggaran kontrak.

Anda mulai dengan praktik perekrutan baik yang biasa yang juga berlaku ketika merekrut staf di lokasi (dan / atau penyedia layanan) yang mencakup pengecekan fakta pada resume yang disediakan, meminta transkrip pendidikan dan nomor sertifikasi, memeriksa dan memanggil referensi mereka, wawancara, bahkan mungkin pemeriksaan latar belakang atau pemeriksaan keamanan dll. dll.

Kemudian terapkan wortel : bayar nilai wajar, tawarkan pekerjaan yang menarik, kolega yang luar biasa, kondisi kerja yang baik dan manfaat dll. ( Jika Anda membayar kacang Anda mendapat monyet. )

Dan tongkatnya : melanggar syarat-syarat kontrak kerja / layanan Anda dan kami akan membuat Anda sakit dengan pengacara kami dan membuat Anda bangkrut!

Sayangnya kedua hal di atas menjadi semakin sulit ketika melintasi perbatasan dan zona waktu.

Setelah Anda memutuskan untuk mempekerjakan seseorang:

  • arahan dan kebijakan yang jelas, orang harus sadar akan apa yang seharusnya dan tidak boleh mereka lakukan.
  • prinsip akses minimal berlaku, membuat orang sulit (secara tidak sengaja atau sengaja) melakukan hal-hal yang seharusnya tidak mereka lakukan. Untuk administrator sistem tipikal sering kali itu masih berarti akses penuh, tetapi auditor keamanan misalnya tidak perlu memerlukan akses administrator penuh tetapi hanya dapat meminta admin yang ada untuk menjalankan skrip atas namanya yang mengumpulkan detail yang diperlukannya untuk membuat laporannya. Skrip seperti itu dapat dengan mudah diperiksa sebelumnya.
  • percaya, tapi verifikasi. Cukup minta staf yang ada memeriksa pekerjaan seorang joiner baru dan seperti biasa mengumpulkan informasi audit.
  • dll. dll

Pertanyaan ini merinci apa yang biasanya saya minta klien saya lakukan untuk membuat akses jarak jauh untuk saya, yang mungkin juga menjadi titik awal bagi Anda.

HBruijn
sumber
3
"Jika Anda membayar kacang Anda mendapatkan monyet" Atau gajah. Meski dipikir-pikir, saya tidak yakin apakah itu lebih baik atau lebih buruk dari monyet.
CVn
Hanya untuk menambahkan, bagian "tongkat" dari jawaban Anda mungkin lebih sulit untuk ditegakkan jika pihak lain berada di negara yang berbeda. Anda harus berkonsultasi dengan pengacara berpengetahuan / berpengalaman terlebih dahulu untuk melihat kemungkinan apa yang Anda miliki seandainya terjadi kesalahan.
user121391
Selain itu, penegakan hukum setelah insiden mungkin lebih menyebalkan daripada bekerja dengan pihak yang dapat Anda percayai. Dengan cara yang sama ada orang-orang yang benar-benar dapat Anda percayai, yang mungkin tidak Anda sukai secara otomatis, dan orang-orang yang secara naluriah Anda sukai.
Craig
7

Ada satu metode sistemik untuk melindungi diri Anda yang muncul di pikiran, yang belum saya lihat disebutkan.

Tuan rumah instance Linux Anda sebagai VM di hypervisor virtualisasi (VMware, Xenserver, Hyper-V, dll.).

JANGAN memberikan akses administratif admin jarak jauh ke hypervisor. Admin jarak jauh hanya akan mendapatkan akses root ke VM sendiri.

DO Menerapkan sistem cadangan berbasis hypervisor (Unitrends, Veeam, vSphere Data Protection, dll.)

Jaga agar setidaknya satu snapshot per hari dari setiap VM Linux, kembali sejauh yang Anda rasa perlu.

JANGAN memberikan admin tulis akses ke repositori cadangan.

Jika Anda melakukan hal-hal ini, Anda akan memiliki snapshot cadangan dari setiap instance Linux yang tidak dapat dikendalikan oleh admin jarak jauh. Jika admin jarak jauh melakukan sesuatu yang membingungkan, baik disengaja atau tidak, Anda selalu dapat memasang cadangan sebelum keringkasan terjadi untuk mengevaluasi apa yang terjadi dan mungkin memulihkan ke keadaan bersih.

Ini tidak akan menjadi bukti terhadap serangan sisi-kanal hypervisor, yang berpotensi dapat dipasang dari dalam VM yang penyerang memiliki akses root.

Jika cadangan Anda tidak terlalu jauh ke masa lalu, ini tidak akan melindungi Anda.

Anda harus benar-benar percaya siapa pun yang mengendalikan hypervisor Anda dan infrastruktur cadangan.

Jika Anda melakukan ini di cloud (AWS, Azure, dll.), Detail implementasi akan berbeda, tetapi konsep umum akan sama.

Intinya, bagilah tanggung jawab di antara pihak-pihak yang bukan mitra bisnis satu sama lain, selain hanya merekrut orang yang Anda percayai.

Craig
sumber
1
Pada saat Anda telah melakukan semua itu, Anda sudah menjadi administrator sistem dan Anda menyewa pesuruh jarak jauh atau PFY.
Criggie
3
Tidak sepenuhnya. Anda hanya mengelola hypervisor dan cadangannya. Yang, diakui, bukan apa-apa. Tetapi itu juga tidak berarti keahlian atau administrasi yang sama. Kemungkinannya adalah jika Anda melakukan virtualisasi (kami), Anda memiliki orang atau orang yang berbeda yang bertanggung jawab atas apa pun yang terjadi pada VM individu.
Craig
1
Meskipun ide umumnya bagus, itu hanya membantu melawan ketidakmampuan / kesalahan (menghapus basis data produksi dll), tidak melawan kedengkian (kecuali Anda memeriksa setiap perubahan setiap hari dan membandingkan konten perubahan, pada dasarnya audit harian penuh). Juga, kerusakan mungkin tidak terkait dengan hal-hal teknis, misalnya data pelanggan atau rahasia dagang yang disedot tidak dapat ditanggulangi dengan cara ini, karena hanya reaktif.
user121391
@ user121391: Saya benar-benar tidak bisa setuju, terutama dengan masalah exfiltratiion data. Setelah data diambil, itu sepenuhnya di luar kendali Anda.
Craig
-1

Beri dia akun penggunanya sendiri. Kemudian cari tahu apa yang dia butuhkan akses dan berikan hanya akses itu tetapi tidak ada yang lain. Sebagai contoh jika dia perlu mengkonfigurasi ulang server web Apache, gunakan ACL untuk memberinya akses tulis ke file konfigurasi Apache dan konfigurasikan sudountuk membiarkannya me-restart layanan Apache tetapi tidak menjalankan perintah lain sebagai root. Seperti biasa, simpan cadangan apa pun yang Anda memberinya akses (dalam hal ini, file konfigurasi Apache Anda).

Micheal Johnson
sumber
3
Memiliki izin untuk mengkonfigurasi dan memulai kembali menjalankan Apache sebagai root pada dasarnya memberikan hak istimewa root. Cukup mudah untuk menjalankan biner sembarang yang dijalankan oleh proses apache, misalnya untuk mem-pipe log itu. Lebih baik mengatur Apache sehingga dapat berjalan sebagai non-root dan masih mengikat port istimewa. Itulah yang saya lakukan dalam situasi ini di masa lalu.
MvG