Langkah apa yang harus saya ambil untuk mengamankan Tomcat 6.x?
10
Saya sedang dalam proses menyiapkan penyebaran Tomcat baru, dan ingin itu seaman mungkin.
Saya telah membuat pengguna 'jakarta' dan menjalankan jsvc menjalankan Tomcat sebagai daemon. Adakah tip tentang izin direktori dan semacamnya untuk membatasi akses ke file Tomcat?
Saya tahu saya harus menghapus webapps default - dokumen, contoh, dll ... apakah ada praktik terbaik yang harus saya gunakan di sini? Bagaimana dengan semua file XML konfigurasi? Ada tips di sana?
Apakah layak mengaktifkan manajer Keamanan agar aplikasi web berjalan di kotak pasir? Adakah yang punya pengalaman mengatur ini?
Saya telah melihat contoh orang yang menjalankan dua instance Tomcat di belakang Apache. Tampaknya ini dapat dilakukan dengan menggunakan mod_jk atau dengan mod_proxy ... ada pro / kontra dari keduanya? Apakah ini sepadan dengan masalahnya?
Dalam hal itu penting, OS adalah Debian Lenny. Saya tidak menggunakan apt-get karena lenny hanya menawarkan tomcat 5.5 dan kami membutuhkan 6.x.
Anda dapat menginstal Tomcat 6 untuk dijalankan jsvcsebagai user tomcat (bukan sebagai root ). Inilah yang saya lakukan terakhir kali saya mengaturnya:
Saya memasang aplikasi Tomcat di bawah /usr/java/tomcat( CATALINA_HOME) dan sebuah instance di bawah /var/lib/tomcat( CATALINA_BASE):
cd /usr/java
sudo tar xzvf ~/downloads/apache-tomcat-6.0.18.tar.gz
sudo ln -s apache-tomcat-6.0.18 tomcat
sudo /usr/sbin/useradd -d /var/lib/tomcat -c "Apache Tomcat" -m -s /sbin/nologin tomcat
cd /var/lib/tomcat
sudo mkdir logs work temp
sudo chown tomcat:tomcat logs temp work
(cd /usr/java/tomcat && sudo tar cvf - conf webapps) | sudo tar xvf -
sudo chmod -R g+rw webapps conf
sudo chown -R tomcat:tomcat webapps conf
cd webapps/
sudo rm -rf docs examples manager host-manager
cd ../conf
sudo chmod g+r *
Lalu saya membuat jsvcbungkusnya:
cd
tar xzvf downloads/apache-tomcat-6.0.18.tar.gz
tar xzvf apache-tomcat-6.0.18/bin/jsvc.tar.gz
cd jsvc-src
chmod +x configure
./configure --with-java=$JAVA_HOME
make
./jsvc --help
sudo cp jsvc /usr/local/sbin/
Akhirnya, saya memperketat izin pada direktori instance:
Ketika Anda menjalankan Tomcat sekarang, Anda harus memulainya menggunakan jsvc, jadi tambahkan skrip ini sebagai /etc/init.d/tomcatdan symlink dengan tepat:
Saya biasanya menambahkan chmod dan chown stuff ke skrip startup (init), karena dijalankan sebagai root. Saya telah digigit beberapa kali oleh orang-orang yang "membantu" memulai tomcat sebagai root, yang mengarah ke file dan direktori menjadi milik root dan tidak dapat ditulis untuk pengguna tomcat setelah direstart dengan benar. Apakah Anda melewatkan "sudo chown tomcat: tomcat temp work" di daftar Anda? Atau apakah saya melewatkan sesuatu?
Olaf
Karena mereka dibuat oleh Tomcat, mereka akan dibuat dengan tomcat: tomcat pemilik / grup.
CoverosGene
Ada alasan untuk tidak menggunakan paket jsvc pra-paket? Secara pribadi saya hanya menginstal paket bahkan jika saya mengunduh Tomcat dari server Apache.
tronda
3
Departemen Pertahanan AS memiliki panduan bagus yang telah menggabungkan panduan keamanan Tomcat ke dalam Panduan Keamanan Server Web (SRG) secara keseluruhan. Anda dapat menemukan lebih banyak panduan keamanan di sini:
Terima kasih, meskipun mereka tidak dalam format yang sangat ramah
Peter Sankauskas
Tautan rusak. Mereka juga tampaknya tidak lagi menyediakan daftar periksa khusus Tomcat.
Bob
diperbarui untuk memperbaiki tautan. Masih ada beberapa hal spesifik Tomcat di panduan Layanan Aplikasi.
Jim Hunziker
Itu halaman yang bagus, namun, ini dari tahun 2006 sehingga beberapa rekomendasi mungkin tidak terkini untuk kucing jantan terbaru. Inilah paragraf yang relevan tentang izin direktori: B.2 Pengaturan dan Startup Tomcat dapat dikonfigurasi untuk dijalankan sebagai aplikasi pengguna tunggal atau sebagai layanan atau proses sistem bersama. Layanan atau proses Tomcat tidak memerlukan administrator platform host atau hak root untuk beroperasi. Untuk membatasi risiko eksploitasi server Tomcat, akun host khusus yang didedikasikan untuk menjalankan layanan atau proses Tomcat akan dibuat dan diberikan hak sistem host minimal.
Amos
2
Proyek Keamanan Aplikasi Web Terbuka ( OWASP ) menawarkan halaman wiki tentang pengamanan Tomcat , yang mungkin berguna bagi Anda. Pada saat penulisan, sepertinya lebih fokus pada Tomcat 5.x, tetapi mudah-mudahan akan diperbarui seiring berjalannya waktu.
Saya serius mempertimbangkan backporting paket tomcat6 dari pengujian. Anda dapat berlangganan paket untuk mendapatkan pemberitahuan tentang versi baru yang diunggah ke arsip. (Saya sedikit bias karena saya telah mengerjakan kemasan debian).
Saya belum mencoba menjalankan webapps di bawah manajer keamanan, karena tidak ada aplikasi yang disertai dengan kebijakan dan terus terang itu memakan waktu untuk membuatnya sendiri. Jika Anda paranoid, Anda tentu bisa melakukannya. Sebagian besar melibatkan menjalankan kucing jantan, menunggu sesuatu untuk menggerutu dan kemudian menambahkan pengecualian pada kebijakan dan memulai kembali kucing jantan. Bilas, ulangi, dll.
Jelas, jangan jalankan kucing jantan sebagai root. Pengguna tomcat seharusnya tidak dapat menulis apa pun di luar direktori log atau direktori kerja. Anda harus memastikan bahwa direktori webapps Anda hanya berisi webapps yang ingin Anda jalankan.
Saya selalu menjalankan tomcat di belakang apache. Ini sebagian karena saya ingin berpikir bahwa lebih banyak orang menggunakan apache, jadi bug akan ditemukan lebih cepat. Ini cukup banyak angan-angan dan Anda tidak harus mengandalkan ini menjadi peningkatan keamanan. Apa yang dibawa Apache kepada Anda adalah konfigurasi. Ada banyak modul yang tidak dimiliki tomcat, atau tidak bisa dilakukan dengan efisien. mod_cache, mod_ssl, mod_security semua muncul dalam pikiran. Anda memiliki pilihan mod_jk, mod_proxy (dan mod_proxy_http atau mod_proxy_ajp). mod_jk (dan mod_proxy_ajp) menggunakan protokol biner AJP daripada protokol http yang kurang efisien. Saya akan merekomendasikan menggunakan mod_jk.
Jangan lupa untuk mengubah kata sandi default peran admin di tomcat-users.xml Ini sangat penting, jika tidak, orang jahat dapat menyebarkan aplikasi tanpa izin terbatas seperti backdoor ke server tomcat dan mencoba melakukan banyak hal buruk.
Departemen Pertahanan AS memiliki panduan bagus yang telah menggabungkan panduan keamanan Tomcat ke dalam Panduan Keamanan Server Web (SRG) secara keseluruhan. Anda dapat menemukan lebih banyak panduan keamanan di sini:
http://iase.disa.mil/stigs/srgs/Pages/index.aspx
sumber
Proyek Keamanan Aplikasi Web Terbuka ( OWASP ) menawarkan halaman wiki tentang pengamanan Tomcat , yang mungkin berguna bagi Anda. Pada saat penulisan, sepertinya lebih fokus pada Tomcat 5.x, tetapi mudah-mudahan akan diperbarui seiring berjalannya waktu.
sumber
Saya serius mempertimbangkan backporting paket tomcat6 dari pengujian. Anda dapat berlangganan paket untuk mendapatkan pemberitahuan tentang versi baru yang diunggah ke arsip. (Saya sedikit bias karena saya telah mengerjakan kemasan debian).
Saya belum mencoba menjalankan webapps di bawah manajer keamanan, karena tidak ada aplikasi yang disertai dengan kebijakan dan terus terang itu memakan waktu untuk membuatnya sendiri. Jika Anda paranoid, Anda tentu bisa melakukannya. Sebagian besar melibatkan menjalankan kucing jantan, menunggu sesuatu untuk menggerutu dan kemudian menambahkan pengecualian pada kebijakan dan memulai kembali kucing jantan. Bilas, ulangi, dll.
Jelas, jangan jalankan kucing jantan sebagai root. Pengguna tomcat seharusnya tidak dapat menulis apa pun di luar direktori log atau direktori kerja. Anda harus memastikan bahwa direktori webapps Anda hanya berisi webapps yang ingin Anda jalankan.
Saya selalu menjalankan tomcat di belakang apache. Ini sebagian karena saya ingin berpikir bahwa lebih banyak orang menggunakan apache, jadi bug akan ditemukan lebih cepat. Ini cukup banyak angan-angan dan Anda tidak harus mengandalkan ini menjadi peningkatan keamanan. Apa yang dibawa Apache kepada Anda adalah konfigurasi. Ada banyak modul yang tidak dimiliki tomcat, atau tidak bisa dilakukan dengan efisien. mod_cache, mod_ssl, mod_security semua muncul dalam pikiran. Anda memiliki pilihan mod_jk, mod_proxy (dan mod_proxy_http atau mod_proxy_ajp). mod_jk (dan mod_proxy_ajp) menggunakan protokol biner AJP daripada protokol http yang kurang efisien. Saya akan merekomendasikan menggunakan mod_jk.
sumber
Jangan lupa untuk mengubah kata sandi default peran admin di tomcat-users.xml Ini sangat penting, jika tidak, orang jahat dapat menyebarkan aplikasi tanpa izin terbatas seperti backdoor ke server tomcat dan mencoba melakukan banyak hal buruk.
sumber