如何安全使用SSH?限制在本地访问
SSH是一种广泛使用的工具,允许用户安全地连接远程系统。出于安全考虑,有时我们希望将SSH访问限制在本地网络内,尤其是在家庭或办公环境中,避免外部网络对系统的访问。
为什么要将SSH限制在本地网络?
限制SSH访问有助于减少未授权访问的风险:
- 安全性:防止攻击者通过互联网扫描或暴力破解。
- 控制访问:局域网内用户仍可轻松管理系统。
- 简化管理:不需额外配置复杂的安全层来保护外部访问。
什么是本地网络?
“本地网络”是指在同一物理或无线网络中连接的设备,如家庭Wi-Fi或办公室局域网,通常共享相同的内网IP地址范围,例如:192.168.x.x 或 10.0.x.x。
配置本地网络访问SSH
1. 检查Linux系统的本地IP地址范围
使用命令:
ip a
查找类似192.168.x.x或10.0.x.x的地址,以确定本地网络范围。
2. 配置SSH仅监听本地地址
编辑SSH配置文件:
sudo nano /etc/ssh/sshd_config
找到#ListenAddress
,取消注释并设置为本地IP地址,例如:
ListenAddress 192.168.122.63
然后,重启SSH服务:
sudo systemctl restart sshd
3. 通过防火墙规则限制SSH访问
使用UFW防火墙(如Ubuntu):
sudo ufw allow from 192.168.1.0/24 to any port 22
sudo ufw deny 22
sudo ufw reload
sudo ufw status
在CentOS中使用Firewalld:
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="22" accept'
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" port protocol="tcp" port="22" drop'
sudo firewall-cmd --reload
使用iptables:
sudo iptables -A INPUT -p tcp -s 192.168.1.0/24 --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j DROP
sudo iptables-save | sudo tee /etc/iptables/rules.v4
4. 测试配置
在本地网络中的设备上尝试通过SSH连接服务器:
ssh 用户名@192.168.122.63
如果从外部网络连接,连接应被拒绝。
额外提示
- 设置静态IP:为需要SSH访问的设备设置静态IP。
- VPN访问:考虑设置VPN以安全连接本地网络。
- 监控日志:定期检查SSH日志
/var/log/auth.log
以监控访问尝试。
通过这些配置,SSH访问的安全性将显著提高,建议大家在局域网中实施这些防护措施。