centos 安全配置基线
centos 安全配置基线
- 一、系统防火墙及SE系统
- 1. 系统自带防火墙iptables(Centos6)
- 基础命令
- 查看防火墙设置
- 使用命令查看防火墙设置
- 使用命令清除防火墙
- 设置防火墙策略
- 开放指定的端口
- 屏蔽IP
- 2. 系统自带防火墙firewalled(Centos7)
- 基础命令
- 3. 开启SELinux服务(Centos7)
- 查看命令
- 二、身份鉴别
- 1.设置密码复杂度策略
- 2.设置登录策略
- (1)修改`/etc/pam.d/system-auth`,修改复杂度策略。
- (2)记录用户登录失败次数并锁定
- (3)如果启用了SSH远程登录,可以通过命令看配置
- 三、访问控制
- 1.设置root用户ssh登录策略
- 禁止root用户远程ssh登录
- 2.禁止无用的系统用户登录
- 3.检查是否存在除root以外的UID=0的用户
- 4.允许或禁止用户或组通过ssh登录
- 5.检查新建文件系统权限默认值
- 6.查看重点文件权限是否合理
- 四、安全审计
- 1. 查看进程运行是否正常
- 2.系统默认日志记录范围是否覆盖
- 3. 查看系统登录日志
- 五、入侵防范
- 1. 查看自身入侵可疑日志
- 2. 最小安装原则
- 3. 检查运行服务
- 4. 检查服务运行情况
- 六、资源控制
- 1.TCP Wrappers程序管控
- 2.设置登录超时时间
- 3. 设置普通用户最大进程数、CPU、内存等
- 4.适当关闭外设-U盘、光盘等
CentOS 是一个广泛使用的操作系统,为了确保系统的安全性,需要遵循一系列的安全基线。以下是详细的 CentOS 安全基线配置建议:
一、系统防火墙及SE系统
1. 系统自带防火墙iptables(Centos6)
防火墙会从上至下的顺序来读取配置的策略规则,在找到匹配项后就立即结束匹配工作并去执行匹配项中定义的行为(即放行或阻止)。如果在读取完所有的策略规则之后没有匹配项,就去执行默认的策略。
一般而言,防火墙策略规则的设置有两种:一种是“通”(即放行),一种是“堵”(即阻止)。当防火墙的默认策略为拒绝时(堵),就要设置允许规则(通),否则谁都进不来;如果防火墙的默认策略为允许时,就要设置拒绝规则,否则谁都能进来,防火墙也就失去了防范的作用
基础命令
- 启动:
service iptables start - 关闭:
service iptables stop - 查看状态:
iptables -V - 重启 :
service iptables restart
查看防火墙设置
主要分为5种规则类型数据包:
进行路由选择前处理数据包(PREROUTING);
处理流入的数据包(INPUT);
处理流出的数据包(OUTPUT);
处理转发的数据包(FORWARD);
进行路由选择后处理数据包(POSTROUTING)
使用命令查看防火墙设置
iptables -L
使用命令清除防火墙
iptables -F
设置防火墙策略
使用iptables命令进行添加删减。
开放指定的端口
iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT #允许本地回环接口(即运行本机访问本机)
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT #允许已建立的或相关连的通行
iptables -A OUTPUT -j ACCEPT #允许所有本机向外的访问
iptables -A INPUT -p tcp --dport 22 -j ACCEPT #允许访问22端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT #允许访问80端口
iptables -A INPUT -p tcp --dport 21 -j ACCEPT #允许ftp服务的21端口
iptables -A INPUT -p tcp --dport 20 -j ACCEPT #允许FTP服务的20端口
iptables -A INPUT -j reject #禁止其他未允许的规则访问
iptables -A FORWARD -j REJECT #禁止其他未允许的规则访问
屏蔽IP
iptables -I INPUT -s 123.45.6.7 -j DROP #屏蔽单个IP的命令
iptables -I INPUT -s 123.0.0.0/8 -j DROP #封整个段即从123.0.0.1到123.255.255.254的命令
iptables -I INPUT -s 124.45.0.0/16 -j DROP #封IP段即从123.45.0.1到123.45.255.254的命令
iptables -I INPUT -s 123.45.6.0/24 -j DROP #封IP段即从123.45.6.1到123.45.6.254的命令
或者直接在路径/etc/sysconfig下,对文件iptables编辑。
配置完成记得重启防火墙命令
2. 系统自带防火墙firewalled(Centos7)
基础命令
- 启动:
systemctl start firewalld - 重启:
systemctl restart firewalld - 关闭:
systemctl stop firewalld - 查看状态:
systemctl status firewalld - 开机禁用 :
systemctl disable firewalld - 开机启用 :
systemctl enable firewalld
前台可视化界面-防火墙设置也可以设置
3. 开启SELinux服务(Centos7)
SELinux(Security-Enhanced Linux)是美国国家安全局在Linux开源社区的帮助下开发的一个强制访问控制(MAC,Mandatory Access Control)的安全子系统。RHEL7系统使用SELinux技术的目的是为了让各个服务进程都受到约束,使其仅获取到本应获取的资源。
简单概述下基本的三种安全访问控制类型
- MAC(强制访问控制类型)
- DAC(自主访问控制类型) --通常就是ACL策略居多
- RABC(基于角色访问控制类型)
安全性MAC>RABC>DAC
SELinux 有三种工作模式,分别是
enforcing:强制模式。违反 SELinux 规则的行为将被阻止并记录到日志中,并且自动拦截
permissive:宽容模式。违反 SELinux 规则的行为只会记录到日志中,只告警不拦截。一般为调试用。
disabled:关闭 SELinux。不拦截不告警。
配置文件路径:/etc/selinux,通过查看config,了解目前运行状态
查看命令
cat config
或者使用命令进行查询
[root@localhost selinux]# getenforce
Enforcing
[root@localhost selinux]#
临时修改命令(不用重启机器):[root@localhost selinux]# setenforce 0 --0设为宽容莫斯
[root@localhost selinux]# getenforce
Permissive
[root@localhost selinux]# setenforce 1 --1设为强制模式
[root@localhost selinux]# getenforce
Enforcing
[root@localhost selinux]#
二、身份鉴别
1.设置密码复杂度策略
通过设置/etc/login.defs文件,进行密码策略设置
PASS_MAX_DAYS 90
#密码最大有效期
PASS_MIN_DAYS 2
#两次修改密码的最小间隔时间
PASS_MIN_LEN 12
#密码最小长度
PASS_WARN_AGE 7
#密码过期前多少天开始提示
上述对新增用户有效,如需修改现有策略,需使用
chage命令
2.设置登录策略
使用cracklib模块设置密码复杂度
通过命令
rpm -qa|grep cracklib --查看服务是否运行
(1)修改/etc/pam.d/system-auth,修改复杂度策略。
centos 6 找到 password requisite pam_cracklib.so这么一行替换成如下:
password requisite pam_cracklib.so retry=3 difok=3 minlen=12 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1
centos 7 找到password requisite pam_pwquality.so这么一行替换成如下:
password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= minlen=12 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1 enforce_for_root
参数含义:
#retry 允许重试的次数
#difok=N:新密码必需与旧密码不同的位数 difok=3 新密码必须与旧密码有3位不同
#ucredit=N 当N>0时表示新密码中大写字母出现的最多次数;当N<0时表示新密码中大写字母出现最少次数
#lcredit=N 当N>0时表示新密码中小写字母出现的最多次数;当N<0时表示新密码中小写字母出现最少次数
#dcredit=N: N >= 0:密码中最多有多少个数字;N < 0密码中最少有多少个数字. dcredit=-1 密码中最少有1个数字
#ocredit=N:特殊字母的个数 ocredit=-1 密码中至少有1个特殊字符
#enforce_for_root 确保即使是root用户设置密码,也应强制执行复杂性策略。
(2)记录用户登录失败次数并锁定
在/etc/pam.d/system-auth中“#%PAM-1.0”下面一行加入
auth required pam tally2.so onerr=fail deny=10 no magic root unlock time=300
注意:一定要加在#%PAM-1.0下面一行
参数说明:
deny[=n]最大尝试次数,超过锁定unlock_time解锁时间even_deny_root同时限制root用户root_unlock_time[=n]设定root锁定后,多少时间解锁quiet不对已锁定用户发出提示消息
root策略建议谨慎设置,否则很容易导致无法解锁root
设置了unlock_time会自动解锁。否则需要手动解锁。
运行命令pam_tally2 -u 用户 -r
(3)如果启用了SSH远程登录,可以通过命令看配置
more /etc/ssh/sshd_config
设置LoginGraceTime 15m #账号锁定时间15分钟
MaxAuthTries 3 #账号锁定阈值
三、访问控制
1.设置root用户ssh登录策略
禁止root用户远程ssh登录
通过修改 /etc/ssh/sshd_config,将参数修改#PermitRootLogin no
重启ssh服务
service sshd restart
2.禁止无用的系统用户登录
通过命令 usermod -s /sbin/nologin 用户 --禁止用户远程登录
通过命令 usermod -s /bin/bash 用户名 --恢复允许用户远程登录
查看/etc/passwd 表示用户是否可以登录。
3.检查是否存在除root以外的UID=0的用户
通过命令 awk -F: '($3==0){print $1}' /etc/passwd --输出当前uid=0的用户
4.允许或禁止用户或组通过ssh登录
设置ssh用户白名单、黑名单
vi /etc/ssh/sshd_config
增加用户(允许、白名单)
AllowUsers 用户1 用户2
或
添加用户组
AllowGroups 组1 组2
PS:取交集,意思两个同时允许才可以。其他禁止
取消用户(禁止、黑名单)
DenyUsers 用户1
或
DenyGroups 组1
PS:取并集,有一个设置了不允许都会不允许。
5.检查新建文件系统权限默认值
通过umask,权限掩码值检查当前用户新建文件、文件夹默认权限。root用户正常是022。
022的意思是,用文件夹最大权限777(rwxrwxrwx)-当前设置权限755(rwx-r-xr-x) = 022,为什么文件夹默认配置了执行-x权限,因为文件夹没执行的话进不去,就没意义了。
而文件权限默认都没有执行,所以就是默认最大666(rw-rw-rw)-644(rw-r–r–=002)。
普通用户默认值是002
6.查看重点文件权限是否合理
如/etc/shadow /etc/passwd(744)
/etc/group
/etc/inittab
/etc/lilo.conf
/etc/grub.conf
/etc/xinetd.conf
/etc/crontab
/etc/securetty
/etc/rc.d/init.d
/var/log/messages
/var/log/wtmp
/var/run/utmp
/var/spool/cron
/usr/sbin/init
/etc/login.defs(644)
/etc/*.conf
/sbin/bin
/etc/init.d
/etc/xinetd.d 等等
四、安全审计
本地安全审计日志功能是否正常打开运行
安装第三方工具等
1. 查看进程运行是否正常
[root@localhost selinux]# ps -ef |grep syslogd --查看进程服务情况
[root@localhost selinux]# ps aux|grep syslogd
[root@localhost selinux]# ps -ef|grep auditd --查看守护进程情况
2.系统默认日志记录范围是否覆盖
查看/etc/rsyslog.conf配置文件。
3. 查看系统登录日志
命令lastlog --查询登录用户、端口、时间等
命令last -x --显示系统关闭、用户登录和退出的历史
命令lastb --列出失败尝试的登录信息
五、入侵防范
能记录、检测到入侵行为,能记录入侵者ip、主机名、时间等。建议有条件安装第三方设备如HIDS、NIDS等。
1. 查看自身入侵可疑日志
通过查看日志,可疑识别非法访问或可疑的暴力破解。
more /var/log/secure | grep fail
2. 最小安装原则
3. 检查运行服务
命令service --status-all --检查是否有非必要服务,如ftp、smtp等
4. 检查服务运行情况
netstat-lp(查看开启服务)
netstat -an(查看开启的端口)
netstat-anlp(查看开启的端口及服务)
六、资源控制
1.TCP Wrappers程序管控
通过设置/etc/hosts.allow和/etc/hosts.deny文件
顺序:
1./etc/hosts.allow
2./etc/hosts.deny
3.以上都不符合,则放行
/etc/hosts.allow#ssh允许单个ip
sshd:192.168.220.1#ssh允许ip段
sshd:192.168.220.#telnet允许单个ip
in.telnetd:192.168.220.1#telnet允许ip段
in.telnetd:192.168.221.
/etc/hosts.deny
sshd:ALL
in.telnetd:ALL
#禁止相关服务
2.设置登录超时时间
通过命令查看cat /etc/profile |grep TMOUT
vi /etc/profile 添加export TMOUT=600 --600秒超时
3. 设置普通用户最大进程数、CPU、内存等
进入 /etc/security/limits.conf 文件下,
增加代码
roxy soft nproc 10240
roxy hard nproc 10240
roxy soft nofile 10240
roxy hard nofile 10240
注:roxy 为需要修改线程数的用户名,10240 为设置的进程数和文件数限制,可根据需要修改。
也可以用ulimit命令
4.适当关闭外设-U盘、光盘等
在vi /etc/modprobe.d/blacklist.conf里添加一行:
blacklist usb-storage
执行命令生效modprobe -r usb-storage
相关文章:
centos 安全配置基线
centos 安全配置基线 一、系统防火墙及SE系统1. 系统自带防火墙iptables(Centos6)基础命令查看防火墙设置使用命令查看防火墙设置使用命令清除防火墙设置防火墙策略开放指定的端口屏蔽IP 2. 系统自带防火墙firewalled(Centos7)基础…...
高级编程语言的基本语法在CPU的眼中是什么样的呢?
任何一门高级编程语言,就一定存在下面这几个语法元素 变量类型数组控制语句(条件,循环)运算符(算术运算,布尔运算,赋值运算,关系运算,位运算)函数 而本节探…...
Redis 性能优化:多维度技术解析与实战策略
文章目录 1 基准性能2 使用 slowlog 优化耗时命令3 big key 优化4 使用 lazy free 特性5 缩短键值对的存储长度6 设置键值的过期时间7 禁用耗时长的查询命令8 使用 Pipeline 批量操作数据9 避免大量数据同时失效10 客户端使用优化11 限制 Redis 内存大小12 使用物理机而非虚拟机…...
.netframwork模拟启动webapi服务并编写对应api接口
在.NET Framework环境中模拟启动Web服务,可以使用几种不同的方法。一个常见的选择是利用HttpListener类来创建一个简单的HTTP服务器,或者使用Owin/Katana库来自托管ASP.NET Web API或MVC应用。下面简要介绍Owin/Katana示例代码。这种方法更加灵活&#x…...
MongoDB 学习指南与资料分享
MongoDB学习资料 MongoDB学习资料 MongoDB学习资料 在数据爆炸的当下,MongoDB 作为非关系型数据库的佼佼者,以其独特优势在各领域发光发热。无论是海量数据的存储,还是复杂数据结构的处理,MongoDB 都能轻松应对。接下来…...
【Azure 架构师学习笔记】- Azure Function (2) --实操1
本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Function 】系列。 接上文【Azure 架构师学习笔记】- Azure Function (1) --环境搭建和背景介绍 前言 上一文介绍了环境搭建,接下来就在本地环境下使用一下。 环境准备 这里我下载了最新的VS studio&…...
扫描深度?滤光片和偏振片区别?
扫描深度 https://www.shining3d.cn/chike/kousao/aoralscan-wireless.html 是指扫描仪能够准确捕捉和测量的最大距离范围。这一参数对于不同类型的三维扫描仪和应用场景非常重要,具体含义包括: 扫描范围 定义: 扫描深度通常指从扫描仪到被扫描物体表…...
HJ4 字符串分隔(Java版)
一、试题地址 字符串分隔_牛客题霸_牛客网 二、试题内容 描述 对于给定的由小写字母和数字混合构成的字符串 s ,你需要按每 8 个字符换一行的方式书写它,具体地: 书写前 8 个字符,换行;书写接下来的 88 个字符&am…...
【脑机接口数据处理】matlab读取ns6 NS6 ns5NS5格式脑电数据
文章目录 MATLAB函数openNSx详解:轻松读取NSx文件函数概述下载文件基本用法注意事项示例 结论 MATLAB函数openNSx详解:轻松读取NSx文件 在神经科学和生物医学工程领域,处理神经信号数据是一项常见且重要的任务。NSx文件格式是一种用于存储神…...
用C++实现一个基于模板的观察者设计模式
观察者模式 定义 观察者模式(Observer Pattern)是一种行为型设计模式,用于定义对象间的一对多依赖关系,使得当一个对象状态发生变化时,其所有依赖它的对象都会收到通知并自动更新。 核心概念 角色定义 Subject(被观察者): 持有观察者列表,维护观察者的注册和移除。 …...
【华为路由/交换机的ftp文件操作】
华为路由/交换机的ftp文件操作 PC:10.0.1.1 R1:10.0.1.254 / 10.0.2.254 FTP:10.0.2.1 S1:无配置 在桌面创建FTP-Huawei文件夹,里面创建config/test.txt。 点击上图中的“启动”按钮。 然后ftp到server,…...
微信小程序 实现拼图功能
微信小程序 实现拼图 效果示例功能描述代码示例 效果示例 微信小程序 碎片拼图 功能描述 在微信小程序中,实现一个简单的拼图小游戏。用户需要将四张碎片图片拖动到目标图片的正确位置,具体功能如下: 拖动功能: 用户可以通过手指…...
深度学习项目--基于LSTM的火灾预测研究(pytorch实现)
🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 前言 LSTM模型一直是一个很经典的模型,这个模型当然也很复杂,一般需要先学习RNN、GRU模型之后再学,GRU、LSTM的模型讲解将…...
AI时代下 | 通义灵码冲刺备战求职季
AI时代下 | 通义灵码冲刺备战求职季 什么是通义灵码使用智能编程助手备战求职靠谱吗体验心得 AI时代下,备战求职季有了不一样的方法,使用通义灵码冲刺备战求职季,会有什么样的体验? 什么是通义灵码 在开始话题之前,首…...
当comfyui-reactor-node 安装失败urllib.error.HTTPError: HTTP Error 403: Forbidden解决方法
comfyUI 节点comfyui-reactor-node 安装 python install 时 报错 urllib.error.HTTPError: HTTP Error 403: Forbidden 如下: (xxx) xxxxxxx:~/sdb/Q/ComfyUI/custom_nodes/comfyui-reactor-node$ python install.py Traceback (most recent call last): File …...
SSE 实践:用 Vue 和 Spring Boot 实现实时数据传输
前言 大家好,我是雪荷。最近我在灵犀 BI 项目中引入了 SSE 技术,以保证图表的实时渲染,当图表渲染完毕服务端推送消息至浏览器端触发重新渲染。 什么是 SSE? SSE 全称为 Server-Send Events 意思是服务端推送事件。 SSE 相比于 …...
TouchGFX学习笔记(一)
配置请参考链接:TouchGFX超低配置移植教程-CSDN博客 一,显示配置 1.适当增加堆栈大小 2.适当增大缓冲大小 双重缓冲消除了任何撕裂的风险,无论渲染下一帧需要多长时间,因为TfT控制器,例如,总是可以访问最…...
Java算法 二叉树入门 力扣简单题相同的树 翻转二叉树 判断对称二叉树 递归求二叉树的层数
目录 模版 先序遍历 中序遍历 后序遍历 力扣原题 相同的二叉树 力扣原题 翻转二叉树 遍历树的层数 题目 静态变量 核心逻辑 模版 // 二叉树public static class Node{public int value;public Node left;public Node right;public Node(int v) {valuev;}} 先序遍历 …...
如何将 session 共享存储到 redis 中
文章目录 一. 分布式 session 登录1.1 什么是分布式?1.2 Session 共享1.3 为什么服务器 A 登录后,请求发到服务器 B,不认识该用户?1.4 共享存储 二. Session 共享实现Redis三. 测试session共享四. cookie设置4.1 前端4.2 后端 一.…...
vue3学习三
五 计算属性 定义 选项式 export default {data(){return {num:1}},computed:{num1(){this.num1}} } 组合式 import {ref,computed} from vuelet numref(0); //仅读 let num1 computed(()>{return num.value1 }) 计算时依赖的变量数据发生变化,则计算属性…...
多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度
一、引言:多云环境的技术复杂性本质 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,基础设施的技术债呈现指数级积累。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...
智慧医疗能源事业线深度画像分析(上)
引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...
R语言AI模型部署方案:精准离线运行详解
R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...
什么是库存周转?如何用进销存系统提高库存周转率?
你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...
Mac软件卸载指南,简单易懂!
刚和Adobe分手,它却总在Library里给你写"回忆录"?卸载的Final Cut Pro像电子幽灵般阴魂不散?总是会有残留文件,别慌!这份Mac软件卸载指南,将用最硬核的方式教你"数字分手术"࿰…...
12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...
Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?
在大数据处理领域,Hive 作为 Hadoop 生态中重要的数据仓库工具,其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式,很多开发者常常陷入选择困境。本文将从底…...
【笔记】WSL 中 Rust 安装与测试完整记录
#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统:Ubuntu 24.04 LTS (WSL2)架构:x86_64 (GNU/Linux)Rust 版本:rustc 1.87.0 (2025-05-09)Cargo 版本:cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...
uniapp手机号一键登录保姆级教程(包含前端和后端)
目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号(第三种)后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...
【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error
在前端开发中,JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作(如 Promise、async/await 等),开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝(r…...
