【CentOS7操作系统安全加固系列】第(6)篇

简介: 【CentOS7操作系统安全加固系列】第(6)篇

640.jpg

SSH(Secure Shell)是目前较可靠,专为远程登录会话和其他网络服务提供安全性保障的协议。


利用SSH协议可以有效防止远程管理过程中的信息泄露问题。透过SSH可以对所有传输的数据进行加密,并防止DNS欺骗和IP欺骗。OpenSSH是SSH协议的免费开源实现。

加固SSH服务,是指修改SSH服务中的配置来设置系统使用OpenSSH协议时的算法、认证等参数,从而提高系统的安全性


1、SSH LoginGraceTime设置为一分钟

更短

规则描述:LoginGraceTime参数指定成功验证SSH服务器的时间。宽限期的时间越长,可以存在更开放的未认证连接。宽限期应限制在适当的组织限制,以确保服务可用于所需的访问。


审计描述:运行以下命令并验证输出LoginGraceTime为60或更少:# grep '^LoginGraceTime' /etc/ssh/sshd_config LoginGraceTime 60(默认值为120)


修改建议:编辑/etc/ssh/sshd_config文件,设置参数如下:LoginGraceTime 60

解决办法: sed -i "s/#LoginGraceTime 2m/LoginGraceTime 60/g" /etc/ssh/sshd_config


grep '^LoginGraceTime' /etc/ssh/sshd_config
grep 'LoginGraceTime' /etc/ssh/sshd_config
sed -i "s/#LoginGraceTime 2m/LoginGraceTime 60/g" /etc/ssh/sshd_config 
grep 'LoginGraceTime' /etc/ssh/sshd_config
service sshd restart


640.png

2、SSH的LogLevel设置成INFO或VERBOSE


规则描述:INFO指定当用户登录或者注销活动将会被记录。VERBOSE级别的日志中会记录使用的SSH公钥的指纹,可在发生安全事件之后进行分析与审计。


审计描述:运行以下命令验证输出匹配:  #grep '^LogLevel' /etc/ssh/sshd_config #LogLevel INFO or LogLevel VERBOSE or 空

修改建议:编辑/etc/ssh/sshd_config文件设置参数如下: LogLevel INFO或者LogLevel VERBOSE


grep '^LogLevel' /etc/ssh/sshd_config
grep 'LogLevel' /etc/ssh/sshd_config
sed -i "s/#LogLevel INFO/LogLevel VERBOSE/g" /etc/ssh/sshd_config
grep 'LogLevel' /etc/ssh/sshd_config
service sshd restart

640.png

3、SSH X11转发被禁用


规则描述:参数X11Forwarding提供了操作远程连接X11界面的功能。

审计描述:运行下面的命令并确认输出匹配:  # grep '^X11Forwarding' /etc/ssh/sshd_config  X11Forwarding no

修改建议:编辑/etc/ssh/sshd_config文件确保参数设置如下:  X11Forwarding no


grep '^X11Forwarding' /etc/ssh/sshd_config
sed -i "s/X11Forwarding yes/X11Forwarding no/g" /etc/ssh/sshd_config
grep '^X11Forwarding' /etc/ssh/sshd_config
service sshd restart


640.png


4、SSH中IgnoreRhosts设置为enabled


规则描述:IgnoreRhosts参数指定.rhosts和.shosts文件不能在RhostsRSAAuthentication或者HostbasedAuthentication中使用。

审计描述:运行如下命令并确认输出匹配:  # grep '^IgnoreRhosts' /etc/ssh/sshd_config  IgnoreRhosts yes

修改建议:编辑/etc/ssh/sshd_config文件设置参数如下:  IgnoreRhosts yes


grep '^IgnoreRhosts' /etc/ssh/sshd_config
grep 'IgnoreRhosts' /etc/ssh/sshd_config
sed -i "s/#IgnoreRhosts yes/IgnoreRhosts yes/g"  /etc/ssh/sshd_config
grep '^IgnoreRhosts' /etc/ssh/sshd_config 
service sshd restart

640.png


5、SSH中HostbasedAuthentication关闭


规则描述:HostbasedAuthentication参数指定是否允许受信任的主机通过使用.rhosts 或/etc/hosts.equiv进行认证;当公钥客户端认证成功,用户即登录;此选项仅使用于SSH 2。

审计描述:运行如下命令并确认输出匹配:  # grep '^HostbasedAuthentication' /etc/ssh/sshd_config  HostbasedAuthentication no

修改建议:编辑/etc/ssh/sshd_config文件设置参数如下:  HostbasedAuthentication no


grep '^HostbasedAuthentication' /etc/ssh/sshd_config
grep 'HostbasedAuthentication' /etc/ssh/sshd_config
sed -i "s/#HostbasedAuthentication no/HostbasedAuthentication no/g" /etc/ssh/sshd_config
grep '^HostbasedAuthentication' /etc/ssh/sshd_config
service sshd restart


640.png

6、SSH PermitEmptyPasswords被禁用


规则描述:PermitEmptyPasswords参数指定SSH服务器是否允许使用空密码字符串登录帐户。

审计描述:运行以下命令并验证输出是否匹配:# grep '^PermitEmptyPasswords' /etc/ssh/sshd_config     PermitEmptyPasswords no

修改建议:编辑/etc/ssh/sshd_config文件,加入如下内容:PermitEmptyPasswords no


grep '^PermitEmptyPasswords' /etc/ssh/sshd_config
grep 'PermitEmptyPasswords' /etc/ssh/sshd_config
sed -i "s/#PermitEmptyPasswords no/PermitEmptyPasswords no/g" /etc/ssh/sshd_config
grep '^PermitEmptyPasswords' /etc/ssh/sshd_config
service sshd restart


640.png


7、SSH PermitUserEnvironment被禁用


规则描述:PermitUserEnvironment选项允许用户向ssh守护程序呈现环境选项。

审计描述:运行以下命令并验证输出是否匹配:# grep '^PermitUserEnvironment' /etc/ssh/sshd_config  PermitUserEnvironment no

修改建议:编辑/etc/ssh/sshd_config文件,加入如下内容:PermitUserEnvironment no


grep '^PermitUserEnvironment' /etc/ssh/sshd_config
grep 'PermitUserEnvironment' /etc/ssh/sshd_config
sed -i "s/#PermitUserEnvironment no/PermitUserEnvironment no/g" /etc/ssh/sshd_config
grep '^PermitUserEnvironment' /etc/ssh/sshd_config
service sshd restart

640.png


SSH服务的所有加固项均保存在配置文件/etc/ssh/sshd_config中,服务端各加固项的含义、加固建议 可以参考如下表格

640.png


SSH其它安全加固建议


(参考openEuler官网文档 https://openeuler.org/zh/docs/20.09/docs/SecHarden/系统服务.html


1)、SSH服务仅侦听指定IP地址


出于安全考虑,建议用户在使用SSH服务时,仅在必需的IP上进行绑定侦听,而不是侦听0.0.0.0,可修改/etc/ssh/sshd_config文件中的ListenAddress配置项。

打开并修改/etc/ssh/sshd_config文件 vi /etc/ssh/sshd_config 修改内容如下,表示绑定侦听IP为 192.168.1.100,用户可根据实际情况修改需要侦听的IP ... ListenAddress 192.168.1.100 ... 重启SSH服务 systemctl restart sshd.service


2)、限制SFTP用户向上跨目录访问


SFTP是FTP over SSH的安全FTP协议,对于访问SFTP的用户建议使用专用账号,只能上传或下载文件,不能用于SSH登录,同时对SFTP可以访问的目录进行限定,防止目录遍历攻击,具体配置如下:说明:sftpgroup为示例用户组,sftpuser为示例用户名


创建SFTP用户组
groupadd sftpgroup
创建SFTP根目录
mkdir /sftp
修改SFTP根目录属主和权限
chown root:root /sftp
chmod 755 /sftp
创建SFTP用户
useradd -g sftpgroup -s /sbin/nologin sftpuser
设置SFTP用户的口令
passwd sftpuser
创建SFTP用户上传目录
mkdir /sftp/sftpuser
修改SFTP用户上传目录属主和权限
chown root:root /sftp/sftpuser
chmod 777 /sftp/sftpuser
修改/etc/ssh/sshd_config文件
vi /etc/ssh/sshd_config
修改内容如下:
#Subsystem sftp /usr/libexec/openssh/sftp-server -l INFO -f AUTH
Subsystem sftp internal-sftp -l INFO -f AUTH
...
Match Group sftpgroup                  
    ChrootDirectory /sftp/%u
    ForceCommand internal-sftp
说明:
%u代表当前sftp用户的用户名,这是一个通配符,用户原样输入即可。
以下内容必须加在/etc/ssh/sshd_config文件的末尾。
  Match Group sftpgroup                    
    ChrootDirectory /sftp/%u  
    ForceCommand internal-sftp  
重启SSH服务
systemctl restart sshd.service


3)SSH远程执行命令


OpenSSH通用机制,在远程执行命令时,默认不开启tty,如果执行需要密码的命令,密码会明文回显。出于安全考虑,建议用户增加-t选项,确保密码输入安全。


如下:ssh -t testuser@192.168.1.100 su


说明:192.168.1.100为示例IP,testuser为示例用户

相关文章
|
10天前
|
安全 大数据 Linux
云上体验最佳的服务器操作系统 - Alibaba Cloud Linux | 飞天技术沙龙-CentOS 迁移替换专场
本次方案的主题是云上体验最佳的服务器操作系统 - Alibaba Cloud Linux ,从 Alibaba Cloud Linux 的产生背景、产品优势以及云上用户使用它享受的技术红利等方面详细进行了介绍。同时,通过国内某社交平台、某快递企业、某手机客户大数据业务 3 大案例,成功助力客户实现弹性扩容能力提升、性能提升、降本增效。 1. 背景介绍 2. 产品介绍 3. 案例分享
|
10天前
|
弹性计算 运维 安全
阿里云操作系统迁移最佳实践|飞天技术沙龙-CentOS 迁移替换专场
本次方案的主题是阿里云操作系统迁移最佳实践,Alibaba Cloud Linux /Anolis OS 兼容 CentOS 生态,因此能够很丝滑的进行迁移替换。无论是对企业的运维人员,还是对企业操作系统的使用者来说,相对简化了它的维护成本。通过 SMC 操作系统迁移实践带用户深入了解,不仅阐述了原地迁移方案的独特优势,还针对不同的迁移场景,逐步剖析了整个迁移流程,力求使复杂的操作变得直观易懂,实现了真正的“白屏化”体验。 1. CentOS 迁移背景 2. 操作系统迁移实践 3. 迁移故障处理
|
1月前
|
Unix Linux Docker
CentOS停更沉寂,RHEL巨变限制源代:Docker容器化技术的兴起助力操作系统新格局
操作系统是计算机系统的核心软件,管理和控制硬件与软件资源,为用户和应用程序提供高效、安全的运行环境。Linux作为开源、跨平台的操作系统,具有高度可定制性、稳定性和安全性,广泛应用于服务器、云计算、物联网等领域。其发展得益于庞大的社区支持,多种发行版如Ubuntu、Debian、Fedora等满足不同需求。
66 4
|
4月前
|
Oracle Java 关系型数据库
CentOS 7.6操作系统部署JDK实战案例
这篇文章介绍了在CentOS 7.6操作系统上通过多种方式部署JDK的详细步骤,包括使用yum安装openjdk、基于rpm包和二进制包安装Oracle JDK,并提供了配置环境变量的方法。
325 80
|
6月前
|
Linux 虚拟化 数据安全/隐私保护
部署05-VMwareWorkstation中安装CentOS7 Linux操作系统, VMware部署CentOS系统第一步,下载Linux系统,/不要忘, CentOS -7-x86_64-DVD
部署05-VMwareWorkstation中安装CentOS7 Linux操作系统, VMware部署CentOS系统第一步,下载Linux系统,/不要忘, CentOS -7-x86_64-DVD
|
4月前
|
运维 Linux
CentOS操作系统常见的故障处理
本文分享了CentOS操作系统网卡启动失败的故障处理方法,包括使用命令查看日志和禁用NetworkManager服务。
258 4
CentOS操作系统常见的故障处理
|
3月前
|
弹性计算 关系型数据库 MySQL
CentOS 7.x操作系统的ECS云服务器上搭建WordPress网站
CentOS 7.x操作系统的ECS云服务器上搭建WordPress网站
|
3月前
|
Linux 编译器 C语言
./build.sh:行1: g++: 未找到命令的错误问题在centos操作系统下面如何解决
通过上述步骤,您应该能够有效地解决CentOS系统中 `g++: 未找到命令`的错误。确保软件开发环境配置得当,对于顺利执行编译脚本和日常开发工作至关重要。如果问题依然存在,考虑检查脚本内的命令路径引用是否正确,或进一步排查系统配置问题。
195 0
|
5月前
|
人工智能 运维 安全
CentOS停更无忧,中国操作系统闯入后CentOS时代
CentOS停更无忧,中国操作系统闯入后CentOS时代