阿里云标准-APACHE安全基线检查
基线检查功能通过配置不同的基线检查策略,可以帮助您快速对服务器进行批量扫描,发现包括系统、账号权限、数据库、弱口令 、等级保护合规配置等存在的风险点,并提供修复建议和一键修复功能。
1.1 [高危] 确保对OS根目录禁用覆盖 访问控制
描述
通过禁止访问OS根目录,限制直接访问服务器内部文件的行为
使得运行web的服务器更加安全
基线检查功能通过配置不同的基线检查策略,可以帮助您快速对服务器进行批量扫描,发现包括系统、账号权限、数据库、弱口令 、等级保护合规配置等存在的风险点,并提供修复建议和一键修复功能。
1.1 [高危] 确保对OS根目录禁用覆盖 访问控制
描述
通过禁止访问OS根目录,限制直接访问服务器内部文件的行为
使得运行web的服务器更加安全
问题:CentOS7.8 系统使用libreoffice将word转为pdf,系统已安装”方正小标宋简体“相关中文字体,仍无法识别中文字体。
实际使用中pdf总是只能显示思源黑体和思源宋体两种字体,相关服务器安装配置参考:服务器配置概要
所有对 fontconfig 文件的更改只有在重新启动程序后才会生效!
具体解决:
fc-list :lang=zh 确认系统已安装的中文字体;for family in 微软雅黑 方正小标宋简体 宋体 黑体 仿宋 仿宋_GB2312 楷体 楷体_GB2312 隶书 幼圆; do echo -n "$family: "; fc-match "$family"; donefontconfig 默认配置 /etc/fonts/fonts.conf 信息,优先添加相关中文字体,参考如下:等保测评中对服务器及数据库的部分安全处理
【服务器相关】
系统为CentOS7.8
/etc/login.defs PASS_MAX_DAYS 90 #密码使用天数
PASS_MIN_DAYS 0
PASS_MIN_LEN 9
PASS_WARN_AGE 15 #提醒用户修改密码天数注:修改配置后仅针对新增帐号才会生效,原帐号可通过chage命令调整,可通过chage -l root查看。
vi /etc/pam.d/system-auth 优先级高于login.defs
# 配置最小长度为8位,至少包含1位大写字母、1位小写字母、1位数字和1位特殊字符。
password requisite pam_cracklib.so minlen=8 dcredit=-1 ucredit=-1 ocredit=-1 lcredit=-1 retry=5 difok=3
# minlen:最小密码长度
# dcredit:最少数字
# ucredit:最少大写字母
# ocredit:最少特殊字符
# lcredit:最少小写字符
# retry:尝试次数
# difok:最少不同字符 chage:密码失效是通过此命令来管理的。
参数意思:
-m 密码可更改的最小天数。为零时代表任何时候都可以更改密码。
-M 密码保持有效的最大天数。
-W 用户密码到期前,提前收到警告信息的天数。
-E 帐号到期的日期。过了这天,此帐号将不可用。
-d 上一次更改的日期
-I 停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。
-l 例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。 LVM安装及使用:https://www.r1989.com/linux-1222.html
线上服务器硬盘由标准分区转为LVM
nginx mysql php等mkdir /{web_bak,mysql_bak,backup_bak}执行转移命令:
rsync -avzh /mysql/* /mysql_bak/
rsync -avzh /backup/* /backup_bak/
rsync -avzh /web/shell /web_bak/
rsync -avzh /web/source /web_bak/
rsync -avzh /web/upgrade /web_bak/
rsync -avzh /web/www /web_bak/
建议同时进行4个拷贝:
rsync -avzh /web/oa/t0* /web_bak/oa/
......
LVM安装流程:
安装lvm并将vdc转为逻辑分区
yum install lvm2
lsblk
vim /etc/fstab 注释vdc硬盘挂载
卸载
umount /backup
umount /mysql
umount /web
转lvm
fdisk /dev/vdc
[n -> p -> ...] t -> {1,2,3} -> 8e ->w
fdisk -lu
pvcreate /dev/vdc{1,2,3}
vgcreate lv /dev/vdc1 默认PE为4M( -s 32M lvm1默认lv最多只能包含65536个PE,最大支持256G;lvm2不再限制PE数量)
vgextend lv /dev/vdc2
vgextend lv /dev/vdc3
lvcreate -L 80G -n mysql lv
lvcreate -L 20G -n backup lv
vgdisplay
lvcreate -l 100%FREE -n web lv
mkfs -t ext4 /dev/lv/backup
mkfs -t ext4 /dev/lv/mysql
mkfs -t ext4 /dev/lv/web
;resize2fs /dev/lv/backup
;resize2fs /dev/lv/mysql
;resize2fs /dev/lv/web
;mount /dev/lv/backup /backup
;mount /dev/lv/mysql /mysql
;mount /dev/lv/web /web
vim /etc/fstab
/dev/lv/mysql /mysql ext4 defaults 0 0
/dev/lv/backup /backup ext4 defaults 0 0
/dev/lv/web /web ext4 defaults 0 0
mount -a
数据还原
rsync -avzh /backup_bak/* /backup/
rsync -avzh /mysql_bak/* /mysql/
rsync -avzh /web_bak/shell /web/
rsync -avzh /web_bak/source /web/
rsync -avzh /web_bak/upgrade /web/
rsync -avzh /web_bak/www /web/
具体依据实际情况转移:
rsync -avzh /web_bak/oa/t0* /web/oa/
......
转移100个系统用时:约40分钟
测试backup分区
`lvreduce -L -4G -r /dev/lv/backup`
`lvextend -L +4G -r /dev/lv/backup`
系统环境:centos7.8 + php7.4 + thinkphp6 + oracle 11g
注意:使用独立下载的扩展容易引起部分错误信息,不建议使用。推荐使用对应php版本中的ext扩展直接编译安装。
【安装oracle客户端】
下载地址:https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html
upgrade.sh
脚本功能:可对多个系统批量覆盖代码(可排除指定系统)需修改对应的目录变量。将zip升级包放置到指定目录中,通过定时任务完成更新。单次只能升级一个版本,不支持数据库升级,仅为文件覆盖功能。
#!/bin/bash
#---------------------------------------
# 批量更新多文件夹内容 支持排除指定目录
# 注:多系统升级时,为避免文件冲突,建议
# 单次单压缩包更新
# author: SenSen 1050575278
# date: 2021/09/10
# 注意:所有脚本需测试后方可使用!!!
#---------------------------------------
#添加定时任务 10min
# */10 * * * * /www/upgrade/upgrade.sh
#记录日志
log="/web/upgrade/upgrade.log"
#进入升级包所在目录 升级包必须包含version.txt文件
cd /web/upgrade/fix
#判断目录中是否有文件 原则上一次只能存在一个文件,避免多个升级包导致混乱
count=`ls -l|grep '^-'|wc -l`
#获取所有系统 废弃
# source ./wlt_dir.sh
#所在目录
baseDir='/web/oa/'
#自动获取系统目录文件 仅可包含oa系统文件
sysDir=`ls /web/oa`
#排除目录
excluded=()
#测试示例
#sysDir=('wlt_3163')
#获取当前目录下的升级包
fixFile=`ls`
if [ $count -ne 0 ]; then
for i in ${fixFile}
do
#获取当前时间
curtime=`date +"%Y/%m/%d %H:%M:%S"`
for f in ${sysDir}
do
#排除指定目录
if [[ ${excluded[@]/${f}/} != ${excluded[@]} ]]; then
continue
fi
echo "系统:${f} 升级文件:${i}">>${log}
#解压到对应系统目录
unzip -oq ${i} -d ${baseDir}${f}
echo "${curtime} ${i} done">>${log}
done
done
#移动升级包
mv ${i} /web/upgrade/bak;
echo "${i} upgrade successfully">>$log
else
echo "upgrade_fix is empty"
fi
官网:https://gitolite.com/gitolite/index.html
安装:su - gitmkdir -p ~/bingit clone https://github.com/sitaramc/gitolitegitolite/install -ln ~/bin # please use absolute path heregitolite setup -pk yourname.pub
其中yourname.pub为管理员git公钥。git 跟 gitolite 服务器通信用的是 git 这个真正的系统用户,而 gitolite 控制仓库权限则是使用自己的虚拟用户。这里的 yourname 就是虚拟用户。
gitolite提供了一个 gitolite-shell。当你使用 ssh 访问 gitolite 时 ssh 服务会启动 gitolite-shell。这个脚本会检查当前用户是否有权限访问对应的仓库。如果用户通过 git push 修改了仓库内容,则会触发 gitolite 预先配置 git hook,这些 hook 会执行创建仓库、添加用户之类的操作。
下载主仓库:git clone git@yourhost:gitolite-admin.git
通过对主仓库配置及公钥进行管理即可。
Gitolite自定义仓库目录home/git/.gitolite.rc文件新增以下代码,并重新安装一次即可。
#sensen
GL_REPO_BASE => "/diskb/git/repositories",