[Linux] - 利用ping給端口加密,限制訪問

Linux中,想對特定的端口加密訪問,可使用iptables的ping方式。服務器

做用

訪問被限制的端口,必需先ping發送對應的字節包(字節包大小可自行設置,此爲密鑰)才能訪問成功!

 


 

下邊是對SSH的22端口加入ping規則

其它端口可自行修改設定ssh

 

1) iptables-recent 配置
# 設置 iptables 規則,要先登陸服務器就必須先 ping 一個 128 字節的包tcp

iptables -A INPUT -p icmp --icmp-type 8 -m length --length 128 -m recent --name sshkey --rsource --set -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --name sshkey --rcheck --rsource --seconds 15 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j DROP

 

2) 先發送一個長度爲 128 字節的 ICMP 請求包(100 字節加上 IP 頭、ICMP 頭 28 字節):加密

ping -c 1 -s 100 SERVER_IP # Linux
ping -n 1 -l 100 SERVER_IP # Windows

 

3) 而後在 15 秒內可正常登陸:spa

ssh -p 1234 user@SERVER_IP

 


 

說明

## iptables-recent 能夠理解爲一張記錄 IP 地址的列表
'--set' '--remove' # 添加、刪除 IP
'--rsource' '--rdest' # 記錄源地址(默認)、目標地址
'--rcheck' '--update' # 檢查地址是否在列表中
'--seconds' # 設置時間條件
'--hitcount' # 設置命中次數

## rcheck、update 區別
# rcheck 僅僅檢查地址是否在列表中
# update 和 rcheck 同樣,不過會刷新時間戳

## 放在上面的例子:
# 1. 記錄長度爲 128 字節的 ICMP_Request 包的源地址,命名爲 sshkey
# 2. 容許來自 sshkey 列表中的地址在 15 秒內登陸 SSH(端口 1234)
# 3. 而其餘不在 sshkey 列表中的地址的 SSH 握手將被 DROP 掉
相關文章
相關標籤/搜索