Instalasi aman Apache PHP: Menggunakan pengguna yang tepat: grup

0

saya ingin "dengan sempurna" melindungi instalasi PHP apache saya di server linux. Dalam sejarah, saya punya masalah dengan script-virues / exploids, jadi itu perlu solusi yang "aman".

Solusi saya saat ini:

  • Setiap webspace memiliki pengguna sendiri, dengan grup pengguna sendiri (misalnya: user1: user1).
  • Apache berjalan di bawah http: http
  • PHP berjalan melalui cgi cepat dan SuexecUserGroup user1: user1
  • Direktori webspace dimiliki oleh user1: http, untuk pengaturan awal chmods: setel semua ke 0 dan daripada chmod u + rwX, g + rX. Itu artinya, Pemilik (pengguna1) memiliki akses penuh, Grup memiliki akses baca, yang lain tidak memiliki akses.

Ini berfungsi dengan baik dan aman ... tetapi tidak akan berfungsi ketika:

  • Membuat file melalui PHP
  • mengunggah file melalui FTP.

Daripada file tersebut akan dibuat sebagai user1: user1. Ini (biasanya) corret. Tetapi daripada memiliki apache (http: http) tidak ada akses lagi.

Satu workarround "bisa" menjadi: Simpan semua file sebagai user1: user1, tetapi jalankan apache sebagai root. Tapi, ini tidak terlalu aman ...

Jadi, apa yang bisa menjadi solusi yang baik? Tentu saja, saya rad puluhan blog, tetapi setiap solusi akan memiliki masalah lain.

Arakis
sumber
Jika Anda tahu di mana unggahan berada, Anda bisa menjalankan tugas cron atau skrip (kemungkinan terhubung ke inotifikasi), yang dapat Anda gunakan untuk mengubah izin unggahan.
ernie

Jawaban:

0

Solusi yang baik mungkin dengan menambahkan pengguna Apache (http) ke setiap grup pengguna:

adduser http user1
adduser http user2
adduser http user3
etc...

Anda akan memerlukan sedikit skrip untuk melakukan ini, tetapi itu memberi Apache akses yang dibutuhkan sebagian besar waktu.

Alternatif / solusi yang lebih baik

Lihat apakah server FTP memiliki opsi untuk grup default untuk file yang dibuat dan setup PHP dengan SuexecUserGroup user1:http

Biapy
sumber
Menambahkan pengguna "http" ke semua grup ruang web, tampaknya berfungsi. Saya akan mengujinya sekarang lebih hati-hati, tetapi saya pikir ini solusinya. Saya pikir, apache tidak akan mengubah pengiriman anggota grup "yang masuk" melalui "newgrp user1" secara otomatis. "SuexecUserGroup user1: http" -Solution adalah solusi yang buruk. Saya sudah mencobanya sebelumnya, dan masalahnya adalah, semua skrip php memiliki akses ke ruang web selain. Atau maksud Anda, user1 masih harus memiliki grup user1, tetapi apache harus mencoba menjalankannya di bawah user1: http, apakah ini mungkin? (menjalankan pengguna dalam grup, yang bukan miliknya).
Arakis
Saya percaya adalah mungkin untuk menjalankan pengguna di grup yang bukan tempatnya, tetapi saya belum mencobanya. Saya tidak cukup terbiasa dengan SuexecUserGroup karena memberi Anda jawaban yang pasti.
Biapy