V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
userlol
V2EX  ›  程序员

服务器 80 端口天天被人扫,无奈,求指教

  •  
  •   userlol · 2018-05-18 13:59:36 +08:00 · 5793 次点击
    这是一个创建于 2141 天前的主题,其中的信息可能已经有所发展或是发生改变。

    服务器躲在 CloudFlare 后面的,每天各种不正经请求都有:

    HEAD http://101.122.123.71/check_p*o*y
    GET /HNAP1/ HTTP/1.1
    \x43\x12\xa1\x0c
    GET /robots.txt

    等等等等,UserAgent 更是不计其数,国内外来自全世界的 IP 都有,处理这些东西真的累。

    fail2ban 这种亡羊补牢型不喜欢,有没有什么可以防患于未然型的解决方案呢,求推荐。

    用的是 nginx,现在想法是给 nginx 设置 UserAgent 白名单,不在白名单以外的 UA 以及非 HTTP 请求一律不相应,不知道有这种插件吗?

    另外求一下大家觉得好的 nginx 配置相关的实体书,谢谢

    第 1 条附言  ·  2018-05-18 19:51:19 +08:00
    沉了吧这帖子,我知道 ssh dns 这些常用端口被扫是正常的,暴破也是可能的。需要直连这台机器,所以 iptables 白名单 CF IP 不可行,fail2ban 这种亡羊补牢的也不合适(后期需要处理 nginx 的 log)。目前看的两个方案:一个是 abuseipdb 的服务,但他们家没提供数据库下载,只有个 API 目前还不知道怎么整合到 nginx 中;第二个方案是类似 port knocking 的思路,因为访问的 client 的 User Agent 差不多是固定的,所以根据 UA 来控制可以,但是没有找到有合适的插件( UA 不对直接不响应,而不是返回 404/403 这种。)
    (服务器只开放给特定人群,所以并不在乎封锁所造成的体验问题,还是考虑安全第一,感谢提出以上建议的几位)
    40 条回复    2018-05-22 17:45:14 +08:00
    zktz
        1
    zktz  
       2018-05-18 14:03:51 +08:00 via Android
    这个对你没什么影响吧
    745839
        2
    745839  
       2018-05-18 14:07:26 +08:00
    有什么可处理的?楼主刚接触网络吗?网络上 24 小时不间断的有肉鸡在扫描各个服务的端口,各服务的弱口令。
    whypool
        3
    whypool  
       2018-05-18 14:08:45 +08:00
    正常操作,没啥大惊小怪的
    miyuki
        4
    miyuki  
       2018-05-18 14:13:42 +08:00 via Android
    没啥大惊小怪的,爬虫和各种各样的爆破太多了
    userlol
        5
    userlol  
    OP
       2018-05-18 14:13:43 +08:00
    @745839 @whypool @zktz
    nginx 日志需要定期做处理(不是我来做),目前我只能把不正常请求里面规则的请求用程序过滤掉,其它极个别的请求手动删掉

    如果大家没有什么好的解决方案的话求 nginx 配置书籍推荐,谢谢大家
    skylancer
        6
    skylancer  
       2018-05-18 14:17:14 +08:00
    WAF
    zsdroid
        7
    zsdroid  
       2018-05-18 14:20:14 +08:00
    防患于未然型的解决方案??很简单啊,把服务器搭建在局域网就好了。
    Greenm
        8
    Greenm  
       2018-05-18 14:27:39 +08:00
    既然放在公网那就要做好被全世界访问的准备。

    就算你把奇怪的 useragent 全都过滤掉了,剩下的一样有机器扫描。
    Shirakawa
        9
    Shirakawa  
       2018-05-18 14:27:58 +08:00
    if ($http_user_agent ~* (curl|bot|Python|sql|php)) {
    return 403;
    }
    userlol
        10
    userlol  
    OP
       2018-05-18 14:29:55 +08:00
    @Shirakawa 感谢,看到过类似写法,能否让 nginx 不响应对方请求呢?
    hcymk2
        11
    hcymk2  
       2018-05-18 14:36:40 +08:00
    @userlol
    那你还是用 iptables 吧
    Shirakawa
        12
    Shirakawa  
       2018-05-18 14:36:56 +08:00
    把 403 改成 444 ?
    745839
        13
    745839  
       2018-05-18 14:37:28 +08:00
    等你看到扫描你的 22 或者 3389 你是不是又无奈了?
    等你看到盲注是不是又无奈了?
    等你看到 wget web.rar/wwwroot.rar/www.rar 是不是又无奈了?
    网络上充斥着各种各样的扫描爆破嗅探
    ifaii
        14
    ifaii  
       2018-05-18 14:49:20 +08:00 via iPhone
    正常操作 不要慌
    qf19910623
        15
    qf19910623  
       2018-05-18 14:54:29 +08:00   ❤️ 1
    你在街边造了一栋房子,你可以给门加锁不让人进来,但是你阻止不了路人跑来敲门
    giuem
        16
    giuem  
       2018-05-18 14:57:49 +08:00 via iPhone
    就不能设置只允许 CloudFlare 的 IP 访问
    Lanke0
        17
    Lanke0  
       2018-05-18 14:58:15 +08:00
    @qf19910623 搞个围墙
    Phariel
        18
    Phariel  
       2018-05-18 15:00:25 +08:00 via iPhone
    @Lanke0 围墙不就是 fail2ban 么 楼主并不想用。。。
    cjpjxjx
        19
    cjpjxjx  
       2018-05-18 15:04:25 +08:00 via Android
    就像你走在大街上,你是无法避免各种各种的人看你的,只要别人不打你不碰你,那就随他去看呗,想要不被人看,那就把自己锁在家里(关闭所有进出端口)
    TheKiller
        20
    TheKiller  
       2018-05-18 15:12:27 +08:00
    仅允许 CloudFlare 的 IP 段访问
    hymzhek
        21
    hymzhek  
       2018-05-18 15:12:30 +08:00
    关了 只开 443
    nicevar
        22
    nicevar  
       2018-05-18 15:50:50 +08:00
    80 端口你都不想给人扫那你开这个端口干啥?
    hangzhoupm
        23
    hangzhoupm  
       2018-05-18 15:54:36 +08:00
    屏蔽 80 端口
    affyun
        24
    affyun  
       2018-05-18 15:58:27 +08:00 via Android
    赶紧关机保平安
    Hopetree
        25
    Hopetree  
       2018-05-18 16:15:34 +08:00
    user-agent 伪装这么容易,你设置这个白名单根本没用,IP 也可以代理,但是如果你发现大量来自同一个 IP 的请求倒是可以先屏蔽 IP
    kennylam777
        26
    kennylam777  
       2018-05-18 16:21:54 +08:00   ❤️ 1
    Felldeadbird
        27
    Felldeadbird  
       2018-05-18 17:01:38 +08:00
    我觉得楼上说得的都不靠谱。
    楼主把 nginx 的 listen 80; 改成 listen 801; 。
    妥妥以后没人扫了!
    annielong
        28
    annielong  
       2018-05-18 17:03:50 +08:00
    以前用友弱密码刚开放公网访问不到 5 分钟,密码就被改了,还好数据没有被删
    15vnetwork
        29
    15vnetwork  
       2018-05-18 17:11:25 +08:00
    我的服务器 80 也是天天给人扫描, 不过你开放 80 端口就是给人访问的. 封 IP 也不是终极解决办法, 扫描我服务器的 IP 地址天天都在变, 而且封 IP 有可能会影响用户体验, 只要你的服务器没有什么漏洞, 就不要怕
    aiseo
        30
    aiseo  
       2018-05-18 17:12:20 +08:00   ❤️ 1
    <img src="https://i.loli.net/2018/05/18/5afe98c91517f.png" alt="QQ 截图 20180518181056.png" title="QQ 截图 20180518181056.png" />

    不知道适合楼主吗
    nullen
        31
    nullen  
       2018-05-18 17:16:28 +08:00
    @userlol return 444
    aiseo
        32
    aiseo  
       2018-05-18 17:16:44 +08:00
    afpro
        33
    afpro  
       2018-05-18 17:17:11 +08:00
    这个还守规矩的先取了你的 robots.txt 你还想怎样啊。。。。。。
    aiseo
        34
    aiseo  
       2018-05-18 17:18:04 +08:00
    歪个楼,v2 怎么贴图。。。。
    thynson
        35
    thynson  
       2018-05-18 17:19:36 +08:00
    这位同学怕是对 Web 服务有什么误解
    wly19960911
        36
    wly19960911  
       2018-05-18 19:56:08 +08:00 via Android   ❤️ 1
    @aiseo 用微博和 imgur 的图库,chrome 下载一个 V2EX 的扩展就可以很方便玩了
    HarrisonZ
        37
    HarrisonZ  
       2018-05-18 20:34:26 +08:00
    waf
    wezzard
        38
    wezzard  
       2018-05-19 11:56:36 +08:00
    你可以自己寫一個腳本讓服務器啓動的時候自動添加 CloudFlare 的 IP 地址進白名單。如果你是 FreeBSD + ipfw 的話我可以提供一個範例。
    matsuz
        39
    matsuz  
       2018-05-19 12:55:50 +08:00
    可以只对限定的 Host 提供服务,请求其他 Host 的一律让 NGINX 返回 444 断开连接,按理来说这样只要不是定向爬虫都可以过滤掉了
    realpg
        40
    realpg  
       2018-05-22 17:45:14 +08:00
    @afpro #33
    很多 bot 取你 robots.txt 是为了看你都有啥目录 并不是为了遵守
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   948 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 21:29 · PVG 05:29 · LAX 14:29 · JFK 17:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.