活动公告

系统通知
05-18 21:22
系统通知
通知:本站资源由网友上传分享,如有违规等问题请到版务模块进行投诉,资源失效请在帖子内回复要求补档,会尽快处理!
10-23 09:31

CentOS Stream安全设置与系统加固全攻略 提升服务器安全性的必备指南

SunJu_FaceMall

3万

主题

2860

科技点

3万

积分

白金月票

碾压王

积分
32872

塔罗立华奏

<font color=白金月票" /> 发表于 2025-9-12 17:00:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
CentOS Stream安全设置与系统加固全攻略 提升服务器安全性的必备指南

引言

在当今数字化时代,服务器安全性已成为企业和个人用户不可忽视的重要议题。CentOS Stream作为RHEL(Red Hat Enterprise Linux)的上游开发平台,提供了稳定且先进的操作系统环境,但默认安装并不能满足高安全性需求。本文将详细介绍CentOS Stream的安全设置与系统加固方法,帮助您构建一个更加安全可靠的服务器环境。

一、CentOS Stream简介及其安全特性

CentOS Stream是CentOS项目的一个新方向,它位于Fedora Linux和RHEL之间的中间位置。作为一个滚动发布的Linux发行版,CentOS Stream为用户提供了接近RHEL的功能,同时保持了对最新软件包的访问。

CentOS Stream的一些安全特性包括:

• SELinux(Security-Enhanced Linux)集成
• 内核级安全模块
• 定期安全更新
• 强化的访问控制机制

尽管CentOS Stream具备这些安全特性,但仍需进行适当的配置和加固以确保系统安全。

二、系统初始化安全设置

在安装CentOS Stream时,选择最小化安装可以减少不必要的软件包,从而降低潜在的攻击面。
  1. # 在安装过程中选择"Minimal Install"
  2. # 安装完成后检查已安装的软件包
  3. dnf list installed
复制代码

安装完成后,立即更新系统到最新版本以修复已知的安全漏洞。
  1. # 更新系统
  2. dnf update -y
  3. # 如果可用,安装安全更新
  4. dnf update --security -y
  5. # 设置自动更新
  6. dnf install -y dnf-automatic
  7. systemctl enable --now dnf-automatic.timer
复制代码

设置一个描述性的主机名有助于系统管理和识别。
  1. # 查看当前主机名
  2. hostnamectl
  3. # 设置新的主机名
  4. hostnamectl set-hostname server.example.com
  5. # 验证设置
  6. hostnamectl status
复制代码

正确设置时区有助于日志记录和时间同步。
  1. # 列出所有可用时区
  2. timedatectl list-timezones
  3. # 设置时区(例如:Asia/Shanghai)
  4. timedatectl set-timezone Asia/Shanghai
  5. # 验证设置
  6. timedatectl status
复制代码

确保系统时间准确对于日志分析和安全审计至关重要。
  1. # 安装chrony(NTP客户端)
  2. dnf install -y chrony
  3. # 启动并启用chrony服务
  4. systemctl enable --now chronyd
  5. # 验证时间同步状态
  6. chronyc tracking
复制代码

三、用户和权限管理

直接使用root账户远程登录存在安全风险,建议使用普通用户登录后通过sudo提升权限。
  1. # 创建新用户
  2. useradd -m adminuser
  3. passwd adminuser
  4. # 将用户添加到wheel组(具有sudo权限)
  5. usermod -aG wheel adminuser
  6. # 编辑SSH配置文件禁用root远程登录
  7. vi /etc/ssh/sshd_config
复制代码

找到PermitRootLogin参数,将其设置为no:
  1. PermitRootLogin no
复制代码

重启SSH服务:
  1. systemctl restart sshd
复制代码

设置强密码策略可以防止暴力破解攻击。
  1. # 安装libpwquality(密码质量检查库)
  2. dnf install -y libpwquality
  3. # 编辑密码质量配置文件
  4. vi /etc/security/pwquality.conf
复制代码

设置以下参数:
  1. minlen = 12
  2. minclass = 3
  3. dcredit = -1
  4. ucredit = -1
  5. lcredit = -1
  6. ocredit = -1
  7. maxrepeat = 3
复制代码

这些设置要求密码至少12个字符,包含至少3种字符类型(大写、小写、数字和特殊字符),每种类型至少一个,最多连续重复3个字符。

配置账户锁定策略可以防止暴力破解攻击。
  1. # 编辑系统认证配置文件
  2. vi /etc/pam.d/system-auth
复制代码

在auth部分添加以下行:
  1. auth        required      pam_tally2.so deny=5 unlock_time=900 onerr=fail
复制代码

这将在5次失败尝试后锁定账户15分钟。

限制只有wheel组的用户才能使用su命令切换到root账户。
  1. # 编辑PAM配置文件
  2. vi /etc/pam.d/su
复制代码

取消以下行的注释:
  1. auth           required        pam_wheel.so use_uid
复制代码

定期审查系统中的用户账户,移除不必要的账户。
  1. # 列出所有用户
  2. awk -F: '{print $1}' /etc/passwd
  3. # 查看最近登录的用户
  4. lastlog
  5. # 查找具有UID 0(root权限)的账户
  6. awk -F: '($3 == "0") {print}' /etc/passwd
复制代码

四、网络安全配置

使用firewalld管理网络流量是CentOS Stream的推荐做法。
  1. # 安装firewalld
  2. dnf install -y firewalld
  3. # 启动并启用firewalld
  4. systemctl enable --now firewalld
  5. # 查看默认区域
  6. firewall-cmd --get-default-zone
  7. # 查看当前活动的区域和规则
  8. firewall-cmd --list-all
  9. # 开放必要的端口(例如:SSH、HTTP、HTTPS)
  10. firewall-cmd --permanent --add-service=ssh
  11. firewall-cmd --permanent --add-service=http
  12. firewall-cmd --permanent --add-service=https
  13. # 重新加载防火墙规则
  14. firewall-cmd --reload
复制代码

SSH是远程管理服务器的常用工具,但也是攻击者的主要目标之一。
  1. # 备份SSH配置文件
  2. cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
  3. # 编辑SSH配置文件
  4. vi /etc/ssh/sshd_config
复制代码

修改以下参数:
  1. # 更改SSH默认端口(例如:2222)
  2. Port 2222
  3. # 禁用协议1
  4. Protocol 2
  5. # 禁用空密码
  6. PermitEmptyPasswords no
  7. # 设置最大认证尝试次数
  8. MaxAuthTries 3
  9. # 禁用X11转发
  10. X11Forwarding no
  11. # 仅允许特定用户登录
  12. AllowUsers adminuser user1 user2
  13. # 设置登录超时时间(秒)
  14. LoginGraceTime 60
  15. # 使用SSH密钥认证
  16. PubkeyAuthentication yes
  17. PasswordAuthentication no
复制代码

重启SSH服务:
  1. systemctl restart sshd
复制代码

通过调整内核参数增强网络安全性。
  1. # 编辑sysctl配置文件
  2. vi /etc/sysctl.d/99-security.conf
复制代码

添加以下参数:
  1. # 启用IP欺骗保护
  2. net.ipv4.conf.all.rp_filter = 1
  3. net.ipv4.conf.default.rp_filter = 1
  4. # 忽略ICMP重定向请求
  5. net.ipv4.conf.all.accept_redirects = 0
  6. net.ipv4.conf.default.accept_redirects = 0
  7. net.ipv4.conf.all.secure_redirects = 0
  8. net.ipv4.conf.default.secure_redirects = 0
  9. # 忽略发送ICMP重定向
  10. net.ipv4.conf.all.send_redirects = 0
  11. net.ipv4.conf.default.send_redirects = 0
  12. # 不接受源路由包
  13. net.ipv4.conf.all.accept_source_route = 0
  14. net.ipv4.conf.default.accept_source_route = 0
  15. # 启用TCP SYN Cookie保护
  16. net.ipv4.tcp_syncookies = 1
  17. # 防止SYN洪水攻击
  18. net.ipv4.tcp_max_syn_backlog = 2048
  19. net.ipv4.tcp_synack_retries = 2
  20. net.ipv4.tcp_syn_retries = 5
  21. # 记录可疑数据包
  22. net.ipv4.conf.all.log_martians = 1
  23. net.ipv4.conf.default.log_martians = 1
  24. # 忽略广播ping
  25. net.ipv4.icmp_echo_ignore_broadcasts = 1
  26. # 忽略所有ping
  27. net.ipv4.icmp_echo_ignore_all = 1
  28. # 启用IP转发(如果作为路由器)
  29. # net.ipv4.ip_forward = 1
复制代码

应用设置:
  1. sysctl -p /etc/sysctl.d/99-security.conf
复制代码

限制网络接口的广播和组播通信。
  1. # 编辑网络接口配置文件
  2. vi /etc/sysconfig/network-scripts/ifcfg-eth0
复制代码

添加以下参数:
  1. # 禁用网络接口的广播和组播
  2. BROADCAST=no
  3. MULTICAST=no
复制代码

重启网络服务:
  1. systemctl restart network
复制代码

五、服务安全加固

禁用不必要的服务可以减少攻击面。
  1. # 列出所有启用的服务
  2. systemctl list-unit-files | grep enabled
  3. # 禁用不必要的服务(示例)
  4. systemctl disable --now avahi-daemon
  5. systemctl disable --now cups
  6. systemctl disable --now postfix
  7. systemctl disable --now telnet.socket
  8. systemctl disable --now rsh.socket
  9. systemctl disable --now ypbind
  10. systemctl disable --now nfs-server
  11. systemctl disable --now rpcbind
  12. systemctl disable --now smb
  13. systemctl disable --now vsftpd
复制代码

SELinux(Security-Enhanced Linux)是Linux内核的一个安全模块,提供了强制访问控制(MAC)机制。
  1. # 检查SELinux状态
  2. sestatus
  3. # 设置SELinux为强制模式
  4. setenforce 1
  5. # 编辑SELinux配置文件
  6. vi /etc/selinux/config
复制代码

确保以下设置:
  1. SELINUX=enforcing
  2. SELINUXTYPE=targeted
复制代码

对于Apache:
  1. # 安装Apache
  2. dnf install -y httpd
  3. # 编辑Apache配置文件
  4. vi /etc/httpd/conf/httpd.conf
复制代码

修改以下参数:
  1. # 隐藏Apache版本信息
  2. ServerTokens Prod
  3. ServerSignature Off
  4. # 禁用目录列表
  5. Options -Indexes
  6. # 限制HTTP请求方法
  7. <LimitExcept GET POST HEAD>
  8.     Require all denied
  9. </LimitExcept>
复制代码

对于Nginx:
  1. # 安装Nginx
  2. dnf install -y nginx
  3. # 编辑Nginx配置文件
  4. vi /etc/nginx/nginx.conf
复制代码

修改以下参数:
  1. # 隐藏Nginx版本信息
  2. server_tokens off;
  3. # 禁用目录列表
  4. autoindex off;
  5. # 添加安全相关的HTTP头
  6. add_header X-Frame-Options "SAMEORIGIN";
  7. add_header X-Content-Type-Options "nosniff";
  8. add_header X-XSS-Protection "1; mode=block";
  9. add_header Referrer-Policy "strict-origin-when-cross-origin";
  10. add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; img-src 'self' data:; style-src 'self' 'unsafe-inline';";
复制代码
  1. # 安装MariaDB
  2. dnf install -y mariadb-server
  3. # 启动并启用MariaDB
  4. systemctl enable --now mariadb
  5. # 运行安全安装脚本
  6. mysql_secure_installation
复制代码

该脚本将引导您完成以下安全设置:

• 设置root密码
• 移除匿名用户
• 禁止root远程登录
• 移除测试数据库
• 重新加载权限表

编辑MariaDB配置文件:
  1. vi /etc/my.cnf.d/mariadb-server.cnf
复制代码

在[mariadb]部分添加以下参数:
  1. # 禁用远程访问
  2. skip-networking
  3. bind-address = 127.0.0.1
  4. # 增强安全性
  5. local-infile=0
  6. symbolic-links=0
复制代码

重启MariaDB服务:
  1. systemctl restart mariadb
复制代码
  1. # 安装PHP
  2. dnf install -y php php-fpm
  3. # 编辑PHP配置文件
  4. vi /etc/php.ini
复制代码

修改以下参数:
  1. # 隐藏PHP版本信息
  2. expose_php = Off
  3. # 禁用危险函数
  4. disable_functions = exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source
  5. # 增强会话安全性
  6. session.cookie_httponly = 1
  7. session.use_only_cookies = 1
  8. session.cookie_secure = 1
  9. session.cookie_samesite = Strict
  10. # 限制文件上传
  11. file_uploads = On
  12. upload_tmp_dir = /var/www/php_tmp
  13. upload_max_filesize = 2M
  14. max_file_uploads = 20
  15. # 禁用全局变量
  16. register_globals = Off
复制代码

创建临时上传目录并设置权限:
  1. mkdir -p /var/www/php_tmp
  2. chown -R apache:apache /var/www/php_tmp
  3. chmod -R 750 /var/www/php_tmp
复制代码

重启PHP-FPM服务:
  1. systemctl restart php-fpm
复制代码

六、文件系统安全

确保关键文件和目录具有适当的权限。
  1. # 设置关键目录权限
  2. chmod 700 /root
  3. chmod 750 /home/*
  4. chmod 644 /etc/passwd
  5. chmod 600 /etc/shadow
  6. chmod 644 /etc/group
  7. chmod 600 /etc/gshadow
  8. chmod 644 /etc/sudoers
  9. chmod 600 /boot/grub/grub.cfg
  10. # 查找全局可写文件
  11. find / -type f -perm -o+w -exec ls -l {} \;
  12. # 查找没有所有者的文件
  13. find / -nouser -o -nogroup
复制代码

编辑/etc/fstab文件,为关键分区添加安全挂载选项。
  1. # 备份fstab文件
  2. cp /etc/fstab /etc/fstab.bak
  3. # 编辑fstab文件
  4. vi /etc/fstab
复制代码

为以下分区添加挂载选项:
  1. # /tmp分区
  2. /dev/sdaX   /tmp    ext4    defaults,nodev,nosuid,noexec        0 0
  3. # /home分区
  4. /dev/sdaX   /home   ext4    defaults,nodev,nosuid               0 0
  5. # /var分区
  6. /dev/sdaX   /var    ext4    defaults,nodev,nosuid               0 0
  7. # /boot分区
  8. /dev/sdaX   /boot   ext4    defaults,nodev,nosuid,noexec        0 0
复制代码

重新挂载分区:
  1. mount -o remount /tmp
  2. mount -o remount /home
  3. mount -o remount /var
  4. mount -o remount /boot
复制代码

使用chattr命令设置关键文件为不可变,防止未经授权的修改。
  1. # 设置关键文件为不可变
  2. chattr +i /etc/passwd
  3. chattr +i /etc/shadow
  4. chattr +i /etc/group
  5. chattr +i /etc/gshadow
  6. chattr +i /etc/sudoers
  7. chattr +i /etc/ssh/sshd_config
  8. # 查看文件属性
  9. lsattr /etc/passwd
复制代码

如需修改这些文件,需要先移除不可变属性:
  1. chattr -i /etc/passwd
复制代码

限制用户和组的磁盘使用量,防止磁盘空间耗尽攻击。
  1. # 安装配额工具
  2. dnf install -y quota
  3. # 编辑/etc/fstab,为需要配额的分区添加usrquota和grpquota选项
  4. vi /etc/fstab
复制代码

例如:
  1. /dev/sdaX   /home   ext4    defaults,usrquota,grpquota   0 0
复制代码

重新挂载分区并创建配额数据库:
  1. mount -o remount /home
  2. quotacheck -cug /home
  3. quotaon -vug /home
复制代码

为用户设置配额:
  1. # 为用户adminuser设置软限制10GB,硬限制12GB
  2. setquota -u adminuser 10G 12G 0 0 /home
  3. # 查看用户配额
  4. quota -u adminuser
复制代码

七、系统监控与日志审计

配置rsyslog服务以集中管理日志。
  1. # 安装rsyslog
  2. dnf install -y rsyslog
  3. # 启动并启用rsyslog
  4. systemctl enable --now rsyslog
  5. # 编辑rsyslog配置文件
  6. vi /etc/rsyslog.conf
复制代码

取消以下行的注释以接收远程日志:
  1. # Provides UDP syslog reception
  2. module(load="imudp")
  3. input(type="imudp" port="514")
  4. # Provides TCP syslog reception
  5. module(load="imtcp")
  6. input(type="imtcp" port="514")
复制代码

添加自定义日志规则:
  1. # 记录所有认证相关日志
  2. authpriv.*                                              /var/log/secure
  3. # 记录所有cron相关日志
  4. cron.*                                                  /var/log/cron
  5. # 记录所有邮件相关日志
  6. mail.*                                                  -/var/log/maillog
  7. # 记录所有内核消息
  8. kern.*                                                  /var/log/kern.log
  9. # 记录所有认证失败消息
  10. authpriv.*                                              /var/log/auth.log
复制代码

重启rsyslog服务:
  1. systemctl restart rsyslog
复制代码

配置logrotate以管理日志文件大小和保留期。
  1. # 编辑logrotate配置文件
  2. vi /etc/logrotate.conf
复制代码

修改以下参数:
  1. # 设置日志轮转周期
  2. weekly
  3. # 设置保留的日志文件数量
  4. rotate 4
  5. # 压缩旧日志
  6. compress
  7. # 延迟压缩
  8. delaycompress
  9. # 如果日志文件不存在,不报错
  10. missingok
  11. # 如果日志文件为空,不轮转
  12. notifempty
  13. # 创建新的日志文件
  14. create 0640 root root
  15. # 包含自定义配置
  16. include /etc/logrotate.d
复制代码

为特定服务创建自定义轮转配置:
  1. # 为Apache创建自定义轮转配置
  2. vi /etc/logrotate.d/httpd
复制代码

添加以下内容:
  1. /var/log/httpd/*log {
  2.     daily
  3.     missingok
  4.     rotate 30
  5.     compress
  6.     delaycompress
  7.     notifempty
  8.     sharedscripts
  9.     postrotate
  10.         /bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true
  11.     endscript
  12. }
复制代码

使用auditd服务监控系统活动。
  1. # 安装auditd
  2. dnf install -y audit
  3. # 启动并启用auditd
  4. systemctl enable --now auditd
  5. # 编辑审计规则
  6. vi /etc/audit/rules.d/audit.rules
复制代码

添加以下规则:
  1. # 监控文件访问
  2. -w /etc/passwd -p wa -k identity
  3. -w /etc/shadow -p wa -k identity
  4. -w /etc/group -p wa -k identity
  5. -w /etc/gshadow -p wa -k identity
  6. -w /etc/sudoers -p wa -k identity
  7. -w /etc/ssh/sshd_config -p wa -k sshd_config
  8. # 监控系统调用
  9. -a always,exit -F arch=b64 -S chown -F auid>=1000 -F auid!=-1 -k perm_mod
  10. -a always,exit -F arch=b64 -S fchmod -F auid>=1000 -F auid!=-1 -k perm_mod
  11. -a always,exit -F arch=b64 -S fchmodat -F auid>=1000 -F auid!=-1 -k perm_mod
  12. -a always,exit -F arch=b64 -S setreuid -F auid>=1000 -F auid!=-1 -k setuid
  13. -a always,exit -F arch=b64 -S setuid -F auid>=1000 -F auid!=-1 -k setuid
  14. -a always,exit -F arch=b64 -S seteuid -F auid>=1000 -F auid!=-1 -k setuid
  15. -a always,exit -F arch=b64 -S setresuid -F auid>=1000 -F auid!=-1 -k setuid
  16. -a always,exit -F arch=b64 -S setregid -F auid>=1000 -F auid!=-1 -k setgid
  17. -a always,exit -F arch=b64 -S setgid -F auid>=1000 -F auid!=-1 -k setgid
  18. -a always,exit -F arch=b64 -S setegid -F auid>=1000 -F auid!=-1 -k setgid
  19. -a always,exit -F arch=b64 -S setresgid -F auid>=1000 -F auid!=-1 -k setgid
  20. # 监控登录活动
  21. -w /var/log/lastlog -p wa -k logins
  22. -w /var/log/faillog -p wa -k logins
  23. -w /var/log/tallylog -p wa -k logins
  24. # 监控网络活动
  25. -a always,exit -F arch=b64 -S bind -F auid>=1000 -F auid!=-1 -k network
  26. -a always,exit -F arch=b64 -S connect -F auid>=1000 -F auid!=-1 -k network
  27. # 监控权限提升
  28. -a always,exit -F arch=b64 -S execve -C uid!=euid -F euid=0 -k priv_esc
  29. -a always,exit -F arch=b64 -S execve -C gid!=egid -F egid=0 -k priv_esc
复制代码

重新加载审计规则:
  1. augenrules --load
复制代码

安装和配置系统监控工具,如top、htop、vmstat、iostat等。
  1. # 安装监控工具
  2. dnf install -y htop sysstat vmstat iotop
  3. # 启动sysstat服务
  4. systemctl enable --now sysstat
  5. # 使用vmstat监控系统资源
  6. vmstat 1 10
  7. # 使用iostat监控磁盘I/O
  8. iostat -xz 1 10
  9. # 使用iotop监控进程I/O
  10. iotop -o
复制代码

八、安全更新与补丁管理

配置系统自动安装安全更新。
  1. # 安装dnf-automatic
  2. dnf install -y dnf-automatic
  3. # 编辑dnf-automatic配置文件
  4. vi /etc/dnf/automatic.conf
复制代码

修改以下参数:
  1. [commands]
  2. # 自动下载并安装更新
  3. apply_updates = yes
  4. [emitters]
  5. # 启用系统日志
  6. system_name = host.domain
  7. emit_via = syslog
  8. [email]
  9. # 配置邮件通知(可选)
  10. email_from = root@domain.com
  11. email_to = admin@domain.com
  12. email_host = localhost
  13. [base]
  14. # 仅安装安全更新
  15. upgrade_type = security
  16. random_sleep = 300
复制代码

启动并启用dnf-automatic服务:
  1. systemctl enable --now dnf-automatic.timer
复制代码

配置YUM/DNF插件以增强安全性。
  1. # 安装安全插件
  2. dnf install -y dnf-plugin-security
  3. # 检查可用的安全更新
  4. dnf updateinfo list security
  5. # 查看安全公告详情
  6. dnf updateinfo info
复制代码

定期使用安全扫描工具检查系统漏洞。
  1. # 安装OpenSCAP
  2. dnf install -y openscap-scanner scap-security-guide
  3. # 运行系统扫描
  4. oscap xccdf eval --profile xccdf_org.ssgproject.content_profile_stig --results-arf arf.xml /usr/share/xml/scap/ssg/content/ssg-centos8-ds.xml
  5. # 生成HTML报告
  6. oscap xccdf generate report arf.xml > report.html
复制代码

九、入侵检测与防御

AIDE是一个文件完整性检查工具,可以检测文件系统的未授权更改。
  1. # 安装AIDE
  2. dnf install -y aide
  3. # 初始化AIDE数据库
  4. aide --init
  5. # 重命名数据库文件
  6. mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz
  7. # 配置AIDE
  8. vi /etc/aide.conf
复制代码

根据需要修改AIDE配置,例如添加要监控的目录:
  1. # 监控/etc目录
  2. /etc   p+i+n+u+g+s+b+m+c+md5+sha256
  3. # 监控/boot目录
  4. /boot  p+i+n+u+g+s+b+m+c+md5+sha256
  5. # 监控/bin目录
  6. /bin   p+i+n+u+g+s+b+m+c+md5+sha256
  7. # 监控/sbin目录
  8. /sbin  p+i+n+u+g+s+b+m+c+md5+sha256
  9. # 监控/lib目录
  10. /lib   p+i+n+u+g+s+b+m+c+md5+sha256
  11. # 监控/usr目录
  12. /usr   p+i+n+u+g+s+b+m+c+md5+sha256
  13. # 监控/var目录
  14. /var   p+i+n+u+g+s+b+m+c+md5+sha256
复制代码

运行AIDE检查:
  1. aide --check
复制代码

创建定期检查的cron任务:
  1. # 编辑crontab
  2. crontab -e
复制代码

添加以下内容:
  1. # 每天凌晨3点运行AIDE检查
  2. 0 3 * * * /usr/sbin/aide --check | mail -s "AIDE Report" admin@domain.com
复制代码

Fail2ban是一个入侵防御软件,可以防止暴力破解攻击。
  1. # 安装EPEL仓库
  2. dnf install -y epel-release
  3. # 安装Fail2ban
  4. dnf install -y fail2ban
  5. # 启动并启用Fail2ban
  6. systemctl enable --now fail2ban
  7. # 创建Fail2ban配置文件
  8. cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
  9. # 编辑Fail2ban配置
  10. vi /etc/fail2ban/jail.local
复制代码

修改以下参数:
  1. [DEFAULT]
  2. # 设置默认禁止时间(秒)
  3. bantime = 1h
  4. # 设置查找时间窗口
  5. findtime = 10m
  6. # 设置最大尝试次数
  7. maxretry = 3
  8. # 设置发送邮件
  9. destemail = admin@domain.com
  10. sender = root@domain.com
  11. mta = sendmail
  12. # 启用SSH保护
  13. [sshd]
  14. enabled = true
  15. port = 2222
  16. filter = sshd
  17. logpath = /var/log/secure
  18. maxretry = 3
  19. bantime = 1d
复制代码

重启Fail2ban服务:
  1. systemctl restart fail2ban
复制代码

ClamAV是一个开源的防病毒引擎,可以检测恶意软件。
  1. # 安装EPEL仓库
  2. dnf install -y epel-release
  3. # 安装ClamAV
  4. dnf install -y clamav clamav-update
  5. # 更新病毒数据库
  6. freshclam
  7. # 配置自动更新
  8. vi /etc/sysconfig/freshclam
复制代码

注释掉以下行:
  1. #Example
复制代码

创建定时任务自动更新病毒数据库:
  1. # 编辑crontab
  2. crontab -e
复制代码

添加以下内容:
  1. # 每3小时更新一次病毒数据库
  2. 0 */3 * * * /usr/bin/freshclam --quiet
复制代码

创建定时任务定期扫描系统:
  1. # 编辑crontab
  2. crontab -e
复制代码

添加以下内容:
  1. # 每天凌晨2点扫描系统
  2. 0 2 * * * /usr/bin/clamscan -r / --exclude-dir=/sys --exclude-dir=/proc --exclude-dir=/dev | mail -s "ClamAV Scan Report" admin@domain.com
复制代码

十、安全最佳实践总结

定期进行系统安全审计,检查系统配置和日志。
  1. # 检查登录失败
  2. grep "Failed password" /var/log/secure
  3. # 检查成功登录
  4. grep "Accepted password" /var/log/secure
  5. # 检查sudo使用
  6. grep "sudo" /var/log/secure
  7. # 检查用户账户
  8. awk -F: '($3 == "0") {print}' /etc/passwd
  9. # 检查SUID/SGID文件
  10. find / -type f \( -perm -4000 -o -perm -2000 \) -exec ls -l {} \;
  11. # 检查无主文件
  12. find / -nouser -o -nogroup
复制代码

制定并实施定期备份策略,确保数据安全。
  1. # 安装rsync
  2. dnf install -y rsync
  3. # 创建备份脚本
  4. vi /usr/local/bin/backup.sh
复制代码

添加以下内容:
  1. #!/bin/bash
  2. # 设置备份目录
  3. BACKUP_DIR="/backup"
  4. DATE=$(date +%Y%m%d)
  5. # 创建备份目录
  6. mkdir -p $BACKUP_DIR/$DATE
  7. # 备份系统配置文件
  8. rsync -avz --delete /etc $BACKUP_DIR/$DATE/
  9. # 备份用户数据
  10. rsync -avz --delete /home $BACKUP_DIR/$DATE/
  11. # 备份网站数据
  12. rsync -avz --delete /var/www $BACKUP_DIR/$DATE/
  13. # 备份数据库
  14. mysqldump --all-databases -u root -p'password' | gzip > $BACKUP_DIR/$DATE/mysql.sql.gz
  15. # 清理旧备份(保留7天)
  16. find $BACKUP_DIR -type d -mtime +7 -exec rm -rf {} \;
复制代码

设置脚本可执行权限:
  1. chmod +x /usr/local/bin/backup.sh
复制代码

创建定时任务:
  1. # 编辑crontab
  2. crontab -e
复制代码

添加以下内容:
  1. # 每天凌晨1点执行备份
  2. 0 1 * * * /usr/local/bin/backup.sh
复制代码

制定并维护系统安全文档和政策,包括:

• 系统配置标准
• 用户管理政策
• 密码策略
• 事件响应计划
• 备份与恢复程序

定期为系统管理员和用户提供安全意识培训,包括:

• 识别钓鱼邮件
• 安全密码实践
• 社会工程防范
• 安全事件报告程序

结论

CentOS Stream的安全设置与系统加固是一个持续的过程,需要管理员不断学习和适应新的安全威胁。本文提供了一系列安全配置和加固措施,从系统初始化设置到日常监控和维护,涵盖了服务器安全的各个方面。通过实施这些措施,您可以显著提高CentOS Stream服务器的安全性,保护系统和数据免受未授权访问和恶意攻击。

请记住,安全是一个持续的过程,而不是一次性的任务。定期审查和更新您的安全配置,保持对最新安全威胁的了解,并采取适当的预防措施,是确保服务器长期安全运行的关键。
「七転び八起き(ななころびやおき)」
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则