简体中文 繁體中文 English 日本語 Deutsch 한국 사람 بالعربية TÜRKÇE português คนไทย Français

站内搜索

搜索

活动公告

11-02 12:46
10-23 09:32
通知:本站资源由网友上传分享,如有违规等问题请到版务模块进行投诉,将及时处理!
10-23 09:31
10-23 09:28
通知:签到时间调整为每日4:00(东八区)
10-23 09:26

CentOS服务器安全加固步骤详解 从零开始构建安全可靠的服务器环境 系统管理员必备的安全配置与防护措施指南

3万

主题

423

科技点

3万

积分

大区版主

木柜子打湿

积分
31916

三倍冰淇淋无人之境【一阶】财Doro小樱(小丑装)立华奏以外的星空【二阶】⑨的冰沙

发表于 2025-9-30 18:50:01 | 显示全部楼层 |阅读模式 [标记阅至此楼]

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

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

x
引言

CentOS是许多企业和组织首选的服务器操作系统,因其稳定性、安全性和兼容性而受到广泛欢迎。然而,即使是最安全的操作系统也需要适当的配置和维护才能确保其安全性。本文将详细介绍如何从零开始构建一个安全可靠的CentOS服务器环境,包括系统管理员必备的安全配置与防护措施。

初始系统安装与配置

最小化安装

在安装CentOS服务器时,应始终选择最小化安装选项。这可以减少不必要的软件包和服务,从而减少潜在的攻击面。
  1. # 在安装过程中选择"Minimal Install"选项
复制代码

磁盘分区

合理的磁盘分区策略可以提高系统的安全性和稳定性。建议至少创建以下分区:

• /boot:启动分区,至少500MB
• /:根分区,根据服务器用途分配足够空间
• /home:用户数据分区
• /tmp:临时文件分区
• /var:变量数据分区,特别是如果服务器将运行数据库或Web服务
• swap:交换分区,大小通常是RAM的1-2倍
  1. # 示例分区方案
  2. /boot    500MB
  3. /        20GB
  4. /home    10GB
  5. /tmp     5GB
  6. /var     20GB
  7. swap     8GB (假设系统有4GB RAM)
复制代码

网络配置

安装完成后,应立即配置网络设置,确保服务器能够连接到互联网以下载更新和安全补丁。
  1. # 编辑网络配置文件
  2. vi /etc/sysconfig/network-scripts/ifcfg-eth0
  3. # 示例配置
  4. DEVICE=eth0
  5. BOOTPROTO=static
  6. ONBOOT=yes
  7. IPADDR=192.168.1.100
  8. NETMASK=255.255.255.0
  9. GATEWAY=192.168.1.1
  10. DNS1=8.8.8.8
  11. DNS2=8.8.4.4
  12. # 重启网络服务
  13. systemctl restart network
复制代码

系统更新与补丁管理

初始系统更新

安装完成后,应立即更新系统到最新版本,以修复已知的安全漏洞。
  1. # 更新系统
  2. yum update -y
  3. # 如果可用,安装EPEL仓库
  4. yum install epel-release -y
复制代码

自动更新配置

配置系统自动安装安全更新,以确保系统始终保持最新状态。
  1. # 安装yum-cron包
  2. yum install yum-cron -y
  3. # 编辑yum-cron配置
  4. vi /etc/yum/yum-cron.conf
  5. # 确保以下设置正确
  6. apply_updates = yes
  7. update_cmd = security
  8. update_messages = yes
  9. download_updates = yes
  10. emit_via = email
  11. email_from = root@localhost
  12. email_to = admin@example.com
  13. # 启用并启动yum-cron服务
  14. systemctl enable yum-cron
  15. systemctl start yum-cron
复制代码

定期手动检查更新

尽管配置了自动更新,但仍应定期手动检查和安装更新,特别是对于关键系统。
  1. # 检查可用更新
  2. yum check-update
  3. # 安装所有可用更新
  4. yum update -y
  5. # 仅安装安全更新
  6. yum update --security -y
复制代码

用户账户安全配置

禁用root远程登录

为了提高安全性,应禁用root账户的远程SSH登录,使用普通用户登录后通过sudo执行特权命令。
  1. # 创建一个新的管理员用户
  2. useradd admin
  3. passwd admin
  4. # 将新用户添加到wheel组,使其能够使用sudo
  5. usermod -aG wheel admin
  6. # 编辑SSH配置文件,禁用root远程登录
  7. vi /etc/ssh/sshd_config
  8. # 找到并修改以下行
  9. PermitRootLogin no
  10. # 重启SSH服务
  11. systemctl restart sshd
复制代码

强密码策略

配置强密码策略,要求用户使用复杂密码。
  1. # 安装libpwquality包
  2. yum install libpwquality -y
  3. # 编辑密码质量配置文件
  4. vi /etc/security/pwquality.conf
  5. # 修改或添加以下设置
  6. minlen = 12
  7. minclass = 4
  8. dcredit = -1
  9. ucredit = -1
  10. lcredit = -1
  11. ocredit = -1
  12. maxrepeat = 3
  13. maxclassrepeat = 3
  14. gecoscheck = 1
  15. dictcheck = 1
  16. usercheck = 1
  17. enforce_for_root
复制代码

密码老化策略

配置密码老化策略,强制用户定期更改密码。
  1. # 编辑登录配置文件
  2. vi /etc/login.defs
  3. # 修改或添加以下设置
  4. PASS_MAX_DAYS   90
  5. PASS_MIN_DAYS   7
  6. PASS_WARN_AGE   14
复制代码

用户会话超时

配置用户会话超时,自动终止空闲会话。
  1. # 编辑profile文件
  2. vi /etc/profile
  3. # 添加以下设置
  4. TMOUT=600
  5. readonly TMOUT
  6. export TMOUT
  7. # 使设置立即生效
  8. source /etc/profile
复制代码

限制su命令

限制能够使用su命令切换到root用户的用户组。
  1. # 编辑PAM配置文件
  2. vi /etc/pam.d/su
  3. # 取消以下行的注释
  4. auth           required        pam_wheel.so use_uid
复制代码

SSH安全配置

更改SSH默认端口

更改SSH默认端口可以减少自动化攻击的风险。
  1. # 编辑SSH配置文件
  2. vi /etc/ssh/sshd_config
  3. # 修改端口设置
  4. Port 2222
  5. # 重启SSH服务
  6. systemctl restart sshd
复制代码

禁用密码认证,启用密钥认证

禁用密码认证,只允许使用SSH密钥进行认证,可以大大提高安全性。
  1. # 在本地计算机上生成SSH密钥对
  2. ssh-keygen -t rsa -b 4096
  3. # 将公钥复制到服务器
  4. ssh-copy-id -i ~/.ssh/id_rsa.pub admin@server_ip -p 2222
  5. # 编辑SSH配置文件
  6. vi /etc/ssh/sshd_config
  7. # 修改或添加以下设置
  8. PasswordAuthentication no
  9. PubkeyAuthentication yes
  10. ChallengeResponseAuthentication no
  11. # 重启SSH服务
  12. systemctl restart sshd
复制代码

限制SSH用户访问

限制哪些用户可以通过SSH访问服务器。
  1. # 编辑SSH配置文件
  2. vi /etc/ssh/sshd_config
  3. # 添加允许或拒绝的用户
  4. AllowUsers admin user1 user2
  5. # 或者
  6. DenyUsers root user3 user4
  7. # 重启SSH服务
  8. systemctl restart sshd
复制代码

使用SSH封装工具

使用如fail2ban等工具来防止暴力破解攻击。
  1. # 安装EPEL仓库(如果尚未安装)
  2. yum install epel-release -y
  3. # 安装fail2ban
  4. yum install fail2ban -y
  5. # 创建fail2ban配置文件
  6. cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
  7. # 编辑fail2ban配置
  8. vi /etc/fail2ban/jail.local
  9. # 修改SSH监狱设置
  10. [sshd]
  11. enabled = true
  12. port = 2222
  13. findtime = 600
  14. bantime = 3600
  15. maxretry = 3
  16. # 启动并启用fail2ban服务
  17. systemctl start fail2ban
  18. systemctl enable fail2ban
复制代码

防火墙配置

启用firewalld

CentOS 7及更高版本默认使用firewalld作为防火墙管理工具。
  1. # 启动并启用firewalld
  2. systemctl start firewalld
  3. systemctl enable firewalld
  4. # 检查firewalld状态
  5. firewall-cmd --state
复制代码

配置防火墙规则

根据服务器用途配置适当的防火墙规则。
  1. # 查看当前区域和活动区域
  2. firewall-cmd --get-active-zones
  3. firewall-cmd --get-default-zone
  4. # 设置默认区域
  5. firewall-cmd --set-default-zone=public
  6. # 开放必要的端口(例如SSH、HTTP、HTTPS)
  7. firewall-cmd --permanent --add-port=2222/tcp
  8. firewall-cmd --permanent --add-service=http
  9. firewall-cmd --permanent --add-service=https
  10. # 重新加载防火墙配置
  11. firewall-cmd --reload
  12. # 查看开放的端口和服务
  13. firewall-cmd --list-ports
  14. firewall-cmd --list-services
复制代码

限制特定IP访问

限制特定服务只能被特定IP访问。
  1. # 创建富规则以限制SSH访问
  2. firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" service name="ssh" accept'
  3. # 拒绝所有其他SSH连接尝试
  4. firewall-cmd --permanent --remove-service=ssh
  5. # 重新加载防火墙配置
  6. firewall-cmd --reload
复制代码

配置端口转发

如果需要配置端口转发。
  1. # 添加端口转发规则(例如将80端口转发到8080)
  2. firewall-cmd --permanent --add-forward-port=port=80:proto=tcp:toport=8080
  3. # 重新加载防火墙配置
  4. firewall-cmd --reload
复制代码

服务安全加固

禁用不必要的服务

禁用不必要的服务可以减少攻击面。
  1. # 查看所有启用的服务
  2. systemctl list-unit-files | grep enabled
  3. # 禁用不必要的服务
  4. systemctl disable postfix
  5. systemctl disable telnet.socket
  6. systemctl disable rsh.socket
  7. systemctl disable rlogin.socket
  8. systemctl disable ntalk
  9. systemctl disable ypbind
复制代码

SELinux配置

SELinux(Security-Enhanced Linux)是一个强制访问控制(MAC)系统,可以提供额外的安全层。
  1. # 检查SELinux状态
  2. sestatus
  3. # 如果SELinux被禁用,编辑配置文件启用它
  4. vi /etc/selinux/config
  5. # 修改以下行
  6. SELINUX=enforcing
  7. # 重启系统以应用更改
  8. reboot
复制代码

服务特定安全配置

根据服务器上运行的服务,进行特定的安全配置。
  1. # 对于Apache
  2. yum install httpd -y
  3. # 编辑Apache配置文件
  4. vi /etc/httpd/conf/httpd.conf
  5. # 修改或添加以下设置
  6. ServerTokens Prod
  7. ServerSignature Off
  8. TraceEnable Off
  9. # 启动并启用Apache
  10. systemctl start httpd
  11. systemctl enable httpd
  12. # 对于Nginx
  13. yum install nginx -y
  14. # 编辑Nginx配置文件
  15. vi /etc/nginx/nginx.conf
  16. # 修改或添加以下设置
  17. server_tokens off;
  18. # 启动并启用Nginx
  19. systemctl start nginx
  20. systemctl enable nginx
复制代码
  1. # 安装MariaDB
  2. yum install mariadb-server mariadb -y
  3. # 启动并启用MariaDB
  4. systemctl start mariadb
  5. systemctl enable mariadb
  6. # 运行安全安装脚本
  7. mysql_secure_installation
  8. # 编辑MariaDB配置文件
  9. vi /etc/my.cnf
  10. # 添加以下设置
  11. [mysqld]
  12. skip-networking
  13. bind-address = 127.0.0.1
  14. local-infile=0
  15. # 重启MariaDB
  16. systemctl restart mariadb
复制代码
  1. # 安装vsftpd
  2. yum install vsftpd -y
  3. # 编辑vsftpd配置文件
  4. vi /etc/vsftpd/vsftpd.conf
  5. # 修改或添加以下设置
  6. anonymous_enable=NO
  7. local_enable=YES
  8. write_enable=YES
  9. chroot_local_user=YES
  10. allow_writeable_chroot=YES
  11. pasv_min_port=40000
  12. pasv_max_port=50000
  13. # 启动并启用vsftpd
  14. systemctl start vsftpd
  15. systemctl enable vsftpd
  16. # 配置防火墙规则
  17. firewall-cmd --permanent --add-service=ftp
  18. firewall-cmd --permanent --add-port=40000-50000/tcp
  19. firewall-cmd --reload
复制代码

文件系统安全

文件权限设置

正确设置文件权限可以防止未授权访问。
  1. # 设置关键目录的权限
  2. chmod 700 /root
  3. chmod 750 /home
  4. chmod 755 /var/www/html
  5. chmod 644 /etc/passwd
  6. chmod 600 /etc/shadow
  7. chmod 644 /etc/group
  8. chmod 600 /etc/gshadow
  9. # 查找并修复权限不正确的文件
  10. find / -type f -name "*.sh" -exec chmod 750 {} \;
  11. find / -type f -name "*.php" -exec chmod 640 {} \;
复制代码

禁用挂载SUID/SGID二进制文件

SUID和SGID位允许用户以文件所有者或组的权限执行文件,这可能带来安全风险。
  1. # 查找所有SUID文件
  2. find / -type f -perm -4000 -ls
  3. # 查找所有SGID文件
  4. find / -type f -perm -2000 -ls
  5. # 禁用不必要的SUID/SGID文件
  6. chmod a-s /path/to/file
复制代码

配置文件系统挂载选项

使用安全的挂载选项来增强文件系统安全性。
  1. # 编辑fstab文件
  2. vi /etc/fstab
  3. # 修改挂载选项,添加noexec、nodev和nosuid
  4. /dev/sda1   /boot   ext4    defaults,noexec,nodev,nosuid   0   0
  5. /dev/sda2   /tmp    ext4    defaults,noexec,nodev,nosuid   0   0
  6. /dev/sda3   /var    ext4    defaults,nodev,nosuid   0   0
复制代码

使用文件系统加密

对敏感数据使用文件系统加密。
  1. # 安装cryptsetup
  2. yum install cryptsetup -y
  3. # 创建加密分区
  4. cryptsetup luksFormat /dev/sdb1
  5. # 打开加密分区
  6. cryptsetup open /dev/sdb1 encrypted_data
  7. # 格式化加密分区
  8. mkfs.ext4 /dev/mapper/encrypted_data
  9. # 挂载加密分区
  10. mount /dev/mapper/encrypted_data /mnt/encrypted_data
复制代码

系统监控与日志管理

配置集中式日志管理

配置集中式日志管理可以帮助管理员更好地监控和分析系统活动。
  1. # 安装rsyslog
  2. yum install rsyslog -y
  3. # 编辑rsyslog配置文件
  4. vi /etc/rsyslog.conf
  5. # 添加以下设置以启用远程日志接收
  6. $ModLoad imtcp
  7. $InputTCPServerRun 514
  8. # 启动并启用rsyslog
  9. systemctl start rsyslog
  10. systemctl enable rsyslog
  11. # 配置防火墙规则
  12. firewall-cmd --permanent --add-port=514/tcp
  13. firewall-cmd --reload
复制代码

安装和配置日志分析工具

安装和配置日志分析工具,如logwatch或ELK Stack。
  1. # 安装logwatch
  2. yum install logwatch -y
  3. # 配置logwatch
  4. cp /usr/share/logwatch/default.conf/logwatch.conf /etc/logwatch/conf/logwatch.conf
  5. # 编辑logwatch配置
  6. vi /etc/logwatch/conf/logwatch.conf
  7. # 修改以下设置
  8. Output = mail
  9. Format = html
  10. MailTo = admin@example.com
  11. Detail = High
  12. # 设置每日运行logwatch
  13. echo "0 0 * * * /usr/sbin/logwatch" > /etc/cron.daily/00logwatch
复制代码

配置系统审计

配置系统审计以跟踪关键系统活动。
  1. # 安装auditd
  2. yum install audit -y
  3. # 启动并启用auditd
  4. systemctl start auditd
  5. systemctl enable auditd
  6. # 编辑审计规则
  7. vi /etc/audit/rules.d/audit.rules
  8. # 添加以下规则
  9. -w /etc/passwd -p wa -k identity
  10. -w /etc/shadow -p wa -k identity
  11. -w /etc/group -p wa -k identity
  12. -w /etc/sudoers -p wa -k identity
  13. -w /var/log/audit/ -p wa -k audit_log
  14. -w /etc/ssh/sshd_config -p wa -k sshd_config
  15. -a always,exit -F arch=b64 -S sethostname -k hostname_change
  16. -a always,exit -F arch=b64 -S rename,unlink,unlinkat,rmdir -k delete
  17. # 重新加载审计规则
  18. auditctl -R /etc/audit/rules.d/audit.rules
复制代码

配置系统资源监控

配置系统资源监控工具,如Nagios、Zabbix或Prometheus。
  1. # 安装Zabbix
  2. yum install zabbix-server-mysql zabbix-web-mysql zabbix-agent -y
  3. # 配置Zabbix数据库
  4. mysql -u root -p
  5. CREATE DATABASE zabbix CHARACTER SET utf8 COLLATE utf8_bin;
  6. GRANT ALL PRIVILEGES ON zabbix.* TO zabbix@localhost IDENTIFIED BY 'password';
  7. FLUSH PRIVILEGES;
  8. EXIT;
  9. # 导入Zabbix数据库模式
  10. zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
  11. # 编辑Zabbix服务器配置
  12. vi /etc/zabbix/zabbix_server.conf
  13. # 修改以下设置
  14. DBHost=localhost
  15. DBName=zabbix
  16. DBUser=zabbix
  17. DBPassword=password
  18. # 启动并启用Zabbix服务
  19. systemctl start zabbix-server zabbix-agent httpd
  20. systemctl enable zabbix-server zabbix-agent httpd
复制代码

入侵检测与防御

安装和配置AIDE(高级入侵检测环境)

AIDE是一个文件完整性检查工具,可以帮助检测未授权的文件更改。
  1. # 安装AIDE
  2. yum install aide -y
  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
  9. # 添加要监控的文件和目录
  10. /etc   p+i+n+u+g+s+b+sha256
  11. /var   p+i+n+u+g+s+b+sha256
  12. /usr   p+i+n+u+g+s+b+sha256
  13. /root  p+i+n+u+g+s+b+sha256
  14. /boot  p+i+n+u+g+s+b+sha256
  15. # 设置每日AIDE检查
  16. echo "0 0 * * * /usr/sbin/aide --check" > /etc/cron.daily/aide
复制代码

安装和配置Rootkit Hunter

Rootkit Hunter是一个扫描rootkit、后门和本地漏洞的工具。
  1. # 安装EPEL仓库(如果尚未安装)
  2. yum install epel-release -y
  3. # 安装Rootkit Hunter
  4. yum install rkhunter -y
  5. # 更新Rootkit Hunter数据库
  6. rkhunter --update
  7. rkhunter --propupd
  8. # 配置Rootkit Hunter
  9. vi /etc/rkhunter.conf
  10. # 修改以下设置
  11. MAIL-ON-WARNING=admin@example.com
  12. ALLOW_SSH_ROOT_USER=no
  13. ENABLE_TESTS=all
  14. # 运行Rootkit Hunter扫描
  15. rkhunter --checkall
  16. # 设置每日Rootkit Hunter扫描
  17. echo "0 0 * * * /usr/bin/rkhunter --checkall --cronjob" > /etc/cron.daily/rkhunter
复制代码

安装和配置OSSEC

OSSEC是一个开源的主机入侵检测系统,提供日志分析、文件完整性检查、rootkit检测等功能。
  1. # 安装必要的依赖
  2. yum install gcc make httpd php mysql-server php-mysql -y
  3. # 下载并解压OSSEC
  4. cd /opt
  5. wget https://github.com/ossec/ossec-hids/archive/3.6.0.tar.gz
  6. tar -xvzf 3.6.0.tar.gz
  7. cd ossec-hids-3.6.0
  8. # 编译并安装OSSEC
  9. ./install
  10. # 配置OSSEC
  11. vi /var/ossec/etc/ossec.conf
  12. # 修改以下设置
  13. <global>
  14.   <email_notification>yes</email_notification>
  15.   <email_to>admin@example.com</email_to>
  16.   <smtp_server>smtp.example.com</smtp_server>
  17.   <email_from>ossec@example.com</email_from>
  18. </global>
  19. # 启动OSSEC
  20. /var/ossec/bin/ossec-control start
  21. # 设置OSSEC开机自启
  22. echo "/var/ossec/bin/ossec-control start" >> /etc/rc.local
  23. chmod +x /etc/rc.local
复制代码

配置端口扫描检测

配置工具来检测和阻止端口扫描活动。
  1. # 安装psad(端口扫描攻击检测器)
  2. yum install psad -y
  3. # 配置psad
  4. vi /etc/psad/psad.conf
  5. # 修改以下设置
  6. EMAIL_ADDRESSES admin@example.com;
  7. HOSTNAME server.example.com;
  8. ENABLE_AUTO_IDS Y;
  9. IPTABLES_BLOCK_METHOD Y;
  10. # 启动并启用psad
  11. systemctl start psad
  12. systemctl enable psad
  13. # 配置iptables规则以记录数据包
  14. iptables -A INPUT -j LOG
  15. iptables -A FORWARD -j LOG
  16. # 保存iptables规则
  17. service iptables save
复制代码

备份与恢复策略

配置定期备份

配置定期备份系统配置和重要数据。
  1. # 安装rsync
  2. yum install rsync -y
  3. # 创建备份脚本
  4. vi /usr/local/bin/backup.sh
  5. # 添加以下内容
  6. #!/bin/bash
  7. # 定义备份目录
  8. BACKUP_DIR="/backup"
  9. DATE=$(date +%Y%m%d)
  10. # 创建备份目录
  11. mkdir -p $BACKUP_DIR/$DATE
  12. # 备份系统配置
  13. rsync -a --exclude=/proc --exclude=/sys --exclude=/dev --exclude=/tmp --exclude=/backup / $BACKUP_DIR/$DATE/system/
  14. # 备份重要数据目录
  15. rsync -a /etc $BACKUP_DIR/$DATE/config/
  16. rsync -a /home $BACKUP_DIR/$DATE/home/
  17. rsync -a /var/www $BACKUP_DIR/$DATE/www/
  18. # 压缩备份
  19. tar -czf $BACKUP_DIR/$DATE.tar.gz -C $BACKUP_DIR $DATE
  20. # 删除未压缩的备份
  21. rm -rf $BACKUP_DIR/$DATE
  22. # 保留最近30天的备份
  23. find $BACKUP_DIR -name "*.tar.gz" -type f -mtime +30 -delete
  24. # 使脚本可执行
  25. chmod +x /usr/local/bin/backup.sh
  26. # 设置每日备份
  27. echo "0 2 * * * /usr/local/bin/backup.sh" > /etc/cron.daily/backup
复制代码

配置远程备份

配置远程备份以防止本地灾难。
  1. # 安装rsync和sshpass
  2. yum install rsync sshpass -y
  3. # 创建远程备份脚本
  4. vi /usr/local/bin/remote_backup.sh
  5. # 添加以下内容
  6. #!/bin/bash
  7. # 定义变量
  8. BACKUP_DIR="/backup"
  9. REMOTE_USER="backupuser"
  10. REMOTE_HOST="backup.example.com"
  11. REMOTE_DIR="/backups/server"
  12. SSH_PASS="password"
  13. DATE=$(date +%Y%m%d)
  14. # 创建备份目录
  15. mkdir -p $BACKUP_DIR/$DATE
  16. # 备份系统配置
  17. rsync -a --exclude=/proc --exclude=/sys --exclude=/dev --exclude=/tmp --exclude=/backup / $BACKUP_DIR/$DATE/system/
  18. # 备份重要数据目录
  19. rsync -a /etc $BACKUP_DIR/$DATE/config/
  20. rsync -a /home $BACKUP_DIR/$DATE/home/
  21. rsync -a /var/www $BACKUP_DIR/$DATE/www/
  22. # 压缩备份
  23. tar -czf $BACKUP_DIR/$DATE.tar.gz -C $BACKUP_DIR $DATE
  24. # 使用rsync传输到远程服务器
  25. sshpass -p $SSH_PASS rsync -avz $BACKUP_DIR/$DATE.tar.gz $REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/
  26. # 删除本地备份
  27. rm -rf $BACKUP_DIR/$DATE
  28. rm -f $BACKUP_DIR/$DATE.tar.gz
  29. # 使脚本可执行
  30. chmod +x /usr/local/bin/remote_backup.sh
  31. # 设置每周远程备份
  32. echo "0 3 * * 0 /usr/local/bin/remote_backup.sh" > /etc/cron.weekly/remote_backup
复制代码

配置数据库备份

为数据库配置专门的备份策略。
  1. # 创建MySQL/MariaDB备份脚本
  2. vi /usr/local/bin/mysql_backup.sh
  3. # 添加以下内容
  4. #!/bin/bash
  5. # 定义变量
  6. BACKUP_DIR="/backup/mysql"
  7. DATE=$(date +%Y%m%d)
  8. MYSQL_USER="root"
  9. MYSQL_PASS="password"
  10. # 创建备份目录
  11. mkdir -p $BACKUP_DIR/$DATE
  12. # 备份所有数据库
  13. mysqldump --user=$MYSQL_USER --password=$MYSQL_PASS --all-databases | gzip > $BACKUP_DIR/$DATE/all_databases.sql.gz
  14. # 或者单独备份每个数据库
  15. for DB in $(mysql -e "SHOW DATABASES;" -u$MYSQL_USER -p$MYSQL_PASS | grep -Ev "(Database|information_schema|performance_schema|mysql)")
  16. do
  17.     mysqldump --user=$MYSQL_USER --password=$MYSQL_PASS --databases $DB | gzip > $BACKUP_DIR/$DATE/$DB.sql.gz
  18. done
  19. # 保留最近7天的备份
  20. find $BACKUP_DIR -name "*.sql.gz" -type f -mtime +7 -delete
  21. # 使脚本可执行
  22. chmod +x /usr/local/bin/mysql_backup.sh
  23. # 设置每日数据库备份
  24. echo "0 1 * * * /usr/local/bin/mysql_backup.sh" > /etc/cron.daily/mysql_backup
复制代码

测试恢复流程

定期测试备份恢复流程,确保备份可用。
  1. # 创建恢复测试脚本
  2. vi /usr/local/bin/test_restore.sh
  3. # 添加以下内容
  4. #!/bin/bash
  5. # 定义变量
  6. BACKUP_DIR="/backup"
  7. TEST_DIR="/tmp/restore_test"
  8. LATEST_BACKUP=$(ls -t $BACKUP_DIR/*.tar.gz | head -n1)
  9. # 创建测试目录
  10. mkdir -p $TEST_DIR
  11. # 解压最新备份
  12. tar -xzf $LATEST_BACKUP -C $TEST_DIR
  13. # 检查关键文件是否存在
  14. if [ -f "$TEST_DIR/etc/passwd" ] && [ -f "$TEST_DIR/etc/shadow" ] && [ -f "$TEST_DIR/etc/group" ]; then
  15.     echo "Backup restore test successful"
  16. else
  17.     echo "Backup restore test failed"
  18. fi
  19. # 清理测试目录
  20. rm -rf $TEST_DIR
  21. # 使脚本可执行
  22. chmod +x /usr/local/bin/test_restore.sh
  23. # 设置每周恢复测试
  24. echo "0 4 * * 6 /usr/local/bin/test_restore.sh" > /etc/cron.weekly/test_restore
复制代码

安全审计与合规性

配置安全审计工具

配置工具来审计系统安全配置和合规性。
  1. # 安装OpenSCAP
  2. yum install openscap-scanner scap-security-guide -y
  3. # 运行安全扫描
  4. oscap xccdf eval --profile stig-rhel7-server-upstream --results-arf results.xml /usr/share/xml/scap/ssg/content/ssg-centos7-ds.xml
  5. # 生成HTML报告
  6. oscap xccdf generate report results.xml > report.html
  7. # 或者使用Lynis
  8. yum install lynis -y
  9. # 运行Lynis审计
  10. lynis audit system
  11. # 查看报告
  12. less /var/log/lynis-report.dat
复制代码

配置日志审计

配置工具来审计系统日志,检测异常活动。
  1. # 安装GoAccess
  2. yum install goaccess -y
  3. # 分析Apache访问日志
  4. goaccess /var/log/httpd/access_log -c
  5. # 或者分析Nginx访问日志
  6. goaccess /var/log/nginx/access.log -c
  7. # 配置GoAccess生成HTML报告
  8. goaccess /var/log/httpd/access_log -o /var/www/html/report.html --real-time-html --daemon
复制代码

配置漏洞扫描

配置工具来定期扫描系统漏洞。
  1. # 安装OpenVAS(需要先安装Atomic仓库)
  2. wget -q -O - https://www.atomicorp.com/installers/atomic | sh
  3. yum install openvas -y
  4. # 初始化OpenVAS
  5. openvas-setup
  6. # 配置OpenVAS扫描
  7. # 使用Web界面访问 https://server_ip:9392
复制代码

配置合规性检查

配置工具来检查系统是否符合特定合规性标准。
  1. # 使用CIS-CAT进行合规性检查
  2. # 下载CIS-CAT
  3. wget https://downloads.cisecurity.org/tools/CIS-CAT-Pro-Assessed-v4.0.0.zip
  4. unzip CIS-CAT-Pro-Assessed-v4.0.0.zip
  5. # 运行CIS-CAT扫描
  6. cd CIS-CAT-Pro-Assessed-v4.0.0
  7. ./CIS-CAT.sh -r "CIS CentOS Linux 7 Benchmark" -b xccdf_org.cisecurity.benchmarks_benchmark_XCCDF-1-2_2.1.0.0_CIS_CentOS_Linux_7_Benchmark_v2.1.0-xccdf.xml -l results.html
  8. # 查看结果
  9. cat results.html
复制代码

总结

CentOS服务器安全加固是一个持续的过程,需要系统管理员不断关注和更新。本文详细介绍了从零开始构建安全可靠的CentOS服务器环境的步骤,包括系统管理员必备的安全配置与防护措施。

通过实施这些措施,可以显著提高服务器的安全性,减少潜在的攻击面,并保护关键数据和系统资源。然而,安全不仅仅是技术问题,还需要制定适当的安全策略和流程,定期进行安全审计和漏洞扫描,以及保持对最新安全威胁的了解。

记住,安全是一个持续的过程,而不是一次性的任务。定期更新系统、监控日志、检查配置和进行安全审计是确保服务器长期安全运行的关键。

最后,没有绝对安全的系统,但通过实施本文中描述的措施,可以大大提高CentOS服务器的安全性,并建立一个强大的安全基础,以应对不断变化的威胁环境。
回复

使用道具 举报

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

本版积分规则

频道订阅

频道订阅

加入社群

加入社群

联系我们|TG频道|RSS

Powered by Pixtech

© 2025 Pixtech Team.