V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
devliu1
V2EX  ›  信息安全

关于个人服务器安全

  •  
  •   devliu1 · 2020-08-04 21:33:11 +08:00 · 4264 次点击
    这是一个创建于 1577 天前的主题,其中的信息可能已经有所发展或是发生改变。

    暴露在公网上的个人服务器,怎么样才能提高安全性?

    目前的办法是 port knocking + 蜜罐 + vpn 。但是 使用 port knocking 如果忘记了关怎么办😂

    想到了本地的安全软件,可以做到发起或传入连接时通过 GUI 进行控制。 服务端有什么现成的系统或者 API,可以做到一个连接传入时,通过程序控制吗(比如发邮件,邮件附带一个 url 对服务器进行控制,允许当前 IP 连入)

    30 条回复    2020-08-21 11:20:21 +08:00
    loading
        1
    loading  
       2020-08-04 21:36:57 +08:00 via Android   ❤️ 1
    端口全关,只留 ssh 禁用密码登录,基本就差不多了吧。
    loading
        2
    loading  
       2020-08-04 21:38:20 +08:00 via Android
    还有,别部署热门程序,例如帝国 cms,哈哈。
    devliu1
        3
    devliu1  
    OP
       2020-08-04 21:44:28 +08:00
    @loading 嗯,基本的安全措施还是可以做的,主要是想避免被扫
    mikeguan
        4
    mikeguan  
       2020-08-04 22:11:23 +08:00 via Android   ❤️ 1
    这个 port knocking 忘记关是什么意思? 这个不是一定时间后失效吗?是指错误的把端口扫描的 IP 加白了吗?这个好像也可以通过几个端口不同顺序来解决
    locoz
        5
    locoz  
       2020-08-04 22:14:11 +08:00 via Android   ❤️ 1
    端口全关,用 zerotier 或者是直接搞个 VPN,通过隧道的方式连上去操作。
    opengps
        6
    opengps  
       2020-08-04 22:16:40 +08:00
    白名单是个好东西
    noclin
        7
    noclin  
       2020-08-04 22:19:13 +08:00   ❤️ 1
    @mikeguan 比如我使用一个 seq 调用 iptable 开放某个 IP,可以做到让它在一定时间之后再调用 iptable 关闭访问权限吗
    noclin
        8
    noclin  
       2020-08-04 22:21:02 +08:00
    @mikeguan 看到过类似的方案,但是没有配置过
    ly4572615
        9
    ly4572615  
       2020-08-04 22:23:06 +08:00   ❤️ 1
    改端口,关密码登录,denyhosts,有固定 ip 加个防火墙,差不多了
    devliu1
        10
    devliu1  
    OP
       2020-08-04 22:30:06 +08:00
    @mikeguan 和#7 说的是一样的,我测试看看


    @opengps @ly4572615 但是问题在于需要通过一种方法动态修改白名单,和 /t/684494 说的差不多,他的做法是通过一台公网服务器主动请求修改白名单。能不能有人连接时产生一个 callback,通知用户进行添加到白名单这个操作,同时可以看到有人在尝试连接。
    updateing
        11
    updateing  
       2020-08-04 22:32:24 +08:00 via Android   ❤️ 1
    @devliu1 如果是使用 ipset 做的 port knocking 的白名单,可以用 ipset 自带的 timeout 功能实现定时解除。
    devliu1
        12
    devliu1  
    OP
       2020-08-04 22:33:06 +08:00
    @locoz 就是 VPN 之外再套一层,会不会很多余
    CallMeReznov
        13
    CallMeReznov  
       2020-08-04 22:41:37 +08:00   ❤️ 1
    通过防火墙的 API 开放你需要访问的服务器端口
    前几年做游戏的时候被人 CC 就是这样的,为了要区分正常玩家与恶意攻击代理,正常的客户端请求那个地址后会才可以正常进入,有效的过滤了一批攻击者.
    CallMeReznov
        14
    CallMeReznov  
       2020-08-04 22:42:40 +08:00
    jumpserver 或者 frp 也可以吧.
    love
        15
    love  
       2020-08-04 22:48:00 +08:00   ❤️ 2
    放心,个人 VPS 就别安全强迫症了,基本的通用软件 ssh/mail/web 服务器软件不太能被爆(除非用了弱密码),要爆也轮不到你这种没价值的
    devliu1
        16
    devliu1  
    OP
       2020-08-04 22:48:14 +08:00
    @CallMeReznov 根据上面大佬的回复,是可以通过 port knocking + iptable 做到的,frp 的话也可以使用 stcp+socks5 代理做,似乎性能有点低。

    不知道 #10 提到的能不能做到
    devliu1
        17
    devliu1  
    OP
       2020-08-04 22:50:44 +08:00
    @love 也对啊 😄确实是强迫症
    locoz
        18
    locoz  
       2020-08-04 22:55:39 +08:00 via Android
    @devliu1 #12 不是 VPN 外再套一层啊,zerotier 或 VPN,选一个😂。你现在有 VPN 就直接只留 VPN,其他端口全关就行了。
    locoz
        19
    locoz  
       2020-08-04 22:57:50 +08:00 via Android
    或者更暴力一点,通过第三方服务通知你的服务器,让它主动连接你本地的 VPN 之类的建立连接,这样就一个端口都不用开了…
    flypei
        20
    flypei  
       2020-08-04 22:59:06 +08:00
    我自己用的基本就是裸奔,只修改了 ssh 端口,其他的懒的搞。
    locoz
        21
    locoz  
       2020-08-04 23:00:11 +08:00 via Android
    还有个直接点的办法,写个程序调用云厂商的 SDK 或防火墙开启你需要的端口,并把当前本地 IP 设为白名单,然后再加上关闭和移除白名单的操作,实现一键开关 hhh 。
    CallMeReznov
        22
    CallMeReznov  
       2020-08-04 23:09:19 +08:00
    另外如果你是云平台,可以利用他们自己的防火墙
    比如阿里云,直接用 aliyuncli 工具控制安全组,要用的时候添加自己 IP 为白名单,就算不关闭也无所谓,总不可能攻击者会使用你的 IP 吧?
    xingyue
        23
    xingyue  
       2020-08-04 23:41:49 +08:00 via Android
    @locoz 请问为什么要端口全关的呢,那些没用到的端口会引起什么问题吗?看到一楼也是全关这个观点,图方便安全组全开的我开始慌了~
    jilu171990
        24
    jilu171990  
       2020-08-05 02:55:52 +08:00   ❤️ 1
    都已经是个人服务器了,如果是被攻破就会被抓的话,那最简单靠谱的就是开防火墙,只允许跳板主机访问 ssh 就结束了,其他的都是多余的举动。被攻破不会被抓的话就装个 fail2ban 就结束了
    devliu1
        25
    devliu1  
    OP
       2020-08-05 08:56:31 +08:00
    @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 监控
    takemeaway
        26
    takemeaway  
       2020-08-05 09:16:53 +08:00   ❤️ 1
    你们这些都只能防君子,有个漏洞随便入侵。
    whileFalse
        27
    whileFalse  
       2020-08-05 09:36:44 +08:00   ❤️ 1
    最简单的是在上面部署一个带密码的 ss server
    其他端口全用防火墙关掉
    devliu1
        28
    devliu1  
    OP
       2020-08-05 12:40:21 +08:00
    @takemeaway 是的,这也是为什么我发帖提问
    xfelix
        29
    xfelix  
       2020-08-19 11:11:35 +08:00
    黑客来搞你的机器也是要花时间的。所以把基础的防护做好,及时打安全补丁,避免被扫到就行。
    如果投入与产出不成比例,他们可没功夫跟你耗着。除非有其他原因被他们针对了,那再怎么防也不一定防得住。
    devliu1
        30
    devliu1  
    OP
       2020-08-21 11:20:21 +08:00
    @xfelix 哈哈 确实是一个成本博弈的事情
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1031 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 20:37 · PVG 04:37 · LAX 12:37 · JFK 15:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.