设为首页收藏本站

简体中文 繁體中文 English 日本語 Deutsch 한국 사람 بالعربية TÜRKÇE português คนไทย Français

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 527|回复: 56

做一个永不暴露真实IP的网站,防止DDoS

[复制链接]

4

主题

139

回帖

296

积分

中级会员

积分
296
发表于 2020-10-14 21:09:04 | 显示全部楼层 |阅读模式
本帖最后由 tlanyan 于 2020-10-14 21:10 编辑
"


防范DDoS攻击最主要的手段是加钱上高防,同时隐藏网站真实IP。前文 隐藏网站的真实ip 简要介绍了网站隐藏真实ip的基本操作,但不够详细和深入。本文详细介绍几种网站隐藏真实ip的方法和优缺点,让你能真正做一个永不暴露真实IP的网站。

做一个永不暴露真实IP的网站

既然不想暴露网站的真实IP,那么真实服务器前面至少套一层代理。一般来说,位于最前线的反向代理主要有如下几种:

  • CDN:内容分发网络,就近为用户提供服务,加速访问;
  • 高防IP:高防IP一般位于大带宽的骨干网节点上,用于清洗DDoS流量;
  • SLB:负载均衡器,用在大流量、繁忙的网站上,常见的SLB有LVS、F5等。


    这三种反向代理主要作用不一样,配置好的情况下都能隐藏服务器真实IP。对于普通的网站,使用CDN或者高防就足够,业务量的情况下才会用到SLB。

    下面介绍使用了反向代理的情况下,隐藏网站真实IP的操作。

    防火墙

    使用防火墙是最简单的做法,即:将反向代理的回源IP加入白名单,屏蔽其他IP的任何请求。

    例如使用CloudFlare的免费CDN服务,其回源IP可从 https://www.cloudflare.com/zh-cn/ips/ 获取,然后将其加入白名单,同时屏蔽其他IP:

    [ol]
  • # 将cf ip地址放在 cf_ips.txt
  • # 首先将cf的ip加入白名单
  • while read -r line
  • do
  •   firewall-cmd --zone=trusted --add-source=$line
  • done 复制代码

    经过上述设置,Cloudflare 的IP能正常访问,其他IP完全无法访问真实ip的网站服务器,很好的隐藏了真实IP。

    该方法设置简单,适用于服务器托管单站点的情形。当服务器上托管多个网站,并且某些站点需要直接暴露外网时,这种做法缺乏灵活性,无法实现。

    也可以通过Nginx的allow/deny指令达到相同效果

    IPv6

    对于防火墙和网络不熟悉的网友,可以考虑使用IPv6来隐藏网站的真实IP。具体操作为:

    1.找一台有IPv6地址的服务器,只有IPv6的NAT VPS更好。目前IPv6地址正在普及中,许多商家都免费提供IPv6地址,例如 一些VPS商家整理 中的 阿里云、Vultr、Linode、CloudCone,有的还提供不止一个IPv6地址;

    2. 设置网站只监听IPv6端口。以Nginx为例,网站配置文件形如:

    [ol]
  • server {
  •     listen [::]:80;
  •     server_name 主机名; # 请改成自己的主机名
  •     return 301 https://主机名$request_uri;
  • }
  • server {
  •     listen      [::]:443 ssl http2;
  •     server_name  主机名;
  •     ssl_certificate 证书路径;
  •     ssl_certificate_key ssl密钥路径;
  •     # 其他设置
  • }[/ol]复制代码


    3. 找一家支持只有IPv6的CDN,例如 Cloudflare,设置IPv6解析:


    经过上面三步设置,基本上可确保不会泄漏真实IP,原因如下:

    1. 绝大多数情况下,人们都会理所当然的找IPv4,不会想到你的网站根本不存在IPv4网络上;

    2. 相对于IPv4,IPv6的地址段实在太庞大。即使有zmap这种几小时扫描完全球ipv4段的神器,或者Shodan搜索引擎,也很难从海量地址中寻找单个地址。

    如果不放心,可以同样加上防火墙,就万无一失了:

    [ol]
  • # 首先将cf的ip加入白名单
  • while read -r line
  • do
  •   firewall-cmd --zone=trusted --add-source=$line
  • done 复制代码

    该方法同样设置简单,以奇招胜出,单台服务器能托管多个网站,并且其他网站可直接暴露不受影响。

    CNAME

    另一种常见隐藏真实IP方式是使用CNAME,同样无需设置防火墙。其操作如下:

    1. CDN回源时使用CNAME方式回源到另一个主机名上。例如www.tlanyan.me回源的www.abcdexfd.com。需要注意的是,前端域名和源站域名最好不是同一个,防止通过爆破二级域名泄漏真实IP;

    2. 在源站服务器上设置默认站点,防止通过host方式爆破。由于默认站点只是为了防止SNI方式泄漏真实IP,因此使用自签证书即可:

    [ol]
  • # 生成密钥
  • openssl genrsa -out example.key 2048
  • # 生成证书,期间需要填一些信息
  • openssl req -new -x509 -days 3650 -key example.key -out example.pem[/ol]复制代码

    接着以Nginx为例,设置默认站点:

    [ol]
  • server {
  •   listen 80 default_server;
  •   server_name example.com;
  •   return 301 https://example.com$request_uri;
  • }
  • server {
  •   listen 443 ssl http2;
  •   server_name example.com default_server;
  •   ssl_certificate example.pem;
  •   ssl_certificate_key example.key;
  • }[/ol]复制代码

    然后重启Nginx即可。

    该方法无需设置防火墙,设置较为简单,但是需要额外一个域名。

    遇到DDoS怎么办?

    如果域名之前从未用过,一出道就用上面提到的方法,基本上可以保证不会泄漏网站的真实IP。

    但是不泄漏真实IP不代表不会被DDoS或者CC攻击,遇到DDoS怎么办?解决办法主要有:

    1. 加钱上高防保平安;

    2. DNS解析域名到127.0.0.1保平安;

    3. 关机保平安。

    请根据实际情况和业务需求采取相应措施。
  • 回复

    使用道具 举报

    94

    主题

    1114

    回帖

    2546

    积分

    金牌会员

    积分
    2546
    发表于 2020-10-14 21:12:29 | 显示全部楼层
    做一个永不暴露真实IP的网站=》没有固定IP的源站=无敌
    回复

    使用道具 举报

    1

    主题

    114

    回帖

    263

    积分

    中级会员

    积分
    263
    发表于 2020-10-15 08:50:00 | 显示全部楼层
    本帖最后由 百元大户 于 2020-10-16 10:33 编辑

    墨墨墨 发表于 2020-10-16 05:09

    “文章等数据加密放”github“ 大佬, 可以出个教学吗? 谢谢了 大概说下原理也行啊。感谢 ...


    为什么要加密:为了文章不直接被github检索到
    怎么加密:随便怎么加密,比如先异或再Base64
    工作流程:用户请求 https://域名/001,部署在cf workers或者云函数上的代码就会运行,获取github仓库里的001文件里的加密文本,解密然后输出到用户最终看到的页面上

    用户在浏览器这边F12只能看到已经解密的文本,看不到解密过程,文章仓库不会暴露

    我这个项目借鉴了下面这个项目的工作原理,另外重写的,功能更完善更复杂,暂时不打算开源
    https://github.com/kasuganosoras/cloudflare-worker-blog

    回复

    使用道具 举报

    1

    主题

    114

    回帖

    263

    积分

    中级会员

    积分
    263
    发表于 2020-10-14 22:13:00 | 显示全部楼层
    学习了,我就一不盈利的个人博客搞不来这些,用js建了个Serverless的动态站,文章等数据加密放github了,没有真实ip便不再操心这些问题。当日免费额度用完大不了就打不开嘛,我并没有损失

    回复

    使用道具 举报

    229

    主题

    1945

    回帖

    4711

    积分

    论坛元老

    积分
    4711
    发表于 2020-10-16 10:26:06 | 显示全部楼层
    太感谢你了,我爱你
    回复

    使用道具 举报

    4

    主题

    139

    回帖

    296

    积分

    中级会员

    积分
    296
     楼主| 发表于 2020-10-16 05:09:00 | 显示全部楼层
    回复

    使用道具 举报

    20

    主题

    783

    回帖

    1678

    积分

    金牌会员

    积分
    1678
    发表于 2020-10-14 21:19:21 | 显示全部楼层
    感谢大佬,这个太牛了(虽然不懂)
    回复

    使用道具 举报

    13

    主题

    171

    回帖

    437

    积分

    中级会员

    积分
    437
    发表于 2020-10-14 21:11:08 | 显示全部楼层
    不应该叫CNAME,应该叫修改绑定host
    回复

    使用道具 举报

    4

    主题

    139

    回帖

    296

    积分

    中级会员

    积分
    296
     楼主| 发表于 2020-10-14 21:12:42 | 显示全部楼层

    jqbaobao 发表于 2020-10-14 21:12

    做一个永不暴露真实IP的网站=》没有固定IP的源站=无敌

    ip飘逸,这个操作有点6
    回复

    使用道具 举报

    26

    主题

    74

    回帖

    262

    积分

    中级会员

    积分
    262
    发表于 2020-10-14 21:11:00 | 显示全部楼层
    不错,但为了速度我还是选择裸奔,被DD再自动切CDN
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|Discuz! X

    GMT+8, 2026-2-14 00:57 , Processed in 0.020094 second(s), 5 queries , Gzip On, Redis On.

    Powered by Discuz! X3.5

    © 2001-2025 Discuz! Team.

    快速回复 返回顶部 返回列表