在Linux上开启远程登录并限制外部访问的操作:
1. 安装和配置SSH服务
首先,确保SSH服务已安装并运行。在大多数Linux发行版中,SSH服务默认已安装。如果未安装,可以使用包管理器进行安装。
Debian/Ubuntu:
sudo apt update
sudo apt install opensshserver
CentOS/RHEL:
sudo yum install opensshserver
启动并启用SSH服务:
sudo systemctl start sshd
sudo systemctl enable sshd
2. 配置防火墙
使用`firewalld`或`iptables`等防火墙工具来限制对SSH端口的访问。
使用`firewalld`(适用于CentOS/RHEL和某些Debian衍生版):
启用并启动firewalld
sudo systemctl start firewalld
sudo systemctl enable firewalld
开放SSH端口(默认22)
sudo firewallcmd permanent addservice=ssh
拒绝所有其他IP地址的SSH访问(只允许特定IP)
sudo firewallcmd permanent addrichrule=rule family=ipv4 source address=192.168.1.100/32 port port=22 protocol=tcp accept
sudo firewallcmd permanent addrichrule=rule family=ipv4 port port=22 protocol=tcp drop
重新加载防火墙配置
sudo firewallcmd reload
使用`iptables`:
开放SSH端口(默认22)并允许特定IP访问
sudo iptables A INPUT p tcp dport 22 s 192.168.1.100 j ACCEPT
拒绝所有其他IP地址的SSH访问
sudo iptables A INPUT p tcp dport 22 j DROP
保存iptables配置(对于Debian/Ubuntu,使用iptablespersistent)
sudo apt install iptablespersistent
sudo netfilterpersistent save
对于CentOS/RHEL,使用service命令或systemctl命令保存配置
sudo service iptables save
或者
sudo systemctl save iptables.service
3. 配置SSH配置文件
编辑SSH配置文件`/etc/ssh/sshd_config`,进一步限制访问并增强安全性。
sudo nano /etc/ssh/sshd_config
进行以下修改:
限制允许的IP地址:
bash
AllowUsers user@192.168.1.100
或者,使用`Match`块来限制特定IP地址:
bash
Match Address 192.168.1.100
AllowUsers user
禁用密码认证,启用公钥认证:
bash
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no
更改SSH端口(可选):
bash
Port 2222
如果更改了端口,请确保防火墙规则也相应更新。
限制SSH会话数:
bash
MaxSessions 2
禁用root用户登录:
bash
PermitRootLogin no
保存并退出编辑器,然后重启SSH服务:
sudo systemctl restart sshd
4. 验证配置
确保SSH服务正在运行,并且只能从允许的IP地址访问:
sudo systemctl status sshd
尝试从不同的IP地址连接SSH,确保只有允许的IP地址能够成功连接。
通过配置SSH服务、防火墙规则和SSH配置文件,可以有效地开启远程登录并限制外部访问。这些措施将大大提高Linux系统的安全性,减少潜在的安全威胁。务必定期审查和调整这些配置,以适应不断变化的网络环境和安全需求。