12 MySQL/MariaDB സെക്യൂരിറ്റി Linux-നുള്ള മികച്ച സമ്പ്രദായങ്ങൾ


MySQL ലോകത്തിലെ ഏറ്റവും ജനപ്രിയമായ ഓപ്പൺ സോഴ്uസ് ഡാറ്റാബേസ് സിസ്റ്റമാണ്, മരിയാഡിബി (MySQL-ന്റെ ഫോർക്ക്) ലോകത്തിലെ ഏറ്റവും വേഗത്തിൽ വളരുന്ന ഓപ്പൺ സോഴ്uസ് ഡാറ്റാബേസ് സിസ്റ്റമാണ്. MySQL സെർവർ ഇൻസ്റ്റാൾ ചെയ്ത ശേഷം, അതിന്റെ സ്ഥിരസ്ഥിതി കോൺഫിഗറേഷനിൽ ഇത് സുരക്ഷിതമല്ല, കൂടാതെ ഇത് സുരക്ഷിതമാക്കുന്നത് പൊതുവായ ഡാറ്റാബേസ് മാനേജ്മെന്റിലെ പ്രധാന ജോലികളിലൊന്നാണ്.

ഇത് ലിനക്സ് സെർവർ സുരക്ഷയുടെ കാഠിന്യം വർദ്ധിപ്പിക്കുന്നതിനും വർദ്ധിപ്പിക്കുന്നതിനും സഹായിക്കും, കാരണം ആക്രമണകാരികൾ എല്ലായ്uപ്പോഴും ഒരു സിസ്റ്റത്തിന്റെ ഏതെങ്കിലും ഭാഗത്തെ കേടുപാടുകൾ സ്കാൻ ചെയ്യുന്നു, കൂടാതെ ഡാറ്റാബേസുകൾ മുൻകാലങ്ങളിൽ പ്രധാന ലക്ഷ്യ മേഖലകളായിരുന്നു. MySQL ഡാറ്റാബേസിനുള്ള റൂട്ട് പാസ്uവേഡിന്റെ ബ്രൂട്ട്-ഫോഴ്uസിംഗ് ഒരു സാധാരണ ഉദാഹരണമാണ്.

ഈ ഗൈഡിൽ, Linux-നുള്ള ഉപയോഗപ്രദമായ MySQL/MariaDB സുരക്ഷാ മികച്ച പരിശീലനത്തെ ഞങ്ങൾ വിശദീകരിക്കും.

1. MySQL ഇൻസ്റ്റലേഷൻ സുരക്ഷിതമാക്കുക

MySQL സെർവർ ഇൻസ്റ്റാൾ ചെയ്തതിനുശേഷം, ഡാറ്റാബേസ് സെർവർ സുരക്ഷിതമാക്കുന്നതിനുള്ള ആദ്യത്തെ ശുപാർശ ചെയ്യപ്പെടുന്ന ഘട്ടമാണിത്. നിങ്ങളോട് ആവശ്യപ്പെടുന്നതിലൂടെ നിങ്ങളുടെ MySQL സെർവറിന്റെ സുരക്ഷ മെച്ചപ്പെടുത്തുന്നതിന് ഈ സ്ക്രിപ്റ്റ് സഹായിക്കുന്നു:

  • ഇൻസ്റ്റാളേഷൻ സമയത്ത് നിങ്ങൾ അത് സജ്ജീകരിച്ചിട്ടില്ലെങ്കിൽ, റൂട്ട് അക്കൗണ്ടിനായി ഒരു പാസ്uവേഡ് സജ്ജമാക്കുക.
  • പ്രാദേശിക ഹോസ്റ്റിന് പുറത്ത് നിന്ന് ആക്uസസ് ചെയ്യാവുന്ന റൂട്ട് അക്കൗണ്ടുകൾ നീക്കം ചെയ്തുകൊണ്ട് റിമോട്ട് റൂട്ട് യൂസർ ലോഗിൻ പ്രവർത്തനരഹിതമാക്കുക.
  • അജ്ഞാത-ഉപയോക്തൃ അക്കൗണ്ടുകൾ നീക്കം ചെയ്യുക, സ്ഥിരസ്ഥിതിയായി എല്ലാ ഉപയോക്താക്കൾക്കും, അജ്ഞാത ഉപയോക്താക്കൾക്ക് പോലും ആക്സസ് ചെയ്യാൻ കഴിയുന്ന ഡാറ്റാബേസ് പരിശോധിക്കുക.

# mysql_secure_installation

ഇത് പ്രവർത്തിപ്പിച്ചതിന് ശേഷം, റൂട്ട് പാസ്uവേഡ് സജ്ജമാക്കി [അതെ/Y] നൽകി [Enter] അമർത്തിക്കൊണ്ട് ചോദ്യങ്ങളുടെ പരമ്പരയ്ക്ക് ഉത്തരം നൽകുക.

2. ലൂപ്പ്ബാക്ക് വിലാസത്തിലേക്ക് ഡാറ്റാബേസ് സെർവർ ബന്ധിപ്പിക്കുക

ഈ കോൺഫിഗറേഷൻ റിമോട്ട് മെഷീനുകളിൽ നിന്നുള്ള ആക്uസസ്സ് നിയന്ത്രിക്കും, ലോക്കൽഹോസ്റ്റിനുള്ളിൽ നിന്നുള്ള കണക്ഷനുകൾ മാത്രം സ്വീകരിക്കാൻ MySQL സെർവറിനോട് ഇത് പറയുന്നു. നിങ്ങൾക്ക് ഇത് പ്രധാന കോൺഫിഗറേഷൻ ഫയലിൽ സജ്ജമാക്കാൻ കഴിയും.

# vi /etc/my.cnf	                   [RHEL/CentOS]	
# vi /etc/mysql/my.conf                    [Debian/Ubuntu] 
OR
# vi /etc/mysql/mysql.conf.d/mysqld.cnf    [Debian/Ubuntu] 

[mysqld] വിഭാഗത്തിന് കീഴിൽ താഴെയുള്ള വരി ചേർക്കുക.

bind-address = 127.0.0.1

3. MySQL-ൽ ലോക്കൽ INFILE പ്രവർത്തനരഹിതമാക്കുക

സുരക്ഷാ കാഠിന്യത്തിന്റെ ഭാഗമായി, [mysqld] വിഭാഗത്തിന് കീഴിലുള്ള ഇനിപ്പറയുന്ന നിർദ്ദേശം ഉപയോഗിച്ച് MySQL-നുള്ളിൽ നിന്ന് അടിസ്ഥാന ഫയൽസിസ്റ്റത്തിലേക്കുള്ള ആക്uസസ് തടയാൻ നിങ്ങൾ local_infile പ്രവർത്തനരഹിതമാക്കേണ്ടതുണ്ട്.

local-infile=0

4. MYSQL ഡിഫോൾട്ട് പോർട്ട് മാറ്റുക

TCP/IP കണക്ഷനുകളിൽ കേൾക്കാൻ ഉപയോഗിക്കുന്ന MySQL പോർട്ട് നമ്പർ പോർട്ട് വേരിയബിൾ സജ്ജമാക്കുന്നു. സ്ഥിരസ്ഥിതി പോർട്ട് നമ്പർ 3306 ആണ്, എന്നാൽ കാണിച്ചിരിക്കുന്നതുപോലെ നിങ്ങൾക്ക് [mysqld] വിഭാഗത്തിന് കീഴിൽ അത് മാറ്റാവുന്നതാണ്.

Port=5000

5. MySQL ലോഗിംഗ് പ്രവർത്തനക്ഷമമാക്കുക

ഒരു സെർവറിൽ എന്താണ് സംഭവിക്കുന്നതെന്ന് മനസിലാക്കാനുള്ള ഏറ്റവും നല്ല മാർഗമാണ് ലോഗുകൾ, ഏതെങ്കിലും ആക്രമണങ്ങൾ ഉണ്ടായാൽ, ലോഗ് ഫയലുകളിൽ നിന്ന് നുഴഞ്ഞുകയറ്റവുമായി ബന്ധപ്പെട്ട ഏത് പ്രവർത്തനങ്ങളും നിങ്ങൾക്ക് എളുപ്പത്തിൽ കാണാൻ കഴിയും. [mysqld] വിഭാഗത്തിന് കീഴിൽ ഇനിപ്പറയുന്ന വേരിയബിൾ ചേർത്ത് നിങ്ങൾക്ക് MySQL ലോഗിംഗ് പ്രവർത്തനക്ഷമമാക്കാം.

log=/var/log/mysql.log

6. MySQL ഫയലുകളിൽ ഉചിതമായ അനുമതി സജ്ജീകരിക്കുക

നിങ്ങൾക്ക് എല്ലാ mysql സെർവർ ഫയലുകൾക്കും ഡാറ്റ ഡയറക്uടറികൾക്കും ഉചിതമായ അനുമതികൾ സജ്ജീകരിച്ചിട്ടുണ്ടെന്ന് ഉറപ്പാക്കുക. /etc/my.conf ഫയൽ റൂട്ടിലേക്ക് മാത്രമേ എഴുതാൻ കഴിയൂ. ഇത് ഡാറ്റാബേസ് സെർവർ കോൺഫിഗറേഷനുകൾ മാറ്റുന്നതിൽ നിന്ന് മറ്റ് ഉപയോക്താക്കളെ തടയുന്നു.

# chmod 644 /etc/my.cnf

7. MySQL ഷെൽ ചരിത്രം ഇല്ലാതാക്കുക

MySQL ഷെല്ലിൽ നിങ്ങൾ എക്സിക്യൂട്ട് ചെയ്യുന്ന എല്ലാ കമാൻഡുകളും mysql ക്ലയന്റ് ഒരു ഹിസ്റ്ററി ഫയലിൽ സൂക്ഷിക്കുന്നു: ~/.mysql_history. ഇത് അപകടകരമാണ്, കാരണം നിങ്ങൾ സൃഷ്ടിക്കുന്ന ഏതൊരു ഉപയോക്തൃ അക്കൗണ്ടുകൾക്കും, ഷെല്ലിൽ ടൈപ്പ് ചെയ്ത എല്ലാ ഉപയോക്തൃനാമങ്ങളും പാസ്uവേഡുകളും ചരിത്ര ഫയലിൽ രേഖപ്പെടുത്തും.

# cat /dev/null > ~/.mysql_history

8. കമാൻഡ് ലൈനിൽ നിന്ന് MySQL കമാൻഡുകൾ പ്രവർത്തിപ്പിക്കരുത്

നിങ്ങൾക്ക് ഇതിനകം അറിയാവുന്നതുപോലെ, നിങ്ങൾ ടെർമിനലിൽ ടൈപ്പുചെയ്യുന്ന എല്ലാ കമാൻഡുകളും നിങ്ങൾ ഉപയോഗിക്കുന്ന ഷെല്ലിനെ ആശ്രയിച്ച് ഒരു ചരിത്ര ഫയലിൽ സൂക്ഷിക്കുന്നു (ഉദാഹരണത്തിന് bash-നുള്ള ~/.bash_history). ഈ ചരിത്ര ഫയലിലേക്ക് ആക്uസസ് നേടുന്ന ഒരു ആക്രമണകാരിക്ക് അവിടെ റെക്കോർഡ് ചെയ്uതിരിക്കുന്ന ഏത് പാസ്uവേഡുകളും എളുപ്പത്തിൽ കാണാൻ കഴിയും.

കമാൻഡ് ലൈനിൽ പാസ്uവേഡുകൾ ടൈപ്പ് ചെയ്യാൻ ശക്തമായി ശുപാർശ ചെയ്യുന്നില്ല, ഇതുപോലുള്ള ഒന്ന്:

# mysql -u root -ppassword_

കമാൻഡ് ഹിസ്റ്ററി ഫയലിന്റെ അവസാന ഭാഗം നിങ്ങൾ പരിശോധിക്കുമ്പോൾ, മുകളിൽ ടൈപ്പ് ചെയ്ത പാസ്uവേഡ് നിങ്ങൾ കാണും.

# history 

MySQL-നെ ബന്ധിപ്പിക്കുന്നതിനുള്ള ഉചിതമായ മാർഗ്ഗം.

# mysql -u root -p
Enter password:

9. ആപ്ലിക്കേഷൻ-നിർദ്ദിഷ്ട ഡാറ്റാബേസ് ഉപയോക്താക്കളെ നിർവചിക്കുക

സെർവറിൽ പ്രവർത്തിക്കുന്ന ഓരോ ആപ്ലിക്കേഷനും, നൽകിയിരിക്കുന്ന ആപ്ലിക്കേഷന്റെ ഡാറ്റാബേസിന്റെ ചുമതലയുള്ള ഉപയോക്താവിന് മാത്രം ആക്സസ് നൽകുക. ഉദാഹരണത്തിന്, നിങ്ങൾക്ക് ഒരു വേർഡ്പ്രസ്സ് സൈറ്റ് ഉണ്ടെങ്കിൽ, ഇനിപ്പറയുന്ന രീതിയിൽ വേർഡ്പ്രസ്സ് സൈറ്റ് ഡാറ്റാബേസിനായി ഒരു നിർദ്ദിഷ്ട ഉപയോക്താവിനെ സൃഷ്ടിക്കുക.

# mysql -u root -p
MariaDB [(none)]> CREATE DATABASE osclass_db;
MariaDB [(none)]> CREATE USER 'osclassdmin'@'localhost' IDENTIFIED BY '[email %!2';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON osclass_db.* TO 'osclassdmin'@'localhost';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> exit

കൂടാതെ സെർവറിലെ ഒരു ആപ്ലിക്കേഷൻ ഡാറ്റാബേസും മേലിൽ കൈകാര്യം ചെയ്യാത്ത ഉപയോക്തൃ അക്കൗണ്ടുകൾ എപ്പോഴും നീക്കം ചെയ്യാൻ ഓർക്കുക.

10. അധിക സുരക്ഷാ പ്ലഗിനുകളും ലൈബ്രറികളും ഉപയോഗിക്കുക

MySQL-ൽ ഇതിനായി നിരവധി സുരക്ഷാ പ്ലഗിനുകൾ ഉൾപ്പെടുന്നു: mysql സെർവറിലേക്ക് കണക്റ്റുചെയ്യാനുള്ള ക്ലയന്റുകളുടെ ശ്രമങ്ങൾ ആധികാരികമാക്കൽ, പാസ്uവേഡ്-സാധുവാക്കൽ, തന്ത്രപ്രധാനമായ വിവരങ്ങൾക്കായി സംഭരണം സുരക്ഷിതമാക്കൽ, ഇവയെല്ലാം സൗജന്യ പതിപ്പിൽ ലഭ്യമാണ്.

നിങ്ങൾക്ക് ഇവിടെ കൂടുതൽ കണ്ടെത്താം: https://dev.mysql.com/doc/refman/5.7/en/security-plugins.html

11. MySQL പാസ്uവേഡുകൾ പതിവായി മാറ്റുക

ഇതൊരു സാധാരണ വിവര/ആപ്ലിക്കേഷൻ/സിസ്റ്റം സുരക്ഷാ ഉപദേശമാണ്. നിങ്ങൾ എത്ര തവണ ഇത് ചെയ്യുന്നു എന്നത് നിങ്ങളുടെ ആന്തരിക സുരക്ഷാ നയത്തെ ആശ്രയിച്ചിരിക്കും. എന്നിരുന്നാലും, നിങ്ങളുടെ mysql സെർവറിലേക്കുള്ള ആക്uസസ് നേടുന്നതിൽ നിന്ന്, ദീർഘകാലമായി നിങ്ങളുടെ പ്രവർത്തനം ട്രാക്ക് ചെയ്യുന്ന \സ്നൂപ്പർമാരെ ഇത് തടയാൻ കഴിയും.

MariaDB [(none)]> USE mysql;
MariaDB [(none)]> UPDATE user SET password=PASSWORD('YourPasswordHere') WHERE User='root' AND Host = 'localhost';
MariaDB [(none)]> FLUSH PRIVILEGES;

12. MySQL സെർവർ പാക്കേജ് പതിവായി അപ്ഡേറ്റ് ചെയ്യുക

വെണ്ടറുടെ ശേഖരത്തിൽ നിന്ന് സുരക്ഷാ അപ്uഡേറ്റുകളും ബഗ് പരിഹാരങ്ങളും നിലനിർത്തുന്നതിന് പതിവായി mysql/mariadb പാക്കേജുകൾ അപ്uഗ്രേഡുചെയ്യുന്നത് വളരെ ശുപാർശ ചെയ്യപ്പെടുന്നു. സാധാരണ ഓപ്പറേറ്റിംഗ് സിസ്റ്റം റിപ്പോസിറ്ററികളിലെ പാക്കേജുകൾ കാലഹരണപ്പെട്ടതാണ്.

# yum update
# apt update

mysql/mariadb സെർവറിൽ എന്തെങ്കിലും മാറ്റങ്ങൾ വരുത്തിയ ശേഷം, എപ്പോഴും സേവനം പുനരാരംഭിക്കുക.

# systemctl restart mariadb		#RHEL/CentOS
# systemctl restart mysql		#Debian/Ubuntu

അത്രയേയുള്ളൂ! ചുവടെയുള്ള അഭിപ്രായ ഫോം വഴി നിങ്ങളിൽ നിന്ന് കേൾക്കാൻ ഞങ്ങൾ ആഗ്രഹിക്കുന്നു. മുകളിലെ ലിസ്റ്റിൽ നഷ്uടമായ ഏതെങ്കിലും MySQL/MariaDB സുരക്ഷാ നുറുങ്ങുകൾ ഞങ്ങളുമായി പങ്കിടുക.