Linux系统检测和防御脚本

一、方便将服务器安全状况经过检测脚本直接输出txt文件,同时便于检查出安全隐患。 二、缩短安全检查和防御时间,提升安全检查和防御效率 github地址 https://github.com/xiaoyunjie/Shell_Script.gitlinux


1、Linux检测脚本


1.一、文件

压缩包包含2个文件:git

  • CentOS_Check_Script.sh : 脚本文件
  • README.txt : 说明文件

Linux检测脚本:Check_script.shgithub


1.二、操做说明

执行CentOS_Check_Script.sh脚本文件进行检查,每次体检生成文件都是惟一的,命令格式以下:shell

sudo sh CentOS_Check_Script.sh | tee check_`date +%Y%m%d_%H%M%S`.txt

1.三、脚本简介

按三级等保要求,编写的一键检查脚本,此脚本只适合linux分支中的redhat、centos,运行脚本将结果输出到自定义的文件中,脚本结果须要管理员人为检查,脚本结果中有相应提示检测内容是否须要整改。centos


1.四、脚本检测内容

警告:本脚本只是一个检查的操做,未对服务器作任何修改,管理员能够根据此报告进行相应的安全整改安全

管理员须要根据检测报告进行安全加固,须要加固的条目都会标记 [需调整]bash

1.4.一、系统基本信息

脚本捞取主机的基本信息,包含如下内容:服务器

基本信息名 命令 备注
主机名
系统名称
系统版本
内核版本
系统类型
本机IP地址
CPU型号
CPU核数
机器型号
系统时间
1.4.二、资源使用状况
检测条目 命令 备注
总内存大小
已使用内存大小
可以使用内存大小
系统运行时间
系统负载
内存状态
僵尸进程
耗CPU最多进程
耗内存最多进行
环境变量
路由表
监听端口
网络链接
开机启动服务
1.4.三、系统用户状况
检测条目 命令 备注
活动用户
系统全部用户
系统全部组
当前用户的计划任务
1.4.四、身份鉴别安全
检测条目 命令 备注
密码复杂度
可疑帐户
密码过时天数
登入失败处理
1.4.五、访问控制安全
检测条目 命令 备注
非系统默认用户
系统特权用户
系统空口令帐户
1.4.六、安全审计
检测条目 命令 备注
本机用户登入历史记录
syslog日志服务状态
syslog日志服务外发状态
syslog审计要素和日志
系统文件文件修改时间
重要日志文件状态
1.4.七、剩余信息保护
检测条目 命令 备注
分区状况
可用块设备信息
文件系统信息
1.4.八、入侵防范安全
检测条目 命令 备注
系统入侵行为
用户错误登入列表
ssh暴力登入信息
1.4.九、恶意代码防范
检测条目 命令 备注
clamav杀毒软件状态
1.4.十、资源控制安全
检测条目 命令 备注
xinetd服务状态
ssh服务状态
telnet-server服务状态
防火墙状态
hosts.deny策略
hosts.allow
登入超时限制

2、Linux加固脚本


2.一、脚本文件

  • CentOS_Protective_Script.sh : 脚本文件
  • README.txt : 说明文件

Linux加固脚本文件:Protective_Script.sh网络


2.二、脚本操做说明

  • 执行CentOS_Protective_Script.sh脚本文件进行加固,命令格式以下
sudo sh CentOS_Protective_Script.sh
  • 执行完成后,请按脚本提示重启相应服务

若是ostype是unknow,请不要继续执行ssh


2.三、脚本简介

一键加固脚本为linux系统提供基础安全加固,包括如下几块内容加固:

  • 口令复杂度:密码修改重试3次机会,新密码与老密码必须有3字符不一样,最小密码长度12个字符,包含大写字符至少一个小写字母至少一个数字至少一个特殊字符至少一个
  • 新增管理员帐号:不直接使用root帐号,新增管理员eproot帐号,用于命令执行,远程登入。
  • 远程登入帐户设置:限制root帐号远程登入
  • 帐号登入安全设置:配置系统历史命令操做记录和定时账户自动登出时间
  • 远程登入端口设置:修改默认SSH端口
  • 帐户登入失败处理:限制登入失败三次,普通帐号锁定5分钟,root帐号锁定5分钟
  • 系统配置文件备份还原:脚本在首次执行时会将系统配置保存于脚本所在目录下的backup目录下,以便后续须要恢复配置时使用。再次运行脚本时,将不会再进行备份,除非原备份目录被删除。
2.3.一、简介

image.png

首次运行脚本,会检测当前系统类型,以及备份重要系统配置文件,包括system-auth、authorized_keys、sshd、sudoers、sshd_config、profile、su。经过选择加固编号进行相应的内容进行加固,也能够选择编号1,将全部内容都进行加固。

2.3.二、密码复杂度设置[Set Password Complexity Requirements ]

image.png 选择编号2,脚本会自动进行密码复杂度配置,配置内容为:密码修改重试3次机会,新密码与老密码必须有3字符不一样,最小密码长度12个字符,包含大写字符至少一个小写字母至少一个数字至少一个特殊字符至少一个。 配置成功,会提示[Password complexity set success],失败会提示[Password complexity set failed],重复执行脚本选择此编号,脚本每次都会配置,不会提示已配置过。

2.3.三、新增管理员帐号[Create eproot account]

禁止使用root登入系统,须要建立eproot帐号,授予管理员权限,而且保证运行命令时无需输入root密码。 image.png

选择编号3,会提示是否建立eproot帐号,确认后,请输入密码,回车,脚本会自行建立eproot帐号,而且授予管理员权限。重复执行脚本,选择编号3,若是已经建立过eproot帐号,会列出建立的信息,并提示已建立。 image.png

2.3.四、远程登入帐户设置[Set Remote Login Configuration(SSH)]

image.png

选择编号‘4’进行SSH远程登陆相关安全配置,脚本会自动配置SSH协议为2,而后提示是否禁止root帐号远程登入,并肯定已经有其他可远程登入的帐号。输入y,确认后回车关闭root远程登入。 image.png

重复执行脚本,选择编号4,会提示已经禁止root远程。

2.3.五、帐户登入安全设置[Set Shell History and TMOUT]

image.png

  • 选择编号5帐户登入安全设置,输入y回车,设置history命令保存行数以及打印history命令时间。
  • 设置shell环境超时时间,选择区间为300~600秒,若是不输入任何值,脚本默认设置为600秒。
  • 重复执行脚本,选择编号5,会从新设置historyTMOUT
2.3.六、远程登入端口设置[Set SSH Port]

image.png

  • 选择编号6进行SSH服务端口配置,输入y,回车输入端口号,脚本会根据用户输入的端口号,配置更改相应的端口
  • 脚本会对输入的端口进行判断是否知足要求,若是知足要求会进行设置,若是不知足要求脚本会给出提示,并要求用户从新输入确认更改端口,并输入端口号。
  • 端口号规则: 输入端口号区间 1024<port<65535
  • 重复执行脚本,选择编号6,修改ssh端口,没法经过脚本改回端口22。
2.3.七、帐户登入失败处理[Set Logon failure handling]

image.png

  • 执行脚本,选择编号7,设置帐户登入失败处理,输入y确认回车,脚本会自动进行配置。
  • 登入失败处理内容:登入失败三次后帐号会被限制登入,普通帐号锁定5分钟,root帐号锁定5分钟,超过限制时间,才能够从新登入。
#使用一下命令查看指定帐户的失败次数
pam_tally2 --user=root
Login           Failures Latest failure     From
root                4    03/20/19 16:57:09  192.168.149.9
#如下命令能够立马重置帐户的失败次数,解除限制(前提是已经进入系统)
pam_tally2 --user=root  --reset
2.3.八、配置备份与恢复[Recover Configuration]

image.png

执行脚本,选择编号8,脚本会将保存于所在backup目录下的系统配置还原。

没法还原如下配置

  • 新增的eproot帐户不删除,防止误删。(eproot权限为修改前的状态)
2.3.九、所有加固[ALL protective]

选择标号1,脚本会按[2-7]顺序自动执行脚本加固,部分参数须要手动输入。

相关文章
相关标签/搜索