文章
生活

Linux伺服器「裝死」指南(適用於代理伺服器)

爲了在中國大陸正常上網,有很多人都搭建了自己的代理伺服器,可這隨之而來就產生了一種現象,那就是會經常 “被牆”。既然遲早都逃脫不了“被牆”的命運,那麼爲什麼我們不先人一步,讓伺服器“裝死”呢?沒錯,本文就來說說這點。

一句話說明白想要做的事情:用UDP翻牆,同時利用iptables做一些得當的設定,從而讓其產生“裝死”的效果。

UDP翻牆推薦:v2ray-core mkcp模式並設置seed 或者其他七層代理

iptables規則分享(如果使用的是centos,需要將相應的規則按實際需求修改後寫入相應的配置檔,如果是debian或者ubuntu,則需要安裝 iptables-persistent 這個 package 後,將配置檔寫入 /etc/iptables/rules.v4 或者rules.v6)

以下規則想要達到的是目的是:讓TCP完全無回應(白名單IP可訪問),讓UDP掃不出Port,讓ICMP沒回應(爲了防止連不上SSH,因此請將本機納入允許列表中或者直接通過VNC管理) 請務必按照實際需要另行按需修改!

IPv4:

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]

#基於效能考慮把這兩條排在最前
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -i lo -j ACCEPT
#允許的IP列表(請按照實際需要修改)
-A INPUT -p tcp -s 173.245.48.0/20 -j ACCEPT
-A INPUT -p tcp -s 103.21.244.0/22 -j ACCEPT
-A INPUT -p tcp -s 103.22.200.0/22 -j ACCEPT
-A INPUT -p tcp -s 103.31.4.0/22 -j ACCEPT
-A INPUT -p tcp -s 141.101.64.0/18 -j ACCEPT
-A INPUT -p tcp -s 108.162.192.0/18 -j ACCEPT
-A INPUT -p tcp -s 190.93.240.0/20 -j ACCEPT
-A INPUT -p tcp -s 188.114.96.0/20 -j ACCEPT
-A INPUT -p tcp -s 197.234.240.0/22 -j ACCEPT
-A INPUT -p tcp -s 198.41.128.0/17 -j ACCEPT
-A INPUT -p tcp -s 162.158.0.0/15 -j ACCEPT
-A INPUT -p tcp -s 104.16.0.0/13 -j ACCEPT
-A INPUT -p tcp -s 104.24.0.0/14 -j ACCEPT
-A INPUT -p tcp -s 172.64.0.0/13 -j ACCEPT
-A INPUT -p tcp -s 131.0.72.0/22 -j ACCEPT
#丟棄無效TCP數據(指白名單內的IP傳過來的)
-A INPUT -m state --state INVALID -j DROP
#丟棄不再白名單列表中的IP發來的TCP數據
-A INPUT -p tcp -j DROP
#限制UDP翻牆所用的Port可接受的最大包大小(請按照實際情形修改,目的是爲了防止協議掃描)
-A INPUT -p udp --dport 19001 -m length --length :1400 -j ACCEPT
-A INPUT -p udp -j ACCEPT
#不回應PING請求
-A INPUT -p icmp --icmp-type echo-request -j DROP

-A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
#強制特殊情形下的MTU自適應
-A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
-A FORWARD -p udp -j ACCEPT
-A FORWARD -m state --state INVALID -j DROP

-A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
-A OUTPUT -p udp -j ACCEPT
#防止對未Listen的TCP Port回應 refused 消息
-A OUTPUT -p tcp --tcp-flags ALL RST,ACK -j DROP
-A OUTPUT -m state --state INVALID -j DROP
#防止一般性Port Scan
-A OUTPUT -p icmp --icmp-type port-unreachable -j DROP
-A OUTPUT -p icmp --icmp-type host-unreachable -j DROP
COMMIT

IPv6(部分內容與上述重複,因此不再做解釋):

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]

-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -s 2400:cb00::/32 -j ACCEPT
-A INPUT -p tcp -s 2606:4700::/32 -j ACCEPT
-A INPUT -p tcp -s 2803:f800::/32 -j ACCEPT
-A INPUT -p tcp -s 2405:b500::/32 -j ACCEPT
-A INPUT -p tcp -s 2405:8100::/32 -j ACCEPT
-A INPUT -p tcp -s 2a06:98c0::/29 -j ACCEPT
-A INPUT -p tcp -s 2c0f:f248::/32 -j ACCEPT
-A INPUT -m state --state INVALID -j DROP
-A INPUT -p tcp -j DROP
-A INPUT -p udp --dport 19001 -m length --length :1400 -j ACCEPT
-A INPUT -p udp -j ACCEPT
-A INPUT -p icmpv6 --icmpv6-type echo-request -j DROP

-A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
-A FORWARD -p udp -j ACCEPT
-A FORWARD -m state --state INVALID -j DROP

-A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
-A OUTPUT -p udp -j ACCEPT
-A OUTPUT -p tcp --tcp-flags ALL RST,ACK -j DROP
-A OUTPUT -m state --state INVALID -j DROP
-A OUTPUT -p icmpv6 --icmpv6-type port-unreachable -j DROP
COMMIT
菜单
  1. 沉默的广场  

    想起来以前配置过Port Knocking……效果还不错