Skip to content

Instantly share code, notes, and snippets.

@zhengkai
Created November 15, 2024 07:15
Show Gist options
  • Save zhengkai/a695288a62699996855a34fe26a843a8 to your computer and use it in GitHub Desktop.
Save zhengkai/a695288a62699996855a34fe26a843a8 to your computer and use it in GitHub Desktop.
使特定端口仅限特定 IP 访问

登录 ssh 时,sshd server 会赋值 $SSH_CLIENT,其中包含来源 IP

所以将 change-ip.sh 部署到目标机器上

ssh 主机名 "~/change-ip.sh"

即可使目标主机上的特定端口仅限 ssh 来源 IP 访问

我将其用于限制某个 ss 端口仅家里可用,感觉能更安全谢。如果日常使用需要记录自己的 IP 并在发现变化时 ssh,还需要考虑重启后 iptables-restore /etc/iptables/ss.v4

Warning

如果这不是你唯一使用的 iptables 规则,请谨慎使用。问题会变得麻烦,因为 iptables -F INPUT 会重置所有设置

#! /bin/bash -e
PORT="443"
IP="${SSH_CLIENT%% *}"
if [ -z "$IP" ]; then
>&2 echo 'no ip'
exit 1
fi
sudo iptables -F INPUT
sudo iptables -A INPUT -p tcp --dport "$PORT" -s "$IP" -j ACCEPT
sudo iptables -A INPUT -p udp --dport "$PORT" -s "$IP" -j ACCEPT
sudo iptables -A INPUT -p tcp --dport "$PORT" -j DROP
sudo iptables -A INPUT -p udp --dport "$PORT" -j DROP
if [ -d /etc/iptables ]; then
sudo iptables-save | tee /etc/iptables/ss.v4
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment