|
|
最近因为某些原因,上Cloudflare怒买了一个域名。本来是有一些其他的用处的,但是最后还是突发奇想,搭建了自己的个人网站。
当然我不是想要讲诉前端react的构建。事实上我也不是很会使用react,大部分内容是AI完成的。我想要在帖子中记录的是我的安全配置过程。
首先,我们考虑到最简单也最难防护的网络攻击DDOS,既然买了Cloudflare的域名,免费的DDOS防护必须打开。橙云代理www和@的两个DNS记录。
第二,我的服务器默认状态,80和443端口全部打开。这很危险。万一通过某些请求,被绕过代理挖出源站IP,直接打到IPv4地址。网站服务器将处于一个绝对危险的状态。因此我利用代码查询了我的代理,也即Cloudflare的IP段。并为这些IP在nftables开放了白名单,只接受Cloudflare回源。
- curl https://www.cloudflare.com/ips-v4
- curl https://www.cloudflare.com/ips-v6
复制代码 然后:- sudo nano /etc/nftables.conf
复制代码
写入:
- flush ruleset
- table inet filter {
- set cloudflare_v4 {
- type ipv4_addr
- flags interval
- elements = {
- 返回的IPv4地址
- }
- }
- set cloudflare_v6 {
- type ipv6_addr
- flags interval
- elements = {
- 返回的IPv6地址
- }
- }
- chain input {
- type filter hook input priority filter;
- policy drop;
- iif lo accept
- ct state established,related accept
- tcp dport 22 accept
- ip saddr @cloudflare_v4 tcp dport {80, 443} accept
- ip6 saddr @cloudflare_v6 tcp dport {80, 443} accept
- ip protocol icmp accept
- ip6 nexthdr ipv6-icmp accept
- }
- chain forward {
- type filter hook forward priority filter;
- policy drop;
- }
- chain output {
- type filter hook output priority filter;
- policy accept;
- }
- }
复制代码 最后,考虑到即使已经通过 Cloudflare 与 nftables 将源站限制为仅接受 Cloudflare 回源请求,Web 服务直接暴露于公网监听端口仍然很危险。因此,我用 Nginx 作为前端反向代理,由 Nginx 对外监听 443,并将请求转发至监听于127.0.0.1:4372的静态站点服务。
一套小连招下来,网站应该比较安全了。虽然网站内容我还有很多留空没写,但这些安全防护的经验对我来说还是很重要的。自己记录一下,也给其他想建立个人博客的坛友做个参考。个人实有限,这套方案还有一些漏洞。但是我认为作为个人网站来说应当算相对完善了。
|
评分 Rate
-
查看全部评分 View all ratings
|