最近新一轮勒索病毒爆发了,不少筒子中招,甚至包括一些我的客户,本文将讲授一些防范方法和技巧。
勒索病毒其实是一种黑客入侵行为,黑客通过种木马,暴力破解口令等手段入侵受害人服务器,然后手工或自动运行一些加密软件,通常会遍历电脑里的文件,甚至包括其他电脑共享文件,对文件进行可逆加密,然后留下一个联系邮箱,索要若干XX币。
入侵,加密,勒索,洗钱,这个有组织的黑产链比我们想象的要深。
服务器中了勒索病毒后,通常所有文件会被加上后缀,例如.wannaxxx
,这些文件或程序将不能再使用,通常有几种办法恢复:
不怂,服务器断网,将文件拷出,找当地或淘宝上的一些数据公司恢复,按照恢复难度不同,支付几千到几万不等的费用。
认怂,联系黑客邮箱,购买XX币,按目前的汇率通常花费几万,支付给黑客,黑客提供解密工具,然后解密。
待机,等个半年,黑客挣够了,就会放出主密钥,也可能呢,360等杀毒机构也会提供一些解密工具。
总的来说,村长是不推荐认怂的,毕竟助长了黑客气焰,黑客可能卷土重来。
一般来说,服务器最重要的是数据库文件,例如mssql的.mdf文件,可以考虑先找本地公司还原修复一下。
防范勒索才是本文的重心,接下来,村长结合一些实际经验提供一些防范措施。
一般的系统都有定期备份,但是勒索病毒会把备份文件也加密,不过,通常黑客是不会对C盘/windows目录内的文件进行加密的,不然操作系统也启动不了,他们就没法勒索了,针对这个特点,我们可以做一些隐蔽的备份,以NX系统为例,村长会设置下列备份计划
这样做的好处除了混入系统目录,还伪装成exe文件,因为有部分勒索病毒是不会加密exe文件的。
由于黑客大概率是通过3389端口远程入侵的,所以我们的远程备份最好不要通过本地写远程的方式,而是采用远程拉本地的方式,防止黑客对远程目录一网打尽。
当然如果实在要用百度云等本地写远程备份,也不是不可以,只是一定要设置为增量同步,同时要设置百度云锁屏密码,切记切记。
如果是远程拉本地的方式,可以设置本地文件目录为只读共享,然后远程服务器通过Second Copy等软件定期拉文件并加密打包存到远程目录。
有些企业为了能远程管理内网服务器,会把服务器3389映射到外网,这同样给了黑客可乘之机。
如果实在要开放3389,请一定要装类似安全狗之类的防护软件,防止黑客无限暴力破解,当然最好还是关闭3389,1433等端口外网映射。
除了teamview,其实我们也可以自建FRP穿透来远程控制服务器,下面是一种结合esap的动态FRP解决方案。
首先把frpc装到esap/frp目录下,配置frpc.ini,加上
[ctlmyserver]
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 12345
这样就可以通过FRP主机直接穿透到内网3389,而不需要路由器上映射到外网。
然后在esap查询中设置两个查询
这样就可以通过手机来随时按需启停FRP,不用担心黑客一直扫端口了。
做好数据库备份和异地备份
关闭3389等端口,或按需启用。
2019-10-22
@长亭红日:我们已经有ERP系统了,想做移动APP应用,直接利用已有系统数据。
假设用户目前使用的的是ES,系统里面有生产订单:
然后员工在产线上使用pdf直接对订单扫码报工:
在产订单信息自动汇总更新:
ES124没有app,我们可以引入nxapp来解决这个问题,主要通过外部数据源的方式实现数据互通,整个过程中,ES负责计划员下抛订单部分,NX负责员工产线上报部分,从而实现MES闭环系统。
安装NX,并建立一个nxapp账套,数据库最好与ES一起,这样注册外部源更容易。
安装nxbs,完成app服务器部署,默认使用88端口。
点击设计区-数据-外部数据源,注册es库,注册订单主表和明细:
创建报工单模板,定义好相关字段,勾选手机填报,订单号
设置为二维码,便于扫码识别。
定义提数,根据订单号
从es订单主表和明细提数产品明细以便报工产量。
在nx/web/img/mobile目录下放个报工单图片做图标。
将报工单发布手机端即可。
在ES管理控制台注册nxapp外部数据源,注册报工单主表明细。
在ES生产订单模板上设置提数,从nxapp报工单主表明细提取合计报工数填入已完工
字段。
员工直接通过app在线报工:
ES获得产量反馈:
使用nxapp来在线作业,硬件部分可以是手机,pda,pad,大屏幕等无线设备。
通过外部数据源实现数据对接互访。
此方案拓展后可快速转化任意ERP系统为MES级系统,例如金蝶,用友,SAP等。
2019-10-22
@新新:客户希望能够扫二维码查订单进度。
在nxt库中新建一个订单进度
查询接口
sql语句中引入一个id变量,用来代入订单号进行模糊匹配:
select top 1 工序1,实际数量1,工序2,实际数量2,工序3,实际数量3
from 工序表
where 订单号 like '%'+{id}+'%'
填个测试值,点击测试查询预览效果:
建一个poQuery.html,里面代码如下:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=0">
<title>订单进度</title>
<link rel="stylesheet" href="https://res.wx.qq.com/open/libs/weui/1.1.3/weui.min.css">
<script src="https://cdn.jsdelivr.net/npm/vue"></script>
<script src="https://cdn.jsdelivr.net/npm/axios@0.12.0/dist/axios.min.js"></script>
</head>
<body>
<div id="app">
<div class="weui-cells__title">订单进度</div>
<div v-for="item,key in data1" class="weui-cells" style="margin-top:0">
<div class="weui-cell">
<div class="weui-cell__bd">
<p></p>
</div>
<div class="weui-cell__ft"></div>
</div>
</div>
</div>
<script>
var getUrlKey = function(name){ return decodeURIComponent((new RegExp('[?|&]'+name+'='+'([^&;]+?)(&|#|;|$)').exec(location.href)||[,""])[1].replace(/\+/g,'%20'))||null; };
var app = new Vue({
el: '#app',
data: {
data1: {},
},
created: function () {
var self = this;
axios.post("http://192.168.99.20:88/api/open/getAnonymousToken", { Account: "nxt" }) // 192.168.99.20:88改成自己的服务器
.then(function (r) {
if (r.data.Code == 0) {
axios.post('http://192.168.99.20:88/api/open/getQueryData',
{ AccessToken: r.data.AccessToken, QueryName: "订单进度", InputData: JSON.stringify({id: getUrlKey("id")}) })
.then(function (res) {
self.data1 = res.data.DataList[0];
}).catch(function (err) {
console.log(err);
});
}
}).catch(function (e) {
console.log(e);
});
}
})
</script>
</body>
</html>
这里面调用了nx服务器的openApi,主要分两步,第一步获取AccessToken,第二部获取订单进度数据。
把上述页面放到webserver下,然后将完整URL制作为二维码,客户就能通过订单上的二维码扫码查询这些进度信息了。
增加样式,可定制进度风格,例如timeline模式
2019-09-27
@天涯:个税改革了,求做一个函数:salaryTax2019(本年度累计纳税所得额,本年度累计纳税)。
本年度累计纳税所得额 | 本年度累计纳税 | 本月应缴个税 |
---|---|---|
5000 | 100 | 50 |
50000 | 2000 | 480 |
在sql中建一个自定义函数,代码如下:
--2019个税
create function fGetSalaryTax2019(@Num decimal(20,2)='',@Num2 decimal(20,2)='')
returns decimal(20,2)
as
begin
declare @tax decimal(20,2)
select @tax=max(tax) from (
select @Num*0.01*3 as tax
union all select @Num*0.1-2520
union all select @Num*0.2-16920
union all select @Num*0.25-31920
union all select @Num*0.3-52920
union all select @Num*0.35-85920
union all select @Num*0.45-181920) t
return round(@tax,2)-@Num2
end
测试效果:
以NX为例,在提数时使用函数即可
填充时手填一下sql自定义函数
做个按钮执行提数,效果图:
2019-09-26
打印功能有特殊的要求,要记录打印次数,打印人,打印时间,第一次打印显示原件,其他打印显示复印件。
以nxt库的【发票识别】模板为例,实现客户的需求。
首先设置一下打印区域
定义两个字段,打印次数,打印人
模板右下角弄个EXCEL公式,当打印次数>0显示复印件
,否则显示原件
建个按钮,执行赋值+回写,并且打印sheet1
设置模板属性,关闭自带打印菜单,使用户只能用我们的自定义按钮打印
找个表单打开,只有一个自定义打印按钮,右下显示原件。
点两次打印后,右下角变成复印件,同时也完成了计数。
使用自定义按钮代替原有打印按钮。
使用报表命令记录次数和人员。
村长:勿忘国耻,最近忙于项目,博客更新不太勤快,但会抽空发一些小技巧
2019-09-18