Centos系统安全设置

1 设置密码复杂度帐号密码有效期3个月

密码复杂度要求:最小长度8位,至少2位大写字母,1位小写字母,4位数字,1位特殊字符

1)执行备份:

#cp -p /etc/login.defs /etc/login.defs_bak

#cp /etc/pam.d/system-auth /etc/pam.d/system-auth.bak

2)修改策略设置:

(1)密码有效期:

#vi /etc/login.defs

修改PASS_MIN_LEN的值为8

修改PASS_MAX_DAYS的值为90

保存退出

(2)密码复杂度

#vi /etc/pam.d/system-auth

将文件中的下面两行:

password    requisite     pam_cracklib.so try_first_pass retry=3 type=

password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok

改为:

password    requisite     pam_cracklib.so try_first_pass retry=5 type= minlen=8 ucredit=-2 lcredit=-1 dcredit=-4 ocredit=-1

password    sufficient    pam_unix.so md5 shadow nullok try_first_pass use_authtok

  • retry=5 定义登录/修改密码失败时,可以重试的次数;
  • type=xxx 当添加/修改密码时,系统给出的缺省提示符是什么,用来修改缺省的密码提示文本。默认是不修改的,如上例。
  • minlen=8 定义用户密码的最小长度为8位
  • ucredit=-2 定义用户密码中最少有2个大写字母 (数字为负数,表示至少有多少个大写字母;数字为正数,表示至多有多少个大写字母;下面同理)
  • lcredit=-1 定义用户密码中最少有1个小写字母
  • dcredit=-4 定义用户密码中最少有4个数字
  • ocredit=-1 定义用户密码中最少有1个特殊字符(除数字、字母之外)

2 登录失败5次锁定帐号5分钟

1)备份

#cp /etc/pam.d/system-auth /etc/pam.d/system-auth.bak2

#cp /etc/pam.d/sshd /etc/pam.d/sshd.bak

2)修改

#vi /etc/pam.d/system-auth

auth        required      pam_tally2.so onerr=fail deny=5 unlock_time=300 root_unlock_time=300

#vi /etc/pam.d/sshd

auth       required     pam_tally2.so onerr=fail deny=5 unlock_time=300 root_unlock_time=300

3 闲时5分钟无操作,自动退出会话

1)执行备份:

#cp -p /etc/profile /etc/profile_bak

2)在/etc/profile文件修改:

#vi /etc/profile

export TMOUT=300

保存退出,刷新

#source /etc/profile

4 不进行历史记录

1) 在/etc/profile文件修改:

#vi /etc/profile

export HISTSIZE=0

保存退出,刷新

#source /etc/profile

 5 日志保存时间设为6个月

1)备份

#cp /etc/logrotate.conf /etc/logrotate.conf.bak

2)修改文件

编辑/etc/logrotate.conf文件

  1. weekly下的rotate 4改为rotate 24,表示6个月;#系统默认日志保存时间为4周
  2. 将指定文件的monthly下的rotate 1改为rotate 6,表示6个月

保存退出,重启日志服务

#service rsyslog restart

6 远程连接白名单

第一种 用户白名单/黑名单

1)备份

#cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

2)修改/etc/ssh/sshd_config

#vi /etc/ssh/sshd_config

#仅允许特定用户

AllowUsers user1

#仅允许特定用户特定IP

AllowUsers user1@10.10.10.1

#禁止某个用户

DenyUsers user2

保存退出

重启服务

#systemctl restart sshd

第二种 IP白名单

1)备份

cp etc/hosts.deny etc/hosts.deny.bak

cp /etc/hosts.allow /etc/hosts.allow.bak

2)编辑 /etc/hosts.deny

 vi /etc/hosts.deny

添加

sshd:ALL  #先禁止所有IP登录

3)编辑 /etc/hosts.allow

vi /etc/hosts.allow

#添加允许的IP,多个用逗号隔开

sshd:10.133.20.21,10.138.20.22,10.133.48.136:allow

或者下面这种格式

sshd:192.168.0.1/24,192.168.0.,192.168.1.:allow

无需重启ssh

 

7 删除多余帐号

1)检查设备存在非系统内置可登录账号;

2)检查设备不存在常见的test、admin、ceshi等账号;

3)检查设备不存在常见的厂商命名账号,如xjwh、tywh等;

建议,默认系统用户uid中,root为0;系统用户为1-999;普通用户为1000-65535;应保证只有root用户的uid为0,并检查有无其他可疑账户,及时进行删除或禁用。

(1)检查账号

cat /etc/passwd

awk -F':' '{ print $1 $3}' /etc/passwd

(2)删除账号

userdel 用户名  #仅删除用户

userdel -r 用户名  #删除用户和目录

8 删除多余服务

以下服务都需要关闭:

amanda chargen chargen-udp cups cups-lpd daytime daytime-udp echo echo-udp eklogin ekrb5-telnet finger gssftp imap imaps ipop2 ipop3 klogin krb5-telnet kshell ktalk ntalk rexec rlogin rsh rsync talk tcpmux-server telnet tftp time-dgram time-stream uucp;  

(1)#chkconfig --list

(2)禁止非必要服务:#chkconfig [service] off

        开启服务为:#chkconfig [service] on

禁用135,137,138,139,21,23,25,445,3389,6000,177,514等端口

(1)查看端口

netstat -pantu

(2)查看端口对应服务

lsof -i :22

cat /etc/services | grep -w 22

(3)chkconfig --list |grep ssh (过滤出ssh服务)

(4)关闭服务

service sshd stop

systemctl stop sshd

并且设置此服务为开机不启动:

chkconfig sshd off

9 开启关键文件审计

1)查看和开启auditd

#service auditd status

#service auditd start

2)查看enable 是否为1

#auditctl -s

所有的审计日志会记录在/var/log/audit/audit.log文件中,配置信息在/etc/audit/auditd.conf

3)审计指定文件

(1)临时添加规则

auditctl -w path -p permission -k key_name

  1. path为需要审计的文件或目录
  2. 权限可以是r,w,x,a(r为读,w为写,x为执行,a代表文件或目录的属性发生变化)
  3. key_name为可选项,方便识别哪些规则生成特定的日志项
    1. 设置规则所有对passwd文件的写、属性修改操作都会被记录审计日志
    2. # auditctl -w /etc/passwd -p wa -k passwd_change
    3. 设置规则,监控/etc/selinux目录
    4. # auditctl -w /etc/selinux/ -p wa -k selinux_change
    5. 设置规则,监控fdisk程序
    6. # auditctl -w /usr/sbin/fdisk -p x -k disk_partition

(2)永久添加规则

备份文件

#cp /etc/audit/audit.rules /etc/audit/audit.rules.bak

(3)编辑文件

# vim /etc/audit/rules.d/audit.rules

-w /etc/passwd -p wa -k passwd_changes

-w /usr/sbin/fdisk -p x -k partition_disks

(4)重启服务

service auditd restart

auditctl -l 查看定义的规则

10 设置三权分立帐号

管理员帐号,安全员帐号,审计员帐号

1)管理员帐号

(1)添加用户

useradd sysadmin

passwd sysadmin

(2)创建组

groupadd sysgroup

usermod -G sysgroup sysadmin

(3)授予权限

chown -R sysadmin:sysgroup /

2)安全员帐号

useradd secadmin

passwd secadmin

chown -R secadmin:secadmin /etc

chmod 700 /etc

3)审计员帐号

useradd auditadmin

passwd auditadmin

vi /etc/sudoers后编辑插入以下内容:

auditadmin     ALL = (root) NOPASSWD: /usr/bin/cat , /usr/bin/less , /usr/bin/more , /usr/bin/tail , /usr/bin/head

chown -R auditadmin:auditadmin /var/log

chmod 700 /var/log

chmod 700 /var/log

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

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

相关文章

逸学Docker【java工程师基础】3.3Docker安装nacos

docker pull nacos/nacos-server docker network create nacos_network #创建容器网络 docker run -d \ --name nacos \ --privileged \ --cgroupns host \ --env JVM_XMX256m \ --env MODEstandalone \ --env JVM_XMS256m \ -p 8848:8848/tcp \ -p 9848:9848…

Linux 有哪些搜索方式?5分钟带你搞懂!

5分钟带你掌握 Linux 的三种搜索方式 前言 1.find 命令 find 命令是用来在给定的目录下查找符合给定条件的文件 语法格式:find [查找起始路径] [查找条件] [处理动作] (1)根据名称查找:find [查找起始路径] -name 文件名 或者…

​LeetCode解法汇总82. 删除排序链表中的重复元素 II

目录链接: 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms 原题链接:. - 力扣(LeetCode) 描述: 给定一个已排序的链表的头 head &#xf…

request entity too large 解决请求实体过大问题的方法

在网络请求过程中,有时会出现请求实体过大而导致服务器无法处理的情况。本文将介绍两种情况及其解决办法,真实可用! 问题描述 请求实体过大问题主要分为两种情况: 1、带413状态码的请求实体过大 这种情况通常发生在请求文件过…

09- OpenCV:图像上采样和降采样

目录 1、上采样和降采样 简介 2、采样的应用场景 3、采样的API 4、图像金字塔概念 5、代码演示 1、上采样和降采样 简介 在图像处理中,上采样(Upsampling)和降采样(Downsampling)是常用的操作。 (1&…

React函数式组件学习笔记

React是一种用于构建用户界面的JavaScript库,它采用组件化的方式来构建复杂的UI。在React中,函数式组件是一种声明式的方式去描述UI的状态和行为。 React的特性 1.声明式设计-React采用声明范式,可以轻松描述应用 2.高效-React通过对DOM的模…

若依顶部导航栏改造

若依顶部导航栏改造 1.改造后代码 需要代码的请私聊我! 目前的话就是三级目录,太多了也没啥用!

鸿蒙入门实战-ArkTS开发

声明式UI基本概念 应用界面是由一个个页面组成,ArkTS是由ArkUI框架提供,用于以声明式开发范式开发界面的语言。 声明式UI构建页面的过程,其实是组合组件的过程,声明式UI的思想,主要体现在两个方面: 描述…

ZooKeeper 安装

ZooKeeper 的安装包括单机模式安装,以及集群模式安装。 单机模式较简单,是指只部署一个 zk 进程,客户端直接与该 zk 进程进行通信。在开发测试环境下,通常来说没有较多的物理资源,因此我们常使用单机模式。 当然在单…

NXP采用RS RTS测试系统,验证28纳米RFCMOS雷达单芯片 |百能云芯

Rohde & Schwarz的雷达目标模拟器R&S RTS,作为汽车雷达的颠覆性解决方案,尤其是其能够电子模拟非常近距离物体的能力,已被用于验证NXP半导体的下一代雷达传感器参考设计的性能。 这一合作使汽车行业在汽车雷达的发展上迈出了一步&…

参加数据库活动,学习知识,领取奖品

去年12月1日我发了一篇关于数据库高可用的文章《我们的数据库需要什么样的HA?》,文中介绍了阿里云PolarDB MySQL通过了热备无感秒切技术,解决了HA场景下的故障探测、切换速度和切换体验的问题。文末提到了线上的PolarDB功能体验馆&#xff0c…

结构化流的介绍

目录 有界数据和无界数据 有界数据 无界数据 结构化流 基本介绍 入门案例 结构化流的编程模型 数据结构 数据源(Source) File Source Kafka Source(Spark 和 Kafka 整合) 整合Kafka准备工作 从kafka中读取数据 流式处理 批处理 数据写入Kafka中 流式处理 批处理…

Hadoop——HDFS、MapReduce、Yarn期末复习版(搭配尚硅谷视频速通)

一、HDFS 1.HDFS概述 1.1 HDFS定义 HDFS(Hadoop Distributed File System),它是一个文件系统,用于存储文件,通过目录树来定位文件;其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自…

conda环境下FutureWarning: Pass sr=16000, n_fft=800 as keyword args问题解决

1 问题描述 在训练语音处理模型过程中,出现如下错误: audio.py:100: FutureWarning: Pass sr16000, n_fft800 as keyword args. From version 0.10 passing these as positional arguments will result in an errorreturn librosa.filters.mel(hp.samp…

Docker之网络配置的使用

🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是君易--鑨,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的博客专栏《Docker之网络配置的使用》。🎯&…

芯品荟|电梯外呼面板屏驱市场调研报告

PART ONE 产品简介 - Introduction - 1.电梯外呼面板介绍 电梯外呼面板,用于显示电梯当前位置、运行状态和楼层信息,以便乘客在等待电梯时了解电梯的运行情况。 电梯外呼面板,按显示屏的种类,分为3类,分别是LED屏、L…

游戏开发,中小公司跳槽去大厂容易还是考研应届生校招容易?

游戏开发,中小公司跳槽去大厂容易还是考研应届生校招容易? 在之前的文章中,我们提到过,游戏开发行业首选直接进入游戏大厂。《开发者必读:如何选择适合的游戏开发公司?》因为大厂不仅能提供良好的职业发展…

记录汇川:H5U与Factory IO测试14

现实53工位的物料运输。 设置了自动连续存启动:就是一个一个运,按照顺序将空的货架填满。 设置了自动连续存停止:就是完成当前循环后退出。 设置了自动连续取启动:就是一个一个运,按照顺序将有货的货架清空。 设置…

js:使用canvas画一个半圆

背景 需求需要画一个半圆&#xff0c;或者多半圆&#xff0c;其实一下子就能想到 canvas 中的圆弧&#xff0c;核心使用 context.arc context.arc(x,y,r,sAngle,eAngle,counterclockwise)接下来我们看看示例 例一 <!DOCTYPE html> <html lang"en"> &…

SpringBoot集成p6spy

P6Spy 是一个可以用来在应用程序中拦截和修改数据操作语句的开源框架。 通过 P6Spy 我们可以对 SQL 语句进行拦截,相当于一个 SQL 语句的记录器,这样我们可以用它来作相关的分析,比如性能分析。这里主要用于在控制台打印SQL时能自动将问号替换成实际参数打印一个可执行的SQL…