如何将“远程登录”(ssh)访问限制为仅某些IP范围?


20

有人可以告诉我如何将SSH访问仅限制在某些IP范围(例如本地网络)而不是整个Internet上吗?我想这必须通过防火墙来完成。

Answers:


23

来自man sshd

/etc/hosts.allow
/etc/hosts.deny
Access controls that should be enforced by tcp-wrappers are defined here.  
Further details are described in hosts_access(5).

https://debian-administration.org/article/87/Keeping_SSH_access_secure提供了以下示例:

# /etc/hosts.allow
sshd: 1.2.3.0/255.255.255.0
sshd: 192.168.0.0/255.255.255.0

# /etc/hosts.deny
sshd: ALL

Mac OS X中的TCP包装程序是: tcpd


3

我没有对此进行测试,但可以在终端中尝试:

sudo ipfw add allow src-ip 10.0.0.0/8,172.16.0.0/16,192.168.0.0/16 dst-ip me dst-port 22
sudo ipfw add reject src-ip any dst-ip me dst-port 22

1

如果您在路由器后面,但未将端口映射到计算机,则实际上将禁用来自Internet的SSH访问。


是的,我知道这一点。不幸的是,这并不是真正的解决方案,因为这是我的MacBook Pro,它偶尔通过外部IP连接到网络,而中间没有路由器。
Michal M

1
这似乎非常不可能,并且假设您只有一个网络适配器,这意味着如果将公共IP地址绑定到该网络,则不会有“本地”网络。
格里

不太可能,不是很重要,不是吗?除了外部IP情况外,请考虑使用公共WiFi网络。我知道哪些网络对我来说是安全的,我想只限制对这些网络的访问。我的问题是通用的,尽管这是我的意图。
Michal M

我建议改一下这个问题。听起来好像您正在将防火墙中某些服务的(某些)IP范围列入白名单。
格里

按建议完成。干杯。
Michal M
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.