知识宝库在此藏,一键关注获宝藏
四、入侵防范
a)应遵循最小安装的原则,仅安装需要的组件和应用程序
查询linux中安装的程序,一般使用yum list installed 或者rpm -qa,关键是linux中随随便便都安装得有几百个组件,而且很多组件都是存在着依赖关系。你很难或者至少很难快速的判断某组件到底是必需的还是非必需的,而被测评单位方的人也一样,他也不可能知道。
感觉从上述命令中非常难下手,稍微明显一些的,可以查看开机自启服务
systemctl list-unit-files | grep enabled
![等保2.0测评深入理解—Linux操作系统(七) 等保2.0测评深入理解—Linux操作系统(七)]()
有些可能明显用不到的,比如web应用服务器上留有当时测试的mysql 程序,后续项目更新升级后使用数据库服务器,而原先的就忘了卸载删除。以及一些明显有问题的服务,例如 telnet。
b)应关闭不需要的系统服务、默认共享和高危端口
1. 服务
对于组件、服务、进程、端口而言,它们之间是存在着关系的:安装程序-->启动相关服务-->启动相关进程-->监听相关端口。而且,一个程序(组件)可能有数个服务,而一个服务也可能实际启动了数个进程,当然一个进程应该就对应一个端口。
● Centos 6.x使用 service --status-all 来查看服务
● Centos 7.x 使用 systemctl 命令来查看服务
可以根据类型列出单元 systemctl list-units --type service
估计也看不太懂,具体哪些服务是多余的,看到有明显不符合的,例如telnet 之类的就给不符合吧
2. 端口
使用命令:netstat -tuanp 查看系统中监听的端口以及对应的进程,进行判断哪些是多余的服务、端口,一般默认装机完毕25、111为多余端口,对应的服务也就是多余的。
3. 共享情况(NFS服务)
Linux 默认共享是没有的,但是可以安装对应的共享服务,这里简单介绍一下
3.1 NFS服务简介
NFS是Network File System的缩写,中文称为网络文件系统,它的主要功能是通过网络(一个局域网)让不同的主机系统之间可以共享文件或目录,NFS的客户端(一般为应用服务器,例如web)可以通过挂载(mount)的方式将NFS服务器共享的数据目录挂载到NFS客户端本地系统中(就是某一个关在点下),从客户端本地看,NFS服务器端共享目录就好像是客户端自己的磁盘分区或者目录一样,而实际上却是远端的NFS服务器的目录。
NFS网络文件系统很像Windows系统的网络共享、安全功能、网络驱动器映射,这也和linux的samba服务类似,只不过一般情况下,Windows网络共享服务或samba服务用户办公局域网共享,而互联网中小型网站集群架构后端常用NFS进行数据共享,若是大型网站,那么有可能还会用到更复杂的分布式文件系统Moosefs(mfs)、GlusterFS。
3.2 NFS服务端配置
3.2.1 部署前准备
|
|
|
CentOS Linux release 7.8.2003 (Core)
|
|
|
CentOS Linux release 7.8.2003 (Core)
|
|
|
3.2.2 检查是否安装NFS程序包
nfs-utils: nfs服务的主程序,包括rpc.nfsd、rpc.mountd两个daemons和相关的文档说明及执行命令文件等
rpcbind:centos6下面的rpc主程序(centos5下的是portmap)
如果不存在这两个软件包,请使用 yum -y install nfs-utils rpcbind安装该软件包,安装了该软件包后一般会创建nfsnobody用户,这里我使用上述命令直接安装
安装完后,查看/etc/passwd文件,发现存在nfsnobody用户
3.2.3 修改nfs配置文件/etc/exports
#该配置文件默认是存在,只不过是空文件而已,值得注意的是下文中的24和(之间没有空格
因为这里没有/data/目录,可以先创建data目录
3.2.4 启动nfs服务,并加入开机自启动,检查服务进程
systemctl start rpcbind.service
systemctl enable rpcbind systemctl enable nfs
3.2.5 查看NFS服务器相关信息— showmount
如果修改NFS配置文件/etc/exports, 可使用exportfs命令进行重启扫描/etc/exports文件,而不用重启NFS服务
3.2.6 新建共享目录/data下文件
3.3 NFS客户端配置
3.3.1 创建挂载目录并挂载nfs
3.3.2 查看nfs目录文件,并在客户端新建文件
服务端也存在在客户端中新建的文件,说明客户端用户拥有读写权限
所以这东西感觉上应该有点算是匿名账户的情况了。
c)应通过设定终端接入方式或网络地址范围对通过网络进行管理的管理终端进行限制
1. 防火墙
systemctl status iptables.service
再查看 /etc/sysconfig/iptables 文件,确认SSH相关配置
![等保2.0测评深入理解—Linux操作系统(七) 等保2.0测评深入理解—Linux操作系统(七)]()
-A:add,添加规则(添加的规则放到最后)
INPUT:进站请求(出站:output)
-p:protocol,指定协议(icmp/tcp/udp)
--dport:指定端口号
-j:指定行为结果,允许(accept)/禁止(reject)
-s:指定源端口号或范围
也可使用 iptables -L -n 查看对应规则
-n:表示将单词表达式形式改成数字形式显示(端口号显示)
![等保2.0测评深入理解—Linux操作系统(七) 等保2.0测评深入理解—Linux操作系统(七)]()
上述配置意思:仅允许 172.17.200.43、192.168.12.28 这两个IP访问该服务器的22 端口,其余全拒绝。
systemctl status firewalld.service
例如使用以下命令添加允许访问22端口的规则
firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.12.28" port protocol="tcp" port="22" accept'
firewall-cmd --reload
开启情况下,查看对应策略,确认是否存在SSH相关策略
![等保2.0测评深入理解—Linux操作系统(七) 等保2.0测评深入理解—Linux操作系统(七)]()
2. hosts.allow与hosts.deny文件
/etc/hosts.deny 和 /etc/hosts.allow 是 Linux 系统中用于控制网络访问的配置文件。
/etc/hosts.deny 文件允许你指定哪些客户端将被拒绝访问系统。你可以在这个文件中使用 TCP Wrappers 语法来配置访问控制规则。
hosts.deny 中添加设置 sshd : ALL,再次使用ssh连接,会出现:ssh_exchange_identification: read: Connection reset 的错误,但是已经连接上的ssh是不会中断的,说明 hosts.deny时在连接时查询的配置文件。
然后在hosts.allow中添加设置 sshd : 192.168.56.1,再次使用ssh可以成功连接。
在设置屏蔽所有ssh后,在单独允许192.168.56.1这个ip地址,ssh是允许的,那么就存在优先级问题。优先级为先检查hosts.deny,再检查hosts.allow。
为了安全可以在hosts.deny文件中配置拒绝所有的访问ALL:ALL,然后在hosts.allow文件中逐个开放访问许可,增强安全性。
sshd可以换成其他服务进程名,比如httpd、telnetd等等。
3. sshd_config文件
/etc/ssh/sshd_config 配置文件中设置AllowUsers选项:
允许test和从192.168.1.1登录的test1账户通过SSH登录系统
/etc/ssh/sshd_config 配置文件中设置DenyUsers选项:
拒绝test test1账户通过SSH登录系统
d)应提供数据有效性检验功能,保证通过人机接口输入或通过通信接口输入的内容符合系统设定要求
该条应用系统层面测评,该项不适用
e)应能发现可能存在的已知漏洞,并在经过充分测试评估后,及时修补漏洞
或装有统一管理的安全软件,后台可以统一查看对应服务器是否存在相应漏洞,可以进行安全检查
f)应能够检测到对重要节点进行入侵的行为,并在发生严重入侵事件时提供报警
该条查看是否安装入侵检测软件,例如EDR等,一般可以通过进程查到,这种就需要去询问运维人员了
![等保2.0测评深入理解—Linux操作系统(七) 等保2.0测评深入理解—Linux操作系统(七)]()
原文始发于微信公众号(等保不好做啊):等保2.0测评深入理解—Linux操作系统(七)
评论