SELinux httpd menulis akses ke direktori

9

Saya baru mengenal SELinux. berasal dari debian. Saya ingin memberikan httpdakses ke direktori.

Browser SELinux Alert menyarankan:

# grep httpd /var/log/audit/audit.log | audit2allow -M mypol
# semodule -i mypol.pp 

Saya tidak mengerti bagaimana cara kerja perintah ini. Saya tidak menentukan jalur direktori di mana pun. bagaimana cara mengetahui direktori mana yang memungkinkan httpd?

Sebelumnya saya telah menggunakan grep untuk mengekstrak teks dari output atau file. Tapi di sini grep sedang digunakan pada suatu proses. Itu tidak saya dapatkan.

Juga apa solusi yang sebenarnya. Jika saya ingin memberikan akses tulis httpd ke direktori?

Neel Basu
sumber
4
Dan untuk menjawab pertanyaan Anda yang lain, audit2allow membaca file log SELinux dan menulis kebijakan yang mengizinkan apa pun yang telah diblokir; nama direktori akan ada dalam pesan log. Dengan mengambil httpd Anda membatasi sedikit, tetapi metode ini masih lebih luas dari yang seharusnya.
miken32
Jawaban yang relevan: unix.stackexchange.com/questions/511929/…
Salah-1

Jawaban:

17

Berikut cara mengubah konteks direktori secara permanen:

# install semanage if you don't already have it:
yum install policycoreutils-python

# give the directory a new default context. The part at the end is a regex.
semanage fcontext -a -t httpd_sys_rw_content_t "/path/to/directory(/.*)?"

# apply the default context to the directory
restorecon -R /path/to/directory

Berikut beberapa dokumentasi lain tentang berbagai konteks untuk httpd:

RHEL 7: https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/SELinux_Users_and_Administrators_Guide/sect-Managing_Confined_Services-The_Apache_HTTP_Server-Typ.html.html

RHEL 6: https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Managing_Confined_Services/sect-Managing_Confined_Services-The_Apache_HTTP_Server-Types.html

Greg
sumber
Sempurna !! Bekerja untuk saya di Fedora 26, policycoreutils-python sudah diinstal secara default.
Sir_Faenor
5

SELinux memanfaatkan atribut diperluas yang dapat ditambahkan ke struktur direktori pada disk. Pikirkan jika ini sebagai data meta. Daftar Kontrol Akses (ACL) menjadi yang lain.

Atribut diperluas yang Anda perlu tambahkan ke direktori disebut konteks dan SELinux bertindak seperti polisi lalu lintas, memastikan bahwa executable yang memiliki konteks tertentu diizinkan untuk mengakses sistem file berdasarkan konteks ini. Anda dapat melihat apa yang tersedia di direktori menggunakan -Zsakelar ke ls.

$ sudo ls -Z /var/www
drwxr-xr-x. root root system_u:object_r:httpd_sys_script_exec_t:s0 cgi-bin
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 html

Di sini Anda dapat melihat bahwa direktori ini memiliki konteks httpd_sys_script_exec_t:s0pada cgi-bindirektori tersebut. dan htmldir. telah httpd_sys_content_t:s0.

Anda dapat menambahkan ini menggunakan chconperintah:

$ sudo chcon -t httpd_sys_content_t public_html

Perintah yang Anda tanyakan hanya akan memuat modul mypoll.ppsaya tidak percaya itu akan memberikan izin apa pun, ada kemungkinan lebih banyak pesan di audit.logbahwa Anda hilang dengan perintah Anda, yang akan memberi tahu Anda secara lebih rinci apa yang Anda butuhkan lakukan untuk memungkinkan akses.

Saya mendorong Anda untuk meluangkan waktu dan membiasakan diri dengan SELinux. Ini membingungkan pada awalnya tetapi umumnya mudah, setelah menghabiskan sedikit waktu dengannya. Lihat sumber daya di bawah ini untuk membantu Anda memulai.

Referensi

slm
sumber
Terima kasih. Saya akan pergi melalui mereka. Tetapi bisakah Anda memberi tahu saya sekarang apa yang harus saya lakukan untuk memberikan akses tulis ke direktori ini?
Neel Basu
Jika konten yang ingin dibaca Apache Anda kemungkinan perlu menambahkan konteks ini ke dir:chcon -R -t httpd_sys_content_t <dir>
slm