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.den
y文件
顺序:
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 }) 计算时依赖的变量数据发生变化,则计算属性…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录
ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...

K8S认证|CKS题库+答案| 11. AppArmor
目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...

【力扣数据库知识手册笔记】索引
索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...

高频面试之3Zookeeper
高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制࿰…...
django filter 统计数量 按属性去重
在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...

如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...
Python爬虫(二):爬虫完整流程
爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...

佰力博科技与您探讨热释电测量的几种方法
热释电的测量主要涉及热释电系数的测定,这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中,积分电荷法最为常用,其原理是通过测量在电容器上积累的热释电电荷,从而确定热释电系数…...
IP如何挑?2025年海外专线IP如何购买?
你花了时间和预算买了IP,结果IP质量不佳,项目效率低下不说,还可能带来莫名的网络问题,是不是太闹心了?尤其是在面对海外专线IP时,到底怎么才能买到适合自己的呢?所以,挑IP绝对是个技…...