我试图通过这样来限制服务器上的访问权限到SSH。 这很好
iptables -A INPUT -i eth0 -p tcp --dport $SSH_port -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -o eth0 -p tcp --sport $SSH_port -m state --state ESTABLISHED -j ACCEPT iptables -A INPUT -j DROP iptables -A OUTPUT -j DROP
但是,我将使用ssh端口转发来访问127.0.0.1:port中的内部服务和另一个虚拟接口上的另一个internal_ip:端口如何实现这一点?
我用于ssh端口转发的命令:
ssh -2NqCgD 55555 -p $SSH_port user@server
我尝试了许多组合,但没有成功。
摘自/var/log/auth.log
sshd[xxxx]: error: connect_to 127.0.0.1 port xxxxx: failed. sshd[xxxx]: error: connect_to internal_ip port yyyyy: failed.
# Allow all on loopback $IPTABLES -A INPUT -i lo -s 127.0.0.1 -j ACCEPT $IPTABLES -A OUTPUT -o lo -d 127.0.0.1 -j ACCEPT
这个规则为我工作。 顺序对于iptables来说很重要,所以把DROP放到最后也是有用的。
iptables -A INPUT -i eth0 -p tcp --dport $ssh_port -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -o eth0 -p tcp --sport $ssh_port -m state --state ESTABLISHED -j ACCEPT iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT iptables -A INPUT -i $internal_interface -j ACCEPT iptables -A OUTPUT -o $internal_interface -j ACCEPT iptables -A INPUT -j DROP iptables -A OUTPUT -j DROP