pilih versi();" 2. Mulakan perkhidmatan MySQL dan tambahkan dasar firewall; mysqld.bak"; 4. Buka fail "/usr/sbin/mysqld" dan gantikan maklumat versi di dalamnya."/> pilih versi();" 2. Mulakan perkhidmatan MySQL dan tambahkan dasar firewall; mysqld.bak"; 4. Buka fail "/usr/sbin/mysqld" dan gantikan maklumat versi di dalamnya.">

Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk menyembunyikan versi mysql

Bagaimana untuk menyembunyikan versi mysql

藏色散人
藏色散人asal
2023-02-14 10:08:473734semak imbas

Cara menyembunyikan versi mysql: 1. Semak versi mysql semasa melalui "mysql -uroot -p> pilih versi();" 2. Mulakan perkhidmatan MySQL dan tambahkan dasar firewall; . Sandarkan fail "mysqld .bak"; 4. Buka fail "/usr/sbin/mysqld" dan gantikan maklumat versi di dalamnya.

Bagaimana untuk menyembunyikan versi mysql

Persekitaran pengendalian tutorial ini: sistem CentOS 7.6, MySQL5. 7 versi, komputer Dell G3.

Sembunyikan maklumat versi sebenar MySQL/MariaDB

Dalam projek itu, Party A menjalankan imbasan keselamatan pada pelayan dan menemui banyak kelemahan versi rendah MySQL dan memerlukannya untuk diperbaiki. Walau bagaimanapun, memandangkan kesan ke atas perniagaan, adalah menyusahkan untuk menaik taraf versi semasa secara langsung, dan perniagaan kami digunakan dalam persekitaran intranet dan mempunyai sekatan akses rangkaian, jadi risiko keselamatan sebenar adalah agak kecil. Di sini kami cuba mencari cara lain untuk memintasnya, iaitu, mengubah suai nombor versi MySQL dan menyembunyikan maklumat versi sebenar.
Proses ujian direkodkan seperti berikut, operasi berisiko, untuk rujukan sahaja .

Kesan maklumat versi MySQL/MariaDB

Terdapat banyak cara untuk menyemak versi semasa, yang biasa ialah:

  • Laksanakan pada pelayanmysql -V
  • Log masuk ke mysql dan gunakan pernyataan sql untuk membuat pertanyaan
mysql -uroot -p> select version();

Jika anda tidak mempunyai kebenaran log masuk, anda juga boleh menggunakan alat telnet atau nmap untuk melaksanakan imbasan pengesanan dan dapatkan maklumat versi mysql:

  • telnet
telnet [host] [port]
  • nmap
nmap -T4 -sC -sV -p [port] [ip]

Sembunyikan maklumat versi sebenar MySQL

Persekitaran ujian

序号 名称 版本 备注
1 Linux操作系统 CentOS 7.6 IP:192.168.64.147
2 MySQL数据库 5.7.22 rpm安装

安装过程

  1. 下载安装 rpm 包
yum -y install wget telnet nmap net-toolswget -P /opt/mysql https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.22-1.el7.x86_64.rpm-bundle.tartar -xf /opt/mysql/mysql-5.7.22-1.el7.x86_64.rpm-bundle.tar -C /opt/mysqlcd /opt/mysqlls -lh /opt/mysql/
yum -y remove mariadb*
yum -y install \
  mysql-community-common-5.7.22-1.el7.x86_64.rpm \
  mysql-community-libs-5.7.22-1.el7.x86_64.rpm \
  mysql-community-client-5.7.22-1.el7.x86_64.rpm \
  mysql-community-server-5.7.22-1.el7.x86_64.rpm

Bagaimana untuk menyembunyikan versi mysql
Bagaimana untuk menyembunyikan versi mysql
Bagaimana untuk menyembunyikan versi mysql
2. 开启 MySQL 服务,添加防火墙策略

systemctl start mysqld && systemctl status mysqld
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --reload
firewall-cmd --list-all

Bagaimana untuk menyembunyikan versi mysql
3. 设置密码

passwd=`grep 'password' /var/log/mysqld.log|awk '{print $NF}'`mysqladmin -u root -p$passwd password Aa123456.

Bagaimana untuk menyembunyikan versi mysql
4. 设置远程连接

mysql -uroot -pAa123456.
mysql> use mysql;mysql> select user,host from user;mysql> update user set host='%' where user='root';mysql> flush privileges;mysql> select user,host from user;

Bagaimana untuk menyembunyikan versi mysql
5. 查看当前版本

mysql> select version();mysql> \q
mysql -V

Bagaimana untuk menyembunyikan versi mysql

版本信息探测

telnet 192.168.64.147 3306
nmap -T4 -sC -sV -p 3306 192.168.64.147

Bagaimana untuk menyembunyikan versi mysql

修改版本信息

  1. 备份文件
cp /usr/bin/mysql /usr/bin/mysql.bakcp /usr/sbin/mysqld /usr/sbin/mysqld.bak

Bagaimana untuk menyembunyikan versi mysql
2. 编辑二进制文件,替换其中的版本信息
如果只想对外部探测 MySQL 的真实版本信息进行隐藏,只需改 /usr/sbin/mysqld 文件。
❗️❗️❗️注意:版本号不可为空或删减其他信息,否则可能导致服务无法启用!

vi /usr/bin/mysql# 搜索关键字“Linux”快速定位,修改版本号,建议改为官网最新的稳定版本^@fwrite^@\0^@\t^@\n^@\\^@ERROR^@ %d (%s)^@ at line %lu^@ in file: '%s'^@ERROR %d (%s): ^@ERROR %d: ^@ERROR: ^@UNKNOWN USER^@MysqlClient^@LOGNAME^@LOGIN^@SUDO_USER^@Linux^@5.7.22^@x86_64^@Show warnings enabled.^@Show warnings disabled.^@Aborted^@Bye^@Writing history-file %s# 参考案例:^@fwrite^@\0^@\t^@\n^@\\^@ERROR^@ %d (%s)^@ at line %lu^@ in file: '%s'^@ERROR %d (%s): ^@ERROR %d: ^@ERROR: ^@UNKNOWN USER^@MysqlClient^@LOGNAME^@LOGIN^@SUDO_USER^@Linux^@5.7.37^@x86_64^@Show warnings enabled.^@Show warnings disabled.^@Aborted^@Bye^@Writing history-file %s

Bagaimana untuk menyembunyikan versi mysql
Bagaimana untuk menyembunyikan versi mysql
Bagaimana untuk menyembunyikan versi mysql

vi /usr/sbin/mysqld
# 搜索关键字“--language”快速定位,修改版本号,建议改为官网最新的稳定版本
H^P1öéz¬,ÿ1Òëõ^@^@Hì^HHÄ^HÃ^@^@^@^@^@^@^@^@^@^@^@^A^@^B^@^@^@^@^@^@^@^@^@^@^@^@^@%s: %s^@MYSQL_AUDIT_GENERAL_ERROR^@OFF^@BOTH^@NO_AUTO_CLEAR^@NO_INTERNAL_LOOKUP^@Unknown^@tcp^@MYSQL_TCP_PORT^@/var/lib/mysql/mysql.sock^@MYSQL_UNIX_PORT^@Unable to delete pid file: %s^@%.3f^@.lower-test^@.LOWER-TEST^@Can't create test file %s^@Shutting down slave threads^@'--lc-messages-dir'^@--language/-l^@--binlog_max_flush_queue_time^@5.7.22^@Linux^@%s  Ver %s for %s on %s (%s)

# 参考案例:
H^P1öéz¬,ÿ1Òëõ^@^@Hì^HHÄ^HÃ^@^@^@^@^@^@^@^@^@^@^@^A^@^B^@^@^@^@^@^@^@^@^@^@^@^@^@%s: %s^@MYSQL_AUDIT_GENERAL_ERROR^@OFF^@BOTH^@NO_AUTO_CLEAR^@NO_INTERNAL_LOOKUP^@Unknown^@tcp^@MYSQL_TCP_PORT^@/var/lib/mysql/mysql.sock^@MYSQL_UNIX_PORT^@Unable to delete pid file: %s^@%.3f^@.lower-test^@.LOWER-TEST^@Can't create test file %s^@Shutting down slave threads^@'--lc-messages-dir'^@--language/-l^@--binlog_max_flush_queue_time^@5.7.37^@Linux^@%s  Ver %s for %s on %s (%s)

Bagaimana untuk menyembunyikan versi mysql
Bagaimana untuk menyembunyikan versi mysql
Bagaimana untuk menyembunyikan versi mysql
3. 重启服务

systemctl restart mysqld
systemctl status mysqldnetstat -nplt |grep mysqld

Bagaimana untuk menyembunyikan versi mysql
4. 确认版本

mysql -V
mysql -h 192.168.64.147 -uroot -pAa123456.
mysql> select version();mysql> \q

Bagaimana untuk menyembunyikan versi mysql
5. 其他业务相关的测试

版本信息复测

telnet 192.168.64.147 3306
nmap -T4 -sC -sV -p 3306 192.168.64.147

Bagaimana untuk menyembunyikan versi mysql

隐藏MariaDB真实版本信息

测试环境

序号 名称 版本 备注
1 Linux操作系统 CentOS 7.6 IP:192.168.64.147
2 MariaDB数据库 5.5.68 rpm安装

安装过程

  1. yum安装
yum -y install mariadb-server telnet nmap net-tools

Bagaimana untuk menyembunyikan versi mysql
2. 开启 MySQL 服务,添加防火墙策略

systemctl start mariadb && systemctl status mariadb
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --reload
firewall-cmd --list-all

Bagaimana untuk menyembunyikan versi mysql
3. 设置密码和远程连接

mysqladmin -u root password "Aa123456."mysql -uroot -pAa123456.
MariaDB [(none)]> use mysql;MariaDB [mysql]> select user,host from user;MariaDB [mysql]> update user set host='%' where user='root';MariaDB [mysql]> flush privileges;MariaDB [mysql]> select user,host from user;

Bagaimana untuk menyembunyikan versi mysql
Bagaimana untuk menyembunyikan versi mysql
4. 查看当前版本

MariaDB [mysql]> select version();MariaDB [mysql]> \q
mysql -V

Bagaimana untuk menyembunyikan versi mysql

版本信息探测

telnet 192.168.64.147 3306
nmap -T4 -sC -sV -p 3306 192.168.64.147

Bagaimana untuk menyembunyikan versi mysql

修改版本信息

  1. 备份文件
cp /usr/bin/mysql /usr/bin/mysql.bakcp /usr/libexec/mysqld /usr/libexec/mysqld.bak

Bagaimana untuk menyembunyikan versi mysql
2. 编辑二进制文件,替换其中的版本信息
如果只想对外部探测 MariaDB 的真实版本信息进行隐藏,只需改 /usr/libexec/mysqld 文件。
❗️❗️❗️注意:版本号不可为空或删减其他信息,否则可能导致服务无法启用!

vi /usr/bin/mysql# 搜索关键字“-MariaDB”快速定位,修改版本号,建议改为官网最新的稳定版本^@KILL %s%lu^@ERROR^@ at line %lu^@ in file: '%s'^@ERROR %d (%s)^@ERROR %d^@Linux^@5.5.68-MariaDB^@readline^@x86_64^@vi^@EDITOR^@VISUAL^@Command '%.40s' failed^@Show warnings disabled.^@Show warnings enabled.^@Usage: \! shell-command^@Charset changed^@Charset is not found^@show databases^@show tables^@%.64s.%.64s^@*** NONE ***^@Connection id:    %lu^@Current database: %.128s# 参考案例:^@KILL %s%lu^@ERROR^@ at line %lu^@ in file: '%s'^@ERROR %d (%s)^@ERROR %d^@Linux^@10.7.3-MariaDB^@readline^@x86_64^@vi^@EDITOR^@VISUAL^@Command '%.40s' failed^@Show warnings disabled.^@Show warnings enabled.^@Usage: \! shell-command^@Charset changed^@Charset is not found^@show databases^@show tables^@%.64s.%.64s^@*** NONE ***^@Connection id:    %lu^@Current database: %.128s

Bagaimana untuk menyembunyikan versi mysql
Bagaimana untuk menyembunyikan versi mysql
Bagaimana untuk menyembunyikan versi mysql

vi /usr/libexec/mysqld 
# 同样通过搜索关键字“-MariaDB”快速定位,修改版本号,建议改为官网最新的稳定版本^@CLOSE_CONNECTION^@unauthenticated^@unconnected^@Error in accept^@5.5.68-MariaDB^@x86_64^@Linux^@%s  Ver %s for %s on %s (%s)# 参考案例:^@CLOSE_CONNECTION^@unauthenticated^@unconnected^@Error in accept^@10.7.3-MariaDB^@x86_64^@Linux^@%s  Ver %s for %s on %s (%s)

Bagaimana untuk menyembunyikan versi mysql
Bagaimana untuk menyembunyikan versi mysql
3. 重启服务

systemctl restart mariadb
systemctl status mariadbnetstat -nplt |grep mysqld

Bagaimana untuk menyembunyikan versi mysql
4. 确认版本

mysql -V
mysql -h 192.168.64.147 -uroot -pAa123456.
MariaDB [(none)]> select version();MariaDB [(none)]> \q

Bagaimana untuk menyembunyikan versi mysql
5. 其他业务相关的测试

版本信息复测

为防止探测过程中出现错误连接次数太多导致IP被锁定,建议先提高允许的max_connection_errors数量;
或使用清楚缓存的方法,把计数清理掉

mysql -h 127.0.0.1 -uroot
MariaDB [(none)]> show global variables like '%max_connect_errors%';MariaDB [(none)]> set global max_connect_errors=1000;MariaDB [(none)]> show global variables like '%max_connect_errors%';MariaDB [(none)]> flush hosts;MariaDB [(none)]> \q

Bagaimana untuk menyembunyikan versi mysql
复测结果

telnet 192.168.64.147 3306
nmap -T4 -sC -sV -p 3306 192.168.64.147

Bagaimana untuk menyembunyikan versi mysql

推荐学习:《MySQL视频教程

Atas ialah kandungan terperinci Bagaimana untuk menyembunyikan versi mysql. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn