Sistem saya menjalankan CentOS 6.4 dengan apache2.2.15. SElinux menegakkan dan saya mencoba untuk terhubung ke instance lokal redis melalui aplikasi python / wsgi saya. Saya mendapatkan Galat 13, Izin ditolak. Saya bisa memperbaikinya melalui perintah:
setsebool -P httpd_can_network_connect
Namun, saya tidak benar-benar ingin httpd dapat terhubung ke semua port tcp. Bagaimana saya bisa menentukan port / jaringan mana yang diizinkan untuk terhubung dengan httpd? Jika saya dapat membuat modul untuk memungkinkan httpd terhubung ke port 6379 (redis) atau tcp pada 127.0.0.1, itu akan lebih baik. Tidak yakin mengapa paranoia saya sangat kuat dalam hal ini, tapi hei ...
Adakah yang tahu
apache-2.2
redhat
selinux
redis
savagecitizen
sumber
sumber
Jawaban:
Secara default, kebijakan SELinux hanya akan memungkinkan akses layanan ke port yang dikenal terkait dengan layanan tersebut:
- tambahkan port Redis (6379) ke kebijakan SELinux
Anda juga dapat menginstal
setroubleshoot-server
RPM dan menjalankan:sealert -a /var/log/audit/audit.log
- itu akan memberi Anda laporan yang bagus dengan saran yang berguna (termasuk perintah di atas).Script PHP untuk menguji koneksi:
sumber
http_port_t
gagal karena port 25 sudah digunakan (untuk jenis SELinux lain):ValueError: Port tcp/25 already defined
. Cara yang benar untuk mengizinkan httpd terhubung ke port 25 adalah dengan mengatur boolean kebijakan SELinux yang sesuai pada:setsebool -P httpd_can_sendmail on
(lihatgetseebool -a
). (lanjutan di bagian 2)sealert -b; sealert -a /var/log/audit/audit.log; grep perl /var/log/audit/audit.log | audit2allow -M mypol; semodule -v -i mypol.pp
. Lalu berhasil!getsebool -a
perintah (satu lebih sedikite
).semanage port -m -t http_port_t -p tcp 25
lihatsemanage port --help
setsebool -P httpd_can_connect_zabbix true
Anda mungkin perlu menggunakan
Jika semanage tidak ada, tambahkan paket policycoreutils-python
sumber
semanage
mungkinpolicycoreutils-python-utils
sekarang (setidaknya di Fedora 23)semanage
dalampolicycoreutils-python
.Anda dapat menempatkan selinux sementara dalam mode permisif dan membiarkan httpd terhubung ke redis, kemudian menghasilkan dan membangun modul kebijakan khusus menggunakan audit2allow
sumber