type
status
date
slug
summary
tags
category
icon
password
linux加固
脚本仅限客户允许的情况下使用(需要工时):建议所有配置均使用手工方式
①>账号
- 验证空口令
awk -F: '($2=="") {print $1}' /etc/shadow验证uid=0的账户(root权限)
cat /etc/passwd | awk -F: '($3==0) {print $1}'- 密码长度和有效期的检验
PASS_MAX_DAYS 密码有效期 推荐90天
cat /etc/login.defs | grep PASS_MAX_DAYS
PASS_MIN_DAYS 修改密码的最短期限 推荐2天cat /etc/login.defs | grep PASS_MIN_DAYS
PASS_MIN_LEN 密码的最小长度 推荐8位cat /etc/login.defs | grep PASS_MIN_LEN
PASS_WARN_AGE 密码过期提醒 推荐7天cat /etc/login.defs | grep PASS_WARN_AGE- 密码复杂度
推荐:至少包含大、小写、数字、特殊字符中的最少两种
cat /etc/pam.d/system-auth | grep passwordunutun系统路径:
cat /etc/pam.d/common-auth | grep password修改为如下配置:
password requisite pam_cracklib.so minlen=8 difok=5 dcredit=-1 lcredit=-1 ucredit=-1 ocredit=-1
password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=5try_first_pass 防止新设置的密码和旧密码相同
minlen=8 最小长度
difok=5 新密码、旧密码至少有5个字符不同
dcredit=-1 最少1个数字
lcredit=-1 最少一个小写字母
ucredit=-1 最少一个大写字母
ocredit=-1 最少一个特殊字符
retry=1 几次登录失败后返回错误信息
type=xxx 用来修改默认的密码提示文本信息
- 会话超时
推荐:5分钟
echo "export TMOUT=300">>/etc/profile- 防DNS欺骗(ip地址和主机名不匹配)
echo "nospoof on">>/etc/host.conf
- 限制指定用户组的用户可通过su且为root
查找命令
cat /etc/pam.d/system-auth | grep auth | grep required查找是否有以下输出,含义为:仅允许wheel组用户可通过su登录至root
auth required pam_wheel.so user_uidwheel组在group文件中排第10位,以下命令添加用户
usermod -G10 zhangsan 将zhangsan用户加到wheel组- 查看是否存在suid和gid
find / -perm -u=s -type f 2>/dev/null
find / -perm -g=s -type f 2>/dev/null②>系统访问和授权
- crontab
仅允许管理员(组),操作
chown root:root /etc/crontabchown root:root /var/spool/cronchown root:root /etc/cron.*仅管理员root有读的权限
chmod 400 /etc/crontab
chmod跟随用户可给适当权限/etc/crontab
- 守护进程,掩码
/etc/bashrc
/etc/profile
在上述文件的末尾增加umask 027,解释见chatgpt代码块
- 修改常用服务的默认端口
- 查看、关闭未知、不必要的服务
service --status-all#查看所有服务- 设置history命令时间戳
echo 'export HISTTIMEFORMAT="%F %T whoami "' >> /etc/profilesource /etc/profile之后输入history查看是否成功
- 设置登录失败锁定
cat /etc/pam.d/system-auth | grep auth | grep required修改或添加
auth required pam_tally2.so deny=5 even_deny_root unlock_time=1800 root_unlock_time=1800- 禁止root用户通过ssh远程登录
cat /etc/ssh/sshd_config |grep PermitRootLogin修改为no即可
- ssh其他配置(sshd_config)
禁止空密码登录:PermitEmptyPasswords no
禁止ssh端口转发:
AllowTcpForwarding no
GatewayPorts no
- 隐藏操作系统版本信息
sudo sh -c 'echo "" > /etc/issue.net && echo "" > /etc/issue'- 最大文件打开数
设定所有用户的文件描述符(file descriptor)的软限制和硬限制为65535
echo "* soft nofile 65535" >> /etc/security/limits.conf
echo "* hard nofile 65535" >> /etc/security/limits.conf- 用户最大进程数
修改unlimited为65535以下
echo -e "root soft nproc 65535\nroot hard nproc 65535\n* soft nproc 65535\n* hard nproc 65535" | sudo tee /etc/security/limits.d/20-nproc.conf③>linux杀毒工具
https://www.clamav.net/
有钱就用卡巴斯基
windows安全加固
一、身份鉴别
1.1用户必须使用用户名密码
win+R打开运行框,输入netplwiz

控制面板-》系统和安全-》管理工具-》本地安全策略-》账户策略-》密码策略
此处需注意:密码永不过期和密码最长使用期限逻辑冲突。
但是同时勾选后,密码永不过期生效,另一个不生效。
计算机管理--》本地用户和组----》用户,取消密码永不过期选项
非框选的也需要设置


每一个策略属性,都可以通过命令在账户中看见
net user administrator1.2登录失败,登录超时等
控制面板-》系统和安全-》管理工具-》本地安全策略-》账户策略-》账户锁定策略

1.3使用安全的远程管理方式
推荐使用堡垒机或vpn或rdp,禁止使用telnet,http等明文传输协议
二、用户权限,用户组方面
2.1登录用户需分配合适的权限账号
和客户沟通理清楚账号使用人的权限
2.2重命名默认账户和默认口令
重命名administrator,一般只有出厂做,因为在这里重命名后administrator文件夹不会重命名,会出现很多问题

默认口令通过命令更改
net user administrator 1111112.3急需时删除或停用过期、多余账户,禁止|避免共享账户的存在
和客户沟通理清楚账号使用人的权限
2.4用户权限最小化
限制普通用户的身份权限,控制访问内容和范围
2.4不显示上次登录
控制面板-》系统和安全-》管理工具-》本地安全策略

三、安全审计
3.1开启日志记录
计算机管理----系统工具----事件查看器
查看服务是否开启,服务-------windows event log


3.2保证日志的的记录足够详细
控制面板\系统和安全\管理工具\本地安全策略

3.3定期对日志进行备份
控制面板\系统和安全\管理工具\事件管理器
日志定期备份:实时备份(日志服务器),没钱才手动
存储路径:%SystemRoot%\System32\Winevt\Logs\Application.evtx

四、入侵防范
4.1关闭不需要的服务,默认共享的高危端口
netstat -ano查看开了哪些端口
也可通过ip安全策略关闭端口

查看正在运行的服务
任务管理器——》服务
计算机管理——》服务和应用程序 / 服务
4.2 防止syn
若无此配置则手动添加

五、杀软
杀毒软件需要升级病毒库,为最新
六、数据备份
国家要求运行数据最少备份六个月
七、资源控制
7.1限制远程登录空闲断开时间

7.2禁用为登陆前关机
