मैं SELinux के माध्यम से MySQL कनेक्शन की अनुमति कैसे दूं?


21

मैं कथित तौर पर बढ़ी हुई सुरक्षा के लिए एक बार सर्वर पर चल रहे SELinux को छोड़ना चाहूंगा।
मैं आमतौर पर कुछ भी काम करने के लिए SELinux को निष्क्रिय कर देता हूं।
मैं MySQL कनेक्शन की अनुमति देने के लिए SELinux को कैसे बताऊं?
प्रलेखन में सबसे अधिक मैंने पाया है यह लाइन mysql.com से है:

यदि आप लिनक्स और सुरक्षा-एन्हांस्ड लिनक्स (SELinux) के तहत चल रहे हैं, तो सुनिश्चित करें कि आपने Mysqld प्रक्रिया के लिए SELinux सुरक्षा अक्षम कर दी है।

वाह ... यह वास्तव में उपयोगी है।


1
कृपया हमें आपकी सहायता करने के लिए निम्नलिखित सभी जानकारी प्रदान करें। 1. लिनक्स डिस्ट्रो और वर्जन, 2. MySQL वर्जन और इंस्टॉलेशन सोर्स, 3. अस्वीकृत कनेक्शन से AVC लॉग एंट्रीज, 4. रिवाइजेंट MySQL लॉग्स, यदि कोई हो तो 5. getsebool -a | grep mysql6. आउटपुट के चरण जो आपने इसे पुन: उत्पन्न करने के लिए उठाए हैं
hobodave

जवाबों:


40

SELinux की जाँच करने के लिए

sestatus

यह देखने के लिए कि httpd प्रक्रियाओं पर क्या झंडे लगाए गए हैं

getsebool -a | grep httpd

Apache को SELinux के माध्यम से दूरस्थ डेटाबेस से कनेक्ट करने की अनुमति देने के लिए

setsebool httpd_can_network_connect_db 1

उपयोग -2 विकल्प परिवर्तन को स्थायी बनाता है। इस विकल्प के बिना, बूलियन को रिबूट पर 0 पर रीसेट किया जाएगा।

setsebool -P httpd_can_network_connect_db 1

3
127.0.0.1 लूपबैक के माध्यम से कनेक्ट करते समय आवश्यक प्रतीत होता है?
डेविन सेराटस

@ डेडविन, निश्चित रूप से।
e18r

2
यदि आप उपयोगकर्ताओं को स्थानीय mysql सर्वर से कनेक्ट करने की अनुमति देना चाहते हैं, तो आपको selinuxuser_mysql_connect_enabled बूलियन को भी चालू करना होगा।
एंटोन माकोवेटस्की

setsebool -P httpd_can_network_connect 1जरूरत भी हो सकती है। यह मेरे लॉग में सुझाव दिया गया था ausearch -m avc -ts today | audit2whyजैसा कि vnix27 द्वारा टिप्पणी में सुझाया गया था।
साइट

2

क्या आपको कोई त्रुटि मिलती है? आप किस स्वाद के लिनेक्स का उपयोग कर रहे हैं? यदि आपको कोई त्रुटि मिल रही है, तो सुरक्षा संदर्भ एक अच्छी जगह है। ls -Z संदर्भ देगा ... लेकिन आपका प्रश्न बहुत अस्पष्ट है।


मैं एक विंडोज़ बॉक्स से कनेक्ट कर रहा हूँ। कोई त्रुटि नहीं है ... कनेक्शन अभी अस्वीकार कर दिया गया है और पृष्ठ समय समाप्त हो गया है। मुझे पता है कि अगर मैं सेलिनक्स को बंद कर दूं तो सब ठीक हो जाएगा।

चूंकि कनेक्शन एक विंडोज़ बॉक्स से आ रहा है, इसलिए ls -Z मुझे उन फाइलों के बारे में जानकारी देता है जो मैं जिस भी निर्देशिका में हूं, लिनक्स बॉक्स में।

ऊपर दिए गए मेरे प्रश्न में मैंने एक mysql संदर्भ का हवाला दिया ... जिसमें mysqld प्रक्रिया के लिए selinux सुरक्षा को अक्षम करने के लिए कहा गया था ... लेकिन यह नहीं कहता कि यह कैसे करना है :( और न ही मैं यह पता लगा सकता हूं कि कैसे है।

लिनक्स बॉक्स पर लॉग में कुछ भी?

संदेश या सुरक्षित लॉग में कुछ भी नहीं ... क्या कोई विशेष लॉग आपके मन में था?

1

स्पष्ट रूप से selinux को कॉन्फ़िगर करना तुच्छ नहीं है। आप यहाँ शुरू करने की इच्छा कर सकते हैं

setenforce 0

सेलिनक्स को अनुमेय मोड में डालता है, जहां यह कुछ भी अनुमति देता है, लेकिन जो इसे अनुमति देता है वह लॉग करता है। एक रिबूट या

setenforce 1

नीति जो भी अनुमति नहीं देती है उसे अवरुद्ध करने के लिए रिटर्न।

फेडोरा में mySQL के लिए इन सेलिनक्स पॉलिसी डॉक्स को देखें


1

क्या आप सुनिश्चित हैं कि यह सेलिनक्स है? बाहर से सामान्य कनेक्शन को सेलिनक्स द्वारा अनुमति दी जानी चाहिए। तो यह फ़ायरवॉल भी हो सकता है। यदि आपके पास mysqld से जुड़ने की कोशिश करने वाली स्थानीय सेवाएं हैं, तो यह कुछ अलग है: http://docs.fedoraproject.org/en-US/Fedora/13/html/Managing_Confined_Services/sect/Managing_Confined_Services-MySQL-Booleans.html


1

ausearchआदेश त्रुटि लॉग को खोजने में मदद कर सकते हैं।


1
ausearch -m avc -ts आज | aud2why, कमांड सॉल्यूशन सुझा सकती है
vnix27

1

आप स्थानीय नीति भी बना सकते हैं:

"आप इस पहुँच की अनुमति देने के लिए एक स्थानीय नीति मॉड्यूल उत्पन्न कर सकते हैं। अब इस कार्य को क्रियान्वित करने की अनुमति दें:"

grep httpd /var/log/audit/audit.log | audit2allow -M mypol

semodule -i mypol.pp

या वास्तविक सत्र के लिए विश्व स्तर पर सक्षम करें:

setsebool httpd_can_network_connect_db 1

या स्थायी:

setsebool -P httpd_can_network_connect_db 1
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.