我试图限制对 ubuntu 服务器的访问,但我仍然不确定该走哪条路。情况:我们想在 ubuntu 12.04 服务器上将 ssh 和 sftp 的访问限制为 4 个没有静态 IP 的客户端。因此每个客户都有一个 dyndns 帐户。服务器将使用共享防火墙,遗憾的是它不能使用 dyndns 帐户作为允许规则。
想法:允许访问共享防火墙中的 ssh 和 sftp,但阻止所有服务器端的 4 个 dyndns 帐户。
但是实现这一目标的最简单方法是什么?
第一个解决方案是在此脚本中使用 iptabels :由 cronjob 运行,它检查 dyndns ips 并使用以下内容更新 iptable 规则:
# All connectsion from address 1.2.3.4 to SSH (port 22)
iptables -A INPUT -p tcp -m state --state NEW --source DYNDNS_IP --dport 22 -j ACCEPT
# Deny all other SSH connections
iptables -A INPUT -p tcp --dport 22 -j DROP
第二种解决方案是通过拒绝主机 fe 进行限制:
# /etc/hosts.allow
sshd: client.dyndns.org
# /etc/hosts.deny
sshd: ALL
但我不确定denyhosts 是否也能够限制ftp 访问。如果是这样,这个解决方案看起来会更容易管理。
感谢每一个想法,
亲切的问候,
托尼
imo,越靠近堆栈底部,实现安全性就越好。如果您在 iptables 处阻塞,则数据包甚至不会超过第 3 层/第 4 层,这样会更好。然而,最好的是分层洋葱安全模型,具有基于网络和主机的防火墙,以及拒绝主机/tcpwrappers,以及特定于协议的安全性(即 apache 上的 htaccess 规则)。
你总是可以用 iptables 或 pfsense 替换你的外围防火墙。
如果客户端没有静态 IP,那么下一个最佳解决方案是使用带有或不带有密码短语和禁用密码的 SSH 密钥。 这是 SSH 密钥的一个很好的入门。
在服务器上,您可以将 SSH 调整为仅
publickey
通过调整PreferredAuthentications
in/etc/ssh/ssh_config
(在 Ubuntu 12.04 中)来接受。在这里 SSH 服务器端选项的一个很好的解释。过去,我仍然会使用它
iptables
来进一步限制端口以使事情更加安全。