1. Windows系统加固
1.1. 账户管理
- 禁用或删除无用账户
- 修改管理员或来宾账户的登陆名,避免被猜到
1.2. 密码策略
- 需要设置复杂度
- 需要设定合理的长度6~12
- 设置密码的使用期限,使用期限一到,必须强制更换密码
- 密码存储加密策略使用非对称加密,避免被破解
- 可以使用密码保存历史
1.3. 账户锁定策略
- 设定账户锁定阈值,多次登录错误则锁定账户
- 设置锁定账户的时间
- 重置锁定阈值计数器
- 在安全选项中设定不显示用户名称:效果就是用户退出登录之后,登录界面上不保留用户名
1.4. 授权管理
- 本地关机与远程关机
-
- 将关于系统的权限分配给超级管理员组administrators
- 将从远程系统强制关机的权限分配给administrators
- 授权网络访问本机的用户
-
- 从网络访问此计算机 users,administrators ,backup operators
- 允许本地登录的账户
1.5. 共享文件夹授权(控制面板->计算机管理->共享文件夹管理)
- 最小范围最合适权限开放给相关用户
- 需要设定密码
1.6. 日志配置
- Windows本地策略:secpol.msc
- Windows本地组策略:gpedit.msc
- 事件查看器:控制面板→计算机管理
-
1.7. 服务安全
- 禁用TCP/IP的NetBIOS
-
- 在服务中禁用TCP/ip netbios helper服务
-
- 通过网络链接属性,双击internet协议版本4,点击高级按钮后禁用
1.8. 禁用不必要的服务
- win+r → services.msc 在服务面板停止或禁用服务
1.9. 防火墙
- win+r → firewall.cpl 高级防火墙配置,定义入站与出站规则
- 使用第三方软件提供的防火墙功能:火绒
1.10. 病毒控制
- 安装杀毒软件,还要及时更新病毒库
- 及时更新操作系统,安装补丁的时候,应该先做兼容性测试
- 计算机设置屏保与密码
2. Linux系统加固
2.1. 重要文件
- 防止关键的文件被修改,应使用wazuh的FIM(文件完整性管理模块)来监控
/etc/passwd
/etc/shadow
/etc/pam.d/system-auth #账户安全配置文件
/etc/login.defs #修改登录的配置文件
/etc/profile #Linux全局变量配置文件 全局环境变量
/etc/ssh/sshd_config
/etc/hosts.allow
/etc/hosts.deny
2.2. 账户口令
- 删除不需要的用户和组,锁定暂时不需要的用户
- 检查非root账号的uid,是否为0。
-
- 命令检测: awk -F:'($3==0){print $1}' /etc/passwd
-
-
- 从passwd文件中,默认以:分隔,如果第三个数据(uid)等于0,则打印第一个(账号名)
-
- 检查存在空密码的账号。
-
- 命令检测: awk -F:'($2==""){print $1}' /etc/shadow
-
-
- 从shadow文件中检测,默认以:分隔,如果第二个(密码)为空,打印账号
-
- 设置密码口令策略
文件: /etc/login.defs
PASS_MIN LEN 10
PASS_MAX_DAYS 30 密码有效时长
文件:/etc/pam.d/system-auth
passwd required pam_cracklib.so retry=5 difok=3 ucredit=-1 lcredit=-1 dcredit =-1
retry=5 登录失败次数不能超过5次
difok=3 密码中至少有3个不同字符
ucredit=-1 最少1个大写字母
luredit=-1 最少1个小写字母
dcredit=-1 最少1个数字
- 配置账户认证失败锁定策略
文件: /etc/pam.d/system-auth
auth required pam.tally.so onerr=fail deny=5 unlock_time=1800 even_deny_root root_unlock_time=1800
onerr=fail deny=5 连续5次登录失败
unlock_time=1800 普通用户锁定时间1800秒
even_deny_root root用户也需要认证锁定
root_unlock_time root用户锁定的时间1800s
- 终端超时设置
- echo "export TMOUT=600" >> /etc/profile
- 10分钟终端没有任何动作,则会掉线
2.3. 权限管理
- 初始化文件权限
修改文件 /etc/profile
umask=027 #其他用户无修改文件的权限
- 限制可以使用su为root的用户
修改/etc/pam.d/su
auth required /lib/security/pam_wheel.so group=wheel
只允许wheel组的用户可以su到root
- 控制sudo权限,确保只有root用户拥有所有权限
修改 /etc/sudoers
root ALL=(ALL:ALL) ALL
2.4. 日志配置
var/log/lastlog 最后一次登录的用户信息、时间、IP
/var/log/messages 常见的系统和服务错误的信息
/var/log/secure 安全日志,记录了所有的用户和工作组的变换,用户登录认证
/var/log/syslog 只记录警告信息,在lastlog里面查看
/var/log/cron 记录定时任务信息
/var/log/btmp 记录登录失败的信息,lastb查看
/var/log/wtmp 永久记录每个用户登录、注销及系统的启动和停机事件,last
--- wuzuh应监控此类文件 -----
查看syslog服务是否开启
ps -ef | grep syslog
syslog服务配置文件 /etc/syslog.conf
2.5. 服务安全
- 应修改默认端口
- 服务的使用一定要配置用户认证
- root用户尽可能不对外开放,如果开放,应绑定设备MAC地址或IP
- 防止信息泄露,尽可能去掉启动的提示信息
- 尽可能使用黑白名单
- 及时更新服务的版本
- 停用或禁用不必要的服务
2.6. 防火墙
- 防火墙必须开启
- 只开放必要端口
- history配置:默认只保留最近的1000条指令,可以增加到更多
-
- 修改/etc/profile文件,为history命令增加IP、执行时间、用户名
USER_IP=`who -u am i 2>/dev/null | awk '{print $NF}' | sed -e 's/[()]//g'`
if ["$USER_IP" = ""]
then
USER_IP=`hostname`
fi
export HISTTIMEFORMAT="%F %T %USER_IP `whoami` "
shopt -s histappend
export PROMPT_COMMAND="history -a"
2.7. Linux自启动项
/ect/rc.d/rc.local 系统启动的时候,会加载该文件并执行其中的代码
/etc/profile 当用户第一次登录的时候,该文件会被执行
~/.bash_profile 配置的局部变量,每个用户专属,当用户登录的时候,该文件仅仅执行一次
/etc/bashrc 当用户执行bash shell,该文件被读取
~/.bashrc 用户专属的bash信息,打开新的shell的时候,或者登录时,该文件被读取
~/.bash_logout 当每次退出登录的时候,执行该文件
3. 数据库加固
3.1. 加固思路
- 账号配置
- 权限管控:外网账号,一个账号只对应一个数据库,权限最小化
- 口令安全:复杂度、有效期
- 日志配置:记录行为、时间、HIDS监控日志
- 打补丁要积极
- 访问控制:端口要进防火墙,IP要进白名单
- 启动服务,不要使用Linux的root账号,用自己专用的账号,比如MySQL,redis