谈谈如何在服务端阻止恶意扫描

作者 | 2017年5月29日

今天在微博上看到亚二程转发的一个帖子:

原po用了一掉小伎俩将恶意扫描的人带沟里,让人很解气。

由这个贴,顺道想到了自己对付恶意扫描的一些做法。例如本站点公开IP是47.90.50.176,恶意扫描的人一般会直接访问: http://47.90.50.176,只能得到一个恶搞的页面。达到这个效果只需两步:

  1. 新建一个站点配置文件,将其设置为默认站点,并将所有的请求都交给/usr/share/nginx/html/index.html处理。本人利用Nginx的default.conf来做,其内容如下:

    server {
    listen       80 default_server;
    listen       [::]:80 default_server;
    server_name  _;
    root         /usr/share/nginx/html;
    
    # Load configuration files for the default server block.
    include /etc/nginx/default.d/*.conf;
    
    location / {
        index index.html;
        try_files /index.html /index.html?q=tttt;
      }
    }
    
  2. 修改index.html,内容改为你想要的。例如我的是:

<!DOCTYPE html>
<html>
<head>
  <title>EL PSY CONGROO!</title>
</head>
<body>
        <h1> El psy congroo!</h1>
</body>
</html>

最开始的内容设置为“I’m Your Father!”,后来觉得太暴力太直接,就改成了中二的“El Psy Congroo!”。点击: http://47.90.50.176 可查看效果。

说完以上两个事,再谈谈为什么要阻止恶意扫描。恶意扫描是不法分子利用一些已知或公开的漏洞,批量的寻找目标主机并尝试攻击的行为。扫描基本上是撒网式、无目的性的进行,能搞定一个是一个,成本也不大。例如Flash、Struts2,SMB等漏洞,公布后就会被黑客利用,引起网络上腥风血雨。黑客利用各种PoC扫描并尝试获取权限,控制服务器后便可用作肉鸡、挖矿甚至敲诈勒索等目的。

本人是有轻微洁癖的,不喜欢在log中看到乱七八糟的东西,更不想由于未知的0day漏洞导致服务器被搞定,所以才有上述一番恶搞。

恶意扫描不可避免,我们能做的就是预防和阻止,让扫描者拿不到想要的东西,更进一步的目的是保障服务器的安全。一般而言我会采取以下措施防止恶意扫描:

  1. 无用的端口尽量关闭,设置严格的网络访问策略。使用iptables和网络安全组,仅开放必要的服务端口或者限定IP访问,其他的包一律丢弃。为了安全,本人管理的服务器都是禁ping,仅必须的端口才开放。
  2. 尽量使用非默认端口和默认用户名密码。SSH、Zabbix、RDP等端口,全部改成非默认的;使用自定义的用户名和设置复杂的强密码。80/443这类公开访问不宜修改的,采用上述恶搞的手段能缓解旁站攻击。更改默认项对批量扫描杀伤力最大,黑客批量操作的模板总是有限的,避开默认项就让脚本化攻击的代价急剧上升。
  3. 使用前端代理服务器,隐藏真实服务器IP。对外暴露的服务,在用户和真实服务器之间加LSB或者代理服务器,尽可能加大黑客寻找真实服务器IP的难度。

通过以上手段,应该能避开许多烦人的扫描,同时让你的服务器在类似“WannaCry”的攻击中幸免于难。

打赏 赞(3)
微信
支付宝
微信二维码图片

微信扫描二维码打赏

支付宝二维码图片

支付宝扫描二维码打赏

发表评论

电子邮件地址不会被公开。 必填项已用*标注