Apakah ada cara untuk membuat syadmin Linux berpengalaman menjadi produktif tanpa memberinya akses root penuh?
Pertanyaan ini berasal dari perspektif melindungi kekayaan intelektual (IP), yang dalam kasus saya, sepenuhnya merupakan kode dan / atau file konfigurasi (yaitu file digital kecil yang mudah disalin). Saus rahasia kami telah membuat kami lebih sukses daripada yang disarankan ukuran kecil kami. Demikian juga, kami pernah digigit, dua kali malu dari beberapa mantan karyawan yang tidak bermoral (bukan sysadmin) yang mencoba mencuri IP. Posisi manajemen puncak pada dasarnya adalah, "Kami memercayai orang-orang, tetapi karena kepentingan pribadi, tidak mampu menanggung risiko memberi satu orang lebih banyak akses daripada yang benar-benar mereka butuhkan untuk melakukan pekerjaan mereka."
Di sisi pengembang , relatif mudah untuk membagi alur kerja dan tingkat akses sehingga orang bisa menjadi produktif tetapi hanya melihat apa yang perlu mereka lihat. Hanya orang-orang top (pemilik perusahaan yang sebenarnya) yang memiliki kemampuan untuk menggabungkan semua bahan dan membuat saus khusus.
Tapi saya belum bisa menemukan cara yang baik untuk menjaga kerahasiaan IP ini di sisi admin Linux. Kami menggunakan GPG secara ekstensif untuk kode dan file teks sensitif ... tetapi apa yang membuat admin berhenti (misalnya) menuntut pengguna dan melompat pada tmux atau sesi Layar GNU dan melihat apa yang mereka lakukan?
(Kami juga memiliki akses Internet dinonaktifkan di mana-mana yang mungkin berhubungan dengan informasi sensitif. Tapi, tidak ada yang sempurna, dan mungkin ada lubang yang terbuka untuk sysadmin pintar atau kesalahan di sisi admin jaringan. Atau bahkan USB lama yang baik. Ada beberapa tentu saja banyak langkah-langkah lain di tempat, tetapi itu berada di luar cakupan pertanyaan ini.)
Yang terbaik yang bisa saya lakukan pada dasarnya adalah menggunakan akun yang dipersonalisasi dengan sudo , mirip dengan apa yang dijelaskan dalam beberapa sysadmin Linux yang berfungsi sebagai root . Khususnya: tidak ada seorang pun kecuali pemilik perusahaan yang benar-benar memiliki akses root langsung. Admin lain akan memiliki akun yang dipersonalisasi dan kemampuan untuk sudo menjadi root. Selain itu, logging jarak jauh akan dilembagakan, dan log akan pergi ke server yang hanya dapat diakses oleh pemilik perusahaan. Melihat logging dimatikan akan memicu semacam peringatan.
Sysadmin yang cerdik mungkin masih dapat menemukan beberapa lubang dalam skema ini. Selain itu, masih reaktif daripada proaktif . Masalah dengan IP kami adalah sedemikian rupa sehingga pesaing dapat menggunakannya dengan sangat cepat, dan menyebabkan banyak kerusakan dalam waktu yang sangat singkat.
Jadi masih lebih baik akan menjadi mekanisme yang membatasi apa yang bisa dilakukan admin. Tetapi saya menyadari bahwa ini adalah keseimbangan yang sulit (terutama dalam hal mengatasi masalah dan memperbaiki masalah produksi yang perlu diselesaikan sekarang ).
Saya bertanya-tanya bagaimana organisasi lain dengan data yang sangat sensitif mengelola masalah ini? Sebagai contoh, sysadmin militer: bagaimana mereka mengelola server dan data tanpa dapat melihat informasi rahasia?
Sunting: Dalam postingan awal, saya bermaksud untuk lebih dulu menanggapi komentar "praktik perekrutan" yang mulai muncul. Satu, ini seharusnya menjadi pertanyaan teknis , dan mempekerjakan praktik IMO lebih cenderung ke pertanyaan sosial . Tapi, dua, saya akan mengatakan ini: Saya percaya kita melakukan semua yang masuk akal untuk mempekerjakan orang: wawancara dengan banyak orangorang-orang di perusahaan; pemeriksaan latar belakang dan referensi; semua karyawan menandatangani banyak dokumen hukum, termasuk yang mengatakan mereka telah membaca dan memahami buku pegangan kami yang merinci keprihatinan IP secara terperinci. Sekarang, itu di luar ruang lingkup pertanyaan / situs ini, tetapi jika seseorang dapat mengusulkan praktik perekrutan yang "sempurna" yang menyaring 100% aktor-aktor jahat, saya mendengar semuanya. Faktanya adalah: (1) Saya tidak percaya ada proses perekrutan yang sempurna; (2) orang berubah - malaikat hari ini bisa jadi iblis besok; (3) percobaan pencurian kode tampaknya agak rutin di industri ini.
Jawaban:
Apa yang Anda bicarakan dikenal sebagai risiko "Evil Sysadmin". Panjang dan pendeknya adalah:
Kombinasi hal-hal ini pada dasarnya tidak memungkinkan untuk menghentikan tindakan jahat. Bahkan audit menjadi sulit, karena Anda tidak memiliki 'normal' untuk dibandingkan. (Dan terus terang - sistem yang rusak mungkin juga telah merusak audit).
Ada banyak langkah mitigasi:
syslog
dan audit level acara, ke sistem yang relatif lebih ramah yang tidak dapat mereka akses. Tetapi mengumpulkannya tidak cukup, Anda perlu memantaunya - dan terus terang, ada banyak cara untuk 'mencuri' informasi yang mungkin tidak muncul di radar audit. (Pemburu vs gamekeeper)Tapi cukup mendasar - Anda harus menerima bahwa ini adalah hal yang dapat dipercaya, bukan hal teknis. Sysadmin Anda akan selalu berpotensi sangat berbahaya bagi Anda, sebagai akibat dari badai yang sempurna ini.
sumber
Semua yang dikatakan sejauh ini di sini adalah hal yang baik tetapi ada satu cara non teknis 'mudah' yang membantu meniadakan admin sys nakal - prinsip empat mata yang pada dasarnya mengharuskan dua sysadmin hadir untuk setiap akses tinggi.
EDIT: Dua item terbesar yang saya lihat di komentar membahas biaya dan kemungkinan kolusi. Salah satu cara terbesar yang saya pertimbangkan untuk menghindari kedua masalah tersebut adalah dengan menggunakan perusahaan jasa terkelola yang hanya digunakan untuk verifikasi tindakan yang diambil. Jika dilakukan dengan benar, para teknisi tidak akan saling kenal. Dengan asumsi kecakapan teknis bahwa MSP harus memiliki itu akan cukup mudah untuk memiliki tanda dari tindakan yang diambil .. bahkan mungkin sesederhana ya / tidak untuk apa pun yang jahat.
sumber
Jika orang benar-benar membutuhkan akses admin ke suatu sistem maka ada sedikit yang dapat Anda lakukan untuk membatasi aktivitas mereka di kotak itu.
Apa yang dilakukan sebagian besar organisasi adalah kepercayaan, tetapi verifikasi - Anda mungkin memberi orang akses ke bagian-bagian sistem tetapi Anda menggunakan akun admin bernama (mis. Anda tidak memberi mereka akses langsung ke root ) dan kemudian mengaudit aktivitas mereka ke log yang mereka tidak dapat mengganggu.
Ada tindakan penyeimbangan di sini; Anda mungkin perlu melindungi sistem Anda, tetapi Anda perlu mempercayai orang lain untuk melakukan pekerjaan mereka juga. Jika perusahaan sebelumnya "digigit" oleh karyawan yang tidak bertanggung jawab, maka ini mungkin menunjukkan bahwa perusahaan yang mempekerjakannya buruk dalam beberapa hal, dan praktik itu mungkin diciptakan oleh "manajer puncak". Kepercayaan dimulai di rumah; apa yang mereka lakukan untuk memperbaiki pilihan perekrutan mereka?
sumber
Tanpa menempatkan diri Anda dalam putaran pikiran teknis yang gila untuk mencoba dan menemukan cara untuk memberikan kekuatan sysadmin tanpa memberi mereka kekuatan (itu kemungkinan bisa dilakukan, tetapi pada akhirnya akan cacat dalam beberapa cara).
Dari sudut pandang praktik bisnis, ada serangkaian solusi sederhana. Bukan solusi murah, tapi sederhana.
Anda menyebutkan bahwa potongan-potongan IP yang Anda khawatirkan dibagi dan hanya orang-orang di atas yang memiliki kekuatan untuk melihatnya. Ini pada dasarnya adalah jawaban Anda. Anda harus memiliki beberapa admin, dan NONE dari mereka harus menjadi admin pada sistem yang cukup untuk mengumpulkan gambar lengkap. Anda tentu saja membutuhkan setidaknya 2 atau 3 admin untuk setiap bagian, jika admin sakit atau dalam kecelakaan mobil atau sesuatu. Mungkin bahkan mengejutkan mereka. katakanlah Anda memiliki 4 admin, dan 8 informasi. admin 1 dapat mengakses sistem yang memiliki bagian 1 dan 2, admin 2 dapat mencapai potongan 2 dan 3, admin 3 dapat mencapai 3 dan 4, dan admin 4 dapat mencapai 4 dan 1. Setiap sistem memiliki admin cadangan, tetapi tidak ada admin dapat kompromi gambar lengkap.
Salah satu teknik yang digunakan militer juga adalah keterbatasan memindahkan data. Di area sensitif mungkin hanya ada satu sistem yang mampu membakar disk, atau menggunakan USB flash drive, semua sistem lain dibatasi. Dan kemampuan untuk menggunakan sistem itu sangat terbatas dan memerlukan persetujuan khusus yang didokumentasikan oleh para petinggi sebelum siapa pun diizinkan untuk meletakkan data apa pun pada apa pun yang dapat menyebabkan tumpahan informasi. Sepanjang token yang sama, Anda memastikan bahwa lalu lintas jaringan antara sistem yang berbeda dibatasi oleh firewall perangkat keras. Admin jaringan Anda yang mengontrol tembok api tidak memiliki akses ke sistem yang dirutekaninya, sehingga mereka tidak dapat secara khusus mendapatkan akses ke informasi, dan admin server / workstation Anda memastikan bahwa semua data ke dan dari sistem dikonfigurasikan untuk dienkripsi,
Semua laptop / workstation harus memiliki hard drive terenkripsi, dan setiap karyawan harus memiliki loker pribadi. Mereka harus mengunci drive / laptop pada akhir malam untuk memastikan bahwa tidak ada yang datang lebih awal / terlambat dan mendapatkan akses ke sesuatu mereka tidak seharusnya.
Setiap server setidaknya harus berada di rak terkunci sendiri, jika tidak ruang terkunci sendiri, sehingga hanya admin yang bertanggung jawab untuk setiap server memiliki akses ke sana, karena pada akhirnya akses fisik mengalahkan semua.
Berikutnya ada latihan yang bisa melukai / membantu. Kontrak terbatas. Jika Anda pikir Anda dapat membayar cukup untuk terus menarik talenta baru, opsi hanya menyimpan setiap admin untuk waktu yang telah ditentukan sebelumnya (yaitu 6 bulan, 1 tahun, 2 tahun) akan memungkinkan Anda untuk membatasi berapa lama seseorang akan memiliki untuk mencoba menyatukan semua bagian dari IP Anda.
Desain pribadi saya akan menjadi sesuatu di sepanjang garis ... Membagi data Anda menjadi betapapun banyaknya, katakanlah demi memiliki nomor 8, Anda memiliki 8 server git, masing-masing dengan perangkat keras mereka sendiri yang berlebihan, masing-masing diadministrasikan oleh satu set admin yang berbeda.
Hardrives terenkripsi untuk semua workstation yang akan menyentuh IP. dengan direktori "proyek" khusus pada drive yang merupakan satu-satunya direktori pengguna yang diizinkan untuk memasukkan proyek mereka. Pada akhir setiap malam mereka diharuskan untuk membersihkan direktori proyek mereka dengan alat penghapusan yang aman, kemudian hard drive dihapus dan terkunci (hanya untuk aman).
Setiap bit proyek memiliki admin yang berbeda ditugaskan untuk itu, sehingga pengguna hanya akan berinteraksi dengan admin workstation mereka ditugaskan, jika tugas proyek mereka berubah, data mereka dihapus, mereka ditugaskan admin baru. Sistem mereka seharusnya tidak memiliki kapabilitas pembakaran dan harus menggunakan program keamanan untuk mencegah penggunaan flash drive USB untuk mentransfer data tanpa otorisasi.
ambil dari ini apa yang Anda inginkan.
sumber
How do we find the top-tier talent we want, but only give them a teeny-tiny workload?
Sampai batas tertentu, Anda dapat mengurangi ini dengan memberi mereka lingkungan uji / R & D yang besar, akses ke mainan baru yang keren dan mendorong mereka untuk menghabiskan sebagian besar dari hari kerja mereka untuk mengembangkan keterampilan teknologi mereka. Beban kerja 25% yang efektif mungkin mendorong hal itu terlalu jauh, tetapi saya benar-benar ingin tahu tentang pekerjaan yang merupakan 50% pekerjaan aktual dan 50% pengembangan teknis / Litbang (dengan asumsi gaji berada pada tingkat yang sama dengan yang normal ~ 100% " pekerjaan aktual ").Ini akan mirip dengan tantangan mempekerjakan petugas kebersihan untuk sebuah bangunan. Petugas kebersihan dapat memiliki semua kunci, dapat membuka pintu apa pun, tetapi alasannya adalah bahwa petugas kebersihan membutuhkan mereka untuk melakukan pekerjaan itu. Sama dengan admin sistem. Secara simetris orang dapat memikirkan masalah tua zaman ini dan melihat cara-cara kepercayaan diberikan secara historis.
Meskipun tidak ada solusi teknis yang rapi, fakta bahwa tidak ada solusi yang seharusnya tidak menjadi alasan bahwa kami tidak mencoba, agregasi solusi yang tidak sempurna dapat memberikan hasil yang agak bagus.
Model di mana kepercayaan diperoleh :
Menerapkan beberapa tingkat kekuatan administratif :
Selalu menciptakan lingkungan di mana akses total oleh satu orang tidak mungkin :
Gunakan aturan Two-man saat melakukan perubahan inti tingkat tinggi :
Percaya dan verifikasi :
Dokumen :
sumber
Sangat sulit untuk mengamankan host terhadap mereka yang memiliki akses administratif. Sementara alat-alat seperti PowerBroker berusaha melakukan ini, biayanya adalah menambahkan sesuatu yang lain yang dapat merusak DAN menambahkan hambatan pada upaya memperbaikinya. Ketersediaan sistem Anda AKAN jatuh ketika Anda menerapkan sesuatu seperti ini jadi tetapkan harapan itu lebih awal sebagai biaya untuk melindungi sesuatu.
Kemungkinan lain adalah untuk melihat apakah aplikasi Anda dapat berjalan di host pakai melalui penyedia cloud atau di cloud pribadi yang di-host secara lokal. Ketika ada yang rusak, alih-alih mengirim admin untuk memperbaikinya, Anda membuangnya dan membuat pengganti secara otomatis. Ini akan membutuhkan cukup banyak pekerjaan di sisi aplikasi untuk membuatnya berjalan dalam model ini, tetapi dapat menyelesaikan banyak masalah operasional dan keamanan. Jika dilakukan dengan buruk, ini dapat menciptakan beberapa masalah keamanan yang signifikan, jadi dapatkan bantuan berpengalaman jika Anda menempuh rute itu.
sumber
Ini adalah diskusi dasar Anda: https://security.stackexchange.com/questions/7801/keeping-secrets-from-root-on-linux
Anda membagi tanggung jawab Anda dengan meminta insinyur keamanan yang tugasnya membuat konfigurasi dan pemasangan sistem, tetapi mereka tidak mendapatkan kredensial atau akses ke mesin yang sedang diproduksi. Mereka juga menjalankan infrastruktur audit Anda.
Anda memiliki admin produksi yang menerima sistem tetapi tidak memiliki kunci untuk mem-boot mesin tanpa kebijakan SELinux aktif. Keamanan tidak mendapatkan kunci untuk mendekripsi data sensitif yang disimpan saat istirahat di disk ketika mereka mendapatkan mesin yang rusak ditarik dari layanan.
Memanfaatkan sistem otentikasi terpusat dengan audit yang kuat seperti Vault dan memanfaatkan operasi crypto-nya. Bagikan perangkat Yubikey untuk membuat kunci benar-benar pribadi dan tidak dapat dibaca.
Mesin bisa terhapus pada kerusakan atau ditangani oleh ops dan keamanan bersama, dan jika Anda merasa perlu pengawasan eksekutif.
sumber
Admin berdasarkan sifat pekerjaan memiliki akses ke semuanya. Mereka dapat melihat setiap file dalam sistem file dengan kredensial admin mereka. Jadi, Anda memerlukan cara untuk mengenkripsi file sehingga admin tidak dapat melihatnya, tetapi file tersebut masih dapat digunakan oleh tim yang seharusnya melihatnya. Lihat ke dalam Enkripsi Transparan Vormetrik ( http://www.vormetric.com/products/transparent-encryption )
Cara kerjanya adalah bahwa ia berada di antara sistem file dan aplikasi yang mengaksesnya. Manajemen dapat membuat kebijakan yang mengatakan "Hanya pengguna httpd, menjalankan daemon server web dapat melihat file tidak terenkripsi". Kemudian admin dengan kredensial root mereka dapat mencoba membaca file dan hanya mendapatkan versi terenkripsi. Tetapi server web dan alat apa pun yang dibutuhkan melihat mereka tidak terenkripsi. Bahkan dapat checksum biner untuk mempersulit admin untuk berkeliling.
Tentu saja Anda harus mengaktifkan audit sehingga jika admin mencoba mengakses file, pesan akan ditandai dan orang-orang tahu tentangnya.
sumber
Satu-satunya cara praktis adalah membatasi siapa yang bisa melakukan apa dengan sudo. Anda mungkin juga berpotensi melakukan sebagian besar dari apa yang Anda inginkan dengan selinux tetapi mungkin perlu waktu lama untuk mengetahui konfigurasi yang benar yang mungkin membuatnya tidak praktis.
Perjanjian tanpa pengungkapan. Menyewa sysadmin, mereka harus menandatangani NDA, jika mereka melanggar janji mereka, membawa mereka ke pengadilan. Ini mungkin tidak mencegah mereka mencuri rahasia, tetapi segala kerusakan yang mereka sebabkan dapat dipulihkan di pengadilan.
Sysadmin militer dan pemerintah harus mendapatkan izin keamanan dengan nilai yang berbeda tergantung pada seberapa sensitif bahan tersebut. Gagasannya adalah bahwa seseorang yang bisa mendapatkan izin lebih kecil kemungkinannya untuk mencuri atau menipu.
sumber
Cara lain cara menurunkan risiko (gunakan di sebelah yang disebutkan sebelumnya, bukan sebagai ganti) adalah membayar uang baik kepada sysadmin Anda. Bayar mereka dengan sangat baik sehingga mereka tidak ingin mencuri dari IP Anda dan meninggalkan Anda.
sumber
Saya pikir pertanyaan ini mungkin tidak dapat dijawab sepenuhnya tanpa beberapa perincian lebih lanjut, seperti:
Berapa banyak sysadmin yang Anda harapkan tetap "dibatasi"?
Apa yang orang perlu akses "sysadmin" untuk lakukan?
Pertama-tama, perhatikan apa yang dapat Anda lakukan dengan sudo. Dengan sudo, Anda dapat mengizinkan izin yang ditinggikan untuk hanya menjalankan satu perintah (atau variasi, seperti perintah yang dimulai dengan "mount -r" tetapi perintah lain tidak diizinkan). Dengan kunci SSH, Anda dapat menetapkan kredensial yang memungkinkan seseorang hanya menjalankan perintah tertentu (seperti "sudo mount -r / dev / sdd0 / media / backup"). Oleh karena itu, ada cara yang relatif mudah untuk memungkinkan siapa saja (yang memiliki kunci SSH) untuk dapat melakukan beberapa operasi tertentu tanpa membiarkan mereka melakukan hal-hal lain secara mutlak.
Segalanya menjadi sedikit lebih menantang jika Anda ingin teknisi melakukan perbaikan atas apa yang rusak. Ini biasanya dapat memerlukan jumlah izin yang lebih tinggi, dan mungkin akses untuk menjalankan beragam perintah, dan / atau menulis ke berbagai file.
Saya sarankan mempertimbangkan pendekatan sistem berbasis web, seperti CPanel (yang digunakan oleh sejumlah ISP) atau sistem berbasis cloud. Mereka sering dapat membuat masalah pada mesin pergi, dengan membuat seluruh mesin pergi. Jadi, seseorang mungkin dapat menjalankan perintah yang menggantikan mesin (atau mengembalikan mesin ke gambar yang dikenal baik), tanpa harus memberi orang itu akses untuk membaca banyak data, atau membuat perubahan kecil (seperti menggabungkan perbaikan kecil) dengan pengenalan pintu belakang yang tidak sah). Kemudian, Anda perlu mempercayai orang-orang yang membuat gambar, tetapi Anda mengurangi berapa banyak orang yang perlu Anda percayai untuk melakukan hal-hal yang lebih kecil.
Namun, pada akhirnya, sejumlah kepercayaan perlu diberikan kepada sejumlah orang yang tidak nol yang membantu merancang sistem dan yang beroperasi pada tingkat tertinggi.
Satu hal yang dilakukan perusahaan besar adalah mengandalkan hal-hal seperti SQL server, yang menyimpan data yang dapat diakses dari jarak jauh oleh sejumlah besar mesin. Kemudian, sejumlah besar teknisi dapat memiliki akses root penuh pada beberapa mesin, sementara tidak memiliki akses root ke server SQL.
Pendekatan lain adalah terlalu besar untuk gagal. Jangan berpikir bahwa militer besar atau perusahaan raksasa tidak pernah memiliki insiden keamanan. Namun, mereka tahu bagaimana caranya:
Asumsi dasarnya adalah bahwa kerusakan yang terjadi hanyalah risiko dan biaya dalam berbisnis. Mereka berharap untuk terus beroperasi, dan pengembangan serta peningkatan yang sedang berlangsung selama bertahun-tahun akan membatasi seberapa besar kerusakan satu insiden yang mungkin benar-benar mempengaruhi nilai jangka panjang mereka selama periode waktu tertentu.
sumber
Melakukan pemeriksaan proaktif sangat sulit.
Solusi seperti http://software.dell.com/solutions/privileged-management/ (Saya tidak bekerja untuk Dell dan solusi serupa lainnya tersedia) sangat efektif dalam menegakkan akuntabilitas sysadmin.
sumber
Tempatkan mesin administrasi root ke dalam ruangan terkunci dengan dua kunci, dan berikan hanya satu untuk masing-masing dari dua admin. Admin akan selalu bekerja bersama, mengamati aktivitas satu sama lain. Ini harus menjadi satu-satunya mesin yang berisi kunci pribadi untuk login sebagai root.
Beberapa kegiatan mungkin tidak memerlukan hak root, jadi hanya sebagian dari pekerjaan yang perlu masuk ke ruangan itu untuk "pair programming"
Anda juga dapat merekam aktivitas video di ruangan itu sebagian besar untuk memastikan bahwa tidak ada yang bekerja sendiri (yang mudah terlihat). Juga, pastikan tempat kerjanya sedemikian rupa sehingga layar mudah dilihat oleh kedua orang (mungkin layar TV besar dengan font besar).
sumber