linux服务器安全初始化方案(二级等保要求)
身份鉴别:口令复杂度、登录失败处理、远程访问安全
访问控制:权限最小化、用户权限分离
安全审计:日志审计、行为监控
入侵防范:恶意代码防范、最小服务原则•
资源控制:超时锁定、资源分配限制
1. 账户与口令安全策略
1.1 密码策略配置
修改 /etc/login.defs:
# 密码最大有效期
PASS_MAX_DAYS 90
# 密码最小有效期
PASS_MIN_DAYS 1
# 密码最小长度
PASS_MIN_LEN 12
# 密码过期前警告天数
PASS_WARN_AGE 7
1.2 密码复杂度要求
修改 /etc/security/pwquality.conf或 /etc/pam.d/system-auth:
# 最小长度
minlen = 12
# 至少包含数字
dcredit = -1
# 至少包含大写字母
ucredit = -1
# 至少包含小写字母
lcredit = -1
# 至少包含特殊字符
ocredit = -1
# 拒绝常见弱密码
dictcheck = 1
1.3 账户锁定策略
修改 /etc/pam.d/system-auth和 /etc/pam.d/password-auth:
# 在auth部分添加
auth required pam_tally2.so onerr=fail deny=5 unlock_time=900
# 在account部分添加
account required pam_tally2.so
2. SSH 服务安全加固
2.1 SSH 配置修改 /etc/ssh/sshd_config
# 禁用root直接登录
PermitRootLogin no
# 禁用密码认证,使用密钥登录
PasswordAuthentication no
PubkeyAuthentication yes
# 限制登录用户
AllowUsers admin user1 user2
# 修改默认端口
Port 20222
# 限制登录IP(可选)
AllowGroups ssh-users
# 配置超时时间
ClientAliveInterval 300
ClientAliveCountMax 2
# 禁用空密码
PermitEmptyPasswords no
# 限制最大会话数
MaxSessions 10
# 禁用不安全的算法
KexAlgorithms curve25519-sha256@libssh.org
Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com
MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com
2.2 重启SSH服务
systemctl restart sshd
ss -tlnp | grep 20222 # 验证新端口
3. 用户与权限管理
3.1 创建管理账户
# 创建管理员账户
useradd -m -s /bin/bash admin
passwd admin # 设置复杂密码
# 添加sudo权限
usermod -aG wheel admin # CentOS/RHEL
usermod -aG sudo admin # Ubuntu/Debian
3.2 权限分离原则
# 检查无密码sudo权限
visudo
# 确保只有必要用户有sudo权限
# 检查SUID/SGID文件
find / -type f -perm /6000 -ls 2>/dev/null
# 移除不必要的SUID/SGID权限
chmod a-s /path/to/file
3.3 禁用无用账户
# 锁定不必要的系统账户
usermod -L games
usermod -L ftp
usermod -L nobody
# 检查可登录用户
awk -F: '($7 != "/sbin/nologin" && $7 != "/bin/false") {print $1}' /etc/passwd
4. 服务与端口管理
4.1 关闭不必要的服务
# 查看运行中的服务
systemctl list-units --type=service --state=running
# 禁用不必要的服务
systemctl stop cups
systemctl disable cups
systemctl stop avahi-daemon
systemctl disable avahi-daemon
systemctl stop postfix
systemctl disable postfix
4.2 防火墙配置
# 启用firewalld
systemctl enable firewalld
systemctl start firewalld
# 开放必要端口
firewall-cmd --permanent --add-port=20222/tcp # SSH
firewall-cmd --permanent --add-port=80/tcp # HTTP
firewall-cmd --permanent --add-port=443/tcp # HTTPS
# 拒绝所有其他入站连接
firewall-cmd --permanent --set-default-zone=drop
# 重载配置
firewall-cmd --reload
# 查看规则
firewall-cmd --list-all
5. 系统日志与审计
5.1 配置syslog审计
修改 /etc/rsyslog.conf
# 记录认证日志
auth.*;authpriv.* /var/log/secure
# 记录系统重要日志
*.info;mail.none;authpriv.none;cron.none /var/log/messages
# 启用日志轮转
$ModLoad imuxsock
$ModLoad imjournal
$WorkDirectory /var/lib/rsyslog
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$IncludeConfig /etc/rsyslog.d/*.conf
5.2 配置audit审计
安装auditd:
yum install audit -y # CentOS/RHEL
apt-get install auditd -y # Ubuntu/Debian
配置 /etc/audit/audit.rules:
# 记录用户登录事件
-a always,exit -F arch=b64 -S execve -F path=/bin/login -k user_login
# 记录文件修改事件
-w /etc/passwd -p wa -k identity
-w /etc/shadow -p wa -k identity
-w /etc/gshadow -p wa -k identity
-w /etc/group -p wa -k identity
-w /etc/sudoers -p wa -k identity
# 记录系统调用
-a always,exit -F arch=b64 -S chmod -S fchmod -S fchmodat -k perm_mod
-a always,exit -F arch=b64 -S chown -S fchown -S fchownat -S lchown -k perm_mod
# 记录网络配置变更
-w /etc/hosts -p wa -k network_mod
-w /etc/sysconfig/network -p wa -k network_mod
启动审计服务:
systemctl enable auditd
systemctl start auditd
6. 文件系统安全
6.1 文件权限加固
# 关键目录权限设置
chmod 750 /home/*
chmod 700 /root
chmod 644 /etc/passwd
chmod 600 /etc/shadow
chmod 644 /etc/group
chmod 600 /etc/gshadow
# 配置文件和目录的粘滞位
chmod +t /tmp
chmod +t /var/tmp
# 设置不可修改位(谨慎使用)
chattr +i /etc/passwd
chattr +i /etc/shadow
chattr +i /etc/group
chattr +i /etc/gshadow
6.2 磁盘分区安全
# 查看分区挂载选项
cat /etc/fstab
# 建议的挂载选项
/dev/sda1 / ext4 defaults,nodev,nosuid 1 1
/tmp /tmp tmpfs defaults,nodev,nosuid,noexec 0 0
7. 内核参数安全加固
7.1 修改 /etc/sysctl.conf
# 禁用IP转发
net.ipv4.ip_forward = 0
# 禁用源路由验证
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
# 启用反向路径过滤
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
# 禁用ICMP重定向
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
# 禁止发送重定向
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
# 保护SYN洪水攻击
net.ipv4.tcp_syncookies = 1
# 限制核心转储
fs.suid_dumpable = 0
# 禁止访问内核内存
kernel.kptr_restrict = 2
# 随机化内存地址
kernel.randomize_va_space = 2
应用配置:
sysctl -p
8. 恶意代码防范
8.1 安装配置防病毒软件
# 安装ClamAV
yum install epel-release -y
yum install clamav clamav-update -y
# 更新病毒库
freshclam
# 配置定期扫描
echo "0 3 * * * root /usr/bin/clamscan -r / --exclude-dir=/sys --exclude-dir=/proc -l /var/log/clamav/scan.log" >> /etc/crontab
8.2 配置rootkit检测
# 安装rkhunter
yum install rkhunter -y
# 更新数据库
rkhunter --update
# 定期扫描
echo "0 4 * * 0 root /usr/bin/rkhunter --cronjob --report-warnings-only" >> /etc/crontab
9. 资源控制与会话管理
9.1 配置会话超时
修改 /etc/profile和 /etc/bashrc:
# 设置会话超时
export TMOUT=900
readonly TMOUT
# 设置历史记录
export HISTSIZE=1000
export HISTFILESIZE=2000
export HISTTIMEFORMAT="%F %T "
export HISTCONTROL=ignoredups
9.2 限制用户资源
修改 /etc/security/limits.conf:
# 限制核心文件大小
* hard core 0
# 限制进程数
* soft nproc 1024
* hard nproc 2048
# 限制文件打开数
* soft nofile 65535
* hard nofile 65535
10. 定期安全检查脚本
10.1 创建安全检查脚本
#!/bin/bash
# security-check.sh
echo "=== 二级等保安全检查 ==="
echo "检查时间: $(date)"
echo "1. 检查空密码账户"
awk -F: '($2 == "") {print $1}' /etc/shadow
echo "2. 检查SUID/SGID文件"
find / -type f -perm /6000 -ls 2>/dev/null
echo "3. 检查未授权的setuid程序"
find / -xdev -type f -perm -4000 -print
echo "4. 检查登录用户"
who
echo "5. 检查网络连接"
netstat -tuln
echo "6. 检查进程信息"
ps aux
echo "7. 检查cron任务"
crontab -l
echo "=== 检查完成 ==="
10.2 设置定期执行
# 每天执行安全检查
echo "0 2 * * * root /opt/scripts/security-check.sh >> /var/log/security-check.log" >> /etc/crontab
验证与测试命令
# 检查密码策略
grep "^PASS" /etc/login.defs
# 检查SSH配置
sshd -T | grep -E "(PermitRootLogin|PasswordAuthentication|Port)"
# 检查防火墙状态
firewall-cmd --list-all
# 检查审计日志
ausearch -k identity
# 检查文件权限
ls -la /etc/passwd /etc/shadow
# 检查内核参数
sysctl -a | grep -E "(ip_forward|rp_filter|accept_redirects)"
更多推荐




所有评论(0)