该专栏内的脚本都会定期更新,请注意变化
脚本适用于Centos 7.x系列,同样支持Redhat 7.x系列
使用之前建议通读脚本注释,并确认不会影响你现在在用的业务
注意脚本内部包含一定的参数,这些参数比较重要,涉及用户、NTP第三放服务器地址等

#!/bin/bash#################################################################
## Linux 设备合规配置脚本
## 基于 Centos7
## 在执行之前请务必先浏览一遍 有一些重要的信息需要留意
## 注意,此脚本有些部分只能执行一遍,如果执行多次会产生错误
## Update at: 20201208
## 增加了NTP 配置的部分
#################################################################
USER_NAME=
USER_PASSWD=
NTP_SERVER=#################################################################
## 设置屏幕保护
echo "=== 正在设置屏幕保护"
gconftool-2 --direct \
--config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory \
--type bool \
--set /apps/gnome-screensaver/idle_activation_enabled true
gconftool-2 --direct \
--config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory \
--type bool \
--set /apps/gnome-screensaver/lock_enabled true
gconftool-2 --direct \
--config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory \
--type string \
--set /apps/gnome-screensaver/mode blank-only
gconftool-2 --direct \
--config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory \
--type int \
--set /apps/gnome-screensaver/idle_delay 15#################################################################
## 设置ssh警告banner
touch /etc/sshbanner
chown bin:bin /etc/sshbanner
chmod 644 /etc/sshbanner
echo " Authorized users only. All activity may be monitored and reported "   >/etc/sshbanner
echo "Banner /etc/sshbanner" >> /etc/ssh/sshd_config
echo "=== 正在重启 sshd 服务"
systemctl restart sshd#################################################################
## 设置口令生存周期
echo "=== 正在设置口令生存周期"
cp -p /etc/login.defs /etc/login.defs_bak
sed -i "s/^PASS_MIN_LEN.*/PASS_MIN_LEN   8 /g" /etc/login.defs
sed -i "s/^PASS_MAX_DAYS.*/PASS_MAX_DAYS   90 /g" /etc/login.defs#################################################################
## 设置ssh登录成功后的警告banner
echo "=== 正在设置ssh登录成功后的警告banner"
echo " Authorized users only. All activity may be monitored and reported " > /etc/motd#################################################################
## 新建用户账户
echo "=== 正在创建自用账户"
useradd $USER_NAME
echo $USER_PASSWD | passwd $USER_NAME --stdin  &>/dev/null
echo "$USER_NAME    ALL=(ALL)    NOPASSWD: ALL">> /etc/sudoers#################################################################
## 删除无用账户
echo "=== 正在删除无用账户"
userdel gdm
userdel listen
userdel webservd
userdel nobody4
userdel noaccess#################################################################
## 设置用户缺省MASK
echo "=== 正在设置用户缺省MASK"
cp -p /etc/profile /etc/profile_bak
cp -p /etc/csh.login /etc/csh.login_bak
cp -p /etc/csh.cshrc /etc/csh.cshrc_bak
cp -p /etc/bashrc /etc/bashrc_bak
cp -p /root/.bashrc /root/.bashrc_bak
cp -p /root/.cshrc /root/.cshrc_bak
echo "umask 027" >> /etc/profile
echo "umask 027" >> /etc/csh.login
echo "umask 027" >> /etc/csh.cshrc
echo "umask 027" >> /etc/bashrc
echo "umask 027" >> /root/.bashrc
echo "umask 027" >> /root/.cshrc#################################################################
## 设置登录超时
echo "=== 正在设置登录超时"
cp -p /etc/profile /etc/profile_bak
cp -p /etc/csh.cshrc /etc/csh.cshrc_bak
echo "TMOUT=180" >> /etc/profile
echo "export TMOUT" >> /etc/profile
echo "set autologout=30" >> /etc/csh.cshrc#################################################################
## 添加用户组
echo "=== 正在添加用户组 ${USER_NAME}"
groupadd ${USER_NAME}
usermod -g ${USER_NAME} ${USER_NAME}                                                                                    #################################################################
## 防syn攻击 增加主机访问控制
## 这里需要增加特定的IP地址段
echo "=== 正在设置主机IP地址限制"
cp -p /etc/hosts.allow /etc/hosts.allow_bak
cp -p /etc/hosts.deny /etc/hosts.deny_bak
## 注意该地址范围 别把自己墙到外面
## 这里sshd允许10段网络访问
## 我们加入的这个限制会影响4A登录,一定注意
## 如过sshd没有tcp_wrapper库,那么这里的配置没有用
echo "sshd:all:allow" >> /etc/hosts.allow
echo "sshd:all:allow" >> /etc/hosts.allow
echo "telnet:all:allow" >> /etc/hosts.allow
echo "sshd:234.234.234.234:deny" >> /etc/hosts.deny
echo "telnet:234.234.234.234:deny" >> /etc/hosts.deny#################################################################
## 更改telnet警告banner
echo "=== 正在更改telnet警告banner"
echo " Authorized users only. All activity may be monitored and reported " > /etc/issue
echo " Authorized users only. All activity may be monitored and reported " > /etc/issue.net
systemctl restart xinetd#################################################################
## 设置用户口令密码复杂度策略
echo "=== 正在修改用户口令密码复杂度策略"
cp -p /etc/pam.d/system-auth /etc/pam.d/system-auth_bak
sed -i "s/^password    requisite.*/password    requisite     pam_cracklib.so dcredit=-1 ucredit=-1 lcredit=-1 ocredit=-1 minclass=2 minlen=8 /g" /etc/pam.d/system-auth
sed -i "s/^password    sufficient.*/password    sufficient    pam_unix.so md5 shadow nullok try_first_pass use_authtok /g" /etc/pam.d/system-auth#################################################################
## 设置口令重复次数限制
echo "=== 设置口令重复次数限制"
touch /etc/security/opasswd
chown root:root /etc/security/opasswd
chmod 600 /etc/security/opasswd
sed -i "s/^password    required.*/password    required      pam_unix.so     remember=5 /g" /etc/pam.d/system-auth#################################################################
## 设置口令锁定策略
echo "=== 正在设置口令锁定策略"
sed -i "5 s/^/auth        required    pam_tally2.so deny=6 onerr=fail no_magic_root unlock_time=120\n/"  /etc/pam.d/system-auth#################################################################
## 设置禁止imcp重定向
echo "=== 正在禁止ICMP重定向"
cp -p /etc/sysctl.conf /etc/sysctl.conf_bak
grep "net.ipv4.conf.all.accept_redirects=0" /etc/sysctl.conf
if [ $? == "1" ]; thenecho "net.ipv4.conf.all.accept_redirects=0" >> /etc/sysctl.conf
fi
sysctl -p#################################################################
## 锁定无用账户
echo "=== 正在锁定无用账户"
user_arr=("lp" "nobody" "uucp" "games" "rpm" "smmsp" "nfsnobody")
for user in ${user_arr[@]}
dores=`egrep -w "$user" /etc/shadow | awk -F: '( $2 !~ "!" ) {print $1":"$2}'`if [ -n "$res" ]; thenecho "**正在锁定用户 $user"sed -i "s/$user:/$user:\!/g" /etc/shadowfi
done#################################################################
## 配置ntp服务器
echo "=== 正在配置NTP服务"
if [ ! -f "/etc/ntp.conf" ];thenecho "**** 没有安装ntp服务器!请手动安装ntp服务器!"
elseecho "restrict ${NTP_SERVER} nomodify notrap" >> /etc/ntp.confecho "server ${NTP_SERVER}" >> /etc/ntp.confecho "=== 正在重启NTP服务"systemctl restart ntpd
fi#################################################################
## 设置日志记录
## 这个位置主要是处理 日志收集和日志发送的问题
## 一般根据部署环境的不通 产生的要求可能也不通#################################################################
## 关闭Portmap服务 如果不使用nfs的情况下
echo "=== 正在关闭rpcinfo 探测"
systemctl stop rpcbind.socket
systemctl stop rpcbind
systemctl disable rpcbind.socket
systemctl disable rpcbind

Linux 系统安全加固篇之安全加固脚本相关推荐

  1. STM32MP157 Linux系统移植开发篇4: BootLoader(Uboot)移植

    本文章为<STM32MP157 Linux系统移植开发篇>系列中的一篇,笔者使用的开发平台为华清远见FS-MP1A开发板(STM32MP157开发板).stm32mp157是ARM双核,2 ...

  2. STM32MP157 Linux系统移植开发篇17:Linux内核摄像头驱动移植

    本文章为<STM32MP157 Linux系统移植开发篇>系列中的一篇,笔者使用的开发平台为华清远见FS-MP1A开发板(STM32MP157开发板).stm32mp157是ARM双核,2 ...

  3. STM32MP157 Linux系统移植开发篇14:Linux内核RGB LCD驱动移植

    本文章为<STM32MP157 Linux系统移植开发篇>系列中的一篇,笔者使用的开发平台为华清远见FS-MP1A开发板(STM32MP157开发板).stm32mp157是ARM双核,2 ...

  4. STM32MP157 Linux系统移植开发篇11:Linux HDMI驱动移植

    本文章为<STM32MP157 Linux系统移植开发篇>系列中的一篇,笔者使用的开发平台为华清远见FS-MP1A开发板(STM32MP157开发板).stm32mp157是ARM双核,2 ...

  5. Linux系统【Ubuntu】开机自启脚本及配置

    Linux系统[Ubuntu]开机自启脚本及配置 1.使用vim命令在`/etc/init.d`目录下新建一个xx.sh,文件名可自定义,以test.sh为例 2.保存成功以后,设置文本权限,否则不生 ...

  6. 【Linux系统】第二篇、权限管理篇

    文章目录 一.Linux下的用户 二.文件的权限 1. 文件访问者的分类 2. 文件类型和访问权限 3. 文件权限值的表示方法 三.文件访问权限的相关设置方法 1. chmod 2. chown 3. ...

  7. 【Linux系统】第一篇:基础指令篇

    文章目录 一.Linux中的文件 二.Linux用户 三.Linux基本指令 ls指令 pwd命令 cd指令 touch指令 mkdir指令 rmdir指令 rm 指令 man指令 cp指令 mv指令 ...

  8. linux监听apache代码,linux系统使用python监控apache服务器进程脚本分享

    这篇文章主要介绍了linux系统使用python监控apache服务器进程的脚本,大家参考使用吧 crtrl.py监控Apache服务器进程的Python 脚本 复制代码 代码如下: !/usr/bi ...

  9. linux系统CPU,内存,磁盘,网络流量监控脚本

    前序 1, #cat /proc/stat/  信息包含了所有CPU活动的信息,该文件中的所有值都是从系统启动开始累积到当前时刻 2, #vmstat –s   或者 #vmstat    虚拟内存统 ...

最新文章

  1. 不同平台上安装python一样吗_在多个平台如何安装Python
  2. 一群热爱python运维的精英们!
  3. 《Android应用开发入门经典(第3版)》——导读
  4. R-C3D 视频活动检测的经典算法
  5. linux java连接redis_java 连接linux的redis 报错。但是linux 客户端可以连接redis
  6. asp.net拦截器
  7. python面试自我介绍_如何拿到半数面试公司Offer——我的Python求职之路
  8. 终端如何粘贴快捷键_linux shell实用快捷键
  9. 用Python库PySimpleGUI制作自动化办公小软件
  10. 【AD】安装AD18教程
  11. 2021-03-08-java-pdf导出-lowagie
  12. 奈奎斯特第一定律码间串扰
  13. 雷云3启动无响应解决办法
  14. c语言51单片机调节led亮度,51单片机中用PWM控制LED亮度调节
  15. java BigDecimal.ROUND_UP和BigDecimal.ROUND_DOWN的用处
  16. 中国第一批程序员的“青春饭”已经恰完了,35+的程序员该何去何从?
  17. es 启动elasticsearch.bat发生闪退
  18. 浙江最新通信施工安全员机考真题及答案解析
  19. 2023年破产重整投资策略研究报告
  20. 企业级硬盘产品这么多,到底该选哪一个?

热门文章

  1. Java,Swing 模拟在线考试系统(五:题目、图片处理+按钮功能+倒计时处理+提交查看成绩)
  2. html小时分钟秒选择器,HTMLbootstrap时间选择器控件精确到秒 datetimepicker控件怎么精确到秒?...
  3. 照相制版技术与图形转移技术
  4. PDF控件PDFToolkit VCL V5.0.0.612发布 | 修复了PDF查看器和打印机
  5. Java常用到的6个加密技术,先收藏,总会用得到
  6. 【SQL开发实战技巧】系列(三):SQL排序的那些事
  7. ffmpeg设置视频帧率
  8. 0001 零基础Maya插件开发——Python+Qtdesigner环境搭建
  9. [转]商业模式新生代
  10. Teigha开发读取CAD文字信息出现偏移