Namun, setelah memikirkannya, saya tidak dapat menemukan alasan mengapa kode yang dapat dieksekusi bersama di server internal tidak boleh memiliki izin 777.
Karena Anda tidak hanya mempercayai setiap pengguna - yang mungkin masuk akal di server internal di mana "setiap orang" yang memiliki akses harus memiliki kendali itu - Anda juga mempercayai setiap proses di server itu. Server web. Server SSH. Klien DHCP. Setiap tugas terjadwal dan setiap layanan. Bahkan proses berjalan sebagai "nobody" dan "nogroup". Semua jenis proses yang mungkin dimanfaatkan oleh penyerang untuk mendapatkan atau memperluas akses mereka.
Karena jika Anda ceroboh dalam pengembangan internal, seseorang akan ceroboh dalam sistem Produksi atau Pelanggan, karena "begitulah cara kami memperbaikinya secara internal".
Karena penyerang akan senang menemukan sistem kecil yang hanya internal dan tidak penting atau terlindungi, lihat kelemahan seperti file aplikasi web yang dapat ditulisi, gunakan untuk masuk ke sistem dan mulai memanfaatkannya untuk mencapai suatu tempat. Saya berani bertaruh kata sandi yang digunakan orang pada sistem itu juga berfungsi pada sistem internal lain yang lebih berharga. Mungkin kalian juga menggunakan kata sandi root yang sama di seluruh server? Itu selalu menyenangkan untuk ditemukan.
Saya akan mendukung @gowenfawr dan mengatakan bahwa membiakkan simpanse yang lebih baik adalah tujuan tersendiri di sini. (sekarang saya akan ekstrapolasi tentang budaya perusahaan Anda)
Di perusahaan pengembangan perangkat lunak saya, kami telah melihat tren peningkatan pelanggan yang meminta bukti praktik keamanan kami tidak hanya di lingkungan produksi, tetapi juga dalam proses pengembangan kami, dan TI perusahaan secara umum. Ini adalah permintaan yang masuk akal karena:
- Keamanan yang ceroboh dalam prod membahayakan data mereka. Lihat:pelanggaran Equifax tahun 2017.
- Keamanan yang ceroboh dalam pengembangan menyebabkan developer menulis produk yang ceroboh. Namun sungguh, sikap bahwa keamanan itu penting perlu datang dari manajemen untuk memberikan pelatihan keamanan kepada pengembang, dan waktu untuk melakukan tinjauan kode yang tepat, dan kemauan untuk memprioritaskan perbaikan kelemahan keamanan daripada fitur pelanggan. Mengizinkan praktik ceroboh seperti itu adalah bukti bahwa budaya perusahaan tidak mendukung keamanan.
- Praktek keamanan yang ceroboh di TI menyebabkan virus di jaringan yang dapat menyebabkan virus di kode. Lihat upaya pintu belakang Linux yang terkenal pada tahun 2003 di mana seseorang menerobos masuk secara elektronik ke repositori kode cadangan dan menyisipkan perubahan kode berbahaya, dengan harapan kode tersebut pada akhirnya akan digabungkan ke dalam repo utama.
Jadi, apakah ini keputusan yang dengan bangga akan Anda sampaikan kepada pelanggan?
Intinya: Prinsip hak istimewa terkecil adalah salah satu prinsip pengkodean aman yang paling mendasar. Ini adalah pola pikir yang harus menjadi bagian dari proses pengembangan perangkat lunak apa pun. Ini tentang mengajukan pertanyaan "Apakah perlu melemahkan keamanan kita seperti ini?", daripada "Adakah yang bisa membuktikan bahwa ini berbahaya?". Peretas selalu lebih pintar dari Anda.
Tentu saja jika chmod 777
diperlukan untuk beberapa alasan, maka itu menjadi hak istimewa yang paling sedikit, dan mungkin ada diskusi keamanan yang sah di sini, tetapi sepertinya tidak ada; ini hanya kemalasan. Itu tidak memberi saya keyakinan bahwa prinsip hak istimewa paling rendah diikuti dalam produk itu sendiri, misalnya bagaimana data disimpan, berapa banyak data tambahan yang dikembalikan dari panggilan API, informasi apa yang sedang dicatat, atau di mana pun prinsip hak istimewa paling rendah adalah relevan dengan produk Anda.
Kecuali jika program memerlukan izin menulis, saya bingung mengapa rekan kerja Anda menggunakan chmod -R 777 /opt/path/to/shared/folder
saat chmod -R 775 /opt/path/to/shared/folder
akan tetap mengizinkan membaca dan mengeksekusi izin, dan mencapai akses yang diinginkan.
Mengingat anggota tim Anda adalah satu-satunya yang memiliki akses ke server, dan Anda memercayai mereka. Memiliki akses tulis global belum tentu merupakan hal yang buruk. Tetapi tujuannya juga untuk mencegah program jahat atau nakal memodifikasi atau menghapus file. Ransomware bisa menjadi contoh, yang dijalankan oleh Alice, dengan izin pengguna.
- /home/alice/ --- (drwxrwxrwx alice alice)
- /home/bob/ --- (drwxrwx--- bob bob)
Untuk skenario di atas, ransomware yang dieksekusi oleh Alice akan mengenkripsi dan menimpa semua file yang harus dia akses untuk menulis. Mengingat Alice tidak milik grup bob
dan /home/bob/
tidak memiliki rwx
global Alice tidak memiliki akses. Namun, jika Bob menjalankan ransomware dengan izin pengguna, Bob memiliki rwx
izin karena /home/alice/
menggunakan global rwx
izin. Jadi, sekarang direktori home Alice dan Bob akan dienkripsi oleh ransomware.
Menambahkan pengguna ke grup cukup sederhana, Linux:Tambahkan Pengguna ke Grup (Primer/Sekunder/Baru/Yang Ada). Ini akan menambahkan nama pengguna:alice
, ke bob
kelompok. Chown -R bob:bob
di mana user:group
memiliki direktori, secara rekursif. chmod -R 750
secara rekursif akan memberikan rwxr-x---
izin, sehingga Alice dapat membaca dan mengeksekusi dalam /home/bob/
direktori, tetapi tidak dapat menulis.
sudo adduser alice bob
sudo chown -R bob:bob /home/bob/
sudo chmod -R 750 /home/bob/
Prinsip akses paling sedikit terutama untuk melindungi dari pengguna jahat. Namun, program jahat juga menjadi perhatian yang sangat serius. Inilah mengapa global membaca, menulis, dan mengeksekusi, bersama ------rwx
adalah prinsip keamanan yang sangat buruk. Ide ini dilakukan dengan menambahkan alice
ke bob
kelompok. Sekarang pengguna alice
memiliki r-x
izin untuk /home/bob/
sementara pengguna lain di luar bob
grup tidak bisa, kecuali root. Sama halnya, jika Bob ingin berbagi file dengan Alice, tetapi tidak ingin Alice memiliki akses grup, grup baru, bernama AB
di mana Alice dan Bob berada dalam grup dapat dibuat. Sekarang direktori /opt/AB_share/ (rwxrwx---)
dapat dibuat, dan perintah di atas diterapkan. Hanya yang ada di dalam AB
grup akan memiliki akses.