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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/955409.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux第二课:LinuxC高级 学习记录day03

4、解压和压缩 1、gzip 和 gunzip 特点&#xff1a; 1&#xff09;只能对单个普通文件进行压缩或解压 2&#xff09;不能进行归档&#xff0c;压缩后或解压缩后源文件不存在 3&#xff09;压缩生成压缩格式为.gz 命令&#xff1a; 压缩&#xff1a;gzip 文件名.c // …

OpenCV实现多尺度细节提升算法

1、算法原理 多尺度细节提升算法来源于论文*《DARK IMAGE ENHANCEMENT BASED ON PAIRWISE TARGET CONTRAST AND MULTI-SCALE DETAIL BOOSTING》*&#xff0c;算法主要是解决细节增强算法中噪声和细节的平衡问题。 常规的非锐化掩蔽&#xff08;USM&#xff09;算法在提升细节…

查看APK的公钥,MD5信息

查看md5 sha1 sha256的等信息 keytool -list -printcert -jarfile apk的路径地址 查看公钥私钥信息 keytool -list -rfc --keystore keystore文件的路径地址 | openssl x509 -inform pem -pubkey 把里面的keystore文件的路径地址替换成你的本地文件就可以了 如果报以上错误 就…

【机器学习实战入门】使用Python进行手写数字识别

什么是手写数字识别&#xff1f; 手写数字识别是计算机识别手写数字的能力。这对手工制造的设备来说是一个难题&#xff0c;因为手写数字并不完美&#xff0c;且人们书写数字的方式多种多样。手写数字识别旨在解决这一问题&#xff0c;通过使用数字的图像来识别该图像中的数字…

技术晋升读书笔记—华为研发

读完《华为研发》第三版&#xff0c;我深感震撼&#xff0c;书中的内容不仅详实地记录了华为公司的成长历程&#xff0c;还揭示了华为成功背后的管理理念和创新思路。这本书通过真实的案例和数据&#xff0c;展示了华为如何从一个小企业发展成全球通信行业的领导者。 一、关键人…

SQL server数据库导出excel操作

1、选择需要查询的数据库&#xff1a;鼠标右键—>任务—>导出数据 2、 选择数据源和服务器&#xff0c;使用sql server身份验证 &#xff08;数据源就是指需要从哪里导出到excel表格&#xff0c;这里就选择你需要导出的数据库&#xff09; 3、下一步选择要导出的excel表…

javaEE初阶————多线程初阶(2)

今天给大家带来第二期啦&#xff0c;保证给大家讲懂嗷&#xff1b; 1&#xff0c;线程状态 NEW安排了工作还未开始行动RUNNABLE可工作的&#xff0c;或者即将工作&#xff0c;正在工作BLOCKED排队等待WAITING排队等待其他事TIMED_WAITING排队等待其他事TERMINATED工作完成了 …

用LLM做测试驱动开发:有趣又高效的尝试

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

你需要什么样的资源隔离?丨TiDB 资源隔离最佳实践

导读 资源隔离是数据库性能优化的重要环节&#xff0c; TiDB 在当前版本已经实现了从数据级隔离到流控隔离的全面升级 &#xff0c;无论是多系统共享集群、复杂负载隔离&#xff0c;还是小型系统整合和 SQL 精细化控制&#xff0c;TiDB 都提供了灵活且高效的解决方案。 本文以…

1 行命令引发的 Go 应用崩溃

一、前言 不久前&#xff0c;阿里云 ARMS 团队、编译器团队、MSE 团队携手合作&#xff0c;共同发布并开源了 Go 语言的编译时自动插桩技术。该技术以其零侵入的特性&#xff0c;为 Go 应用提供了与 Java 监控能力相媲美的解决方案。开发者只需将 go build 替换为新编译命令 o…

Python毕业设计选题:基于django+vue的宠物服务管理系统

开发语言&#xff1a;Python框架&#xff1a;djangoPython版本&#xff1a;python3.7.7数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat11开发软件&#xff1a;PyCharm 系统展示 管理员登录 管理员功能界面 用户管理 宠物商品管理 医疗服务管理 美容服务管理 系统…

Java连接TDengine和MySQL双数据源

git文件地址&#xff1a;项目首页 - SpringBoot连接TDengine和MySQL双数据源:SpringBoot连接TDengine和MySQL双数据源 - GitCode 1、yml配置 spring:datasource:druid:mysql:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/testusername: roo…

三十一、事件过滤处理分析

三十一、事件过滤处理分析eventFilter 实现以下功能 bool QObject::eventFilter(QObject *watched, QEvent *event)&#xff1a; 如果已将此对象安装为所监视对象的事件过滤器&#xff0c;则过滤事件。 在你重新实现这个函数时&#xff0c;如果你想过滤掉事件&#xff0c;即停…

C++ QT中Q_Q和Q_D是什么?怎么使用?本质是什么?C++仿写

1.QT中Q_Q和Q_D是什么&#xff1f; Q_Q可以得到外部可以访问的类指针Q_D可以得到内部封装&#xff0c;外部不可达的类指针 2. 怎么使用&#xff1f; 上代码 APrivate.h #pragma once #include <QtCore>class A;class APrivate {Q_DECLARE_PUBLIC(A) public:APrivate(…

三种文本相似计算方法:规则、向量与大模型裁判

文本相似计算 项目背景 目前有众多工作需要评估字符串之间的相似(相关)程度&#xff1a;  比如&#xff0c;RAG 智能问答系统文本召回阶段需要计算用户文本与文本库内文本的相似分数&#xff0c;返回前TopK个候选文本。  在评估大模型生成的文本阶段&#xff0c;也需要评估…

高效实现 Markdown 转 PDF 的跨平台指南20250117

高效实现 Markdown 转 PDF 的跨平台指南 引言 Markdown 文件以其轻量化和灵活性受到开发者和技术写作者的青睐&#xff0c;但如何将其转换为易于分享和打印的 PDF 格式&#xff0c;是一个常见需求。本文整合了 macOS、Windows 和 Linux 三大平台的转换方法&#xff0c;并探讨…

浅谈云计算21 | Docker容器技术

Docker容器技术 一、 容器技术特性1.1 轻量级特性1.2 隔离性特性 二、容器镜像2.1 容器镜像概述2.1.1 定义与构成2.1.2 分层结构 2.2 联合文件系统2.3 容器镜像的构建与管理2.3.1 容器镜像的构建2.3.2 **构建镜像流程**2.3.3 **应用场景**2.3.4 镜像仓库的应用 2.4 容器镜像的优…

LabVIEW实现油浸式变压器自主监测与实时报告

油浸式变压器广泛应用于电力系统中&#xff0c;尤其是在电力传输和分配领域。为了确保变压器的安全、稳定运行&#xff0c;及时监测其工作状态至关重要。传统的变压器监测方法通常依赖人工巡检和定期检查&#xff0c;但这不能及时发现潜在的故障隐患&#xff0c;且效率较低。随…

【2025最新】国内中文版 ChatGPT镜像网站整理合集,GPT最新模型4o1,4o,4o-mini分类区别,镜像站是什么

1.快速导航 原生中转型镜像站点 立即Chat支持GPT4、4o以及o1,canvs等&#xff0c;同步官网功能 AIChat.com 支持最新4O 2.两者对比 官网立即Chat访问难度需要魔法直接访问支付手段国际支付国内支付封禁策略检测节点&#xff0c;随时封禁不会封禁价格每月140元订阅费用每年70元…

SpringBoot:RestTemplate与IllegalArgumentException

问题描述 在SpringBoot应用中&#xff0c;有时会遇到使用RestTemplate调用第三方服务的场景。例如&#xff1a;在进行地名数据采集时&#xff0c;为了拿到地名对应的经纬度位置&#xff0c;通常会有地理编码的步骤&#xff0c;此时就可能涉及到调用第三方接口服务实现此需求。 …