|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
引言
Fedora 32作为Red Hat赞助的社区项目,是一个功能强大且安全的Linux发行版,它融合了最新的开源技术和严格的安全策略。作为用户,了解如何正确配置Fedora 32的安全设置至关重要,这不仅能够保护您的系统免受各种威胁,还能确保数据的完整性和隐私性。本文将从基础配置到高级防护,全方位解析Fedora 32的安全设置,帮助您构建一个安全可靠的系统环境。
基础安全配置
系统更新与补丁管理
保持系统更新是维护系统安全的基础步骤。Fedora 32使用DNF(Dandified YUM)作为其包管理器,定期更新系统可以修复已知的安全漏洞。
检查并安装系统更新:
- # 检查可用更新
- sudo dnf check-update
- # 安装所有可用更新
- sudo dnf update
- # 如果只想安装安全更新
- sudo dnf update --security
复制代码
自动更新配置:
为了确保系统始终保持最新状态,可以配置自动更新:
- # 安装dnf-automatic包
- sudo dnf install dnf-automatic
- # 编辑自动更新配置文件
- sudo nano /etc/dnf/automatic.conf
复制代码
在配置文件中,设置以下参数:
- [commands]
- upgrade_type = security
- download_updates = yes
- apply_updates = yes
- [emitters]
- system_name = my-fedora-system
- emit_via = motd
- [email]
- email_from = root@my-fedora-system
- email_to = admin@example.com
- email_host = localhost
- [command]
- # 可选:定义在更新前后执行的命令
复制代码
启用并启动dnf-automatic服务:
- sudo systemctl enable --now dnf-automatic.timer
复制代码
安全内核更新:
对于关键系统,特别是服务器,可能需要单独管理内核更新:
- # 安装内核更新
- sudo dnf update kernel
- # 查看已安装的内核
- rpm -qa kernel
- # 设置默认启动的内核
- sudo grubby --set-default=/boot/vmlinuz-5.6.6-300.fc32.x86_64
复制代码
用户和权限管理
良好的用户和权限管理是系统安全的关键。Fedora 32提供了多种工具来管理用户账户和权限。
创建和管理用户:
- # 创建新用户
- sudo useradd -m -s /bin/bash newuser
- # 设置用户密码
- sudo passwd newuser
- # 删除用户及其主目录
- sudo userdel -r newuser
复制代码
使用sudo进行权限管理:
- # 安装sudo(如果未安装)
- sudo dnf install sudo
- # 将用户添加到wheel组以获取sudo权限
- sudo usermod -aG wheel username
- # 编辑sudoers文件以更精细地控制权限
- sudo visudo
复制代码
在sudoers文件中,可以添加如下规则:
- # 允许特定用户执行特定命令
- username ALL=(ALL) /usr/bin/systemctl restart httpd
- # 允许wheel组成员执行任何命令
- %wheel ALL=(ALL) ALL
- # 无需密码执行特定命令
- username ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart httpd
复制代码
用户账户安全策略:
- # 设置密码策略
- sudo nano /etc/login.defs
复制代码
在login.defs文件中,可以设置:
- # 密码过期天数
- PASS_MAX_DAYS 90
- # 密码最小长度
- PASS_MIN_LEN 12
- # 密码过期前警告天数
- PASS_WARN_AGE 7
复制代码
强制密码复杂度:
- # 安装libpwquality
- sudo dnf install libpwquality
- # 编辑密码质量配置
- sudo nano /etc/security/pwquality.conf
复制代码
在pwquality.conf中设置:
- minlen = 12
- minclass = 3
- dcredit = -1
- ucredit = -1
- lcredit = -1
- ocredit = -1
- maxrepeat = 3
复制代码
账户锁定策略:
- # 编辑PAM配置文件
- sudo nano /etc/pam.d/system-auth
复制代码
添加以下行以设置账户锁定策略:
- auth required pam_tally2.so deny=5 onerr=fail unlock_time=1800
复制代码
查看失败的登录尝试:
- sudo pam_tally2 --user=username
复制代码
解锁被锁定的账户:
- sudo pam_tally2 --user=username --reset
复制代码
防火墙基础配置
Fedora 32使用firewalld作为其默认的防火墙管理工具,它提供了动态管理的防火墙,支持网络/防火墙区域定义。
检查firewalld状态:
- # 检查firewalld服务状态
- sudo systemctl status firewalld
- # 启动并启用firewalld
- sudo systemctl enable --now firewalld
复制代码
基本区域管理:
- # 查看默认区域
- sudo firewall-cmd --get-default-zone
- # 查看所有可用区域
- sudo firewall-cmd --get-zones
- # 查看当前活动的区域
- sudo firewall-cmd --get-active-zones
- # 查看特定区域的配置
- sudo firewall-cmd --zone=public --list-all
复制代码
服务管理:
- # 列出所有预定义的服务
- sudo firewall-cmd --get-services
- # 允许服务通过防火墙
- sudo firewall-cmd --permanent --zone=public --add-service=http
- sudo firewall-cmd --permanent --zone=public --add-service=https
- # 重新加载防火墙配置
- sudo firewall-cmd --reload
复制代码
端口管理:
- # 开放特定端口
- sudo firewall-cmd --permanent --zone=public --add-port=8080/tcp
- # 移除开放的端口
- sudo firewall-cmd --permanent --zone=public --remove-port=8080/tcp
- # 重新加载防火墙配置
- sudo firewall-cmd --reload
复制代码
高级规则配置:
- # 添加富规则(rich rules)
- sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" service name="ssh" accept'
- # 阻止特定IP地址
- sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.0.0.5" reject'
- # 端口转发
- sudo firewall-cmd --permanent --add-forward-port=port=80:proto=tcp:toport=8080
复制代码
创建自定义服务:
- # 创建自定义服务定义文件
- sudo nano /etc/firewalld/services/custom-service.xml
复制代码
添加以下内容:
- <?xml version="1.0" encoding="utf-8"?>
- <service>
- <short>Custom Service</short>
- <description>This is a custom service for our application.</description>
- <port protocol="tcp" port="1234"/>
- <port protocol="udp" port="1235"/>
- </service>
复制代码
重新加载防火墙并添加服务:
- sudo firewall-cmd --reload
- sudo firewall-cmd --permanent --zone=public --add-service=custom-service
- sudo firewall-cmd --reload
复制代码
SELinux基础设置
SELinux(Security-Enhanced Linux)是Fedora 32中的强制访问控制(MAC)系统,它提供了比传统Linux权限更精细的安全控制。
检查SELinux状态:
- # 查看当前SELinux状态
- getenforce
- # 查看SELinux详细状态
- sestatus
复制代码
SELinux模式管理:
- # 设置SELinux为强制模式(Enforcing)
- sudo setenforce 1
- # 设置SELinux为宽容模式(Permissive)
- sudo setenforce 0
- # 永久更改SELinux模式
- sudo nano /etc/selinux/config
复制代码
在配置文件中设置:
SELinux布尔值管理:
- # 列出所有布尔值
- getsebool -a
- # 查看特定布尔值
- getsebool httpd_can_network_connect
- # 设置布尔值
- sudo setsebool -P httpd_can_network_connect on
复制代码
文件和进程的SELinux上下文:
- # 查看文件SELinux上下文
- ls -Z /var/www/html/
- # 查看进程SELinux上下文
- ps -eZ
- # 更改文件SELinux上下文
- sudo chcon -t httpd_sys_content_t /var/www/html/index.html
- # 恢复默认SELinux上下文
- sudo restorecon -Rv /var/www/html/
复制代码
SELinux故障排除:
- # 安装SELinux故障排除工具
- sudo dnf install setroubleshoot
- # 查看SELinux拒绝日志
- sudo sealert -a /var/log/audit/audit.log
- # 生成分析报告
- sudo sealert -l "*"
复制代码
创建自定义SELinux策略模块:
- # 安装必要的工具
- sudo dnf install policycoreutils-python-utils
- # 检查SELinux拒绝并生成类型强制规则
- sudo grep nginx /var/log/audit/audit.log | audit2allow -M nginx_policy
- # 安装生成的策略模块
- sudo semodule -i nginx_policy.pp
复制代码
中级安全设置
服务安全配置
Fedora 32上运行的服务需要适当配置以确保安全性。以下是一些关键服务的安全配置方法。
SSH服务安全配置:
- # 安装SSH服务器(如果未安装)
- sudo dnf install openssh-server
- # 启动并启用SSH服务
- sudo systemctl enable --now sshd
- # 编辑SSH配置文件
- sudo nano /etc/ssh/sshd_config
复制代码
在sshd_config中,建议进行以下安全设置:
- # 禁用root登录
- PermitRootLogin no
- # 只允许特定用户登录
- AllowUsers username1 username2
- # 更改默认端口
- Port 2222
- # 禁用密码认证,使用密钥认证
- PasswordAuthentication no
- PubkeyAuthentication yes
- # 设置登录尝试次数
- MaxAuthTries 3
- # 设置空闲超时时间
- ClientAliveInterval 300
- ClientAliveCountMax 0
- # 禁用X11转发
- X11Forwarding no
复制代码
重新启动SSH服务以应用更改:
- sudo systemctl restart sshd
复制代码
SSH密钥管理:
- # 生成SSH密钥对
- ssh-keygen -t rsa -b 4096
- # 将公钥复制到远程服务器
- ssh-copy-id -i ~/.ssh/id_rsa.pub username@remote_host
- # 设置SSH代理
- eval "$(ssh-agent -s)"
- ssh-add ~/.ssh/id_rsa
复制代码
Apache/Nginx Web服务器安全配置:
对于Apache:
- # 安装Apache
- sudo dnf install httpd
- # 启动并启用Apache
- sudo systemctl enable --now httpd
- # 编辑Apache安全配置
- sudo nano /etc/httpd/conf.d/security.conf
复制代码
在security.conf中添加:
- # 隐藏Apache版本信息
- ServerTokens Prod
- ServerSignature Off
- # 禁用目录浏览
- Options -Indexes
- # 设置严格的文件权限
- <Directory "/var/www/html">
- Options FollowSymLinks
- AllowOverride None
- Require all granted
- </Directory>
- # 限制HTTP方法
- <LimitExcept GET POST HEAD>
- Require all denied
- </LimitExcept>
- # 启用HTTPS
- SSLEngine on
- SSLCertificateFile /etc/pki/tls/certs/localhost.crt
- SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
复制代码
对于Nginx:
- # 安装Nginx
- sudo dnf install nginx
- # 启动并启用Nginx
- sudo systemctl enable --now nginx
- # 编辑Nginx安全配置
- sudo nano /etc/nginx/conf.d/security.conf
复制代码
在security.conf中添加:
- # 隐藏Nginx版本信息
- server_tokens off;
- # 禁用目录浏览
- autoindex off;
- # 设置严格的文件权限
- location / {
- try_files $uri $uri/ =404;
- }
- # 限制HTTP方法
- if ($request_method !~ ^(GET|HEAD|POST)$ ) {
- return 405;
- }
- # 添加安全头
- add_header X-Frame-Options "SAMEORIGIN";
- add_header X-Content-Type-Options "nosniff";
- add_header X-XSS-Protection "1; mode=block";
- add_header Referrer-Policy "strict-origin-when-cross-origin";
- # 配置SSL
- ssl_certificate /etc/pki/tls/certs/localhost.crt;
- ssl_certificate_key /etc/pki/tls/private/localhost.key;
- ssl_protocols TLSv1.2 TLSv1.3;
- ssl_prefer_server_ciphers on;
复制代码
数据库服务安全配置:
对于MariaDB/MySQL:
- # 安装MariaDB
- sudo dnf install mariadb-server
- # 启动并启用MariaDB
- sudo systemctl enable --now mariadb
- # 运行安全安装脚本
- sudo mysql_secure_installation
复制代码
编辑MariaDB配置文件:
- sudo nano /etc/my.cnf.d/mariadb-server.cnf
复制代码
在配置文件中添加:
- [mysqld]
- # 禁用远程root登录
- skip-networking
- # 或者绑定到特定IP
- # bind-address = 127.0.0.1
- # 禁用符号链接以防止安全风险
- symbolic-links=0
- # 禁用本地文件加载
- local-infile=0
- # 设置适当的日志级别
- log_warnings=2
复制代码
对于PostgreSQL:
- # 安装PostgreSQL
- sudo dnf install postgresql-server
- # 初始化数据库
- sudo postgresql-setup --initdb
- # 启动并启用PostgreSQL
- sudo systemctl enable --now postgresql
- # 设置postgres用户密码
- sudo -u postgres psql -c "ALTER USER postgres WITH PASSWORD 'secure_password';"
复制代码
编辑PostgreSQL配置文件:
- sudo nano /var/lib/pgsql/data/pg_hba.conf
复制代码
在pg_hba.conf中设置:
- # 只允许本地连接使用MD5加密
- host all all 127.0.0.1/32 md5
- host all all ::1/128 md5
- # 如果需要远程连接,限制特定IP
- host all all 192.168.1.0/24 md5
复制代码
编辑postgresql.conf:
- sudo nano /var/lib/pgsql/data/postgresql.conf
复制代码
在postgresql.conf中设置:
- # 监听特定地址
- listen_addresses = 'localhost'
- # 启用连接日志
- log_connections = on
- log_disconnections = on
- log_duration = on
- # 设置SSL
- ssl = on
- ssl_cert_file = 'server.crt'
- ssl_key_file = 'server.key'
复制代码
网络安全强化
网络安全是保护Fedora 32系统的重要组成部分,包括网络配置、协议安全和网络监控等方面。
网络参数调整:
- # 编辑sysctl配置文件
- sudo nano /etc/sysctl.d/99-security.conf
复制代码
添加以下网络参数:
- # 启用IP欺骗保护
- 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.secure_redirects = 0
- net.ipv4.conf.default.secure_redirects = 0
- # 禁用IP源路由
- net.ipv4.conf.all.accept_source_route = 0
- net.ipv4.conf.default.accept_source_route = 0
- # 忽略ICMP广播请求
- net.ipv4.icmp_echo_ignore_broadcasts = 1
- # 启用错误消息保护
- net.ipv4.icmp_ignore_bogus_error_responses = 1
- # 启用TCP SYN Cookie保护
- net.ipv4.tcp_syncookies = 1
- # 禁用IPv6(如果不需要)
- net.ipv6.conf.all.disable_ipv6 = 1
- net.ipv6.conf.default.disable_ipv6 = 1
- # 增加文件描述符限制
- fs.file-max = 65536
- # 优化网络队列
- net.core.netdev_max_backlog = 10000
- net.ipv4.tcp_max_syn_backlog = 10000
复制代码
应用更改:
- sudo sysctl -p /etc/sysctl.d/99-security.conf
复制代码
TCP/IP堆栈加固:
- # 编辑TCP/IP配置
- sudo nano /etc/sysctl.d/99-tcp.conf
复制代码
添加以下参数:
- # TCP超时设置
- net.ipv4.tcp_fin_timeout = 30
- net.ipv4.tcp_keepalive_time = 1200
- net.ipv4.tcp_keepalive_intvl = 15
- net.ipv4.tcp_keepalive_probes = 5
- # TCP窗口调整
- net.ipv4.tcp_window_scaling = 1
- net.ipv4.tcp_rmem = 4096 87380 16777216
- net.ipv4.tcp_wmem = 4096 65536 16777216
- net.core.rmem_max = 16777216
- net.core.wmem_max = 16777216
- net.core.netdev_max_backlog = 30000
- # TCP BBR拥塞控制算法(需要内核4.9+)
- net.core.default_qdisc = fq
- net.ipv4.tcp_congestion_control = bbr
复制代码
应用更改:
- sudo sysctl -p /etc/sysctl.d/99-tcp.conf
复制代码
网络服务限制:
- # 安装tcp_wrappers
- sudo dnf install tcp_wrappers
- # 编辑hosts.allow文件
- sudo nano /etc/hosts.allow
复制代码
添加允许访问的服务和主机:
- # 允许特定IP访问SSH
- sshd: 192.168.1.0/24, 10.0.0.5
- # 允许特定IP访问FTP
- vsftpd: 192.168.1.0/24
复制代码
编辑hosts.deny文件:
- sudo nano /etc/hosts.deny
复制代码
添加拒绝规则:
网络连接监控:
- # 安装网络监控工具
- sudo dnf install net-tools nmap-ncat
- # 查看所有网络连接
- sudo netstat -tulnp
- # 查看监听的端口
- sudo ss -tulnp
- # 监控网络连接
- sudo watch -n 1 "netstat -an | grep ':80 '"
复制代码
使用fail2ban防止暴力破解:
- # 安装fail2ban
- sudo dnf install fail2ban
- # 启动并启用fail2ban
- sudo systemctl enable --now fail2ban
- # 创建本地配置文件
- sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
- # 编辑jail.local配置
- sudo nano /etc/fail2ban/jail.local
复制代码
在jail.local中设置:
- [DEFAULT]
- # 封禁时间(秒)
- bantime = 3600
- # 找到失败次数后封禁
- findtime = 600
- # 最大尝试次数
- maxretry = 3
- [sshd]
- enabled = true
- port = 22,2222
- filter = sshd
- logpath = /var/log/secure
- maxretry = 3
- bantime = 3600
- [apache-auth]
- enabled = true
- port = http,https
- filter = apache-auth
- logpath = /var/log/httpd/error_log
- maxretry = 3
- bantime = 3600
复制代码
重启fail2ban服务:
- sudo systemctl restart fail2ban
复制代码
查看fail2ban状态:
- sudo fail2ban-client status
- sudo fail2ban-client status sshd
复制代码
文件系统安全
文件系统安全是保护系统数据的关键部分,包括权限设置、加密和监控等方面。
文件和目录权限:
- # 查看文件权限
- ls -l /path/to/file
- # 设置文件权限
- chmod 644 /path/to/file
- # 设置目录权限
- chmod 755 /path/to/directory
- # 递归设置目录权限
- chmod -R 755 /path/to/directory
- # 设置所有者和组
- chown user:group /path/to/file
- # 递归设置所有者和组
- chown -R user:group /path/to/directory
复制代码
特殊权限设置:
- # 设置SUID权限(允许用户以文件所有者权限执行)
- chmod u+s /path/to/executable
- # 设置SGID权限(在目录中创建的文件继承目录的组)
- chmod g+s /path/to/directory
- # 设置粘滞位(只有文件所有者才能删除或重命名文件)
- chmod +t /path/to/directory
复制代码
查找并修复不安全的文件权限:
- # 查找全局可写的文件
- sudo find / -type f -perm -o+w -exec ls -l {} \;
- # 查找没有所有者的文件
- sudo find / -nouser -o -nogroup
- # 查找SUID/SGID文件
- sudo find / -type f \( -perm -4000 -o -perm -2000 \) -exec ls -l {} \;
复制代码
文件系统加密:
使用LUKS加密磁盘分区:
- # 安装cryptsetup
- sudo dnf install cryptsetup
- # 准备分区(假设为/dev/sdb1)
- sudo fdisk /dev/sdb
- # 加密分区
- sudo cryptsetup luksFormat /dev/sdb1
- # 打开加密分区
- sudo cryptsetup open /dev/sdb1 encrypted_disk
- # 格式化加密分区
- sudo mkfs.ext4 /dev/mapper/encrypted_disk
- # 挂载加密分区
- sudo mkdir /mnt/encrypted
- sudo mount /dev/mapper/encrypted_disk /mnt/encrypted
- # 关闭加密分区
- sudo umount /mnt/encrypted
- sudo cryptsetup close encrypted_disk
复制代码
配置自动挂载加密分区:
- # 编辑/etc/crypttab
- sudo nano /etc/crypttab
复制代码
添加以下行:
- encrypted_disk /dev/sdb1 none luks
复制代码
编辑/etc/fstab:
添加以下行:
- /dev/mapper/encrypted_disk /mnt/encrypted ext4 defaults 0 0
复制代码
文件完整性检查:
使用AIDE(Advanced Intrusion Detection Environment)监控文件完整性:
- # 安装AIDE
- sudo dnf install aide
- # 初始化AIDE数据库
- sudo aide --init
- # 重命名数据库
- sudo mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz
- # 执行文件系统检查
- sudo aide --check
- # 更新数据库
- sudo aide --update
复制代码
配置AIDE:
在配置文件中,可以设置要监控的文件和目录:
- # 定义检查规则
- ALL = p+i+n+u+g+s+m+c+md5+sha1
- # 监控关键目录
- /bin ALL
- /sbin ALL
- /usr/bin ALL
- /usr/sbin ALL
- /etc ALL
- !/etc/aide.conf
复制代码
设置定期检查:
- # 创建AIDE检查脚本
- sudo nano /usr/local/bin/aide-check.sh
复制代码
添加以下内容:
- #!/bin/bash
- /usr/sbin/aide --check | mail -s "AIDE Integrity Check Report" admin@example.com
复制代码
使脚本可执行并添加到cron:
- sudo chmod +x /usr/local/bin/aide-check.sh
- sudo crontab -e
复制代码
添加以下行以每天运行检查:
- 0 3 * * * /usr/local/bin/aide-check.sh
复制代码
安全审计和日志管理
有效的安全审计和日志管理对于检测和响应安全事件至关重要。
系统日志配置:
- # 安装rsyslog(如果未安装)
- sudo dnf install rsyslog
- # 启动并启用rsyslog
- sudo systemctl enable --now rsyslog
- # 编辑rsyslog配置
- sudo nano /etc/rsyslog.conf
复制代码
在rsyslog.conf中,可以设置日志记录规则:
- # 将所有日志发送到远程服务器
- *.* @remote-log-server:514
- # 设置特定日志级别
- *.info;mail.none;authpriv.none;cron.none /var/log/messages
- authpriv.* /var/log/secure
- mail.* -/var/log/maillog
- cron.* /var/log/cron
- *.emerg :omusrmsg:*
- uucp,news.crit /var/log/spooler
- local7.* /var/log/boot.log
复制代码
创建自定义日志规则:
- sudo nano /etc/rsyslog.d/security.conf
复制代码
添加以下内容:
- # 记录所有sudo命令
- authpriv.* /var/log/sudo.log
- # 记录所有登录尝试
- auth.* /var/log/auth.log
- # 记录防火墙活动
- kern.* /var/log/firewall.log
复制代码
重启rsyslog服务:
- sudo systemctl restart rsyslog
复制代码
使用auditd进行系统审计:
- # 安装auditd
- sudo dnf install audit
- # 启动并启用auditd
- sudo systemctl enable --now auditd
- # 编辑audit规则
- sudo nano /etc/audit/rules.d/audit.rules
复制代码
添加以下审计规则:
- # 监控文件访问
- -w /etc/passwd -p wa -k identity
- -w /etc/shadow -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 -F auid>=1000 -F auid!=4294967295 -k perm_mod
- -a always,exit -F arch=b64 -S chown -S fchown -S fchownat -S lchown -F auid>=1000 -F auid!=4294967295 -k perm_mod
- # 监控登录活动
- -w /var/log/faillog -p wa -k logins
- -w /var/log/lastlog -p wa -k logins
- -w /var/log/tallylog -p wa -k logins
- # 监控网络配置
- -w /etc/hosts -p wa -k network
- -w /etc/sysconfig/network -p wa -k network
复制代码
加载审计规则:
查看审计日志:
- # 查看所有审计日志
- sudo ausearch -i -m ALL
- # 查看特定类型的审计日志
- sudo ausearch -i -m LOGIN
- # 查看特定用户的审计日志
- sudo ausearch -i -ua username
- # 生成审计报告
- sudo aureport -x
复制代码
日志轮转配置:
- # 编辑logrotate配置
- sudo nano /etc/logrotate.conf
复制代码
在logrotate.conf中设置全局轮转策略:
- # 每周轮转一次
- weekly
- # 保留4周的日志
- rotate 4
- # 创建新的日志文件
- create
- # 压缩旧日志
- compress
- # 延迟压缩
- delaycompress
- # 忽略空日志文件
- missingok
- # 不显示错误
- notifempty
复制代码
为特定服务创建自定义轮转规则:
- sudo nano /etc/logrotate.d/custom-service
复制代码
添加以下内容:
- /var/log/custom-service/*.log {
- daily
- missingok
- rotate 30
- compress
- delaycompress
- notifempty
- create 644 root root
- postrotate
- /usr/bin/systemctl reload custom-service.service > /dev/null 2>&1 || true
- endscript
- }
复制代码
测试logrotate配置:
- sudo logrotate -d /etc/logrotate.conf
- sudo logrotate -f /etc/logrotate.conf
复制代码
高级安全防护
入侵检测系统配置
入侵检测系统(IDS)是网络安全的重要组成部分,可以帮助检测和防止潜在的入侵活动。
使用OSSEC进行主机入侵检测:
- # 安装OSSEC
- sudo dnf install ossec-hids
- # 初始化OSSEC配置
- sudo /var/ossec/bin/ossec-control enable
- sudo /var/ossec/bin/ossec-control start
- # 编辑OSSEC配置
- sudo nano /var/ossec/etc/ossec.conf
复制代码
在ossec.conf中配置基本设置:
- <ossec_config>
- <global>
- <email_notification>yes</email_notification>
- <email_to>admin@example.com</email_to>
- <smtp_server>smtp.example.com</smtp_server>
- <email_from>ossec@example.com</email_from>
- </global>
- <rules>
- <include>rules_config.xml</include>
- <include>pam_rules.xml</include>
- <include>sshd_rules.xml</include>
- <include>web_rules.xml</include>
- </rules>
- <syscheck>
- <frequency>7200</frequency>
- <directories check_all="yes">/etc,/usr/bin,/usr/sbin</directories>
- <directories check_all="yes">/bin,/sbin</directories>
- <ignore>/etc/mtab</ignore>
- <ignore>/etc/hosts.deny</ignore>
- </syscheck>
- <rootcheck>
- <rootkit_files>/var/ossec/etc/shared/rootkit_files.txt</rootkit_files>
- <rootkit_trojans>/var/ossec/etc/shared/rootkit_trojans.txt</rootkit_trojans>
- </rootcheck>
- <localfile>
- <log_format>syslog</log_format>
- <location>/var/log/messages</location>
- </localfile>
- <localfile>
- <log_format>syslog</log_format>
- <location>/var/log/secure</location>
- </localfile>
- <active-response>
- <command>host-deny</command>
- <location>local</location>
- <rules_id>5716</rules_id>
- </active-response>
- </ossec_config>
复制代码
重启OSSEC服务:
- sudo /var/ossec/bin/ossec-control restart
复制代码
使用Suricata进行网络入侵检测:
- # 安装Suricata
- sudo dnf install suricata
- # 启动并启用Suricata
- sudo systemctl enable --now suricata
- # 下载Emerging Threats规则集
- sudo suricata-update
- # 编辑Suricata配置
- sudo nano /etc/suricata/suricata.yaml
复制代码
在suricata.yaml中配置网络接口和规则:
- af-packet:
- - interface: eth0
- cluster-id: 99
- cluster-type: cluster_flow
- defrag: yes
- mmap: yes
- vars:
- address-groups:
- HOME_NET: "[192.168.1.0/24]"
- EXTERNAL_NET: "!$HOME_NET"
- port-groups:
- HTTP_PORTS: "80"
- SHELLCODE_PORTS: "!80"
- SSH_PORTS: 22
- default-rule-path: /etc/suricata/rules
- rule-files:
- - suricata.rules
复制代码
更新Suricata规则:
- sudo suricata-update
- sudo systemctl restart suricata
复制代码
查看Suricata日志:
- sudo tail -f /var/log/suricata/fast.log
复制代码
安全加固工具使用
Fedora 32提供了多种工具来帮助加固系统安全。
使用Lynis进行系统安全审计:
- # 安装Lynis
- sudo dnf install lynis
- # 运行Lynis审计
- sudo lynis audit system
- # 查看审计报告
- sudo cat /var/log/lynis-report.dat
- # 查看详细日志
- sudo cat /var/log/lynis.log
复制代码
使用OpenSCAP进行安全合规性检查:
- # 安装OpenSCAP
- sudo dnf install openscap-scanner scap-security-guide
- # 列出可用的安全配置文件
- sudo oscap info /usr/share/xml/scap/ssg/content/ssg-fedora-ds.xml
- # 运行系统扫描
- 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
- # 生成HTML报告
- sudo oscap xccdf generate report arf.xml > report.html
复制代码
使用Tripwire进行文件完整性检查:
- # 安装Tripwire
- sudo dnf install tripwire
- # 初始化Tripwire数据库
- sudo tripwire --init
- # 执行完整性检查
- sudo tripwire --check
- # 更新数据库
- sudo tripwire --update
复制代码
配置Tripwire策略:
- sudo nano /etc/tripwire/twpol.txt
复制代码
在策略文件中定义要监控的文件和目录:
- (
- rulename = "System Boot Changes",
- severity = $(SIG_HI)
- )
- {
- /boot -> $(SEC_CRIT) ;
- /boot/System.map -> $(SEC_CRIT) ;
- /boot/grub/grub.conf -> $(SEC_CRIT) ;
- }
- (
- rulename = "Root Configuration Files",
- severity = $(SIG_HI)
- )
- {
- /root -> $(SEC_CRIT) ;
- /root/.bashrc -> $(SEC_CRIT) ;
- /root/.bash_profile -> $(SEC_CRIT) ;
- /root/.ssh -> $(SEC_CRIT) ;
- }
复制代码
更新策略并重新初始化数据库:
- sudo twadmin -m P /etc/tripwire/twpol.txt
- sudo tripwire --init
复制代码
加密和隐私保护
加密和隐私保护是确保数据安全的关键措施。
全盘加密:
在安装Fedora 32时选择全盘加密选项,或使用LUKS加密现有分区:
- # 安装cryptsetup
- sudo dnf install cryptsetup
- # 备份数据(重要!)
- # 加密分区(以/dev/sda3为例)
- sudo cryptsetup luksFormat /dev/sda3
- # 打开加密分区
- sudo cryptsetup open /dev/sda3 luks-12345678-1234-1234-1234-123456789012
- # 格式化加密分区
- sudo mkfs.ext4 /dev/mapper/luks-12345678-1234-1234-1234-123456789012
- # 挂载加密分区
- sudo mount /dev/mapper/luks-12345678-1234-1234-1234-123456789012 /mnt
- # 更新/etc/crypttab和/etc/fstab以实现自动挂载
- echo "luks-12345678-1234-1234-1234-123456789012 UUID=$(sudo blkid -s UUID -o value /dev/sda3) none luks" | sudo tee -a /etc/crypttab
- echo "/dev/mapper/luks-12345678-1234-1234-1234-123456789012 /mnt ext4 defaults 0 0" | sudo tee -a /etc/fstab
复制代码
使用GnuPG加密文件:
- # 安装GnuPG
- sudo dnf install gnupg2
- # 生成密钥对
- gpg2 --full-generate-key
- # 列出密钥
- gpg2 --list-keys
- # 加密文件
- gpg2 -e -r recipient@example.com sensitive_file.txt
- # 解密文件
- gpg2 -d sensitive_file.txt.gpg > sensitive_file.txt
- # 签名文件
- gpg2 -s sensitive_file.txt
- # 验证签名
- gpg2 --verify sensitive_file.txt.sig
复制代码
使用VeraCrypt创建加密容器:
- # 下载并安装VeraCrypt
- wget https://launchpad.net/veracrypt/trunk/1.24-update7/+download/veracrypt-1.24-Update7-Fedora-29-x86_64.rpm
- sudo dnf install ./veracrypt-1.24-Update7-Fedora-29-x86_64.rpm
- # 创建加密容器
- veracrypt -t -c
- # 挂载加密容器
- veracrypt /path/to/container /mnt/point
- # 卸载加密容器
- veracrypt -d /mnt/point
复制代码
使用Tor网络保护隐私:
- # 安装Tor
- sudo dnf install tor
- # 配置Tor
- sudo nano /etc/tor/torrc
复制代码
在torrc中添加以下配置:
- SocksPort 9050
- ControlPort 9051
- CookieAuthentication 1
复制代码
启动并启用Tor:
- sudo systemctl enable --now tor
复制代码
配置应用程序使用Tor代理:
- # 配置curl使用Tor
- curl --socks5-hostname 127.0.0.1:9050 https://check.torproject.org/
- # 配置Firefox使用Tor
- # 在Firefox中设置网络代理为SOCKS5,地址为127.0.0.1,端口为9050
复制代码
使用Firejail沙盒化应用程序:
- # 安装Firejail
- sudo dnf install firejail
- # 沙盒化运行应用程序
- firejail firefox
- # 创建自定义沙盒配置
- nano ~/.config/firejail/firefox.profile
复制代码
在配置文件中添加:
- private-etc passwd,group,hosts,resolv.conf,firefox,pulse
- private-tmp
- seccomp
- nodvd
- nosound
- notv
- nou2f
- novideo
- nowhitelist ${HOME}/.ssh
复制代码
使用自定义配置运行Firefox:
- firejail --profile=~/.config/firejail/firefox.profile firefox
复制代码
安全合规性检查
确保系统符合安全标准和最佳实践是维护系统安全的重要部分。
使用OpenSCAP进行安全合规性检查:
- # 安装OpenSCAP和SCAP安全指南
- sudo dnf install openscap-scanner scap-security-guide
- # 列出可用的安全配置文件
- sudo oscap info /usr/share/xml/scap/ssg/content/ssg-fedora-ds.xml
- # 运行标准安全配置文件扫描
- 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
- # 生成HTML报告
- sudo oscap xccdf generate report arf.xml > report.html
- # 查看报告
- firefox report.html
复制代码
使用Lynis进行安全审计:
- # 安装Lynis
- sudo dnf install lynis
- # 运行系统审计
- sudo lynis audit system
- # 查看审计报告
- sudo cat /var/log/lynis-report.dat
- # 查看详细日志
- sudo cat /var/log/lynis.log
复制代码
使用Auditd进行持续监控:
- # 安装auditd
- sudo dnf install audit
- # 启动并启用auditd
- sudo systemctl enable --now auditd
- # 配置审计规则
- sudo nano /etc/audit/rules.d/audit.rules
复制代码
添加以下审计规则:
- # 监控文件访问
- -w /etc/passwd -p wa -k identity
- -w /etc/shadow -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 -F auid>=1000 -F auid!=4294967295 -k perm_mod
- -a always,exit -F arch=b64 -S chown -S fchown -S fchownat -S lchown -F auid>=1000 -F auid!=4294967295 -k perm_mod
- # 监控登录活动
- -w /var/log/faillog -p wa -k logins
- -w /var/log/lastlog -p wa -k logins
- -w /var/log/tallylog -p wa -k logins
复制代码
加载审计规则:
查看审计日志:
- # 查看所有审计日志
- sudo ausearch -i -m ALL
- # 查看特定类型的审计日志
- sudo ausearch -i -m LOGIN
- # 查看特定用户的审计日志
- sudo ausearch -i -ua username
- # 生成审计报告
- sudo aureport -x
复制代码
安全最佳实践和建议
定期安全评估
定期安全评估是维护系统安全的关键环节。建议至少每季度进行一次全面的安全评估,包括漏洞扫描、配置审计和渗透测试。
漏洞扫描:
- # 安装OpenVAS
- sudo dnf install openvas
- # 初始化OpenVAS
- sudo gvm-setup
- # 启动OpenVAS服务
- sudo systemctl start gvmd
- sudo systemctl start gsad
- sudo systemctl start openvas
- # 创建扫描任务
- # 通过Web界面 https://localhost:9392 创建和管理扫描任务
复制代码
配置审计:
- # 使用Lynis进行配置审计
- sudo lynis audit system
- # 使用OpenSCAP进行合规性检查
- 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份异地存储。
备份工具:
- # 安装BorgBackup
- sudo dnf install borgbackup
- # 初始化Borg仓库
- borg init --encryption=repokey /path/to/backup/repo
- # 创建备份
- borg create --stats --progress /path/to/backup/repo::archive-$(date +%Y-%m-%d) /path/to/data
- # 列出备份
- borg list /path/to/backup/repo
- # 恢复备份
- borg extract /path/to/backup/repo::archive-2020-06-01
复制代码
自动化备份脚本:
- # 创建备份脚本
- nano /usr/local/bin/backup.sh
复制代码
添加以下内容:
- #!/bin/bash
- # 设置变量
- BACKUP_REPO="/path/to/backup/repo"
- DATA_DIR="/path/to/data"
- LOG_FILE="/var/log/backup.log"
- # 记录备份开始时间
- echo "Backup started at $(date)" >> $LOG_FILE
- # 创建备份
- borg create --stats --progress $BACKUP_REPO::archive-$(date +%Y-%m-%d) $DATA_DIR >> $LOG_FILE 2>&1
- # 清理旧备份(保留最近7天的备份)
- borg prune --keep-daily=7 $BACKUP_REPO >> $LOG_FILE 2>&1
- # 记录备份结束时间
- echo "Backup completed at $(date)" >> $LOG_FILE
复制代码
使脚本可执行并添加到cron:
- sudo chmod +x /usr/local/bin/backup.sh
- sudo crontab -e
复制代码
添加以下行以每天运行备份:
- 0 2 * * * /usr/local/bin/backup.sh
复制代码
总结
Fedora 32作为一个功能强大且安全的Linux发行版,提供了丰富的安全特性和工具,帮助用户构建安全可靠的系统环境。本文从基础配置到高级防护,全方位解析了Fedora 32的安全设置,包括系统更新与补丁管理、用户和权限管理、防火墙配置、SELinux设置、服务安全配置、网络安全强化、文件系统安全、安全审计和日志管理、入侵检测系统配置、安全加固工具使用、加密和隐私保护以及安全合规性检查等方面。
通过正确配置这些安全设置,用户可以显著提高Fedora 32系统的安全性,有效防范各种安全威胁。然而,安全是一个持续的过程,需要定期评估、更新和改进。建议用户结合本文提供的最佳实践和建议,根据自身需求和环境特点,制定适合的安全策略,并定期进行安全评估和更新,以确保系统始终保持最佳的安全状态。
最后,记住技术只是安全的一部分,安全意识和培训同样重要。通过提高安全意识,遵循最佳实践,并制定完善的事件响应计划,用户可以构建一个全面的安全防护体系,有效保护Fedora 32系统和数据的安全。 |
|