在Linux系统中,使用SFTP(SSH File Transfer Protocol)时,可以通过配置SSH服务器来限制访问IP。以下是一些常见的方法:
sshd_config
文件编辑sshd_config
文件:
打开SSH服务器的配置文件/etc/ssh/sshd_config
。
sudo nano /etc/ssh/sshd_config
添加或修改AllowUsers
指令:
使用AllowUsers
指令可以指定允许登录的用户及其来源IP地址。例如,只允许用户user1
从IP地址192.168.1.100
登录:
AllowUsers user1@192.168.1.100
如果需要允许多个IP地址,可以多次使用AllowUsers
指令:
AllowUsers user1@192.168.1.100 user2@192.168.1.101
添加或修改Match
指令:
使用Match
指令可以更灵活地控制访问。例如,只允许特定IP地址访问SFTP:
Match Address 192.168.1.100
ForceCommand internal-sftp
PasswordAuthentication yes
这会强制来自192.168.1.100
的用户只能使用SFTP,并且启用密码认证。
重启SSH服务: 保存并关闭文件后,重启SSH服务以应用更改:
sudo systemctl restart sshd
如果你使用的是iptables
或firewalld
等防火墙工具,也可以通过设置防火墙规则来限制访问IP。
iptables
添加规则:
例如,只允许IP地址192.168.1.100
访问SSH端口(默认是22):
sudo iptables -A INPUT -p tcp --dport 22 -s 192.168.1.100 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j DROP
第一条规则允许来自192.168.1.100
的连接,第二条规则拒绝所有其他连接。
保存规则:
根据你的Linux发行版,保存iptables
规则的命令可能不同。例如,在Debian/Ubuntu上:
sudo iptables-save > /etc/iptables/rules.v4
在CentOS/RHEL上:
sudo service iptables save
firewalld
添加富规则:
例如,只允许IP地址192.168.1.100
访问SSH端口:
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="22" accept'
sudo firewall-cmd --reload
验证规则: 确认规则已添加:
sudo firewall-cmd --list-all
通过以上方法,你可以有效地限制SFTP访问的IP地址,提高系统的安全性。