端口敲門(Port knocking)技術,即服務通過動態的添加 iptables 規則來隱藏系統開啟的服務,使用自定義的一系列序列號來「敲門」,使系統開啟需要訪問的服務端口,才能對外訪問。不使用時,再使用自定義的序列號來「關門」,將端口關閉,不對外監聽。進一步提升了服務和系統的安全性。
關閉SELinux
查看 SELinux 狀態:
getenforce
臨時關閉 SELinux(設為 Permissive 模式):
setenforce 0
永久關閉 SELinux(重啟生效):
修改 /etc/selinux/config 文件
將 SELINUX=enforcing 改為 SELINUX=disabled
安裝 ipset
CentOS 7 需要先關閉 Firewall 防火牆:
systemctl stop firewalld.service
systemctl disable firewalld.service
創建規則
創建一個名為 allowlist 的規則並設置有效期為 30 秒
ipset create allowlist hash:ip timeout 30
設置IP白名單
# 放行IP規則
iptables -A INPUT -p tcp -m set --match-set allowlist src -j ACCEPT
# 關閉22端口
iptables -A INPUT -p tcp --dport 22 -j DROP
iptables 是由上而下的進行規則匹配,放行規則需在禁行規則之前才能生效。
開放指定IP
# 將IP加入白名單
ipset -exist add allowlist 192.168.37.1 timeout 30
其他指令
# 查看白名單IP列表
ipset list allowlist
如果手工將其 timeout 值設置為 0 的話,即為存活時間無限久。