CentOS作为一种广泛使用的Linux发行版,其SSH配置对于系统管理员来说是至关重要的
本文将详细介绍如何在CentOS系统上进行SSH配置,以确保系统的安全性和灵活性
一、安装SSH服务 CentOS系统通常默认安装了OpenSSH服务,但如果没有安装,可以通过以下命令进行安装: 对于CentOS 6.x-7.x版本: sudo yum install openssh-server 对于CentOS 8.x版本: sudo dnf install openssh-server 安装完成后,启动SSH服务并设置其开机自启: sudo systemctl start sshd sudo systemctl enable sshd 二、修改SSH配置文件 SSH服务的配置文件位于`/etc/ssh/sshd_config`
这个文件包含了SSH服务的所有配置选项,通过编辑这个文件,可以对SSH服务进行详细的定制
1.备份配置文件: 在进行任何修改之前,最好先备份原始的配置文件,以防出现意外情况
bash cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak 2.编辑配置文件: 使用你喜欢的文本编辑器(如`vim`、`nano`)打开配置文件
bash vim /etc/ssh/sshd_config 3.常见配置项: -Port:设置SSH服务监听的端口号
默认是22,建议修改为其他端口以增加安全性
```bash Port 3358 ``` -PermitRootLogin:设置是否允许root用户通过SSH登录
为了安全起见,建议设置为`no`
```bash PermitRootLogin no ``` -AllowUsers:设置允许通过SSH登录的用户列表
```bash AllowUsers user01 user02 ``` -PasswordAuthentication:设置是否允许密码认证
为了提高安全性,建议结合密钥认证使用,或禁用密码认证
```bash PasswordAuthentication no ``` -LoginGraceTime:设置如果用户不能成功登录,在切断连接之前服务器需要等待的时间(以秒为单位)
```bash LoginGraceTime 600 ``` -MaxAuthTries:设置每个连接最大允许的认证次数
```bash MaxAuthTries 3 ``` 4.保存并退出: 完成编辑后,保存文件并退出编辑器
三、调整SELinux和防火墙设置 SELinux(Security-Enhanced Linux)是Linux内核的一个安全模块,用于提供访问控制安全策略
如果你的系统启用了SELinux,需要为SSH服务的新端口添加相应的规则
1.查询已有的SSH端口: bash semanage port -l | grep ssh 2.添加新的SSH端口: 假设你将SSH端口更改为3358,则可以使用以下命令添加新端口
bash semanage port -a -t ssh_port_t -p tcp 3358 3.核实新的SSH端口: bash semanage port -l | grep ssh 此外,还需要在防火墙中开放新的SSH端口
1.查询目标端口是否开放: bash firewall-cmd --permanent --query-port=3358/tcp 2.添加新的SSH端口: 如果端口未开放,则使用以下命令添加
bash firewall-cmd --permanent --add-port=3358/tcp 3.重新加载防火墙: bash firewall-cmd --reload 4.核实新的SSH端口是否开放: bash firewall-cmd --permanent --query-port=3358/tcp 四、配置用户权限和密钥认证 为了提高SSH登录的安全性,建议配置用户权限和密钥认证
1.添加用户到sudo组: 如果希望某些用户能够执行sudo命令,可以将它们添加到sudo组
bash usermod -aG sudo user01 usermod -aG sudo user02 2.配置密钥认证: 为每个允许登录的用户生成SSH密钥对,并将公钥复制到服务器的`~/.ssh/authorized_keys`文件中
- 在客户端生成密钥对: ```bash ssh-keygen ``` - 将公钥复制到服务器: ```bash ssh-copy-id user01@server_ip -p 3358 ``` 3.设置~/.ssh目录的权限: 确保每个用户的`~/.ssh`目录及其内容具有正确的权限
bash chmod -R 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys 五、高级配置和安全性加固 除了基本的SSH配置外,还可以进行一些高级配置和安全性加固
1.限制登录尝试次数: 已经在`sshd_config`文件中通过`MaxAuthTries`配置项进行了设置
2.记录登录日志: 配置SSH服务将登录日志记录到特定的文件,以便于审计和故障排查
-编辑`sshd_config`文件,添加或修改以下配置项: ```bash SyslogFacility local0 ``` -编辑`/etc/rsyslog.conf`文件,添加日志记录规则: ```bash local0. /var/log/sshd.log ``` - 重启rsyslog和SSH服务: ```bash systemctl restart rsyslog systemctl restart sshd ``` 3.配置SSH超时脚本: 可以编写脚本,当SSH登录尝试超过一定次数后,自动禁止该客户端的网络地址访问SSH服务
4.使用SFTP进行文件传输: 如果需要通过SSH进行文件传输,建议配置SFTP,并将其与SSH服务分离
- 复制SSH配置文件和服务文件为SFTP使用: ```bash cp /etc/ssh/sshd_config /etc/ssh/sftpd_config cp /usr/lib/systemd/system/sshd.service /usr/lib/systemd/system/sftpd.service ``` - 修改SFTP配置文件和服务文件,设置不同的端口号和日志记录等
- 启动SFTP服务,并验证其监听端口
六、测试与验证 完成所有配置后,需要测试SSH服务是否正常工作
1.从客户端测试SSH登录: 使用SSH客户端连接到服务器,验证是否能够成功登录
bash ssh user01@server_ip -p 3358 2.验证日志记录: 检查`/var/log/sshd.log`文件,确保登录尝试和成功登录的记录存在
3.验证防火墙和SELinux设置: 确保新的SSH端口在防火墙和SELinux中正确配置,并且没有阻止SSH服务的访问
结语 通过本文的介绍,你应该能够轻松地在CentOS系统上配置SSH服务,提高其安全性和灵活性
记住,安全性是配置SSH时的首要考虑因素,因此建议结合密钥认证、防火墙限制和日志记录等多种手段来加固SSH服务
同时,定期审查和更新SSH配置文件,以确保其符合最新的安全标准和业务需求