IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> centos6-8 rockyliunx ubuntu 安全 -> 正文阅读

[系统运维]centos6-8 rockyliunx ubuntu 安全

#!/bin/bash
#####################操作系统环境初始化含常用加固#################################
#说明:1.脚本需要使用root用户执行 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? version 3.2
# ? ? 2.centos8,rockylinux8,centos7,ubuntu18,ubuntu20,版本测试无问题
# ? ? 3.脚本中系统判断只区分是否 linux或ubuntu 未做小版本判断
# ? ? 4.磁盘分区等操作部分与实际系统环境有关,使用前慎重查看本地环境,修改脚本
# ? ? 5.系统加固:密码周期,复杂度,登录超时时间,登录失败锁定,历史记录条目
#
############################################################################

function usercreate() {
? ? grep testuser /etc/group &>/dev/null
? ? if [ $? -ne 0 ];then
? ? ? groupadd -g 1001 testusert ? ? ?#部分GNU linux会占用1000组需要更改其他id
? ? fi?
? ? id 1001
? ? if [ $? -ne 0 ];then
? ? ? useradd -m testuser -s /bin/bash -g testuser -u 1001?
? ? ? echo testuser:testuser | chpasswd
? ? ??
? ? ? cat /proc/version |grep "Ubuntu" &>/dev/null
? ? ? if [ $? == '0' ]
? ? ? then
? ? ? ? usermod -G 27 testuser
? ? ? fi
? ? ? echo 'testuser ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers #sudo免输入密码
? ? ? echo -e "\e[32m `id testuser` \e[0m"
? ? fi?
}

function workcreate() {
? ? lsblk
? ? echo -e "\e[31m 有破坏性的操作,请谨慎执行 \e[0m"
? ? read -p "选择要使用的空磁盘? [例如:sdb/vdb ,直接回车则在/分区建立]" input
? ? case "$input" in
? ? ? sd* | vd*)?
? ? ? ? echo -e "\e[32m------------------- ?创建work lv ?------------------\e[0m"
? ? ? ? pvcreate /dev/$input
? ? ? ? vgcreate workvg /dev/$input
? ? ? ? #lvcreate -L 99G -n worklv workvg ? ? ? ? #指定大小创建lv
? ? ? ? lvcreate -l 100%VG -n worklv workvg ? ? ? #百分百使用vg空间创建lv
? ? ? ? mkfs.ext4 /dev/workvg/worklv

? ? ? ? lvdisplay /dev/workvg/worklv &>/dev/null
? ? ? ? if [ $? == '0' ];then
? ? ? ? ? echo -e "\e[32m----------------- ?自动挂载work lv ?----------------\e[0m"
? ? ? ? ? echo '/dev/mapper/workvg-worklv ? ? ? /work ? ext4 defaults 0 0' >> /etc/fstab
? ? ? ? ? mkdir /work
? ? ? ? ? mount /work
? ? ? ? ? chown neuqsoft:neuqsoft /work
? ? ? ? ? echo -e "\e[32m `df -h |grep work` \e[0m"
? ? ? ? else
? ? ? ? ? ehco "请检查 worklv 是否建立成功"
? ? ? ? fi
? ? ? ;;
? ? ? *)?
? ? ? ? mkdir /work
? ? ? ? chown testuser:testuser /work
? ? ? ? echo "跳过建磁盘分区, 在 / 所在分区创建 work 目录" ? ? ? ?
? ? ? ;;
? ? esac
}

function safepwd() {
? grep ?^[^#] /etc/security/pwquality.conf|grep $1 &>/dev/null
? if [ $? -ne '0' ];then
? ? sed -i "/$1/a$1 = $2" /etc/security/pwquality.conf
? ? echo -e "# 配置密码含$3"
? else
? ? echo -e "\e[31m 原系统已配置密码含`grep ^[^#] /etc/security/pwquality.conf|grep $1 |awk -F"=" '{print $2}'` $3\e[0m" ? ?# 密码长度
? fi
}


function osProtective() {
? ? echo -e "\e[32m---------------- 设置中文系统时区----------------\e[0m"
? ? timedatectl &>/dev/null
? ? if [ $? = '0' ];then
? ? ? timedatectl set-timezone "Asia/Shanghai"
? ? ? timedatectl
? ? elif [ -f /usr/share/zoneinfo/Asia/Shanghai ];then
? ? ? cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && date -R
? ? else
? ? ? echo "时区修改失败,请检查系统环境" ?
? ? fi

? ? echo -e "\e[32m---------------- history 命令加时间戳----------------\e[0m"
? ? grep ?^[^#].*HISTTIMEFORMAT /etc/profile &>/dev/null
? ? if [ $? != '0' ];then
? ? ? echo 'export HISTTIMEFORMAT="%F %T `whoami`: "' >> /etc/profile && source /etc/profile
? ? ? echo -e "# 设置 history 命令加时间戳"
? ? elif [[ -n $(grep '^[^#].*HISTTIMEFORMAT="%F %T `whoami`: "' /etc/profile) ]]; then
? ? ? echo -e "\e[31m# 原系统已配置过 history 命令加时间戳\e[0m"
? ? else
? ? ? sed -i '/^[^#].*HISTTIMEFORMAT/s/^/#/' /etc/profile
? ? ? echo 'export HISTTIMEFORMAT="%F %T `whoami`: "' >> /etc/profile && source /etc/profile
? ? ? echo -e "\e[31m# 已修改原系统已配置 history 命令格式为:日期+时间+用户名\e[0m"
? ? fi

? ? echo -e "\e[32m---------------- ?设置密码周期、长度要求 ? ------------------\e[0m" ? ?
? ? sed -i "/PASS_MAX_DAYS/s/`sed -n '/^PASS_MAX_DAYS/p' /etc/login.defs |awk '{print $2}'`/90/g" /etc/login.defs
? ? echo -e "# 设置密码过期时间90天"
? ??
? ? sed -i 's/^#\?PASS_MIN_LEN.*/PASS_MIN_LEN ? ?8/' /etc/login.defs
? ? echo -e "# 设置密码最小长度8"
? ? echo -e "# 现生效密码周期、长度要求"
? ? grep -v "#" /etc/login.defs | grep -E "PASS_MAX_DAYS|PASS_MIN_DAYS|PASS_MIN_LEN|PASS_WARN_AGE"

? ? echo -e "\e[32m---------------- ?修改强密码策略 ? ------------------\e[0m"
? ??
? ? cat /proc/version |grep "Ubuntu" &>/dev/null
? ? if [ $? == '0' ];then
? ? ? dpkg -l libpam-cracklib ?&>/dev/null
? ? ? if [ $? -ne 0 ];then
? ? ? ? apt-get install -y libpam-cracklib?
? ? ? ? dpkg -l libpam-cracklib ?&>/dev/null
? ? ? ? if [ $? -ne 0 ];then
? ? ? ? ? echo -e "\e[31m libpam-cracklib 安装失败\e[0m"
? ? ? ? else
? ? ? ? ? echo -e "\e[32m libpam-cracklib 安装成功\e[0m"
? ? ? ? fi ?
? ? ? else
? ? ? ? echo -e "\e[33m libpam-cracklib 已经安装\e[0m"
? ? ? fi?
? ? fi

? ? cat /proc/version |grep "Ubuntu" &>/dev/null
? ? if [ $? == '0' ];then
? ? ? grep 'pam_unix.so.*remember' /etc/pam.d/common-password &>/dev/null
? ? ? if [ $? -ne '0' ];then
? ? ? sed -i '/pam_unix.so/s/$/ remember=3/' /etc/pam.d/common-password
? ? ? echo -e "# 设置密码最近三次密码不能重复"
? ? ? fi
? ? ? sed -i '/pam_cracklib.so/s/^/#/' /etc/pam.d/common-password ? ?#源配置行加注释保存
? ? ? sed -i '/pam_cracklib.so/apassword ? ? ? ?requisite ? ? ? ? ? ? ? ? ? ? ? pam_cracklib.so retry=3 minlen=8 difok=3 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1' /etc/pam.d/common-password
? ? ? echo -e "# 设置密码复杂度:必须包含大写、小写、数字、特殊字符 最少各一个,新旧密码必须3个以上字符不一样"
? ? ? echo -e "\e[32m重启系统后,强密码策略生效\e[0m"
? ? fi
? ??
? ? cat /proc/version |grep "Red Hat 4" &>/dev/null
? ? if [ $? == '0' ];then
? ? ? grep "password.*sufficient.*remember" /etc/pam.d/system-auth &>/dev/null
? ? ? if [ $? -ne '0' ];then
? ? ? ? sed -i '/password ? ?sufficient/s/$/ remember=3/' /etc/pam.d/system-auth ? ?# 禁止使用最近用过的3个密码
? ? ? fi
? ? ? echo -e "# 设置密码最近 `grep 'remember=.*' /etc/pam.d/system-auth |awk -F"=" '{print $2}'` 次密码不能重复"
? ? ? grep "password.*requisite.*minlen" /etc/pam.d/system-auth &>/dev/null
? ? ? if [ $? -ne '0' ];then
? ? ? ? sed -i '/pam_pwquality.so/s/^/#/' /etc/pam.d/system-auth ? ? ? ? ? ? ? ?#禁用默认配置
? ? ? ? sed -i '/pam_cracklib.so/s/^/#/' /etc/pam.d/system-auth
? ? ? ? sed -i '/pam_pwquality.so/apassword ? ?requisite ? ? pam_cracklib.so try_first_pass retry=3 ?minlen=8 difok=3 dcredit=-1 lcredit=-1 ucredit=-1 ocredit=-1' /etc/pam.d/system-auth
? ? ? ? echo -e "# 设置密码复杂度:必须包含大写、小写、数字、特殊字符 最少各一个,新旧密码必须3个以上字符不一样"
? ? ? ? echo -e "\e[32m重启系统后,强密码策略生效\e[0m"
? ? ? fi
? ? ? echo -e "\e[32m---------------- ? 禁止 root 用户远程登录 ? ------------------\e[0m"
? ? ? sed -i 's/PermitRootLogin yes/PermitRootLogin no/g' /etc/ssh/sshd_config?
? ? ? echo -e "\e[32m重启系统后,禁止 root 用户远程登录生效\e[0m" ?
? ? fi
? ??
? ? cat /proc/version |grep "Red Hat 8" &>/dev/null
? ? if [ $? == '0' ];then
? ? ? declare -A dic
? ? ? dic=([difok]="3,与原密码不重复" [minlen]="8,最小长度" [dcredit]="-1,最少一个数字" [ucredit]="-1,最少一个大写" [lcredit]="-1,最少一个小写" [ocredit]="-1,最少一个特殊字符" [retry]="3,重试次数") ? ? ?
? ? ? for key in $(echo ${!dic[*]})
? ? ? ? do
? ? ? ? # ? ?echo "$key : ${dic[$key]}"
? ? ? ? ? ? num=`echo "${dic[$key]}" | awk -F"," '{print $1}'`
? ? ? ? ? ? note=`echo "${dic[$key]}" | awk -F"," '{print $2}'` ?
? ? ? ? ? ? safepwd $key $num $note
? ? ? ? done

? ? ? grep ?^[^#] /etc/security/pwquality.conf |grep enforce_for_root &>/dev/null
? ? ? if [ $? -ne '0' ];then
? ? ? ? sed -i '/enforce_for_root/aenforce_for_root' /etc/security/pwquality.conf
? ? ? ? echo -e "# 配置密码策略对 root 用户有效"
? ? ? else
? ? ? ? echo -e "\e[31m 原系统已配置密码策略对 root 用户有效\e[0m" ? ?# 对 root 用户也生效
? ? ? fi
? ? ? echo -e "\e[32m强密码策略下次修改密码时生效\e[0m"
? ? fi ? ?

? ? echo -e "\e[32m---------------- ? 设置登录超时时间 ? ------------------\e[0m"
? ? grep 'TMOUT' /etc/profile &>/dev/null
? ? if [ $? -ne '0' ];then
? ? ? sed -i '$a\export TMOUT=600' /etc/profile
? ? ? echo -e "# 登录超时10分钟"
? ? else
? ? ? echo -e "\e[31m# 原系统已配置过登录超时时间 为 `grep 'TMOUT=' /etc/profile |awk -F"=" '{print $2}'` 秒\e[0m"
? ? fi

? ? echo -e "\e[32m---------------- ? 登录失败锁定 ? ------------------\e[0m"
? ? cat /proc/version |grep -E 'Red Hat 4|Ubuntu' &>/dev/null
? ? if [ $? == '0' ];then ? ?
? ? ? grep 'auth.*required.*deny=' /etc/pam.d/login &>/dev/null
? ? ? if [ $? -ne '0' ];then
? ? ? ? sed -i '1a\auth ? ? ?required ?pam_tally2.so ? deny=3 ?unlock_time=120 even_deny_root root_unlock_time=120' /etc/pam.d/login
? ? ? ? echo -e "# 限制终端用户登录失败 3 次锁定 120 秒"
? ? ? else
? ? ? ? echo -e "\e[31m# 原系统已配置过终端用户登录失败 `grep -o 'deny=[0-9]*' /etc/pam.d/login | awk -F"=" '{print $2}'` 次锁定\e[0m"
? ? ? fi
? ? ??
? ? ? grep 'auth.*required.*deny' /etc/pam.d/sshd &>/dev/null
? ? ? if [ $? -ne '0' ];then
? ? ? ? sed -i '1a\auth ? ? ?required ?pam_tally2.so ? deny=3 ?unlock_time=120 even_deny_root root_unlock_time=120' /etc/pam.d/sshd
? ? ? ? echo -e "# 限制ssh用户登录失败 3 次锁定 120 秒"
? ? ? else
? ? ? ? echo -e "\e[31m# 原系统已配置过限制ssh用户登录失败 `grep -o 'deny=[0-9]*' /etc/pam.d/sshd | awk -F"=" '{print $2}'` 次锁定\e[0m"
? ? ? fi
? ? fi

? ? cat /proc/version |grep "Red Hat 8" &>/dev/null
? ? if [ $? == '0' ];then
? ? ? grep 'auth.*deny=' /etc/pam.d/system-auth &>/dev/null
? ? ? if [ $? -ne '0' ];then
? ? ? ? sed -i '/auth.*sufficient.*pam_unix.so/iauth ? ? ? ?requisite ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?pam_faillock.so preauth even_deny_root deny=3 unlock_time=120 ? ?# add by neuqsoft' /etc/pam.d/system-auth
? ? ? ? sed -i '/auth.*sufficient.*pam_unix.so/aauth ? ? ? ?sufficient ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? pam_faillock.so authsucc even_deny_root deny=2 unlock_time=60 ? ?# add by neuqsoft' /etc/pam.d/system-auth
? ? ? ? sed -i '/auth.*sufficient.*pam_unix.so/aauth ? ? ? ?[default=die] ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?pam_faillock.so authfail even_deny_root deny=2 unlock_time=60 ? ?# add by neuqsoft' /etc/pam.d/system-auth
? ? ? ? echo -e "# 限制终端用户登录失败 3 次锁定 120 秒"
? ? ? else
? ? ? ? echo -e "\e[31m# 原系统已配置过终端用户登录失败 `grep -o 'auth.*requisite.*deny=[0-9]*' /etc/pam.d/system-auth | awk -F"=" '{print $2}'` 次锁定\e[0m"
? ? ? fi

? ? ? grep 'auth.*deny=' /etc/pam.d/password-auth &>/dev/null
? ? ? if [ $? -ne '0' ];then
? ? ? ? sed -i '/auth.*sufficient.*pam_unix.so/iauth ? ? ? ?requisite ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?pam_faillock.so preauth even_deny_root deny=3 unlock_time=120 ? ?# add by neuqsoft' /etc/pam.d/password-auth
? ? ? ? sed -i '/auth.*sufficient.*pam_unix.so/aauth ? ? ? ?sufficient ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? pam_faillock.so authsucc even_deny_root deny=2 unlock_time=60 ? ?# add by neuqsoft' /etc/pam.d/password-auth
? ? ? ? sed -i '/auth.*sufficient.*pam_unix.so/aauth ? ? ? ?[default=die] ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?pam_faillock.so authfail even_deny_root deny=2 unlock_time=60 ? ?# add by neuqsoft' /etc/pam.d/password-auth
? ? ? ? echo -e "# 限制终端用户登录失败 3 次锁定 120 秒"
? ? ? else
? ? ? ? echo -e "\e[31m# 原系统已配置过限制ssh用户登录失败 `grep -o 'auth.*requisite.*deny=[0-9]*' /etc/pam.d/password-auth | awk -F"=" '{print $2}'` 次锁定\e[0m"
? ? ? fi
? ? fi ?

? ? cat /proc/version |grep "Red Hat" &>/dev/null
? ? if [ $? == '0' ];then
? ? ? echo -e "\e[32m---------------- ? 禁止 root 用户远程登录 ? ------------------\e[0m"
? ? ? sed -i 's/PermitRootLogin yes/PermitRootLogin no/g' /etc/ssh/sshd_config?
? ? ? echo -e "\e[32m重启系统后,禁止 root 用户远程登录生效\e[0m"
? ? fi ?

? ? echo -e "\e[32m---------------- ? 初始化 完成 ? ------------------\e[0m" ? ?
}

function main() {

? ? read -p "是否要建立 neuqsoft用户 ?[y/n]" input
? ? if [ $input = "y" ];then
? ? ? ? usercreate
? ? ? ? sleep 3
? ? else
? ? ? ? echo "跳过建立 neuqsoft 用户"
? ? ? ? sleep 2
? ? fi
? ? read -p "是否要建立 /work 目录 ?[y/n]" input
? ? if [ $input = "y" ];then
? ? ? ? workcreate
? ? ? ? sleep 3
? ? else
? ? ? echo "跳过建磁盘分区, work 目录"
? ? ? sleep 2
? ? fi
? ? read -p "是否进行安全加固 ?[y/n]" input
? ? if [ $input = "y" ];then
? ? ? ? osProtective
? ? ? ? sleep 3
? ? else
? ? ? echo "跳过安全加固"
? ? ? sleep 2 ? ? ? ?
? ? fi
}

if [ $UID != '0' ]
then
? ? echo -e "\e[31m 请使用 root 用户执行 \e[0m"
else
? ? main
fi

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-06-26 17:06:53  更:2022-06-26 17:07:19 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/18 21:11:40-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码