想问一下这样是否可行,除了某些 IP 之外,允许所有人访问我的 ssh。
目前我得到:
iptables -A INPUT -p tcp -s 123.45.67.89 --dport 22 -j DROP
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
我用被阻止的 IP 测试了它,仍然可以登录。顺序是正确的,不是吗?
请不要提供ufw
解决方案,我想要原始 iptables。谢谢。
答案1
好的。找到了问题并解决了我的问题。MASQUERADE
这与我评论它有关,并且运行良好。
以下是代码片段:
...
# Allow HTTP and HTTPS connections from anywhere (the normal ports for websites and SSL).
/sbin/iptables -A INPUT -p tcp --dport 80 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 443 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 8081 -j DROP
# LOCAL NETWORK ACCESS
#/sbin/iptables -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE <- cause
#/sbin/iptables -A POSTROUTING -s 192.168.9.0/24 -o eth0 -j MASQUERADE
/sbin/iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT #SSH LOCAL HOME
# BLOCK IPs
/sbin/iptables -A INPUT -s 117.34.70.33 -j DROP
# Zeacurity rules
# {SSH_BLOCK_IPS}
# Allow SSH connections
#
# The -dport number should be the same port number you set in sshd_config
#
/sbin/iptables -A INPUT -p tcp --dport 22 -j ACCEPT
...
/sbin/iptables -nvL
答案2
我正在使用 ufw 防火墙执行此操作。我建议您尝试一下,非常简单且成功。
ufw 允许从 123.45.67.89 到任何端口 22