暴露在公网上的个人服务器,怎么样才能提高安全性?
目前的办法是 port knocking + 蜜罐 + vpn 。但是 使用 port knocking 如果忘记了关怎么办😂
想到了本地的安全软件,可以做到发起或传入连接时通过 GUI 进行控制。 服务端有什么现成的系统或者 API,可以做到一个连接传入时,通过程序控制吗(比如发邮件,邮件附带一个 url 对服务器进行控制,允许当前 IP 连入)
1
loading 2020-08-04 21:36:57 +08:00 via Android 1
端口全关,只留 ssh 禁用密码登录,基本就差不多了吧。
|
2
loading 2020-08-04 21:38:20 +08:00 via Android
还有,别部署热门程序,例如帝国 cms,哈哈。
|
4
mikeguan 2020-08-04 22:11:23 +08:00 via Android 1
这个 port knocking 忘记关是什么意思? 这个不是一定时间后失效吗?是指错误的把端口扫描的 IP 加白了吗?这个好像也可以通过几个端口不同顺序来解决
|
5
locoz 2020-08-04 22:14:11 +08:00 via Android 1
端口全关,用 zerotier 或者是直接搞个 VPN,通过隧道的方式连上去操作。
|
6
opengps 2020-08-04 22:16:40 +08:00
白名单是个好东西
|
7
noclin 2020-08-04 22:19:13 +08:00 1
@mikeguan 比如我使用一个 seq 调用 iptable 开放某个 IP,可以做到让它在一定时间之后再调用 iptable 关闭访问权限吗
|
9
ly4572615 2020-08-04 22:23:06 +08:00 1
改端口,关密码登录,denyhosts,有固定 ip 加个防火墙,差不多了
|
10
devliu1 OP |
11
updateing 2020-08-04 22:32:24 +08:00 via Android 1
@devliu1 如果是使用 ipset 做的 port knocking 的白名单,可以用 ipset 自带的 timeout 功能实现定时解除。
|
13
CallMeReznov 2020-08-04 22:41:37 +08:00 1
通过防火墙的 API 开放你需要访问的服务器端口
前几年做游戏的时候被人 CC 就是这样的,为了要区分正常玩家与恶意攻击代理,正常的客户端请求那个地址后会才可以正常进入,有效的过滤了一批攻击者. |
14
CallMeReznov 2020-08-04 22:42:40 +08:00
jumpserver 或者 frp 也可以吧.
|
15
love 2020-08-04 22:48:00 +08:00 2
放心,个人 VPS 就别安全强迫症了,基本的通用软件 ssh/mail/web 服务器软件不太能被爆(除非用了弱密码),要爆也轮不到你这种没价值的
|
16
devliu1 OP @CallMeReznov 根据上面大佬的回复,是可以通过 port knocking + iptable 做到的,frp 的话也可以使用 stcp+socks5 代理做,似乎性能有点低。
不知道 #10 提到的能不能做到 |
18
locoz 2020-08-04 22:55:39 +08:00 via Android
@devliu1 #12 不是 VPN 外再套一层啊,zerotier 或 VPN,选一个😂。你现在有 VPN 就直接只留 VPN,其他端口全关就行了。
|
19
locoz 2020-08-04 22:57:50 +08:00 via Android
或者更暴力一点,通过第三方服务通知你的服务器,让它主动连接你本地的 VPN 之类的建立连接,这样就一个端口都不用开了…
|
20
flypei 2020-08-04 22:59:06 +08:00
我自己用的基本就是裸奔,只修改了 ssh 端口,其他的懒的搞。
|
21
locoz 2020-08-04 23:00:11 +08:00 via Android
还有个直接点的办法,写个程序调用云厂商的 SDK 或防火墙开启你需要的端口,并把当前本地 IP 设为白名单,然后再加上关闭和移除白名单的操作,实现一键开关 hhh 。
|
22
CallMeReznov 2020-08-04 23:09:19 +08:00
另外如果你是云平台,可以利用他们自己的防火墙
比如阿里云,直接用 aliyuncli 工具控制安全组,要用的时候添加自己 IP 为白名单,就算不关闭也无所谓,总不可能攻击者会使用你的 IP 吧? |
23
xingyue 2020-08-04 23:41:49 +08:00 via Android
@locoz 请问为什么要端口全关的呢,那些没用到的端口会引起什么问题吗?看到一楼也是全关这个观点,图方便安全组全开的我开始慌了~
|
24
jilu171990 2020-08-05 02:55:52 +08:00 1
都已经是个人服务器了,如果是被攻破就会被抓的话,那最简单靠谱的就是开防火墙,只允许跳板主机访问 ssh 就结束了,其他的都是多余的举动。被攻破不会被抓的话就装个 fail2ban 就结束了
|
25
devliu1 OP @locoz
@CallMeReznov 动态修改防火墙,iptable 和云服务器 API 其实都可以做到。我还是想找找能不能在建立连接时,产生一个 callback 给我的脚本,我的脚本再发送邮件,让我可以感知到有人在尝试建立连接,并远程修改白名单。攻击者使用我的 IP 确实也不现实。 @flypei @xingyue 舍弃便利去换取一点点安全感吧 @jilu171990 把 fail2ban 忘记了,那基本上是可以了 总结一下, 1. ipset + iptable 做 port knocking 。 或者通过另一个服务器以某种形式动态调用 iptable 或云服务器 API 2. VPN / zerotier / frp (stcp + socks) / jumpserver 3. fail2ban 监控 |
26
takemeaway 2020-08-05 09:16:53 +08:00 1
你们这些都只能防君子,有个漏洞随便入侵。
|
27
whileFalse 2020-08-05 09:36:44 +08:00 1
最简单的是在上面部署一个带密码的 ss server
其他端口全用防火墙关掉 |
28
devliu1 OP @takemeaway 是的,这也是为什么我发帖提问
|
29
xfelix 2020-08-19 11:11:35 +08:00
黑客来搞你的机器也是要花时间的。所以把基础的防护做好,及时打安全补丁,避免被扫到就行。
如果投入与产出不成比例,他们可没功夫跟你耗着。除非有其他原因被他们针对了,那再怎么防也不一定防得住。 |