|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
引言
在当今数字化时代,系统安全已成为每个计算机用户不可忽视的重要议题。Fedora Linux作为一款领先的发行版,以其先进的安全特性和强大的功能而闻名。本文将深入探讨Fedora Linux系统安全防护的实战技巧,重点介绍防火墙配置、加密技术和权限管理三大核心领域,帮助用户构建安全稳定的计算环境,有效抵御各类网络威胁,保障个人隐私和数据安全。
Fedora Linux系统安全基础
Fedora Linux的安全特性概述
Fedora Linux作为Red Hat赞助的社区项目,继承了Red Hat Enterprise Linux(RHEL)的许多安全特性,并融入了最新的开源安全技术。其核心安全特性包括:
1. SELinux (Security-Enhanced Linux):Fedora默认启用SELinux,提供强制访问控制(MAC)机制,显著增强系统安全性。
2. 防火墙:使用firewalld作为动态防火墙管理工具,支持网络区域定义和丰富的规则配置。
3. 安全编码实践:Fedora项目遵循严格的安全编码标准,减少软件漏洞。
4. 及时的安全更新:Fedora社区快速响应安全漏洞,提供及时的更新和补丁。
5. 强大的加密支持:提供全面的加密工具和库,支持各种加密算法和协议。
安全防护的基本原则
在深入具体技术之前,了解以下基本安全原则对构建安全系统至关重要:
1. 最小权限原则:用户和进程只应拥有完成其任务所必需的最小权限。
2. 深度防御:采用多层安全措施,即使一层防御被突破,其他层仍能提供保护。
3. 安全默认配置:系统默认配置应尽可能安全,减少不必要的风险。
4. 及时更新:保持系统和软件包最新,修复已知安全漏洞。
5. 审计与监控:定期审计系统配置和活动,监控异常行为。
防火墙配置与管理
firewalld基础
Fedora Linux使用firewalld作为默认的防火墙管理工具,它是一个动态防火墙管理器,支持网络/防火墙区域定义,提供了灵活的配置方式。
首先,确保firewalld已安装并运行:
- # 检查firewalld状态
- sudo systemctl status firewalld
- # 如果未运行,启动并设置为开机自启
- sudo systemctl start firewalld
- sudo systemctl enable firewalld
复制代码
firewalld使用区域(zones)来管理信任级别。每个区域都有自己的一套规则,应用于网络接口。预定义的区域包括:
• drop:丢弃所有传入连接,无传出连接允许。
• block:拒绝所有传入连接,允许已建立的传出连接。
• public:用于公共区域,不信任网络上的其他计算机,只允许选定的传入连接。
• external:用于启用伪装的外部网络,特别是路由器。不信任网络上的其他计算机,只允许选定的传入连接。
• internal:用于内部网络,信任网络上的其他计算机,只允许选定的传入连接。
• dmz:用于DMZ区域,只允许选定的传入连接。
• work:用于工作区域,信任网络上的其他计算机,只允许选定的传入连接。
• home:用于家庭区域,信任网络上的其他计算机,只允许选定的传入连接。
• trusted:信任所有网络连接。
- # 查看默认区域
- sudo firewall-cmd --get-default-zone
- # 查看活动区域及其分配的接口
- sudo firewall-cmd --get-active-zones
- # 查看特定区域的配置
- sudo firewall-cmd --zone=public --list-all
- # 更改默认区域
- sudo firewall-cmd --set-default-zone=home
- # 将接口分配给特定区域
- sudo firewall-cmd --zone=public --change-interface=eth0
复制代码
防火墙规则配置
firewalld通过服务来简化常见端口的配置:
- # 列出所有预定义服务
- sudo firewall-cmd --get-services
- # 允许区域中的服务
- sudo firewall-cmd --zone=public --add-service=http
- # 永久允许服务(需要重新加载防火墙)
- sudo firewall-cmd --zone=public --add-service=http --permanent
- sudo firewall-cmd --reload
- # 移除服务
- sudo firewall-cmd --zone=public --remove-service=http
- sudo firewall-cmd --zone=public --remove-service=http --permanent
复制代码- # 开放特定端口
- sudo firewall-cmd --zone=public --add-port=8080/tcp
- # 永久开放端口
- sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
- sudo firewall-cmd --reload
- # 移除端口
- sudo firewall-cmd --zone=public --remove-port=8080/tcp
复制代码- # 将本地端口转发到另一端口
- sudo firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toport=8080
- # 将本地端口转发到另一台机器
- sudo firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toaddr=192.168.1.100:toport=8080
- # 永久设置
- sudo firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toport=8080 --permanent
- sudo firewall-cmd --reload
复制代码
对于更复杂的规则,可以使用firewalld的丰富规则功能:
- # 允许特定IP访问服务
- sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" service name="ssh" accept'
- # 拒绝特定IP访问
- sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.200" reject'
- # 限制连接速率
- sudo firewall-cmd --zone=public --add-rich-rule='rule service name="ssh" limit value="2/m" accept'
- # 记录并拒绝
- sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="22" log prefix="ssh" level="notice" reject'
复制代码
高级防火墙技巧
对于需要更底层iptables/nftables控制的情况,可以使用直接规则:
- # 添加直接规则
- sudo firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -p tcp --dport 8080 -j ACCEPT
- # 永久添加
- sudo firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -p tcp --dport 8080 -j ACCEPT --permanent
- sudo firewall-cmd --reload
复制代码
创建自定义服务以简化复杂应用的配置:
- # 创建自定义服务文件
- sudo nano /etc/firewalld/services/myapp.xml
复制代码
在文件中添加以下内容:
- <?xml version="1.0" encoding="utf-8"?>
- <service>
- <short>My Application</short>
- <description>My custom application ports</description>
- <port protocol="tcp" port="8080"/>
- <port protocol="tcp" port="8443"/>
- </service>
复制代码
重新加载防火墙并添加服务:
- sudo firewall-cmd --reload
- sudo firewall-cmd --zone=public --add-service=myapp
复制代码
控制ICMP消息类型:
- # 阻止ping请求
- sudo firewall-cmd --zone=public --add-icmp-block=echo-request
- # 永久设置
- sudo firewall-cmd --zone=public --add-icmp-block=echo-request --permanent
- sudo firewall-cmd --reload
复制代码
实战案例
假设我们要配置一个Web服务器,允许HTTP(80)、HTTPS(443)和SSH(22)访问,同时限制SSH连接速率:
- # 设置默认区域为public
- sudo firewall-cmd --set-default-zone=public
- # 添加HTTP和HTTPS服务
- sudo firewall-cmd --zone=public --add-service=http --permanent
- sudo firewall-cmd --zone=public --add-service=https --permanent
- # 添加SSH服务并限制连接速率
- sudo firewall-cmd --zone=public --add-service=ssh --permanent
- sudo firewall-cmd --zone=public --add-rich-rule='rule service name="ssh" limit value="2/m" accept' --permanent
- # 重新加载防火墙
- sudo firewall-cmd --reload
- # 验证配置
- sudo firewall-cmd --zone=public --list-all
复制代码
配置防火墙日志以监控可疑活动:
- # 记录所有被拒绝的连接
- sudo firewall-cmd --zone=public --set-target=DROP --permanent
- sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="0.0.0.0/0" log prefix="dropped: " level="notice" limit value="5/m"' --permanent
- sudo firewall-cmd --reload
- # 查看日志
- sudo journalctl -k -g "dropped:"
复制代码
系统加密技术
磁盘加密
Fedora Linux支持全盘加密,保护数据在物理层面的安全。
LUKS(Linux Unified Key Setup)是Linux标准的磁盘加密格式。
- # 安装cryptsetup(如果未安装)
- sudo dnf install cryptsetup
- # 分区(假设设备为/dev/sdb1)
- sudo fdisk /dev/sdb
- # 格式化为LUKS加密分区
- sudo cryptsetup luksFormat /dev/sdb1
- # 打开加密分区
- sudo cryptsetup open /dev/sdb1 my_encrypted_disk
- # 格式化加密分区
- sudo mkfs.ext4 /dev/mapper/my_encrypted_disk
- # 挂载分区
- sudo mkdir /mnt/encrypted
- sudo mount /dev/mapper/my_encrypted_disk /mnt/encrypted
复制代码- # 添加到/etc/crypttab
- echo "my_encrypted_disk UUID=$(sudo blkid -s UUID -o value /dev/sdb1) none luks" | sudo tee -a /etc/crypttab
- # 添加到/etc/fstab
- echo "/dev/mapper/my_encrypted_disk /mnt/encrypted ext4 defaults 0 0" | sudo tee -a /etc/fstab
复制代码
在Fedora安装过程中,可以选择全盘加密选项:
1. 在安装程序的”安装目标”屏幕上,选择”我要配置分区”。
2. 创建分区时,选择”加密”复选框。
3. 系统将提示设置加密密码。
4. 完成安装后,每次启动系统时都需要输入密码才能解密磁盘。
文件系统加密
除了全盘加密,Fedora还支持文件系统级别的加密,适用于保护特定目录。
eCryptfs是一种企业级加密文件系统,可以堆叠在其他文件系统之上。
- # 安装eCryptfs
- sudo dnf install ecryptfs-utils
- # 加密私有目录(以普通用户身份运行)
- ecryptfs-setup-private
- # 挂载私有目录
- ecryptfs-mount-private
- # 卸载私有目录
- ecryptfs-umount-private
复制代码
EncFS是另一种用户空间加密文件系统,易于使用。
- # 安装EncFS
- sudo dnf install encfs
- # 创建加密目录
- mkdir ~/encrypted ~/decrypted
- encfs ~/encrypted ~/decrypted
- # 按照提示设置密码和加密选项
- # 使用完成后卸载
- fusermount -u ~/decrypted
复制代码
网络通信加密
SSH(Secure Shell)是远程管理的安全协议,确保通信加密。
- # 安装OpenSSH服务器
- sudo dnf install openssh-server
- # 启动并启用SSH服务
- sudo systemctl start sshd
- sudo systemctl enable sshd
- # 强化SSH配置
- sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
- sudo nano /etc/ssh/sshd_config
复制代码
修改以下配置:
- # 禁用root登录
- PermitRootLogin no
- # 仅允许特定用户
- AllowUsers user1 user2
- # 更改默认端口
- Port 2222
- # 禁用密码认证,使用密钥认证
- PasswordAuthentication no
- PubkeyAuthentication yes
复制代码
重启SSH服务:
- sudo systemctl restart sshd
复制代码
使用VPN加密网络通信:
- # 安装OpenVPN
- sudo dnf install openvpn
- # 配置OpenVPN客户端
- sudo cp client.ovpn /etc/openvpn/client/
- sudo systemctl start openvpn-client@client
- sudo systemctl enable openvpn-client@client
复制代码
为Web服务配置SSL/TLS:
- # 安装Certbot获取Let's Encrypt证书
- sudo dnf install certbot python3-certbot-apache
- # 获取并安装证书
- sudo certbot --apache
- # 自动续期证书
- sudo echo "0 0,12 * * * root python3 -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew -q" | sudo tee -a /etc/crontab > /dev/null
复制代码
实战案例
- # 插入USB设备并识别(假设为/dev/sdc)
- sudo fdisk -l
- # 创建分区表
- sudo parted /dev/sdc mklabel gpt
- # 创建分区
- sudo parted -a opt /dev/sdc mkpart primary ext4 0% 100%
- # 加密分区
- sudo cryptsetup luksFormat /dev/sdc1
- # 打开加密分区
- sudo cryptsetup open /dev/sdc1 secure_usb
- # 格式化分区
- sudo mkfs.ext4 /dev/mapper/secure_usb
- # 挂载分区
- sudo mkdir /mnt/secure_usb
- sudo mount /dev/mapper/secure_usb /mnt/secure_usb
- # 使用完成后卸载
- sudo umount /mnt/secure_usb
- sudo cryptsetup close secure_usb
复制代码
创建一个自动加密备份的脚本:
- #!/bin/bash
- # 加密备份脚本
- BACKUP_SOURCE="/home/user/Documents"
- BACKUP_DEST="/mnt/backup/encrypted"
- BACKUP_NAME="backup-$(date +%Y%m%d).tar.gz.gpg"
- GPG_KEY="user@example.com"
- # 创建备份
- tar -czf - "$BACKUP_SOURCE" | gpg --encrypt --recipient "$GPG_KEY" -o "$BACKUP_DEST/$BACKUP_NAME"
- # 验证备份
- if [ $? -eq 0 ]; then
- echo "备份成功创建: $BACKUP_NAME"
- else
- echo "备份创建失败"
- exit 1
- fi
复制代码
保存为secure_backup.sh,并设置可执行权限:
- chmod +x secure_backup.sh
复制代码
权限管理技巧
用户和组管理
有效的用户和组管理是系统安全的基础。
- # 创建新用户
- sudo useradd -m username
- # 设置用户密码
- sudo passwd username
- # 删除用户
- sudo userdel username
- # 删除用户及其主目录
- sudo userdel -r username
- # 修改用户属性
- sudo usermod -aG groupname username # 将用户添加到组
- sudo usermod -l newname oldname # 重命名用户
- sudo usermod -e 2023-12-31 username # 设置用户过期日期
复制代码- # 创建新组
- sudo groupadd groupname
- # 删除组
- sudo groupdel groupname
- # 修改组名
- sudo groupmod -n newname oldname
- # 将用户添加到组
- sudo usermod -aG groupname username
复制代码- # 安装sudo(如果未安装)
- sudo dnf install sudo
- # 将用户添加到wheel组(Fedora中默认有sudo权限的组)
- sudo usermod -aG wheel username
- # 编辑sudoers文件
- sudo visudo
复制代码
在sudoers文件中可以添加特定规则:
- # 允许特定用户运行特定命令
- username ALL=(ALL) /usr/bin/systemctl restart httpd
- # 允许组中的用户运行特定命令
- %groupname ALL=(ALL) /usr/bin/apt, /usr/bin/apt-get
- # 无密码运行特定命令
- username ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart httpd
复制代码
文件权限控制
Linux的文件权限系统是保护数据安全的关键。
- # 查看文件权限
- ls -l filename
- # 修改文件权限
- chmod 644 filename # rw-r--r--
- chmod 755 directory # rwxr-xr-x
- # 修改文件所有者
- chown user:group filename
- # 递归修改目录权限
- chmod -R 755 directory/
- chown -R user:group directory/
复制代码- # 设置SUID(运行时以文件所有者身份执行)
- chmod u+s filename
- # 设置SGID(在目录中创建的文件继承目录的组)
- chmod g+s directory/
- # 设置Sticky Bit(只有文件所有者才能删除文件)
- chmod +t directory/
复制代码
ACL提供比传统权限更精细的控制:
- # 安装ACL工具(如果未安装)
- sudo dnf install acl
- # 查看文件ACL
- getfacl filename
- # 设置ACL
- setfacl -m u:username:rw filename
- setfacl -m g:groupname:r filename
- # 设置默认ACL(适用于目录)
- setfacl -d -m u:username:rw directory/
- # 删除ACL
- setfacl -x u:username filename
复制代码
SELinux配置
SELinux是Fedora中的强制访问控制系统,提供额外的安全层。
SELinux有三种模式:
• Enforcing:强制模式,SELinux策略被强制执行。
• Permissive:宽容模式,SELinux不强制执行策略,但记录违规行为。
• Disabled:禁用模式,SELinux不运行。
- # 查看SELinux状态
- sestatus
- # 临时更改SELinux模式
- sudo setenforce 0 # 设置为Permissive
- sudo setenforce 1 # 设置为Enforcing
- # 永久更改SELinux模式
- sudo nano /etc/selinux/config
复制代码
修改配置文件中的SELINUX=行:
- # 查看文件SELinux上下文
- ls -Z filename
- # 修改文件SELinux上下文
- sudo chcon -t httpd_sys_content_t /var/www/html/index.html
- # 恢复默认SELinux上下文
- sudo restorecon -v /var/www/html/index.html
- # 递归恢复目录的默认SELinux上下文
- sudo restorecon -Rv /var/www/html/
复制代码
SELinux布尔值允许调整策略行为:
- # 列出所有布尔值
- getsebool -a
- # 查看特定布尔值
- getsebool httpd_can_network_connect
- # 设置布尔值
- sudo setsebool httpd_can_network_connect on
- # 永久设置布尔值
- sudo setsebool -P httpd_can_network_connect on
复制代码- # 安装SELinux故障排除工具
- sudo dnf install setroubleshoot
- # 查看SELinux拒绝日志
- sudo sealert -a /var/log/audit/audit.log
- # 生成SELinux策略模块
- sudo audit2allow -M mymodule < /var/log/audit/audit.log
- sudo semodule -i mymodule.pp
复制代码
实战案例
配置Apache Web服务器的安全权限:
- # 安装Apache
- sudo dnf install httpd
- # 启动并启用Apache
- sudo systemctl start httpd
- sudo systemctl enable httpd
- # 创建网站目录
- sudo mkdir -p /var/www/example.com
- sudo chown -R apache:apache /var/www/example.com
- sudo chmod -R 755 /var/www/example.com
- # 设置SELinux上下文
- sudo semanage fcontext -a -t httpd_sys_content_t "/var/www/example.com(/.*)?"
- sudo restorecon -Rv /var/www/example.com
- # 允许Apache网络连接
- sudo setsebool -P httpd_can_network_connect on
- # 配置防火墙
- sudo firewall-cmd --permanent --add-service=http
- sudo firewall-cmd --permanent --add-service=https
- sudo firewall-cmd --reload
复制代码
配置安全的Samba文件共享:
- # 安装Samba
- sudo dnf install samba samba-client
- # 创建共享目录
- sudo mkdir -p /srv/samba/shared
- sudo chown -R nobody:nobody /srv/samba/shared
- sudo chmod -R 777 /srv/samba/shared
- # 配置Samba
- sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
- sudo nano /etc/samba/smb.conf
复制代码
添加以下配置:
- [shared]
- path = /srv/samba/shared
- browsable = yes
- writable = yes
- guest ok = yes
- read only = no
- valid users = @smbusers
- create mask = 0664
- directory mask = 0775
复制代码- # 创建Samba用户组
- sudo groupadd smbusers
- # 添加用户到Samba
- sudo usermod -aG smbusers username
- sudo smbpasswd -a username
- # 设置SELinux
- sudo setsebool -P samba_enable_home_dirs on
- sudo setsebool -P samba_export_all_rw on
- sudo semanage fcontext -a -t samba_share_t "/srv/samba/shared(/.*)?"
- sudo restorecon -Rv /srv/samba/shared
- # 配置防火墙
- sudo firewall-cmd --permanent --add-service=samba
- sudo firewall-cmd --reload
- # 启动并启用Samba服务
- sudo systemctl start smb nmb
- sudo systemctl enable smb nmb
复制代码
综合安全策略
系统更新与补丁管理
保持系统最新是安全防护的基础。
- # 安装dnf-automatic
- sudo dnf install dnf-automatic
- # 配置自动更新
- sudo nano /etc/dnf/automatic.conf
复制代码
修改以下配置:
- [commands]
- upgrade_type = default
- download_updates = yes
- apply_updates = yes
- [emitters]
- emit_via = motd
- [email]
- email_from = root@example.com
- email_to = admin@example.com
- email_host = localhost
- [base]
- debuglevel = 1
- random_sleep = 300
复制代码- # 启用并启动dnf-automatic服务
- sudo systemctl enable --now dnf-automatic.timer
复制代码- # 检查可用更新
- sudo dnf check-update
- # 更新所有软件包
- sudo dnf update
- # 更新特定软件包
- sudo dnf update package_name
- # 清理缓存
- sudo dnf clean all
复制代码
安全审计与日志分析
定期审计系统配置和分析日志是发现安全问题的关键。
- # 安装审计工具
- sudo dnf install audit
- # 启动并启用auditd服务
- sudo systemctl start auditd
- sudo systemctl enable auditd
- # 查看审计规则
- sudo auditctl -l
- # 添加审计规则(监控文件访问)
- sudo auditctl -w /etc/passwd -p wa -k passwd_changes
- sudo auditctl -w /etc/sudoers -p wa -k sudoers_changes
- # 查看审计日志
- sudo ausearch -k passwd_changes
- sudo ausearch -m AVC -ts recent
复制代码- # 安装日志分析工具
- sudo dnf install logwatch
- # 配置logwatch
- sudo cp /usr/share/logwatch/default.conf/logwatch.conf /etc/logwatch/conf/
- sudo nano /etc/logwatch/conf/logwatch.conf
复制代码
修改配置:
- Output = mail
- MailTo = admin@example.com
- Detail = High
复制代码- # 手动运行logwatch
- sudo logwatch --detail High --mailto admin@example.com --range today
复制代码- # 安装rsyslog
- sudo dnf install rsyslog
- # 配置远程日志服务器
- sudo nano /etc/rsyslog.conf
复制代码
添加以下配置:
- # 模块加载
- module(load="imtcp")
- input(type="imtcp" port="514")
- # 模板
- $template RemoteLogs,"/var/log/remote/%HOSTNAME%/%PROGRAMNAME%.log"
- *.* ?RemoteLogs
复制代码- # 重启rsyslog服务
- sudo systemctl restart rsyslog
- # 配置防火墙允许日志传输
- sudo firewall-cmd --permanent --add-port=514/tcp
- sudo firewall-cmd --reload
复制代码
入侵检测系统
入侵检测系统(IDS)可以帮助检测和响应潜在的安全威胁。
AIDE(Advanced Intrusion Detection Environment)是一个文件完整性检查工具。
- # 安装AIDE
- sudo dnf install aide
- # 初始化AIDE数据库
- sudo aide --init
- # 重命名数据库
- sudo mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db
- # 运行检查
- sudo aide --check
- # 创建定期检查任务
- sudo echo "0 3 * * * root /usr/sbin/aide --check | mail -s 'AIDE Report' admin@example.com" | sudo tee -a /etc/crontab > /dev/null
复制代码
OSSEC是一个开源的主机入侵检测系统。
- # 安装依赖
- sudo dnf install gcc make libevent-devel zlib-devel openssl-devel pcre2-devel
- # 下载并编译OSSEC
- cd /tmp
- wget https://github.com/ossec/ossec-hids/archive/3.7.0.tar.gz
- tar -xvzf 3.7.0.tar.gz
- cd ossec-hids-3.7.0
- sudo ./install
- # 按照安装向导进行配置
- # 启动OSSEC
- sudo /var/ossec/bin/ossec-control start
- # 检查状态
- sudo /var/ossec/bin/ossec-control status
复制代码
常见安全威胁及防御措施
恶意软件防护
虽然Linux系统相对较少受到恶意软件攻击,但仍需保持警惕。
- # 安装ClamAV
- sudo dnf install clamav clamav-update
- # 更新病毒数据库
- sudo freshclam
- # 扫描系统
- sudo clamscan -r --infected --remove /
- # 配置自动扫描
- sudo nano /etc/cron.daily/clamscan
复制代码
添加以下内容:
- #!/bin/bash
- LOG_FILE="/var/log/clamav/clamscan.log"
- EMAIL_TO="admin@example.com"
- # 更新病毒数据库
- freshclam
- # 扫描系统
- clamscan -r --infected --remove / >> $LOG_FILE
- # 如果发现感染,发送邮件
- if [ $(grep "Infected files" $LOG_FILE | cut -d" " -f3) != 0 ]; then
- cat $LOG_FILE | mail -s "ClamAV Scan Results" $EMAIL_TO
- fi
复制代码- # 设置可执行权限
- sudo chmod +x /etc/cron.daily/clamscan
复制代码- # 安装RKHunter
- sudo dnf install rkhunter
- # 更新数据库
- sudo rkhunter --update
- sudo rkhunter --propupd
- # 运行检查
- sudo rkhunter --checkall
- # 配置定期检查
- sudo echo "0 2 * * * root /usr/bin/rkhunter --checkall --cronjob | mail -s 'RKHunter Report' admin@example.com" | sudo tee -a /etc/crontab > /dev/null
复制代码
网络攻击防御
- # 安装fail2ban
- sudo dnf install fail2ban
- # 配置fail2ban
- sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
- sudo nano /etc/fail2ban/jail.local
复制代码
修改SSH保护配置:
- [sshd]
- enabled = true
- port = ssh,2222
- filter = sshd
- logpath = /var/log/secure
- maxretry = 3
- bantime = 3600
- findtime = 600
复制代码- # 启动并启用fail2ban
- sudo systemctl start fail2ban
- sudo systemctl enable fail2ban
- # 查看被禁止的IP
- sudo fail2ban-client status sshd
复制代码- # 安装portsentry
- sudo dnf install portsentry
- # 配置portsentry
- sudo nano /etc/portsentry/portsentry.conf
复制代码
修改配置:
- TCP_PORTS="1,7,9,11,15,20,21,23,25,69,79,80,109,110,111,119,138,139,143,512,513,514,515,540,635,1080,1524,2000,2001,4000,4001,5742,6000,6001,6667,12345,12346,20034,27665,31337,54320"
- UDP_PORTS="1,7,9,69,161,162,513,517,518,635,640,641,700,37444,34555,31337,54321"
- SCAN_TRIGGER="0"
- BLOCK_UDP="1"
- BLOCK_TCP="1"
复制代码- # 启动并启用portsentry
- sudo systemctl start portsentry
- sudo systemctl enable portsentry
复制代码
社会工程学防范
技术防护之外,用户意识也是安全的重要组成部分。
1. 密码安全:使用强密码(至少12个字符,包含大小写字母、数字和特殊字符)不同账户使用不同密码定期更换密码使用密码管理器
2. 使用强密码(至少12个字符,包含大小写字母、数字和特殊字符)
3. 不同账户使用不同密码
4. 定期更换密码
5. 使用密码管理器
6. 钓鱼攻击识别:验证发件人身份不点击可疑链接不下载未知附件警惕紧急或威胁性语言
7. 验证发件人身份
8. 不点击可疑链接
9. 不下载未知附件
10. 警惕紧急或威胁性语言
11. 社交工程防范:不向陌生人透露系统信息验证请求者身份遵循最小信息共享原则
12. 不向陌生人透露系统信息
13. 验证请求者身份
14. 遵循最小信息共享原则
密码安全:
• 使用强密码(至少12个字符,包含大小写字母、数字和特殊字符)
• 不同账户使用不同密码
• 定期更换密码
• 使用密码管理器
钓鱼攻击识别:
• 验证发件人身份
• 不点击可疑链接
• 不下载未知附件
• 警惕紧急或威胁性语言
社交工程防范:
• 不向陌生人透露系统信息
• 验证请求者身份
• 遵循最小信息共享原则
- # 设置密码策略
- sudo nano /etc/security/pwquality.conf
复制代码
修改配置:
- minlen = 12
- minclass = 4
- dcredit = -1
- ucredit = -1
- lcredit = -1
- ocredit = -1
- maxrepeat = 3
复制代码- # 设置密码过期策略
- sudo nano /etc/login.defs
复制代码
修改配置:
- PASS_MAX_DAYS 90
- PASS_MIN_DAYS 7
- PASS_WARN_AGE 14
复制代码- # 为现有用户设置密码过期
- sudo chage -M 90 username
复制代码
结论
Fedora Linux系统提供了强大的安全特性和工具,通过正确配置防火墙、实施加密技术和精细管理权限,用户可以构建安全稳定的计算环境,有效抵御各类网络威胁,保障个人隐私和数据安全。
本文详细介绍了Fedora Linux系统安全防护的实战技巧,包括:
1. 防火墙配置与管理:使用firewalld构建强大的网络防线,通过区域、服务和规则实现精细化控制。
2. 系统加密技术:从磁盘加密到网络通信加密,全方位保护数据安全。
3. 权限管理技巧:通过用户管理、文件权限控制和SELinux配置,实现细粒度的访问控制。
4. 综合安全策略:包括系统更新、安全审计和入侵检测,构建多层次防御体系。
5. 常见安全威胁防御:针对恶意软件、网络攻击和社会工程学的具体防护措施。
安全是一个持续的过程,而非一次性任务。建议用户定期审查和更新安全配置,保持警惕,及时响应新的安全威胁。通过结合技术措施和良好的安全习惯,Fedora Linux用户可以享受到既安全又自由的计算体验。
记住,在安全领域,没有绝对的安全,但通过本文介绍的方法和技巧,你可以显著提高Fedora Linux系统的安全性,为你的数据和隐私提供坚实的保护。 |
|