计算化学公社

标题: 个人网站搭建过程中的配置心得体会 [打印本页]

作者
Author:
Diotima    时间: yesterday 14:59
标题: 个人网站搭建过程中的配置心得体会
最近因为某些原因,上Cloudflare怒买了一个域名。本来是有一些其他的用处的,但是最后还是突发奇想,搭建了自己的个人网站。
当然我不是想要讲诉前端react的构建。事实上我也不是很会使用react,大部分内容是AI完成的。我想要在帖子中记录的是我的安全配置过程。

首先,我们考虑到最简单也最难防护的网络攻击DDOS,既然买了Cloudflare的域名,免费的DDOS防护必须打开。橙云代理www和@的两个DNS记录。

(, 下载次数 Times of downloads: 0)
第二,我的服务器默认状态,80和443端口全部打开。这很危险。万一通过某些请求,被绕过代理挖出源站IP,直接打到IPv4地址。网站服务器将处于一个绝对危险的状态。因此我利用代码查询了我的代理,也即Cloudflare的IP段。并为这些IP在nftables开放了白名单,只接受Cloudflare回源。
  1. curl https://www.cloudflare.com/ips-v4
  2. curl https://www.cloudflare.com/ips-v6
复制代码
然后:
  1. sudo nano /etc/nftables.conf
复制代码

写入:
  1. flush ruleset

  2. table inet filter {
  3.     set cloudflare_v4 {
  4.         type ipv4_addr
  5.         flags interval
  6.         elements = {
  7. 返回的IPv4地址
  8.         }
  9.     }

  10.     set cloudflare_v6 {
  11.         type ipv6_addr
  12.         flags interval
  13.         elements = {
  14. 返回的IPv6地址
  15.         }
  16.     }

  17.     chain input {
  18.         type filter hook input priority filter;
  19.         policy drop;

  20.         iif lo accept
  21.         ct state established,related accept

  22.         tcp dport 22 accept

  23.         ip saddr @cloudflare_v4 tcp dport {80, 443} accept
  24.         ip6 saddr @cloudflare_v6 tcp dport {80, 443} accept

  25.         ip protocol icmp accept
  26.         ip6 nexthdr ipv6-icmp accept
  27.     }

  28.     chain forward {
  29.         type filter hook forward priority filter;
  30.         policy drop;
  31.     }

  32.     chain output {
  33.         type filter hook output priority filter;
  34.         policy accept;
  35.     }
  36. }
复制代码
最后,考虑到即使已经通过 Cloudflare 与 nftables 将源站限制为仅接受 Cloudflare 回源请求,Web 服务直接暴露于公网监听端口仍然很危险。因此,我用 Nginx 作为前端反向代理,由 Nginx 对外监听 443,并将请求转发至监听于127.0.0.1:4372的静态站点服务。

一套小连招下来,网站应该比较安全了。虽然网站内容我还有很多留空没写,但这些安全防护的经验对我来说还是很重要的。自己记录一下,也给其他想建立个人博客的坛友做个参考。个人实有限,这套方案还有一些漏洞。但是我认为作为个人网站来说应当算相对完善了。







欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3