前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >可爱可恨的扫描程序 Censys

可爱可恨的扫描程序 Censys

作者头像
Shiroka
发布2022-04-28 15:31:34
6.1K1
发布2022-04-28 15:31:34
举报
文章被收录于专栏:pwpw

刘慈欣说过,技术本身并没有善恶,只是人性的放大器。而从 Censys 这种扫描程序背后,我看到的人性更多是恶,只因为它轻而易举地就把你煞费苦心隐藏的信息全部公开了出来。

Censys、Shodan 等等扫描程序在网络安全大佬看来,自然是掌上明珠。但对于更多的程序员、站长甚至云厂商而言,应该是个不折不扣的撒旦。“CDN 我用上了,高防 IP 也花了我不少钱,可为什么服务器总是那么不争气”可能是曾经饱受 Censys 折磨的每一个人共同的经历。Censys 降低了发动网络攻击的成本,让那些囊中羞涩的脚本小子也敢对你的邮箱发送勒索信。

我初识 Censys 是在一个讨论 CloudFlare 的技术群里。然而,这个群里的一部分人却总是在讨论如何发现隐藏在 CloudFlare CDN 之下的源站地址。发动 DDoS 攻击?不行,CloudFlare 的防护能力实在太过强大;投诉侵犯版权?也不行,CloudFlare 只会转发投诉给源站提供商,最多暂停提供服务,但就是不给你源站。各种歪门邪道都提了一遍,才看到有人发:“要不用 Censys 试试看?”结果一搜一个准。

我想,你点进来的目的,应该是为了学习如何减轻 Censys 这种东西对你服务器的影响,比如泄露源站 IP 地址、暴露 SSH 端口。那废话不多说,我们开始。

我仅以一个网络安全三脚猫的身份撰文,本文内容也仅适用于 Linux 与 Nginx ,因此以下方法仅供参考。

Nginx 默认站点

请单独创建一个子目录并设置为默认站点,就像这样

你需要把默认的前几行配置文件改成这样

代码语言:javascript
复制
server
{
  listen 80 default_server;
	listen 443 ssl http2 default_server;

并且,你应该为它添加一张自签名的 SSL 证书,但证书内不应包含任何与域名、IP 相关的信息,包括但不限于 CommonName、EmailAddress。至于为什么。

这么做的目的,是为了有些别有用心的人在访问 https://ip 的时候暴露本不应出现的证书信息。

防火墙

屏蔽 IP

Censys 在 Opt Out of Scanning 中给出了他们用于扫描的 IP 段。因此,你只需要在服务器内运行 iptables 或 firewalld 等命令,或者在服务器后台控制面板处屏蔽如下 IP 即可:

代码语言:javascript
复制
162.142.125.0/24
167.94.138.0/24
167.94.145.0/24
167.94.146.0/24
167.248.133.0/24
192.35.168.0/23
2620:96:e000:b0cc:e::

但是,Censys 并不会因此而删除已被记录的数据。如果你已经在 Censys 上发现了有关你服务的信息,请先更换公网 IP 后再这么做。

屏蔽 UA

Censys 也给出了用于扫描的 User Agent,请屏蔽它。你可以创建一个 block_censysua.conf 的文件:

代码语言:javascript
复制
if ($http_user_agent ~ "Mozilla/5.0 (compatible; CensysInspect/1.1; +https://about.censys.io/)")
{
     return 418;
}

然后在 nginx.confserver 或者 location 中引用它

代码语言:javascript
复制
include  block_censysua.conf;

开放端口

我曾经看到很多新手一拿到服务器就 iptables -P INPUT ACCEPT 一把梭,甚至还有 apt-get purge netfilter-persistent,这是极不推荐的。请按需开放端口,如果你要建站,那么除了 80 443 端口,剩下的只需要开放你的 SSH 端口就可以了。如果你只用 VNC 登录,那 SSH 端口甚至都可以不开放。

另外,如果你使用了宝塔面板,请一定要修改默认登录端口 8888 ——因此受害的人不在少数。

DNS

如果你前边的措施都还没做,就已经为域名解析好了源站的 IP,请赶快删除解析。不少扫描解析记录的网站也会暴露你的源站地址,甚至都不需要 Censys 出场。

另外,请使用具有一定攻击防护能力的 DNS。很多人以为自己的服务器已经固若金汤了,可 DNS 一被攻击,网站照样站不起来。

那 DNS 怎么解析?看下一小节。

CDN 与高防 IP

用好 CDN,进可加速,退可防护。高防 IP 同理,其实都是起到一个代理和转发的作用。如果预算充足,不要吝啬,为你所有的子域名都用上 CDN。有时候往往就是一个没有使用 CDN 的子域名暴露了你的源站地址。

网站托管

把网站托管分到 CDN 下,说对也不对。网站托管,比如腾讯云 Webify 和各种云厂商对象存储中的静态网站托管服务,都能为你的网站提供强大的源站基础,毕竟 SLA 放在那里,被攻击了也不会停,流量相比业务正常运行,又能贵到哪里去呢?

不对的,是在于如果你想全量把网站搬到网站托管平台,那就必须是静态站,很多只有动态网站才能实现的功能也会因此受限。

如果你想找三流小公司提供的那些企业官网、个人笔记代搭建,那只好自求多福了。

SSL

请尽量签发通配符证书,比如 *.princewen.com ,而不是为 ww1.princewen.com ww2.princewen.comww3.princewen.com 分别签发三张证书。你签发了哪些证书,在 crt.sh 可是全都能查到的。

image.png

另外,如果你在开头的 nginx 默认站点 那里选择使用自签证书,那么证书链内一定不要包含任何与域名、IP 有关的内容,censys 的扫描细度会让你意想不到。

为了安全,截图中的数据已被编辑

image.png

日常该做的

日志

定期查看 Nginx 日志,发现可疑的 IP 或访问路径时,请按照 屏蔽 IP 直接屏蔽,免得日后生事。

不留联系方式

如果有人使用 Censys 等扫描程序是为了攻击你,那么最终目的往往离不开钱。不留联系方式,攻击者不知道如何勒索你,甚至你也不知道该怎样被勒索。

少去检测网站

检测网站往往会为你的每一次测试进行排行,而这就正好为攻击者提供了名单。更有甚者,会公布一些除了你没人知道的子域名,比如 myssl.com

君子协定

如果你采取了以上所有的措施,却仍然没有任何效果的话,humans.txt 和 robots.txt 可能会成为你感化攻击者的唯一方式。

报警

如果你的网站完成了 ICP 备案,且使用的是中国境内的服务器,请不要怜悯对面,警察叔叔更不会,即使攻击的流量并不大。

这会是最后一道防线。

我的博客即将同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=1hfr53h7bhvim

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-02-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Nginx 默认站点
  • 防火墙
    • 屏蔽 IP
      • 屏蔽 UA
        • 开放端口
        • DNS
        • CDN 与高防 IP
          • 网站托管
          • SSL
          • 日常该做的
            • 日志
              • 不留联系方式
                • 少去检测网站
                • 君子协定
                • 报警
                相关产品与服务
                内容分发网络 CDN
                内容分发网络(Content Delivery Network,CDN)通过将站点内容发布至遍布全球的海量加速节点,使其用户可就近获取所需内容,避免因网络拥堵、跨运营商、跨地域、跨境等因素带来的网络不稳定、访问延迟高等问题,有效提升下载速度、降低响应时间,提供流畅的用户体验。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档