关于 linux 安全的一个想法 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
这是一个专门讨论 idea 的地方。

每个人的时间,资源是有限的,有的时候你或许能够想到很多 idea,但是由于现实的限制,却并不是所有的 idea 都能够成为现实。

那这个时候,不妨可以把那些 idea 分享出来,启发别人。
zyqf
V2EX    奇思妙想

关于 linux 安全的一个想法

  •  
  •   zyqf 2016-09-18 00:59:27 +08:00 via Android 3727 次点击
    这是一个创建于 3317 天前的主题,其中的信息可能已经有所发展或是发生改变。

    每天暴露在公网下的 vps 都被频繁的扫描,暴力破解,通常的做法是:

    • 改 ssh 端口
    • 改成密钥登录并禁用密码登录
    • 禁止以 root 身份远程登录
    • 使用 fail2ban

    前两个估计能防御绝大多数暴力破解了。

    但还是浪费脑细胞想了想,何不在 fail2ban 上添加一个功能:

    1 ,捕获那些正在干苟且之事的 IP 地址,上传至 Github 或私有云。

    2 , 下载这些 IP 数据,并屏蔽。

    以上,用的人越多,就可以收集到越多的恶意 IP ,然后 ban 之。

    17 条回复    2016-09-19 10:58:54 +08:00
    lrvy
        1
    lrvy  
       2016-09-18 01:03:48 +08:00 via Android
    gdtv
        2
    gdtv  
       2016-09-18 01:29:57 +08:00
    1 、谁做评判?如果有个居心不良的人故意提交一些“良民” IP 怎么办?
    2 、这份名单会十分巨大
    uiuy
        3
    uiuy  
       2016-09-18 01:35:18 +08:00 via Android
    东北大学貌似有一个列表,专门搜集这个
    shiji
        4
    shiji  
       2016-09-18 01:56:58 +08:00
    -A INPUT -m recent --update --seconds 28800 --name portscan --mask 255.255.255.255 --rsource -j LOG --log-prefix "Portscan BAN: "
    -A INPUT -m recent --update --seconds 28800 --name portscan --mask 255.255.255.255 --rsource -j DROP


    -A INPUT -i eth0 -p tcp -m multiport --dports 1:79,81:442,444:65535 -m recent --set --name portscan --mask 255.255.255.255 --rsource -j LOG --log-prefix "Portscan INIT: "
    -A INPUT -i eth0 -p udp -m multiport --dports 1:79,81:442,444:65535 -m recent --set --name portscan --mask 255.255.255.255 --rsource -j LOG --log-prefix "Portscan INIT: "
    -A INPUT -i eth0 -p tcp -m multiport --dports 1:79,81:442,444:65535 -m recent --set --name portscan --mask 255.255.255.255 --rsource -j DROP
    -A INPUT -i eth0 -p udp -m multiport --dports 1:79,81:442,444:65535 -m recent --set --name portscan --mask 255.255.255.255 --rsource -j DROP
    -A INPUT -m recent --remove --name portscan --mask 255.255.255.255 --rsource -j LOG --log-prefix "Portscan RMV: "

    我的 iptables 里面有差不多像这样的一段,而且至少有超过一年的数据。 来自中国南方地区机房的 IP 至少过半。
    这段规则大概就是,一旦谁不小心访问到了没开放的端口,那来自这个 IP 的所有数据就会被扔掉,知道你停止扫描一段时间后才会开放。

    但是这样有个 bug , 如果你有个类似论坛的东西,一个贱人插入了一张图片或者 XSS 我的 IP:9988/1.jpg 那么好了,所有看见这个页面的用户 IP 都直接被封了。

    为了防止 DoS ,可以把允许 80 443 的规则放在这些前面。
    zyqf
        5
    zyqf  
    OP
       2016-09-18 06:33:02 +08:00 via Android
    @gdtv
    1 ,收集数据,筛选出现次数大于一定值的 IP ,可以防止提交恶意数据,当然,数据样本要够大。

    2 ,记录两个值,一个是 IP ,一个是出现次数,可设置屏蔽>n (出现次数)的 IP ,再者可以简化 IP 数据。
    zyqf
        6
    zyqf  
    OP
       2016-09-18 06:41:59 +08:00 via Android
    感觉这个有点激进了,之前也看到 3 句 iptables 规则,说是尝试登录失败 3 次就屏蔽自定义时间。
    loading
        7
    loading  
       2016-09-18 07:12:07 +08:00 via Android
    fail2ban 已经足够了,如果加上楼主你的数据库,被拖垮的是自己的服务器, ip 数据库查询太费时间了。
    zyqf
        8
    zyqf  
    OP
       2016-09-18 07:54:09 +08:00 via Android
    @loading 不查询数据库啊,直接用 iptables 屏蔽这些 IP
    loading
        9
    loading  
       2016-09-18 08:29:48 +08:00 via Android
    @zyqf iptables 也有查询配的过程。而且这个库,很容易误杀很多 ip ,时间长了,很多 ip 废弃了。
    cctvsmg
        10
    cctvsmg  
       2016-09-18 08:37:07 +08:00
    这个确实可以做,但是大部分人懒得写代码,所以更想在 v2 发水帖
    php7
        11
    php7  
       2016-09-18 08:47:49 +08:00
    没有必要多此一举
    一个启用密钥、改端口禁 root 、密码登陆就很安全了
    再个 linux 可以直接封掉密码错误 N 次的 ip ,一次只能链接几个
    这样一套下来想破解已经很难了
    服务器安全除了弱密,一般集中在程序和软件,所以精简并用更安全的程序
    及时打补丁,更新服务器才是正道
    何须你这样大费周章

    你这种思路封一些广告评论才更合适
    但已经有人在这么做了,而且做的很好
    YvesX
        12
    YvesX  
       2016-09-18 09:18:17 +08:00 via iPhone
    就算性能上可行,按照楼主的说法,这个黑名单是只进不出的。
    最后的效果是,对于动态 IP 来说,可连接性完全看脸。
    gimp
        13
    gimp  
       2016-09-18 09:57:08 +08:00   1
    3L 说的东北大学网络威胁黑名单 http://antivirus.neu.edu.cn/scan/
    su8610
        14
    su8610  
       2016-09-18 10:51:35 +08:00 via Android
    我写了一句 crontab,定期检查 secure log 里的 failed 记录,截出 ip 写到 hosts.deny 里去
    laydown
        15
    laydown  
       2016-09-18 13:32:53 +08:00
    给 vps 上加一个 Google 的两步验证就好了,用密码登录也安全。
    Srar
        16
    Srar  
       2016-09-19 01:05:53 +08:00
    魔改成 UDP 通讯即可
    douyang
        17
    douyang  
       2016-09-19 10:58:54 +08:00
    一招搞定: hosts.allow hosts.deny 限制可远程登陆的 IP 地址
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2857 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 08:29 PVG 16:29 LAX 01:29 JFK 04:29
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86