window 云服务器如何防止被黑被勒索

2023-05-07 10:30:10 +08:00
 tohert
我写 c#的,用的 window 服务器,部署到 iis 上,数据库用的 sqlserver 。现在服务器的远程端口 3389 和数据库端口 1433 我都改了,没有用默认的了。 然后打开了 window 的安全中心。没有做其他的设置了。

最近在事件查看器里面查看,总有不同的 ip 尝试登录 sqlserver (事件 id:18456 )和远程连接(事件 id:4625),我不知道怎么去防范和禁止这些行为,云服务器的防火墙我只设置了几个特定端口。

现在每天都要进服务器看下,生怕被黑了被勒索。 年初的时候服务器开的默认端口就被黑过 。。。
3368 次点击
所在节点    服务器
42 条回复
crab
2023-05-07 16:49:14 +08:00
事件查看器日志有记录被扫描很正常啊,或者直接 ipsec 设置白名单 IP 段才响应。
serialt
2023-05-07 16:52:20 +08:00
我自己 linux 开发服务器的安全方案,只暴露 openvpn 的端口,其他任何访问都只能通过使用 openvpn 接入
serialt
2023-05-07 16:55:47 +08:00
除非有能力黑掉 openvpn 或者云,否则基本不用担心
justjy
2023-05-07 18:04:52 +08:00
@tohert IP 不固定的话可以每次 RDP 前更新防火墙规则的 IP 数据库端口开放在外网上 安全风险极高
justjy
2023-05-07 18:10:38 +08:00
@tohert 企业级解决方案是只开放提供服务的端口如 80 443 类似 RDP 3389/MSSQL 1433 这种运维端口一律不对外 只能通过内网访问(自行组网)
deorth
2023-05-07 18:11:54 +08:00
雇个运维
exploreexe
2023-05-07 18:40:19 +08:00
主要是 Windows 的漏洞太多,特别是 sqlserver 简直是重灾区。
尽量的远程连接,只开放 443 和 80
会有人批量的扫 IP 段尝试弱口令
unclemcz
2023-05-07 18:43:36 +08:00
@tohert #18 我现在也是本地无固定 ip ,每次运维前我会通过云服务商的 web 端进去调整白名单,然后运维机再连进去,虽然麻烦,但和风险相比,这种麻烦可以接受,再者运维次数没那么频繁,实际上这几年下来感觉还好。
Felldeadbird
2023-05-07 19:16:51 +08:00
只开放 80 和 443. 别的端口通过云内网,或者端口映射,或者防火墙白名单规则临时开放。
geekzu
2023-05-07 19:29:23 +08:00
楼上都说的差不多了,补充一下:
绝大部分类型的运维访问( RDP 、SSH 、数据库)都可以通过堡垒机中转,开源的可以看下 JumpServer ,商业的很多,就不列举了。
JumpServer 开源版对数据库类型支持的比较少,MSSQL 这种情况可以在云上跑个 SSH 服务,DBeaver 之类的数据库运维工具都支持 SSH 代理连接数据库的,走 SSH 会安全不少。
zhandouji2023
2023-05-07 19:35:46 +08:00
我有个 Ubuntu 当共享文件,root 密码是 1 兄弟单位的电脑也能访问,还好家里访问不了。应该不是公网 ip
onice
2023-05-07 20:47:33 +08:00
网络空间中存在大量扫描器。你改了端口为非默认端口,也会收到扫描的流量,所以你能看到日志。这是正常的,不必紧张,为了防御暴力破解,设置一个强密码即可。

应用是 C#开发的,服务器系统是 Windows ,Web 中间件是 IIS ,数据库是 sqlserver 。根据这些条件,可以采用最小权限原则对系统和应用进行加固。

1. 确保 C#开发的系统没有漏洞。如果你是开发的 web 应用,要确保没有 SQL 注入,上传漏洞等。大公司做这块,会找代码审计人员进行审计,或者是找渗透测试人员进行漏洞挖掘。这一点,如果自己来做安全的话,可以通过 awvs 进行扫描,百度上有 crarck 。这一步,是保障部署的应用安全。

2. Windows 系统,一定要确保开启自动更新。部署应用前,应当先打上所有补丁。这一步是保障操作系统的安全。

3. 对于 IIS 中间件,要进行安全加固,关闭不必要的组件,采用最小化组件原则,即开发的应用用到什么就开什么,不要图方面把所有组件全部打开。这一步,核对安全基线进行加固即可。
参考文档: https://download.wanglejie.com/CyberSecurity/目录下的 IIS 服务器安全配置基线文档。

4. sqlserver 数据库,需要做两件事,一是检查数据库服务的权限,运行数据库进程的账户必须是普通用户,就是打开系统的服务管理,确保数据库的服务不是以管理员或 system 用户启动。第二个就是数据库必须是强口令,以及网站配置文件中的数据库连接用户不能用 sa ,应该用普通用户,且该用户只对 web 应用用到的数据库有访问权限。例如我部署网站创建了一个 app 数据库,那么我需要建立一个普通用户并设置复杂的密码,让这个普通用户的权限只能操作 app 这个库。然后网站的配置文件中,使用这个普通用户。

以上便是针对你实际情况的安全方案。
yzy8788
2023-05-07 21:55:21 +08:00
1 、免费开源的 OpenVPN ,可以把服务器和本地电脑搭建成局域网,然后服务器上的数据库端口只对这个局域网 IP 开放
2 、web.config 里面的数据库连接字符串一定要加密,否则 web 被黑,直接看到数据库密码了,太危险
yzy8788
2023-05-07 22:04:19 +08:00
OpenVPN 搭建后,本地电脑和服务器就是一个局域网。服务器上的所有端口无需设置,对局域网机器默认都是开放的。在阿里云(假如用的是阿里云机器)后台,云服务器的安全组里不要开放 1433 (即 sqlserver 的端口)。这样公网是无法连接到 1433 端口的。VPN 是很多网络公司都会用的做法,比如大学、快递公司、医院、保险公司等等
tohert
2023-05-07 22:23:10 +08:00
感谢各位大佬的解答,小弟不胜感激。各位大佬说的很详细,我会结合自身的情况做一些调整。 再次感谢!
joynvda
2023-05-07 23:05:35 +08:00
个人尝试用 Fail2ban 阻止 IP 访问 Linux 。没有在 win 上试过 Fail2ban 。

可以做一个蜜罐接收 3389 端口的请求。任何试图连接这个端口的 IP 自动放到黑名单。
Fail2ban 还是比较笨,逐个 IP 放到 iptables 上。为了避免表太大,我只是放到黑名单 24 小时解封。
不能杜绝扫描、尝试,只是大大地提高短时间系统被攻破的机会。
billccn
2023-05-08 04:12:13 +08:00
等下一个 RDP 或者 MSSQL 缓冲器溢出漏洞出来,楼主的机器毫秒被爆,到时候全世界都能登进楼主的服务器,除了楼主自己,就不要说数据了

Windows Server 的话,防火墙里把 RDP 设成只有 localhost 可以访问,然后安装自带的 Remote Desktop Web Access 角色(通过 IIS 代理 RDP 访问),这样的话只需要 443 端口。这个有现成文档,照着配置就可以。还可以在外面套一个 CDN 或者应用防火墙,把绝大多数自动扫描拒之门外。

SQL Server 的话也只开给 localhost ,每次需要调试了先 RDP 进去,把自己的 IP 临时加入防火墙允许 IP 列表
Chad0000
2023-05-08 04:14:56 +08:00
我也写 C#,windows 建议你使用云提供的防火墙,只开 80 和 443 ,远程桌面和数据库端口改掉,同时在云防火墙里面设置 IP 白名单访问。每次登录前检查自己的 IP 并上云加到防火墙里。

我之前一直这样做,直到我家变成了固定 IP (公司福利),就爽多了。
WindProtect
2023-05-08 09:27:35 +08:00
我们也是 ip 无固定,然后脚本监听 ip 变化,每次一变化就更新下云服务的所有白名单。
p1gd0g
2023-05-08 10:49:33 +08:00
公司的方案是 vpn 后当成内网使用。但是个人的话搞这么些东西可能划不来。密码搞复杂点我感觉就足够了,怕勒索就加备份呗,成本又不高

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/937991

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX