我知道如何限制对系统的 SSH 访问。当用户登录到我的系统时,如何限制对另一个系统的 SSH 访问。例如:
# ssh joe@myserver
# joe@myserver $ /home/joe
# joe@myserver $ /home/joe ssh joe@anotherserver
# BLOCK THIS ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
我现在正在查看 IPTables,但不确定阻止传出端口 22 的含义。
答案1
如果您不需要 SSH 来做任何事情,那么您可以阻止传出 SSH。阻止端口 22 上的传出请求不会阻止传入请求(因为阻止是在目标端口上进行的,这与源端口不同)。
我还没有尝试过,但在某些版本的 iptables 中,应该也可以基于用户 ID 来阻止连接,命令如下
iptables -I INPUT -p tcp --dport 22 -m owner -uid XXX -j DROP
要查找 uid,你可以查看密码文件,使用以下命令
grep "username" /etc/passwd | cut -f3 -d":"
答案2
在 Centos 6 和 Centos 7 中你有不同的选择
我们许多人使用TCP wrapper
,iptables
并且firewalld
TCP 包装器示例
/etc/hosts.allow
sshd : IP-Address
Iptables 示例
iptables -I INPUT -s x.x.x.x --dport 22 -j ACCEPT
iptables -I OUTPUT -d x.x.x.x --sport 22 -j ACCEPT
IPTABLES -A INPUT --dport 22 -j DROP
IPTABLES -A OUTPUT --sport 22 -j DROP
然后运行以下命令
service iptables save
Firewalld 示例
systemctl start firewalld.service
systemctl enable firewalld.service
firewall-cmd –zone=”trusted” –add-source=<external IP 1>
firewall-cmd –zone=”trusted” –add-source=<external IP 1> –permanent
firewall-cmd –zone=”trusted” –add-source=<external IP 2>
firewall-cmd –zone=”trusted” –add-source=<external IP 2> –permanent
firewall-cmd –zone=”trusted” –add-service=ssh
firewall-cmd –zone=”trusted” –add-service=ssh –permanent
firewall-cmd –zone=”trusted” –list-all
firewall-cmd –zone=public –remove-service=ssh
firewall-cmd –zone=public –remove-service=ssh –permanent
答案3
您可以全程阻止SSH communication
并iptables
允许特定IP ADDRESS.
在下面的例子中,
前两个规则是允许特定的 IP 地址。
x.x.x.x - Your system IP
最后两条规则将阻止所有 IP 地址的 SSH 连接。
iptables -I INPUT -s x.x.x.x --dport ssh -j ACCEPT
iptables -I OUTPUT -d x.x.x.x --sport ssh -j ACCEPT
IPTABLES -A INPUT --dport ssh -j DROP
IPTABLES -A OUTPUT --sport ssh -j DROP