praktik terbaik untuk izin akses ke pengguna untuk kucing jantan apache

22

Saya memiliki kotak Linux yang dibagikan oleh berbagai pengembang. Mereka ingin menyebarkan file perang mereka di apache tomcat yang di lokasi bersama (/ opt / tomcat).

Karena mereka tidak memiliki akses sudo, saya harus mengubah izin folder untuk direktori kucing jantan.

struktur direktori di bawah /opt/tomcatadalah -

bin/

conf/

lib/

logs/

temp/

webapps/

work/

Apa praktik terbaik dalam situasi di atas - Izin akses yang paling cocok untuk pengguna? Untuk saat ini, saya telah mengubah izin menjadi 777 ke webapps dan log.

Terima kasih

Kunal
sumber

Jawaban:

32

Saya melakukannya dengan cara ini:

Kami menempatkan pengguna kucing jantan sebagai pemilik folder kucing jantan:

# chown -R tomcat:tomcat /opt/tomcat

Pengguna tidak dapat mengubah konfigurasi kucing jantan:

# chmod -R g+r /opt/tomcat/conf

Pengguna dapat memodifikasi folder lain:

# chmod -R g+w /opt/tomcat/logs
# chmod -R g+w /opt/tomcat/temp
# chmod -R g+w /opt/tomcat/webapps
# chmod -R g+w /opt/tomcat/work

Aktifkan bit-lengket untuk file baru agar izinnya tetap:

# chmod -R g+s /opt/tomcat/conf
# chmod -R g+s /opt/tomcat/logs
# chmod -R g+s /opt/tomcat/temp
# chmod -R g+s /opt/tomcat/webapps
# chmod -R g+s /opt/tomcat/work

Akhirnya, kami menambahkan grup kucing jantan yang kami inginkan bagi pengguna yang dapat menggunakan kucing jantan:

# usermod -a -G tomcat MIUSER
intropedro
sumber
4
Jika dilakukan tanpa tag -a, Anda akan menambahkan pengguna ke grup kucing jantan, tetapi menghapus MIUSER dari semua grup lain miliknya (ini berarti tidak ada lagi grup sudo). Saya hanya harus bertindak cepat untuk memulihkan grup saya di akun utama di salah satu server saya, mengambil mereka dari sesi lama di mana saya masih memegang kelompok-kelompok itu. Kata peringatan untuk pengguna lain yang membaca jawaban ini.
Axoren
Saya telah menambahkan opsi ke respons. Terima kasih
intropedro
Bagaimana cara memulai Tomcat sebagai pengguna kucing jantan? Milik saya dimulai sebagai deamon dan mulai sekarang berjalan sebagai root.
Stephane
1
Halo Stephane, Di Ubuntu, Tomcat mengeksekusi dengan pengguna kucing jantan dan itu ada di file / etc / default / tomcat8 dengan variabel TOMCAT8_USER dan TOMCAT8_GROUP. Di linux lain saya tidak tahu.
intropedro
Tidak +smenetapkan ID pengguna / grup? Halaman manual mengatakan +tsedikit lengket.
bmaupin
13

The Non-Tomcat settingsbagian howto keamanan Tomcat menyediakan informasi yang berguna tentang topik ini. Lihat disini:

Tomcat tidak boleh dijalankan di bawah pengguna root. Buat pengguna khusus untuk proses Tomcat dan berikan izin minimum yang diperlukan untuk sistem operasi itu. Sebagai contoh, seharusnya tidak mungkin untuk login jarak jauh menggunakan pengguna Tomcat.

Izin file juga harus dibatasi. Mengambil contoh Tomcat di ASF sebagai contoh (di mana penyebaran otomatis dinonaktifkan dan aplikasi web digunakan sebagai direktori yang meledak), konfigurasi standar adalah memiliki semua file Tomcat yang dimiliki oleh root dengan grup Tomcat dan sementara pemilik memiliki hak baca / tulis hak istimewa , grup hanya membaca dan dunia tidak memiliki izin. Pengecualiannya adalah log, temp, dan direktori kerja yang dimiliki oleh pengguna Tomcat daripada root . Ini berarti bahwa meskipun penyerang merusak proses Tomcat, mereka tidak dapat mengubah konfigurasi Tomcat, menyebarkan aplikasi web baru atau memodifikasi aplikasi web yang ada. Proses Tomcat berjalan dengan umask 007 untuk mempertahankan izin ini.

Mendongkrak
sumber
Saya bertanya-tanya apakah pendekatan yang dijelaskan dapat diadopsi tidak hanya di Tomcat tetapi dengan layanan lain juga (database, proksi terbalik, dll). Apakah menurut Anda itu layak / bijaksana?
Paolo
1

Anda harus mengikuti prinsip hak istimewa yang paling rendah . Server (mungkin www-data, tetapi Anda harus memeriksa) harus dapat membaca sebagian besar file (katakanlah semua) dan menulis dalam log saja. Pengembang web diizinkan menulis di tempat yang mereka butuhkan. Atur bit sticky pada direktori sehingga hanya pemilik file yang dapat menghapusnya.

Dalam praktiknya Anda perlu membuat grup (misalnya webdev) dan menambahkan semua pengembang dan server ke dalamnya ( usermod -aG webdev <user>atau usermod -A webdev <user>tergantung pada rasa Linux Anda). chownsemua file dan direktori ke pengguna server web, chmod semua direktori menjadi 500 dan semua file menjadi 400 (kecuali di binmana executable perlu 500 juga).

Berikan izin menulis /opt/tomcatke grup (yang akan menjadi 570) dan atur bit sticky sehingga mereka hanya dapat menghapus file yang mereka miliki (chmod 1570). Berikan server menulis izin untuk log, dan membaca izin untuk pengembang (0740 untuk folder, 0640 untuk file, bit lengket mungkin tidak diperlukan, dan tidak pernah memberikannya ke file, hanya folder, karena memiliki arti berbeda (dijalankan dengan izin pemilik ketika file dapat dieksekusi))

Maka Anda harus memberikan izin menulis (1570) ke webdevbeberapa direktori. Anda akan memerlukan beberapa percobaan dan kesalahan di sini, dan itu bisa jadi tergantung pada aplikasi. Folder-folder itu harus 1570, sementara yang lain mungkin 0500).

Pengembang perlu memberikan akses baca pada file mereka ke grup sehingga server dapat membacanya (itu 640), dan juga mengeksekusi pada direktori (itu 750).

Calimo
sumber
1

Saya pikir jawaban yang diterima @ intropedro adalah jawaban yang bagus. Perlu ditunjukkan bahwa menggunakan penginstal paket dapat menghemat banyak sakit kepala - setidaknya untuk Tomcat 7 di Ubuntu apt-get install tomcat7menghasilkan lebih banyak "standar" set direktori instalasi adalah:

  • /etc/tomcat7 untuk file konfigurasi,
  • /var/lib/tomcat7 untuk pustaka inti, dan
  • /usr/share/tomcat7 untuk sumber daya bersama.

Semua izin diatur dengan benar dengan prinsip privilege paling rendah, sehingga menambahkan pengguna ke grup tomcat7sudah cukup untuk memungkinkan penyebaran. Lebih lanjut, tomcat server diatur sebagai layanan yang dapat dimulai dan dihentikan seperti yang lain (misalnya sudo service tomcat startatau sebagai alternatif /etc/init.d/tomcat start). Tomcat dimulai saat reboot secara otomatis, dan ada perintah "restart". Saya yakin ada paket yum yang setara untuk pengguna RHEL / CentOS. (Dan ya, ada penginstal homebrew untuk instalasi OSX lokal).

Jika Anda mengalami masalah, ada utilitas bagus yang /usr/share/bindisebut configtest.shlaporan jika ada izin atau kesalahan lainnya. Catatan, ada bug terbuka yang menyarankan menambahkan beberapa tautan simbolik .

Kami masih menjalankan Ubuntu trusty(14.04); untuk mereka yang menjalankan versi yang lebih baru, saya percaya ada repo apt-get Tomcat 8.

Tom Harrison Jr
sumber