如何防止黑客通过mysql服务3306端口攻击服务器
SSH到主机上输入下面的命令:
vi /etc/my.cnf
在[mysqld]下添加:
skip-networking
最后重启Mysql
service mysqld restart
检查Mysql是否正常运行
service mysqld status
假如服务器因被攻击而导致Mysql崩溃,在CMD下输入什么命令会不会有特殊回显?仅“mysql崩溃”特有的回显示
呃,好像可以改“服务”里面的“mysql”选项,改成“启动失败时自动重启”。
如果是受到攻击导致崩溃,最好先检查哪里有问题,要不然你重启MySQL别人会继续攻击的~~~
更正,刚试了下,改那个不行,非正常结束时服务不会自动重启。
刚在同学的机子上做了一个脚本和计划任务,能够达到你说的那种效果。不过我同学的机子上没有MySQL,只有SQLSERVER2000,而且系统是Vista的,不知道你的服务器装的什么系统,所以不能保证这个办法同样有效。
代码太多,不让传~~没办法了~~有问题Q我吧:87510102
今天用虚拟机装了个2003,发现那个从Vista中导出的计划任务根本就不能导入2003,晕~~
手动创建计划任务的时候发现没有可以用系统事件作为触发条件的选项,直接悲剧~~
这个办法对2003无效~不好意思了~~
但是可以变通一下,在2003中建一个计划任务,每5分钟运行一次,运行的时候启动StartMySQL.vbs,这个脚本内容如下
strServiceName = "MySQL"
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set colListOfServices = objWMIService.ExecQuery ("Select * from Win32_Service Where Name ='" strServiceName "'")
For Each objService in colListOfServices
dim i
for i = 1 to 3
if objService.State "Running" then
objService.StartService()
Wscript.Sleep 3000
end if
next
Next
你试试看
————————————————————
很惭愧,用了几年的MySQL一直都是做些小型的数据库,所以像您这种情况还一次都没发生过,所以我不清楚你的MySQL崩溃了是什么症状,如果只是MySQL停止响应了,那么用这个办法还不能完全解决问题,如果MySQL进程停掉了,可以用这个办法重启MySQL服务,可以恢复运行。
如果你能拿到服务器的日志,建议你好好看下日志,看是哪里的配置不适合,或者是漏洞没堵上,然后相应的调整一下服务器。
如何提高mysql的安全性
一 作为最流行的开源数据库引擎,MySQL本身是非常安全的。即便如此,你仍然需要添加额外的安全层来保护你的MySQL数据库不受攻击,毕竟任何经营网上
在线业务的人都不想冒数据库受到损坏的风险。接下来,我们将介绍一些实用的办法,你可以利用这些办法来保护MySQL数据库,以便加强网站的安全性。
二 保护操作系统
确保操作系统的安全是保护数据库安全的前提,因为如果整个运行环境不安全,那么网站上所有的东西都脆弱,很容易暴露于攻击者。为了维护操作系统和MySQL服务器,你可以使用以下方法:
2.1 主机数据库服务器和web服务器分别在不同的物理机器上,如果可能,在一个单独的服务器上运行数据库服务器,以预防由其他应用程序或服务的漏洞造成的服务器问题。
安装杀毒软件,防火墙以及所有推荐的补丁和更新,防火墙能有效地把流量过滤到MySQL服务器。为了更好的提高安全性,你还可以实行入口封锁。
禁用所有不必要的服务,而且这样的服务越少越好。
2.2 保护所有帐户和密码
攻击者侵入MySQL数据库最常见的一种方法是窃取有安全隐患的账户信息。为了降低出现这种风险的可能性,你不妨试一试下面的方法:
2.2.1. 给所有MySQL账户设置密码
客户程序并不是每次都能识别用户,因此,如果用户知道数据库名但是没有这个用户名的密码,那他可以指定任何其他用户名连接到MySQL数据库。让每个MySQL用户名都设置密码,这样一来,要想利用匿名账户建立连接将会变得很困难。
2.2.2. 不要使用根用户运行MySQL服务器
在安装MySQL的时候,默认情况下创建了一个命名为“root”的管理用户。每个人都知道这一点,所以攻击者通常试图侵入这个“root”用户来获取访问权限。为了保障这个重要帐户的安全,你需要给它重新命名,然后更改一个长并且复杂的密码。
2.2.3你可以在MySQL控制台使用mysql RENAME USER root TO new_username;
指令给根用户重命名,使用mysql SET PASSWORD FOR 'username'@'%hostname' =
PASSWORD('newpassword');//这是很重要的一条命令
指令来修改密码。
三. 减少管理员账户
管理员账户越多,风险越大,所以你应该保持尽可能最少的帐户数量,只有为那些真正需要它的人创建账户。此外,记得要删除未使用的和匿名的账户。如果你有很多管理员账户,那你需要定期检查并清理那些不必要的账户。
四. 加强所有的密码
除了管理员帐户,你还需要加强所有其他用户的密码。你可以检查所有的用户名和密码,必要的时候你还可以重置安全强度低的账户密码。虽说这样做会有点费时,但却是有必要的。
五 限制数据库权限
每个用户都应该被授予适当的权限以便数据库能够正常运行,但这样一来也加大了数据库的安全隐患。就数据库权限而言,我们有以下几点建议:
5.1. 不要授予非管理员用户文件/高级/程序权限
文件,高级和程序权限都不应该被滥用。文件权限让用户可以在文件系统中的任何一个地方编写文件,而程序权限让用户在任何时候都能够查看服务器活动,终止客户端连接甚至更改服务器操作。为了你的数据库安全,这些权限只能授予给管理员账户。
5.2. 限制或禁用显示数据库权限
显示数据库特权可以用于收集数据库信息,所以攻击者通常利用它来窃取数据并准备进一步攻击。你应该把这个权限授予那些真正需要的人,或者直接禁用这个权
限,你只需要把skip-show-database添加到MySQL数据库中的/etc/my.cnf配置文件中。对于Windows操作系统来说,则
需要添加到my.ini文件中。
5.3. 限制管理员和所有其他用户的权限
即使是管理员,也不要在同一账户中授予所有权限。因此我们建议你最好降低管理员账户访问数据的权限。至于其他的用户,你最好检查所有他们拥有的权限,以确保一切都是合适的。
六 删除风险组件
MySQL数据库的默认配置有一些不必要的组件,你可以考虑以下建议:
6.1. 禁用LOAD DATA LOCAL INFILE指令
这个命令允许用户读取本地文件甚至访问其他操作系统上的文件,这可能帮助攻击者收集重要的信息并利用应用程序的漏洞侵入你的数据库。你需要做的是把set-variable=local-infile=0插入到MySQL数据库的my.cnf文件中,来禁用这个指令。
6.2. 删除测试数据库
有一个默认的“测试”数据库用于测试目的。由于这个数据库有安全风险,匿名用户也可以访问,你应该使用mysql DROP database test;指令尽快把它清除掉。
6.3. 删除历史文件
MySQL服务器有一个历史文件,它可以帮助你在安装出错的时候找到问题所在。历史文件包含敏感信息,比如说密码,如果这些信息被攻击者获得,那么将会给
你的数据库带来巨大的安全隐患。在安装成功后,历史文件并没有什么用,因此你可以使用cat /dev/null
~/.mysql_history指令来删除文件当中的内容。
七 限制远程访问MySQL服务器
对于大多数用户来说,不需要通过不安全的开放网络来访问MySQL服务器。你可以通过配置防火墙或硬件,或者迫使MySQL只听从localhost来限制主机。此外,需要SSH隧道才能进行远程访问。
八 如果你想仅仅从本地主机来限制用户建立连接,你需要在在配置文件中添加bind-address=127.0.0.1。
8.1利用日志记录
启用日志记录让你可以检测服务器上的活动,这样你就可以分析失败的登录尝试和敏感文件的访问记录,以便了解是否存在向你的服务器和数据库发起的恶意活动。
你只需要把log =/var/log/mylogfile指令添加到MySQL配置文件中,就可以手动启用日志记录功能。
8.2至于日志记录,需要注意以下两点:
8.2.1日志记录仅适用于查询数量有限的数据库服务器。对于信息量大的服务器,这可能会导致高过载。
8.2.2由于“hostname.err”文件包含敏感数据表名和密码,只有“root”和“mysql”才有访问和记录这个文件的权限。
mysql cve-2016-6662 怎么修
mysql cve-2016-6662 怎么修
原始漏洞分析地址
安全客文章地址
就我目前测试的情况来看,这个漏洞比较鸡肋,原因有以下两点:
1,使用默认方式安装的mysql,mysql用户并没有配置文件/etc/mysql/my.cnf的所属权限;
2,不关闭selinux或apparmor的话,exp脚本执行是会报错的。
legalhackers原文中提到这个漏洞的前提是很多人按照错误的安装指南来进行权限配置,将配置文件的所属用户修改成了mysql。不过貌似漏洞发现者手里还藏了几个更加严重的mysql漏洞,并没有披露。
I. VULNERABILITY
MySQL = 5.7.15 远程代码执行/权限提升 (0day)
5.6.33
5.5.52
克隆mysql的同样受影响, 包括:
MariaDB PerconaDB
II. INTRODUCTION
一个独立的研究组织发现多处严重的Mysql漏洞,此次通报的是其中比较严重的一个漏洞CVE-2016-6662,它允许攻击者远程注入恶意设置到被攻击服务器的Mysql配置文件(my.cnf)中,导致更加严重的后果。
该漏洞影响所有默认配置的Mysql版本分支(5.7、5.6、5.5),包括最新的版本,并可能被攻击者进行本地或者远程的利用。Exp既可以通过网络连接或者利用类似phpmyadmin之类的web管理工具,以及SQL注入漏洞等来实现远程提权的目的。
SQL注入漏洞是在web应用中最常见的漏洞之一,在存在注入漏洞的情况下,攻击者可以配合CVE-2016-6662进行更加深入的入侵。如果被攻击服务器有运行受影响的mysql版本,攻击者可以以root权限执行任意代码,从而完全控制被攻击服务器。
目前官方还没有提供针对该漏洞的补丁,即使服务器开启了SELinux安全模式,也会受到该漏洞Exp的影响。该通报后面提供一个该漏洞的Poc,演示攻击者如何实现远程代码执行。
III. DESCRIPTION
默认的Mysql安装包自带mysql_safe脚本,启动mysql服务器就可以观察到,例如,进行mysql全面更新。
Debian系统:
root@debian:~# lsb_release -a
No LSB modules are available.
Distributor ID: Debian
急!MySQL 5.5 密码被改,网上的解决方法看不懂!求简单的解决方法。
如果你是系统管理员的话或你可以登陆服务器;可以修改密码的;
在windows下:
打开命令行窗口,停止mysql服务: Net stop mysql
启动mysql,一般到mysql的安装路径,找到 mysqld-nt.exe
执行:mysqld-nt --skip-grant-tables 当前窗口将会停止。
另外打开一个命令行窗口,执行mysql 如果提示没有这个命令,先进入MYSQL的安装位置下BIN目录再运行mysqluse mysql
update user set password=password("new_password") where user="root";
flush privileges;
exit
用Ctrl+Alt+Del,找到mysqld-nt的进程杀掉它,在重新启动mysql-nt服务,就可以用新密码登录了
0条大神的评论