ホームページ >データベース >mysql チュートリアル >MySQLのバージョンを非表示にする方法

MySQLのバージョンを非表示にする方法

藏色散人
藏色散人オリジナル
2023-02-14 10:08:473801ブラウズ

mysql バージョンを非表示にする方法: 1. 「mysql -uroot -p> select version();」コマンドで現在の mysql バージョンを確認します; 2. MySQL サービスを開始し、ファイアウォール ポリシーを追加します; 3ファイル「mysqld .bak」をバックアップします; 4. 「/usr/sbin/mysqld」ファイルを開き、その中のバージョン情報を置き換えます。

MySQLのバージョンを非表示にする方法

このチュートリアルの動作環境:CentOS 7.6 システム、MySQL5 .7 バージョン、Dell G3 コンピューター。

MySQL/MariaDB の実際のバージョン情報を非表示にする

このプロジェクトで、当事者 A はサーバー上でセキュリティ スキャンを実施し、MySQL の下位バージョンの脆弱性が多数存在することを発見しました。それらは修理する必要があります。ただし、ビジネスへの影響を考慮すると、現在のバージョンを直接アップグレードするのは不便であり、当社のビジネスはイントラネット環境に展開されており、ネットワーク アクセス制限があるため、実際のセキュリティ リスクは比較的小さいです。ここでは、それを回避する他の方法、つまり MySQL のバージョン番号を変更して、その本当のバージョン情報を隠す方法を見つけようとします。

テスト プロセスは次のように記録されます。
リスク操作 (参照のみ)

MySQL/MariaDB バージョン情報の検出

現在のバージョンを確認するにはさまざまな方法がありますが、一般的な方法は次のとおりです。

    実行するサーバー
  • mysql -V
  • mysql にログインし、SQL ステートメントを使用してクエリを実行します。
mysql -uroot -p> select version();
ログイン権限がない場合は、Telnet を使用することもできます。または、検出スキャンを実行して mysql バージョン情報を取得するための nmap ツール:

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

MySQL の実際のバージョン情報を非表示にする

テスト環境

シリアル番号名前バージョン備考 #12

安装过程

  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

MySQLのバージョンを非表示にする方法
MySQLのバージョンを非表示にする方法
MySQLのバージョンを非表示にする方法
2. 开启 MySQL 服务,添加防火墙策略

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

MySQLのバージョンを非表示にする方法
3. 设置密码

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

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;

MySQLのバージョンを非表示にする方法
5. 查看当前版本

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

MySQLのバージョンを非表示にする方法

版本信息探测

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

MySQLのバージョンを非表示にする方法

修改版本信息

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

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

MySQLのバージョンを非表示にする方法
MySQLのバージョンを非表示にする方法
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)

MySQLのバージョンを非表示にする方法
MySQLのバージョンを非表示にする方法
MySQLのバージョンを非表示にする方法
3. 重启服务

systemctl restart mysqld
systemctl status mysqldnetstat -nplt |grep mysqld

MySQLのバージョンを非表示にする方法
4. 确认版本

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

MySQLのバージョンを非表示にする方法
5. 其他业务相关的测试

版本信息复测

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

MySQLのバージョンを非表示にする方法

隐藏MariaDB真实版本信息

测试环境

Linux オペレーティング システム CentOS 7.6 IP: 192.168.64.147
MySQL データベース 5.7.22 rpm インストール
序号 名称 版本 备注
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

MySQLのバージョンを非表示にする方法
2. 开启 MySQL 服务,添加防火墙策略

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

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;

MySQLのバージョンを非表示にする方法
MySQLのバージョンを非表示にする方法
4. 查看当前版本

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

MySQLのバージョンを非表示にする方法

版本信息探测

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

MySQLのバージョンを非表示にする方法

修改版本信息

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

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

MySQLのバージョンを非表示にする方法
MySQLのバージョンを非表示にする方法
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)

MySQLのバージョンを非表示にする方法
MySQLのバージョンを非表示にする方法
3. 重启服务

systemctl restart mariadb
systemctl status mariadbnetstat -nplt |grep mysqld

MySQLのバージョンを非表示にする方法
4. 确认版本

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

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

MySQLのバージョンを非表示にする方法
复测结果

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

MySQLのバージョンを非表示にする方法

推荐学习:《MySQL视频教程

以上がMySQLのバージョンを非表示にする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。