不允许用户通过 SSH 连接到其他系统

不允许用户通过 SSH 连接到其他系统

我知道如何限制对系统的 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 wrapperiptables并且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 communicationiptables允许特定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

相关内容