活动公告

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

深入解析Fedora 32安全设置从基础配置到高级防护全方位指南

SunJu_FaceMall

3万

主题

2860

科技点

3万

积分

白金月票

碾压王

积分
32872

塔罗立华奏

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

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

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

x
引言

Fedora 32作为Red Hat赞助的社区项目,是一个功能强大且安全的Linux发行版,它融合了最新的开源技术和严格的安全策略。作为用户,了解如何正确配置Fedora 32的安全设置至关重要,这不仅能够保护您的系统免受各种威胁,还能确保数据的完整性和隐私性。本文将从基础配置到高级防护,全方位解析Fedora 32的安全设置,帮助您构建一个安全可靠的系统环境。

基础安全配置

系统更新与补丁管理

保持系统更新是维护系统安全的基础步骤。Fedora 32使用DNF(Dandified YUM)作为其包管理器,定期更新系统可以修复已知的安全漏洞。

检查并安装系统更新:
  1. # 检查可用更新
  2. sudo dnf check-update
  3. # 安装所有可用更新
  4. sudo dnf update
  5. # 如果只想安装安全更新
  6. sudo dnf update --security
复制代码

自动更新配置:

为了确保系统始终保持最新状态,可以配置自动更新:
  1. # 安装dnf-automatic包
  2. sudo dnf install dnf-automatic
  3. # 编辑自动更新配置文件
  4. sudo nano /etc/dnf/automatic.conf
复制代码

在配置文件中,设置以下参数:
  1. [commands]
  2. upgrade_type = security
  3. download_updates = yes
  4. apply_updates = yes
  5. [emitters]
  6. system_name = my-fedora-system
  7. emit_via = motd
  8. [email]
  9. email_from = root@my-fedora-system
  10. email_to = admin@example.com
  11. email_host = localhost
  12. [command]
  13. # 可选:定义在更新前后执行的命令
复制代码

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

安全内核更新:

对于关键系统,特别是服务器,可能需要单独管理内核更新:
  1. # 安装内核更新
  2. sudo dnf update kernel
  3. # 查看已安装的内核
  4. rpm -qa kernel
  5. # 设置默认启动的内核
  6. sudo grubby --set-default=/boot/vmlinuz-5.6.6-300.fc32.x86_64
复制代码

用户和权限管理

良好的用户和权限管理是系统安全的关键。Fedora 32提供了多种工具来管理用户账户和权限。

创建和管理用户:
  1. # 创建新用户
  2. sudo useradd -m -s /bin/bash newuser
  3. # 设置用户密码
  4. sudo passwd newuser
  5. # 删除用户及其主目录
  6. sudo userdel -r newuser
复制代码

使用sudo进行权限管理:
  1. # 安装sudo(如果未安装)
  2. sudo dnf install sudo
  3. # 将用户添加到wheel组以获取sudo权限
  4. sudo usermod -aG wheel username
  5. # 编辑sudoers文件以更精细地控制权限
  6. sudo visudo
复制代码

在sudoers文件中,可以添加如下规则:
  1. # 允许特定用户执行特定命令
  2. username ALL=(ALL) /usr/bin/systemctl restart httpd
  3. # 允许wheel组成员执行任何命令
  4. %wheel ALL=(ALL) ALL
  5. # 无需密码执行特定命令
  6. username ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart httpd
复制代码

用户账户安全策略:
  1. # 设置密码策略
  2. sudo nano /etc/login.defs
复制代码

在login.defs文件中,可以设置:
  1. # 密码过期天数
  2. PASS_MAX_DAYS   90
  3. # 密码最小长度
  4. PASS_MIN_LEN    12
  5. # 密码过期前警告天数
  6. PASS_WARN_AGE   7
复制代码

强制密码复杂度:
  1. # 安装libpwquality
  2. sudo dnf install libpwquality
  3. # 编辑密码质量配置
  4. sudo nano /etc/security/pwquality.conf
复制代码

在pwquality.conf中设置:
  1. minlen = 12
  2. minclass = 3
  3. dcredit = -1
  4. ucredit = -1
  5. lcredit = -1
  6. ocredit = -1
  7. maxrepeat = 3
复制代码

账户锁定策略:
  1. # 编辑PAM配置文件
  2. sudo nano /etc/pam.d/system-auth
复制代码

添加以下行以设置账户锁定策略:
  1. auth required pam_tally2.so deny=5 onerr=fail unlock_time=1800
复制代码

查看失败的登录尝试:
  1. sudo pam_tally2 --user=username
复制代码

解锁被锁定的账户:
  1. sudo pam_tally2 --user=username --reset
复制代码

防火墙基础配置

Fedora 32使用firewalld作为其默认的防火墙管理工具,它提供了动态管理的防火墙,支持网络/防火墙区域定义。

检查firewalld状态:
  1. # 检查firewalld服务状态
  2. sudo systemctl status firewalld
  3. # 启动并启用firewalld
  4. sudo systemctl enable --now firewalld
复制代码

基本区域管理:
  1. # 查看默认区域
  2. sudo firewall-cmd --get-default-zone
  3. # 查看所有可用区域
  4. sudo firewall-cmd --get-zones
  5. # 查看当前活动的区域
  6. sudo firewall-cmd --get-active-zones
  7. # 查看特定区域的配置
  8. sudo firewall-cmd --zone=public --list-all
复制代码

服务管理:
  1. # 列出所有预定义的服务
  2. sudo firewall-cmd --get-services
  3. # 允许服务通过防火墙
  4. sudo firewall-cmd --permanent --zone=public --add-service=http
  5. sudo firewall-cmd --permanent --zone=public --add-service=https
  6. # 重新加载防火墙配置
  7. sudo firewall-cmd --reload
复制代码

端口管理:
  1. # 开放特定端口
  2. sudo firewall-cmd --permanent --zone=public --add-port=8080/tcp
  3. # 移除开放的端口
  4. sudo firewall-cmd --permanent --zone=public --remove-port=8080/tcp
  5. # 重新加载防火墙配置
  6. sudo firewall-cmd --reload
复制代码

高级规则配置:
  1. # 添加富规则(rich rules)
  2. sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" service name="ssh" accept'
  3. # 阻止特定IP地址
  4. sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.0.0.5" reject'
  5. # 端口转发
  6. sudo firewall-cmd --permanent --add-forward-port=port=80:proto=tcp:toport=8080
复制代码

创建自定义服务:
  1. # 创建自定义服务定义文件
  2. sudo nano /etc/firewalld/services/custom-service.xml
复制代码

添加以下内容:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <service>
  3.   <short>Custom Service</short>
  4.   <description>This is a custom service for our application.</description>
  5.   <port protocol="tcp" port="1234"/>
  6.   <port protocol="udp" port="1235"/>
  7. </service>
复制代码

重新加载防火墙并添加服务:
  1. sudo firewall-cmd --reload
  2. sudo firewall-cmd --permanent --zone=public --add-service=custom-service
  3. sudo firewall-cmd --reload
复制代码

SELinux基础设置

SELinux(Security-Enhanced Linux)是Fedora 32中的强制访问控制(MAC)系统,它提供了比传统Linux权限更精细的安全控制。

检查SELinux状态:
  1. # 查看当前SELinux状态
  2. getenforce
  3. # 查看SELinux详细状态
  4. sestatus
复制代码

SELinux模式管理:
  1. # 设置SELinux为强制模式(Enforcing)
  2. sudo setenforce 1
  3. # 设置SELinux为宽容模式(Permissive)
  4. sudo setenforce 0
  5. # 永久更改SELinux模式
  6. sudo nano /etc/selinux/config
复制代码

在配置文件中设置:
  1. SELINUX=enforcing
复制代码

SELinux布尔值管理:
  1. # 列出所有布尔值
  2. getsebool -a
  3. # 查看特定布尔值
  4. getsebool httpd_can_network_connect
  5. # 设置布尔值
  6. sudo setsebool -P httpd_can_network_connect on
复制代码

文件和进程的SELinux上下文:
  1. # 查看文件SELinux上下文
  2. ls -Z /var/www/html/
  3. # 查看进程SELinux上下文
  4. ps -eZ
  5. # 更改文件SELinux上下文
  6. sudo chcon -t httpd_sys_content_t /var/www/html/index.html
  7. # 恢复默认SELinux上下文
  8. sudo restorecon -Rv /var/www/html/
复制代码

SELinux故障排除:
  1. # 安装SELinux故障排除工具
  2. sudo dnf install setroubleshoot
  3. # 查看SELinux拒绝日志
  4. sudo sealert -a /var/log/audit/audit.log
  5. # 生成分析报告
  6. sudo sealert -l "*"
复制代码

创建自定义SELinux策略模块:
  1. # 安装必要的工具
  2. sudo dnf install policycoreutils-python-utils
  3. # 检查SELinux拒绝并生成类型强制规则
  4. sudo grep nginx /var/log/audit/audit.log | audit2allow -M nginx_policy
  5. # 安装生成的策略模块
  6. sudo semodule -i nginx_policy.pp
复制代码

中级安全设置

服务安全配置

Fedora 32上运行的服务需要适当配置以确保安全性。以下是一些关键服务的安全配置方法。

SSH服务安全配置:
  1. # 安装SSH服务器(如果未安装)
  2. sudo dnf install openssh-server
  3. # 启动并启用SSH服务
  4. sudo systemctl enable --now sshd
  5. # 编辑SSH配置文件
  6. sudo nano /etc/ssh/sshd_config
复制代码

在sshd_config中,建议进行以下安全设置:
  1. # 禁用root登录
  2. PermitRootLogin no
  3. # 只允许特定用户登录
  4. AllowUsers username1 username2
  5. # 更改默认端口
  6. Port 2222
  7. # 禁用密码认证,使用密钥认证
  8. PasswordAuthentication no
  9. PubkeyAuthentication yes
  10. # 设置登录尝试次数
  11. MaxAuthTries 3
  12. # 设置空闲超时时间
  13. ClientAliveInterval 300
  14. ClientAliveCountMax 0
  15. # 禁用X11转发
  16. X11Forwarding no
复制代码

重新启动SSH服务以应用更改:
  1. sudo systemctl restart sshd
复制代码

SSH密钥管理:
  1. # 生成SSH密钥对
  2. ssh-keygen -t rsa -b 4096
  3. # 将公钥复制到远程服务器
  4. ssh-copy-id -i ~/.ssh/id_rsa.pub username@remote_host
  5. # 设置SSH代理
  6. eval "$(ssh-agent -s)"
  7. ssh-add ~/.ssh/id_rsa
复制代码

Apache/Nginx Web服务器安全配置:

对于Apache:
  1. # 安装Apache
  2. sudo dnf install httpd
  3. # 启动并启用Apache
  4. sudo systemctl enable --now httpd
  5. # 编辑Apache安全配置
  6. sudo nano /etc/httpd/conf.d/security.conf
复制代码

在security.conf中添加:
  1. # 隐藏Apache版本信息
  2. ServerTokens Prod
  3. ServerSignature Off
  4. # 禁用目录浏览
  5. Options -Indexes
  6. # 设置严格的文件权限
  7. <Directory "/var/www/html">
  8.     Options FollowSymLinks
  9.     AllowOverride None
  10.     Require all granted
  11. </Directory>
  12. # 限制HTTP方法
  13. <LimitExcept GET POST HEAD>
  14.     Require all denied
  15. </LimitExcept>
  16. # 启用HTTPS
  17. SSLEngine on
  18. SSLCertificateFile /etc/pki/tls/certs/localhost.crt
  19. SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
复制代码

对于Nginx:
  1. # 安装Nginx
  2. sudo dnf install nginx
  3. # 启动并启用Nginx
  4. sudo systemctl enable --now nginx
  5. # 编辑Nginx安全配置
  6. sudo nano /etc/nginx/conf.d/security.conf
复制代码

在security.conf中添加:
  1. # 隐藏Nginx版本信息
  2. server_tokens off;
  3. # 禁用目录浏览
  4. autoindex off;
  5. # 设置严格的文件权限
  6. location / {
  7.     try_files $uri $uri/ =404;
  8. }
  9. # 限制HTTP方法
  10. if ($request_method !~ ^(GET|HEAD|POST)$ ) {
  11.     return 405;
  12. }
  13. # 添加安全头
  14. add_header X-Frame-Options "SAMEORIGIN";
  15. add_header X-Content-Type-Options "nosniff";
  16. add_header X-XSS-Protection "1; mode=block";
  17. add_header Referrer-Policy "strict-origin-when-cross-origin";
  18. # 配置SSL
  19. ssl_certificate /etc/pki/tls/certs/localhost.crt;
  20. ssl_certificate_key /etc/pki/tls/private/localhost.key;
  21. ssl_protocols TLSv1.2 TLSv1.3;
  22. ssl_prefer_server_ciphers on;
复制代码

数据库服务安全配置:

对于MariaDB/MySQL:
  1. # 安装MariaDB
  2. sudo dnf install mariadb-server
  3. # 启动并启用MariaDB
  4. sudo systemctl enable --now mariadb
  5. # 运行安全安装脚本
  6. sudo mysql_secure_installation
复制代码

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

在配置文件中添加:
  1. [mysqld]
  2. # 禁用远程root登录
  3. skip-networking
  4. # 或者绑定到特定IP
  5. # bind-address = 127.0.0.1
  6. # 禁用符号链接以防止安全风险
  7. symbolic-links=0
  8. # 禁用本地文件加载
  9. local-infile=0
  10. # 设置适当的日志级别
  11. log_warnings=2
复制代码

对于PostgreSQL:
  1. # 安装PostgreSQL
  2. sudo dnf install postgresql-server
  3. # 初始化数据库
  4. sudo postgresql-setup --initdb
  5. # 启动并启用PostgreSQL
  6. sudo systemctl enable --now postgresql
  7. # 设置postgres用户密码
  8. sudo -u postgres psql -c "ALTER USER postgres WITH PASSWORD 'secure_password';"
复制代码

编辑PostgreSQL配置文件:
  1. sudo nano /var/lib/pgsql/data/pg_hba.conf
复制代码

在pg_hba.conf中设置:
  1. # 只允许本地连接使用MD5加密
  2. host    all             all             127.0.0.1/32            md5
  3. host    all             all             ::1/128                 md5
  4. # 如果需要远程连接,限制特定IP
  5. host    all             all             192.168.1.0/24         md5
复制代码

编辑postgresql.conf:
  1. sudo nano /var/lib/pgsql/data/postgresql.conf
复制代码

在postgresql.conf中设置:
  1. # 监听特定地址
  2. listen_addresses = 'localhost'
  3. # 启用连接日志
  4. log_connections = on
  5. log_disconnections = on
  6. log_duration = on
  7. # 设置SSL
  8. ssl = on
  9. ssl_cert_file = 'server.crt'
  10. ssl_key_file = 'server.key'
复制代码

网络安全强化

网络安全是保护Fedora 32系统的重要组成部分,包括网络配置、协议安全和网络监控等方面。

网络参数调整:
  1. # 编辑sysctl配置文件
  2. sudo nano /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. # 禁用IP源路由
  10. net.ipv4.conf.all.accept_source_route = 0
  11. net.ipv4.conf.default.accept_source_route = 0
  12. # 忽略ICMP广播请求
  13. net.ipv4.icmp_echo_ignore_broadcasts = 1
  14. # 启用错误消息保护
  15. net.ipv4.icmp_ignore_bogus_error_responses = 1
  16. # 启用TCP SYN Cookie保护
  17. net.ipv4.tcp_syncookies = 1
  18. # 禁用IPv6(如果不需要)
  19. net.ipv6.conf.all.disable_ipv6 = 1
  20. net.ipv6.conf.default.disable_ipv6 = 1
  21. # 增加文件描述符限制
  22. fs.file-max = 65536
  23. # 优化网络队列
  24. net.core.netdev_max_backlog = 10000
  25. net.ipv4.tcp_max_syn_backlog = 10000
复制代码

应用更改:
  1. sudo sysctl -p /etc/sysctl.d/99-security.conf
复制代码

TCP/IP堆栈加固:
  1. # 编辑TCP/IP配置
  2. sudo nano /etc/sysctl.d/99-tcp.conf
复制代码

添加以下参数:
  1. # TCP超时设置
  2. net.ipv4.tcp_fin_timeout = 30
  3. net.ipv4.tcp_keepalive_time = 1200
  4. net.ipv4.tcp_keepalive_intvl = 15
  5. net.ipv4.tcp_keepalive_probes = 5
  6. # TCP窗口调整
  7. net.ipv4.tcp_window_scaling = 1
  8. net.ipv4.tcp_rmem = 4096 87380 16777216
  9. net.ipv4.tcp_wmem = 4096 65536 16777216
  10. net.core.rmem_max = 16777216
  11. net.core.wmem_max = 16777216
  12. net.core.netdev_max_backlog = 30000
  13. # TCP BBR拥塞控制算法(需要内核4.9+)
  14. net.core.default_qdisc = fq
  15. net.ipv4.tcp_congestion_control = bbr
复制代码

应用更改:
  1. sudo sysctl -p /etc/sysctl.d/99-tcp.conf
复制代码

网络服务限制:
  1. # 安装tcp_wrappers
  2. sudo dnf install tcp_wrappers
  3. # 编辑hosts.allow文件
  4. sudo nano /etc/hosts.allow
复制代码

添加允许访问的服务和主机:
  1. # 允许特定IP访问SSH
  2. sshd: 192.168.1.0/24, 10.0.0.5
  3. # 允许特定IP访问FTP
  4. vsftpd: 192.168.1.0/24
复制代码

编辑hosts.deny文件:
  1. sudo nano /etc/hosts.deny
复制代码

添加拒绝规则:
  1. # 拒绝所有其他连接
  2. ALL: ALL
复制代码

网络连接监控:
  1. # 安装网络监控工具
  2. sudo dnf install net-tools nmap-ncat
  3. # 查看所有网络连接
  4. sudo netstat -tulnp
  5. # 查看监听的端口
  6. sudo ss -tulnp
  7. # 监控网络连接
  8. sudo watch -n 1 "netstat -an | grep ':80 '"
复制代码

使用fail2ban防止暴力破解:
  1. # 安装fail2ban
  2. sudo dnf install fail2ban
  3. # 启动并启用fail2ban
  4. sudo systemctl enable --now fail2ban
  5. # 创建本地配置文件
  6. sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
  7. # 编辑jail.local配置
  8. sudo nano /etc/fail2ban/jail.local
复制代码

在jail.local中设置:
  1. [DEFAULT]
  2. # 封禁时间(秒)
  3. bantime = 3600
  4. # 找到失败次数后封禁
  5. findtime = 600
  6. # 最大尝试次数
  7. maxretry = 3
  8. [sshd]
  9. enabled = true
  10. port = 22,2222
  11. filter = sshd
  12. logpath = /var/log/secure
  13. maxretry = 3
  14. bantime = 3600
  15. [apache-auth]
  16. enabled = true
  17. port = http,https
  18. filter = apache-auth
  19. logpath = /var/log/httpd/error_log
  20. maxretry = 3
  21. bantime = 3600
复制代码

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

查看fail2ban状态:
  1. sudo fail2ban-client status
  2. sudo fail2ban-client status sshd
复制代码

文件系统安全

文件系统安全是保护系统数据的关键部分,包括权限设置、加密和监控等方面。

文件和目录权限:
  1. # 查看文件权限
  2. ls -l /path/to/file
  3. # 设置文件权限
  4. chmod 644 /path/to/file
  5. # 设置目录权限
  6. chmod 755 /path/to/directory
  7. # 递归设置目录权限
  8. chmod -R 755 /path/to/directory
  9. # 设置所有者和组
  10. chown user:group /path/to/file
  11. # 递归设置所有者和组
  12. chown -R user:group /path/to/directory
复制代码

特殊权限设置:
  1. # 设置SUID权限(允许用户以文件所有者权限执行)
  2. chmod u+s /path/to/executable
  3. # 设置SGID权限(在目录中创建的文件继承目录的组)
  4. chmod g+s /path/to/directory
  5. # 设置粘滞位(只有文件所有者才能删除或重命名文件)
  6. chmod +t /path/to/directory
复制代码

查找并修复不安全的文件权限:
  1. # 查找全局可写的文件
  2. sudo find / -type f -perm -o+w -exec ls -l {} \;
  3. # 查找没有所有者的文件
  4. sudo find / -nouser -o -nogroup
  5. # 查找SUID/SGID文件
  6. sudo find / -type f \( -perm -4000 -o -perm -2000 \) -exec ls -l {} \;
复制代码

文件系统加密:

使用LUKS加密磁盘分区:
  1. # 安装cryptsetup
  2. sudo dnf install cryptsetup
  3. # 准备分区(假设为/dev/sdb1)
  4. sudo fdisk /dev/sdb
  5. # 加密分区
  6. sudo cryptsetup luksFormat /dev/sdb1
  7. # 打开加密分区
  8. sudo cryptsetup open /dev/sdb1 encrypted_disk
  9. # 格式化加密分区
  10. sudo mkfs.ext4 /dev/mapper/encrypted_disk
  11. # 挂载加密分区
  12. sudo mkdir /mnt/encrypted
  13. sudo mount /dev/mapper/encrypted_disk /mnt/encrypted
  14. # 关闭加密分区
  15. sudo umount /mnt/encrypted
  16. sudo cryptsetup close encrypted_disk
复制代码

配置自动挂载加密分区:
  1. # 编辑/etc/crypttab
  2. sudo nano /etc/crypttab
复制代码

添加以下行:
  1. encrypted_disk /dev/sdb1 none luks
复制代码

编辑/etc/fstab:
  1. sudo nano /etc/fstab
复制代码

添加以下行:
  1. /dev/mapper/encrypted_disk /mnt/encrypted ext4 defaults 0 0
复制代码

文件完整性检查:

使用AIDE(Advanced Intrusion Detection Environment)监控文件完整性:
  1. # 安装AIDE
  2. sudo dnf install aide
  3. # 初始化AIDE数据库
  4. sudo aide --init
  5. # 重命名数据库
  6. sudo mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz
  7. # 执行文件系统检查
  8. sudo aide --check
  9. # 更新数据库
  10. sudo aide --update
复制代码

配置AIDE:
  1. sudo nano /etc/aide.conf
复制代码

在配置文件中,可以设置要监控的文件和目录:
  1. # 定义检查规则
  2. ALL = p+i+n+u+g+s+m+c+md5+sha1
  3. # 监控关键目录
  4. /bin ALL
  5. /sbin ALL
  6. /usr/bin ALL
  7. /usr/sbin ALL
  8. /etc ALL
  9. !/etc/aide.conf
复制代码

设置定期检查:
  1. # 创建AIDE检查脚本
  2. sudo nano /usr/local/bin/aide-check.sh
复制代码

添加以下内容:
  1. #!/bin/bash
  2. /usr/sbin/aide --check | mail -s "AIDE Integrity Check Report" admin@example.com
复制代码

使脚本可执行并添加到cron:
  1. sudo chmod +x /usr/local/bin/aide-check.sh
  2. sudo crontab -e
复制代码

添加以下行以每天运行检查:
  1. 0 3 * * * /usr/local/bin/aide-check.sh
复制代码

安全审计和日志管理

有效的安全审计和日志管理对于检测和响应安全事件至关重要。

系统日志配置:
  1. # 安装rsyslog(如果未安装)
  2. sudo dnf install rsyslog
  3. # 启动并启用rsyslog
  4. sudo systemctl enable --now rsyslog
  5. # 编辑rsyslog配置
  6. sudo nano /etc/rsyslog.conf
复制代码

在rsyslog.conf中,可以设置日志记录规则:
  1. # 将所有日志发送到远程服务器
  2. *.* @remote-log-server:514
  3. # 设置特定日志级别
  4. *.info;mail.none;authpriv.none;cron.none /var/log/messages
  5. authpriv.* /var/log/secure
  6. mail.* -/var/log/maillog
  7. cron.* /var/log/cron
  8. *.emerg :omusrmsg:*
  9. uucp,news.crit /var/log/spooler
  10. local7.* /var/log/boot.log
复制代码

创建自定义日志规则:
  1. sudo nano /etc/rsyslog.d/security.conf
复制代码

添加以下内容:
  1. # 记录所有sudo命令
  2. authpriv.* /var/log/sudo.log
  3. # 记录所有登录尝试
  4. auth.* /var/log/auth.log
  5. # 记录防火墙活动
  6. kern.* /var/log/firewall.log
复制代码

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

使用auditd进行系统审计:
  1. # 安装auditd
  2. sudo dnf install audit
  3. # 启动并启用auditd
  4. sudo systemctl enable --now auditd
  5. # 编辑audit规则
  6. sudo nano /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/sudoers -p wa -k identity
  6. # 监控系统调用
  7. -a always,exit -F arch=b64 -S chmod -S fchmod -S fchmodat -F auid>=1000 -F auid!=4294967295 -k perm_mod
  8. -a always,exit -F arch=b64 -S chown -S fchown -S fchownat -S lchown -F auid>=1000 -F auid!=4294967295 -k perm_mod
  9. # 监控登录活动
  10. -w /var/log/faillog -p wa -k logins
  11. -w /var/log/lastlog -p wa -k logins
  12. -w /var/log/tallylog -p wa -k logins
  13. # 监控网络配置
  14. -w /etc/hosts -p wa -k network
  15. -w /etc/sysconfig/network -p wa -k network
复制代码

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

查看审计日志:
  1. # 查看所有审计日志
  2. sudo ausearch -i -m ALL
  3. # 查看特定类型的审计日志
  4. sudo ausearch -i -m LOGIN
  5. # 查看特定用户的审计日志
  6. sudo ausearch -i -ua username
  7. # 生成审计报告
  8. sudo aureport -x
复制代码

日志轮转配置:
  1. # 编辑logrotate配置
  2. sudo nano /etc/logrotate.conf
复制代码

在logrotate.conf中设置全局轮转策略:
  1. # 每周轮转一次
  2. weekly
  3. # 保留4周的日志
  4. rotate 4
  5. # 创建新的日志文件
  6. create
  7. # 压缩旧日志
  8. compress
  9. # 延迟压缩
  10. delaycompress
  11. # 忽略空日志文件
  12. missingok
  13. # 不显示错误
  14. notifempty
复制代码

为特定服务创建自定义轮转规则:
  1. sudo nano /etc/logrotate.d/custom-service
复制代码

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

测试logrotate配置:
  1. sudo logrotate -d /etc/logrotate.conf
  2. sudo logrotate -f /etc/logrotate.conf
复制代码

高级安全防护

入侵检测系统配置

入侵检测系统(IDS)是网络安全的重要组成部分,可以帮助检测和防止潜在的入侵活动。

使用OSSEC进行主机入侵检测:
  1. # 安装OSSEC
  2. sudo dnf install ossec-hids
  3. # 初始化OSSEC配置
  4. sudo /var/ossec/bin/ossec-control enable
  5. sudo /var/ossec/bin/ossec-control start
  6. # 编辑OSSEC配置
  7. sudo nano /var/ossec/etc/ossec.conf
复制代码

在ossec.conf中配置基本设置:
  1. <ossec_config>
  2.   <global>
  3.     <email_notification>yes</email_notification>
  4.     <email_to>admin@example.com</email_to>
  5.     <smtp_server>smtp.example.com</smtp_server>
  6.     <email_from>ossec@example.com</email_from>
  7.   </global>
  8.   <rules>
  9.     <include>rules_config.xml</include>
  10.     <include>pam_rules.xml</include>
  11.     <include>sshd_rules.xml</include>
  12.     <include>web_rules.xml</include>
  13.   </rules>
  14.   <syscheck>
  15.     <frequency>7200</frequency>
  16.     <directories check_all="yes">/etc,/usr/bin,/usr/sbin</directories>
  17.     <directories check_all="yes">/bin,/sbin</directories>
  18.     <ignore>/etc/mtab</ignore>
  19.     <ignore>/etc/hosts.deny</ignore>
  20.   </syscheck>
  21.   <rootcheck>
  22.     <rootkit_files>/var/ossec/etc/shared/rootkit_files.txt</rootkit_files>
  23.     <rootkit_trojans>/var/ossec/etc/shared/rootkit_trojans.txt</rootkit_trojans>
  24.   </rootcheck>
  25.   <localfile>
  26.     <log_format>syslog</log_format>
  27.     <location>/var/log/messages</location>
  28.   </localfile>
  29.   <localfile>
  30.     <log_format>syslog</log_format>
  31.     <location>/var/log/secure</location>
  32.   </localfile>
  33.   <active-response>
  34.     <command>host-deny</command>
  35.     <location>local</location>
  36.     <rules_id>5716</rules_id>
  37.   </active-response>
  38. </ossec_config>
复制代码

重启OSSEC服务:
  1. sudo /var/ossec/bin/ossec-control restart
复制代码

使用Suricata进行网络入侵检测:
  1. # 安装Suricata
  2. sudo dnf install suricata
  3. # 启动并启用Suricata
  4. sudo systemctl enable --now suricata
  5. # 下载Emerging Threats规则集
  6. sudo suricata-update
  7. # 编辑Suricata配置
  8. sudo nano /etc/suricata/suricata.yaml
复制代码

在suricata.yaml中配置网络接口和规则:
  1. af-packet:
  2.   - interface: eth0
  3.     cluster-id: 99
  4.     cluster-type: cluster_flow
  5.     defrag: yes
  6.     mmap: yes
  7. vars:
  8.   address-groups:
  9.     HOME_NET: "[192.168.1.0/24]"
  10.     EXTERNAL_NET: "!$HOME_NET"
  11.   port-groups:
  12.     HTTP_PORTS: "80"
  13.     SHELLCODE_PORTS: "!80"
  14.     SSH_PORTS: 22
  15. default-rule-path: /etc/suricata/rules
  16. rule-files:
  17.   - suricata.rules
复制代码

更新Suricata规则:
  1. sudo suricata-update
  2. sudo systemctl restart suricata
复制代码

查看Suricata日志:
  1. sudo tail -f /var/log/suricata/fast.log
复制代码

安全加固工具使用

Fedora 32提供了多种工具来帮助加固系统安全。

使用Lynis进行系统安全审计:
  1. # 安装Lynis
  2. sudo dnf install lynis
  3. # 运行Lynis审计
  4. sudo lynis audit system
  5. # 查看审计报告
  6. sudo cat /var/log/lynis-report.dat
  7. # 查看详细日志
  8. sudo cat /var/log/lynis.log
复制代码

使用OpenSCAP进行安全合规性检查:
  1. # 安装OpenSCAP
  2. sudo dnf install openscap-scanner scap-security-guide
  3. # 列出可用的安全配置文件
  4. sudo oscap info /usr/share/xml/scap/ssg/content/ssg-fedora-ds.xml
  5. # 运行系统扫描
  6. sudo oscap xccdf eval --profile xccdf_org.ssgproject.content_profile_standard --results-arf arf.xml /usr/share/xml/scap/ssg/content/ssg-fedora-ds.xml
  7. # 生成HTML报告
  8. sudo oscap xccdf generate report arf.xml > report.html
复制代码

使用Tripwire进行文件完整性检查:
  1. # 安装Tripwire
  2. sudo dnf install tripwire
  3. # 初始化Tripwire数据库
  4. sudo tripwire --init
  5. # 执行完整性检查
  6. sudo tripwire --check
  7. # 更新数据库
  8. sudo tripwire --update
复制代码

配置Tripwire策略:
  1. sudo nano /etc/tripwire/twpol.txt
复制代码

在策略文件中定义要监控的文件和目录:
  1. (
  2.   rulename = "System Boot Changes",
  3.   severity = $(SIG_HI)
  4. )
  5. {
  6.   /boot               -> $(SEC_CRIT) ;
  7.   /boot/System.map    -> $(SEC_CRIT) ;
  8.   /boot/grub/grub.conf -> $(SEC_CRIT) ;
  9. }
  10. (
  11.   rulename = "Root Configuration Files",
  12.   severity = $(SIG_HI)
  13. )
  14. {
  15.   /root               -> $(SEC_CRIT) ;
  16.   /root/.bashrc       -> $(SEC_CRIT) ;
  17.   /root/.bash_profile -> $(SEC_CRIT) ;
  18.   /root/.ssh          -> $(SEC_CRIT) ;
  19. }
复制代码

更新策略并重新初始化数据库:
  1. sudo twadmin -m P /etc/tripwire/twpol.txt
  2. sudo tripwire --init
复制代码

加密和隐私保护

加密和隐私保护是确保数据安全的关键措施。

全盘加密:

在安装Fedora 32时选择全盘加密选项,或使用LUKS加密现有分区:
  1. # 安装cryptsetup
  2. sudo dnf install cryptsetup
  3. # 备份数据(重要!)
  4. # 加密分区(以/dev/sda3为例)
  5. sudo cryptsetup luksFormat /dev/sda3
  6. # 打开加密分区
  7. sudo cryptsetup open /dev/sda3 luks-12345678-1234-1234-1234-123456789012
  8. # 格式化加密分区
  9. sudo mkfs.ext4 /dev/mapper/luks-12345678-1234-1234-1234-123456789012
  10. # 挂载加密分区
  11. sudo mount /dev/mapper/luks-12345678-1234-1234-1234-123456789012 /mnt
  12. # 更新/etc/crypttab和/etc/fstab以实现自动挂载
  13. echo "luks-12345678-1234-1234-1234-123456789012 UUID=$(sudo blkid -s UUID -o value /dev/sda3) none luks" | sudo tee -a /etc/crypttab
  14. echo "/dev/mapper/luks-12345678-1234-1234-1234-123456789012 /mnt ext4 defaults 0 0" | sudo tee -a /etc/fstab
复制代码

使用GnuPG加密文件:
  1. # 安装GnuPG
  2. sudo dnf install gnupg2
  3. # 生成密钥对
  4. gpg2 --full-generate-key
  5. # 列出密钥
  6. gpg2 --list-keys
  7. # 加密文件
  8. gpg2 -e -r recipient@example.com sensitive_file.txt
  9. # 解密文件
  10. gpg2 -d sensitive_file.txt.gpg > sensitive_file.txt
  11. # 签名文件
  12. gpg2 -s sensitive_file.txt
  13. # 验证签名
  14. gpg2 --verify sensitive_file.txt.sig
复制代码

使用VeraCrypt创建加密容器:
  1. # 下载并安装VeraCrypt
  2. wget https://launchpad.net/veracrypt/trunk/1.24-update7/+download/veracrypt-1.24-Update7-Fedora-29-x86_64.rpm
  3. sudo dnf install ./veracrypt-1.24-Update7-Fedora-29-x86_64.rpm
  4. # 创建加密容器
  5. veracrypt -t -c
  6. # 挂载加密容器
  7. veracrypt /path/to/container /mnt/point
  8. # 卸载加密容器
  9. veracrypt -d /mnt/point
复制代码

使用Tor网络保护隐私:
  1. # 安装Tor
  2. sudo dnf install tor
  3. # 配置Tor
  4. sudo nano /etc/tor/torrc
复制代码

在torrc中添加以下配置:
  1. SocksPort 9050
  2. ControlPort 9051
  3. CookieAuthentication 1
复制代码

启动并启用Tor:
  1. sudo systemctl enable --now tor
复制代码

配置应用程序使用Tor代理:
  1. # 配置curl使用Tor
  2. curl --socks5-hostname 127.0.0.1:9050 https://check.torproject.org/
  3. # 配置Firefox使用Tor
  4. # 在Firefox中设置网络代理为SOCKS5,地址为127.0.0.1,端口为9050
复制代码

使用Firejail沙盒化应用程序:
  1. # 安装Firejail
  2. sudo dnf install firejail
  3. # 沙盒化运行应用程序
  4. firejail firefox
  5. # 创建自定义沙盒配置
  6. nano ~/.config/firejail/firefox.profile
复制代码

在配置文件中添加:
  1. private-etc passwd,group,hosts,resolv.conf,firefox,pulse
  2. private-tmp
  3. seccomp
  4. nodvd
  5. nosound
  6. notv
  7. nou2f
  8. novideo
  9. nowhitelist ${HOME}/.ssh
复制代码

使用自定义配置运行Firefox:
  1. firejail --profile=~/.config/firejail/firefox.profile firefox
复制代码

安全合规性检查

确保系统符合安全标准和最佳实践是维护系统安全的重要部分。

使用OpenSCAP进行安全合规性检查:
  1. # 安装OpenSCAP和SCAP安全指南
  2. sudo dnf install openscap-scanner scap-security-guide
  3. # 列出可用的安全配置文件
  4. sudo oscap info /usr/share/xml/scap/ssg/content/ssg-fedora-ds.xml
  5. # 运行标准安全配置文件扫描
  6. sudo oscap xccdf eval --profile xccdf_org.ssgproject.content_profile_standard --results-arf arf.xml /usr/share/xml/scap/ssg/content/ssg-fedora-ds.xml
  7. # 生成HTML报告
  8. sudo oscap xccdf generate report arf.xml > report.html
  9. # 查看报告
  10. firefox report.html
复制代码

使用Lynis进行安全审计:
  1. # 安装Lynis
  2. sudo dnf install lynis
  3. # 运行系统审计
  4. sudo lynis audit system
  5. # 查看审计报告
  6. sudo cat /var/log/lynis-report.dat
  7. # 查看详细日志
  8. sudo cat /var/log/lynis.log
复制代码

使用Auditd进行持续监控:
  1. # 安装auditd
  2. sudo dnf install audit
  3. # 启动并启用auditd
  4. sudo systemctl enable --now auditd
  5. # 配置审计规则
  6. sudo nano /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/sudoers -p wa -k identity
  6. # 监控系统调用
  7. -a always,exit -F arch=b64 -S chmod -S fchmod -S fchmodat -F auid>=1000 -F auid!=4294967295 -k perm_mod
  8. -a always,exit -F arch=b64 -S chown -S fchown -S fchownat -S lchown -F auid>=1000 -F auid!=4294967295 -k perm_mod
  9. # 监控登录活动
  10. -w /var/log/faillog -p wa -k logins
  11. -w /var/log/lastlog -p wa -k logins
  12. -w /var/log/tallylog -p wa -k logins
复制代码

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

查看审计日志:
  1. # 查看所有审计日志
  2. sudo ausearch -i -m ALL
  3. # 查看特定类型的审计日志
  4. sudo ausearch -i -m LOGIN
  5. # 查看特定用户的审计日志
  6. sudo ausearch -i -ua username
  7. # 生成审计报告
  8. sudo aureport -x
复制代码

安全最佳实践和建议

定期安全评估

定期安全评估是维护系统安全的关键环节。建议至少每季度进行一次全面的安全评估,包括漏洞扫描、配置审计和渗透测试。

漏洞扫描:
  1. # 安装OpenVAS
  2. sudo dnf install openvas
  3. # 初始化OpenVAS
  4. sudo gvm-setup
  5. # 启动OpenVAS服务
  6. sudo systemctl start gvmd
  7. sudo systemctl start gsad
  8. sudo systemctl start openvas
  9. # 创建扫描任务
  10. # 通过Web界面 https://localhost:9392 创建和管理扫描任务
复制代码

配置审计:
  1. # 使用Lynis进行配置审计
  2. sudo lynis audit system
  3. # 使用OpenSCAP进行合规性检查
  4. sudo oscap xccdf eval --profile xccdf_org.ssgproject.content_profile_standard --results-arf arf.xml /usr/share/xml/scap/ssg/content/ssg-fedora-ds.xml
复制代码

安全意识培训

安全意识培训是保护系统安全的重要组成部分。建议定期为系统管理员和用户提供安全意识培训,包括密码管理、社会工程学防范、安全浏览习惯等。

密码管理最佳实践:

1. 使用强密码:至少12个字符,包含大小写字母、数字和特殊字符
2. 定期更改密码:每90天更换一次密码
3. 不要重复使用密码:每个账户使用唯一密码
4. 使用密码管理器:如KeePassXC或Bitwarden

社会工程学防范:

1. 不要点击可疑链接或附件
2. 验证发件人身份
3. 不要在电话或电子邮件中提供敏感信息
4. 报告可疑活动

备份和恢复策略

定期备份是保护数据安全的重要措施。建议实施3-2-1备份策略:3份数据副本,2种不同存储介质,1份异地存储。

备份工具:
  1. # 安装BorgBackup
  2. sudo dnf install borgbackup
  3. # 初始化Borg仓库
  4. borg init --encryption=repokey /path/to/backup/repo
  5. # 创建备份
  6. borg create --stats --progress /path/to/backup/repo::archive-$(date +%Y-%m-%d) /path/to/data
  7. # 列出备份
  8. borg list /path/to/backup/repo
  9. # 恢复备份
  10. borg extract /path/to/backup/repo::archive-2020-06-01
复制代码

自动化备份脚本:
  1. # 创建备份脚本
  2. nano /usr/local/bin/backup.sh
复制代码

添加以下内容:
  1. #!/bin/bash
  2. # 设置变量
  3. BACKUP_REPO="/path/to/backup/repo"
  4. DATA_DIR="/path/to/data"
  5. LOG_FILE="/var/log/backup.log"
  6. # 记录备份开始时间
  7. echo "Backup started at $(date)" >> $LOG_FILE
  8. # 创建备份
  9. borg create --stats --progress $BACKUP_REPO::archive-$(date +%Y-%m-%d) $DATA_DIR >> $LOG_FILE 2>&1
  10. # 清理旧备份(保留最近7天的备份)
  11. borg prune --keep-daily=7 $BACKUP_REPO >> $LOG_FILE 2>&1
  12. # 记录备份结束时间
  13. echo "Backup completed at $(date)" >> $LOG_FILE
复制代码

使脚本可执行并添加到cron:
  1. sudo chmod +x /usr/local/bin/backup.sh
  2. sudo crontab -e
复制代码

添加以下行以每天运行备份:
  1. 0 2 * * * /usr/local/bin/backup.sh
复制代码

总结

Fedora 32作为一个功能强大且安全的Linux发行版,提供了丰富的安全特性和工具,帮助用户构建安全可靠的系统环境。本文从基础配置到高级防护,全方位解析了Fedora 32的安全设置,包括系统更新与补丁管理、用户和权限管理、防火墙配置、SELinux设置、服务安全配置、网络安全强化、文件系统安全、安全审计和日志管理、入侵检测系统配置、安全加固工具使用、加密和隐私保护以及安全合规性检查等方面。

通过正确配置这些安全设置,用户可以显著提高Fedora 32系统的安全性,有效防范各种安全威胁。然而,安全是一个持续的过程,需要定期评估、更新和改进。建议用户结合本文提供的最佳实践和建议,根据自身需求和环境特点,制定适合的安全策略,并定期进行安全评估和更新,以确保系统始终保持最佳的安全状态。

最后,记住技术只是安全的一部分,安全意识和培训同样重要。通过提高安全意识,遵循最佳实践,并制定完善的事件响应计划,用户可以构建一个全面的安全防护体系,有效保护Fedora 32系统和数据的安全。
「七転び八起き(ななころびやおき)」
回复

使用道具 举报

0

主题

1304

科技点

654

积分

候风辨气

积分
654
候风辨气 发表于 2025-9-17 08:49:48 | 显示全部楼层
感謝分享
温馨提示:看帖回帖是一种美德,您的每一次发帖、回帖都是对论坛最大的支持,谢谢! [这是默认签名,点我更换签名]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则