PhTMyAdmin लॉगिन सुरक्षित करने के लिए HTTPS (SSL प्रमाणपत्र) कैसे सेटअप करें


इस टिप को शुरू करने के लिए, एक क्लाइंट मशीन और डेबियन 8 सर्वर के बीच HTTP ट्रैफ़िक को सूँघने दें, जहाँ हमने अपने पिछले लेख में डेटाबेस रूट यूज़र के क्रेडेंशियल्स का उपयोग करके लॉगिन करने की निर्दोष गलती की है: डिफ़ॉल्ट रूप से परिवर्तित करें और PhpMyAdos लॉगिन URL सुरक्षित करें

जैसा कि हमने पिछले टिप में बताया है, यदि आप अपनी साख को उजागर नहीं करना चाहते हैं तो अभी तक ऐसा करने का प्रयास न करें। ट्रैफ़िक को सूँघना शुरू करने के लिए, हमने निम्न कमांड टाइप किया और एंटर दबाया:

# tcpdump port http -l -A | egrep -i 'pass=|pwd=|log=|login=|user=|username=|pw=|passw=|passwd=|password=|pass:|user:|username:|password:|login:|pass |user ' --line-buffered -B20

हमें यह महसूस करने में देर नहीं लगेगी कि उपयोगकर्ता नाम और पासवर्ड सादे पाठ प्रारूप में तार पर भेजे गए हैं, जैसा कि आप नीचे दी गई छवि में tcpdump के छंटे हुए आउटपुट में देख सकते हैं।

कृपया ध्यान दें कि हमने रूट पासवर्ड के एक हिस्से को नीले निशान के साथ छिपाया है:

इससे बचने के लिए, प्रमाणपत्र के साथ लॉगिन पृष्ठ को सुरक्षित करें। ऐसा करने के लिए, CentOS आधारित वितरण पर mod_ssl पैकेज स्थापित करें।

# yum install mod_ssl

हालाँकि हम डेबियन/उबंटू पथ और नामों का उपयोग करेंगे, वही प्रक्रिया CentOS और RHEL के लिए मान्य है यदि आप कमांड और पथ को CentOS समकक्षों से प्रतिस्थापित करते हैं।

कुंजी और प्रमाणपत्र संग्रहीत करने के लिए एक निर्देशिका बनाएं:

# mkdir /etc/apache2/ssl    [On Debian/Ubuntu based systems]
# mkdir /etc/httpd/ssl      [On CentOS based systems]

कुंजी और प्रमाण पत्र बनाएँ:

----------- On Debian/Ubuntu based systems ----------- 
# openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt

----------- On CentOS based systems ----------- 
# openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/httpd/ssl/apache.key -out /etc/httpd/ssl/apache.crt
........................+++
.....................................................+++
writing new private key to '/etc/httpd/ssl/apache.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:IN
State or Province Name (full name) []:Maharashtra
Locality Name (eg, city) [Default City]:Mumbai
Organization Name (eg, company) [Default Company Ltd]:TecMint
Organizational Unit Name (eg, section) []:TecMint
Common Name (eg, your name or your server's hostname) []:TecMint
Email Address []:[email 

अगला, कुंजी और प्रमाणपत्र सत्यापित करें।

# cd /etc/apache2/ssl/   [On Debian/Ubuntu based systems]
# cd /etc/httpd/ssl/     [On CentOS based systems]
# ls -l

total 8
-rw-r--r--. 1 root root 1424 Sep  7 15:19 apache.crt
-rw-r--r--. 1 root root 1704 Sep  7 15:19 apache.key

डेबियन/उबंटू में, सुनिश्चित करें कि अपाचे डिफ़ॉल्ट साइट (/etc/apache2/sites-available/000-default.conf) के लिए पोर्ट 443 पर सुन रहा है और वर्चुअलबॉस्ट घोषणा के अंदर 3 एसएसएल-संबंधित लाइनों को जोड़ें:

SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key

CentOS आधारित वितरण में, Apache को पोर्ट 443 पर सुनने के लिए और /etc/httpd/conf/httpd.conf में सुनो निर्देश को देखें और इसके नीचे उपरोक्त पंक्तियाँ जोड़ें।

SSLEngine on
SSLCertificateFile /etc/httpd/ssl/apache.crt
SSLCertificateKeyFile /etc/httpd/ssl/apache.key

परिवर्तन सहेजें, डेबियन/उबंटू वितरण पर SSL अपाचे मॉड्यूल को लोड करें (जब आप mod_ssl को स्थापित करते हैं तो CentOS में यह स्वचालित रूप से लोड होता है):

# a2enmod ssl

SSL का उपयोग करने के लिए phpmyadmin को बल दें, सुनिश्चित करें कि निम्नलिखित पंक्ति /etc/phpmyadmin/config.inc.php या /etc/phpMyAdmin/config.inc.php फ़ाइल में मौजूद है:

$cfg['ForceSSL'] = true;

और वेब सर्वर को पुनरारंभ करें:

# systemctl restart apache2   [On Debian/Ubuntu based systems]
# systemctl restart httpd     [On Debian/Ubuntu based systems]

इसके बाद, अपना वेब ब्राउज़र लॉन्च करें और नीचे दिखाए अनुसार https://my (PhpMyAdmin लॉगिन URL कैसे बदलें) सीखें।

महत्वपूर्ण: कृपया ध्यान दें कि यह केवल यह कह रहा है कि कनेक्शन सुरक्षित नहीं है क्योंकि हम स्व-हस्ताक्षरित प्रमाण पत्र का उपयोग कर रहे हैं। उन्नत पर क्लिक करें और सुरक्षा अपवाद की पुष्टि करें:

सुरक्षा अपवाद की पुष्टि करने के बाद, और लॉगिन करने से पहले, HTTP और HTTPS ट्रैफ़िक को सूँघना शुरू करें:

# tcpdump port http or port https -l -A | egrep -i 'pass=|pwd=|log=|login=|user=|username=|pw=|passw=|passwd=|password=|pass:|user:|username:|password:|login:|pass |user ' --line-buffered -B20

फिर पहले की तरह ही क्रेडेंशियल्स का उपयोग करके लॉगिन करें। ट्रैफ़िक स्निफ़र केवल बेहतर तरीके से गिबरिश को पकड़ लेगा:

यह अब के लिए है, अगले लेख में हम आपको उपयोगकर्ता नाम/पासवर्ड के साथ PhpMyAdmin एक्सेस को प्रतिबंधित करने के लिए साझा करेंगे, तब तक Tecmint के लिए बने रहेंगे।