|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
引言
Rocky Linux作为CentOS的替代品,已经成为许多企业的首选服务器操作系统。随着网络安全威胁的不断增加,确保Rocky Linux服务器的安全性变得尤为重要。本文将从基础检查到高级防护,全面介绍Rocky Linux系统安全校验的实用技巧,帮助企业IT管理员构建安全无忧的服务器环境。
基础安全检查
系统更新与补丁管理
保持系统更新是确保服务器安全的第一步。Rocky Linux使用dnf(或yum)包管理器来管理软件包和更新。
- # 检查可用的更新
- sudo dnf check-update
- # 安装所有可用更新
- sudo dnf update -y
- # 仅安装安全更新
- sudo dnf update --security
- # 设置自动更新
- sudo dnf install -y dnf-automatic
- sudo systemctl enable --now dnf-automatic.timer
复制代码
为了确保系统及时获取安全更新,建议配置自动更新。但生产环境中,建议先在测试环境中验证更新后再部署到生产环境。
用户账户安全管理
定期审核系统用户账户是必要的安全措施:
- # 列出所有用户
- cat /etc/passwd | cut -d: -f1
- # 列出具有登录权限的用户
- grep '/bin/bash' /etc/passwd | cut -d: -f1
- # 检查空密码账户
- sudo awk -F: '($2 == "") {print}' /etc/shadow
- # 检查UID为0的账户(除root外)
- sudo awk -F: '($3 == 0) {print}' /etc/passwd
复制代码
强密码策略是防止暴力破解的基础:
- # 安装libpwquality(如果尚未安装)
- sudo dnf install -y libpwquality
- # 编辑密码策略配置
- sudo vi /etc/security/pwquality.conf
- # 示例配置:
- minlen = 12
- minclass = 3
- maxrepeat = 3
- dcredit = -1
- ucredit = -1
- lcredit = -1
- ocredit = -1
复制代码
这些设置要求密码至少12个字符,包含至少3种字符类型(大写、小写、数字、特殊字符),最多连续重复3个相同字符,并且至少包含一个数字、一个大写字母、一个小写字母和一个特殊字符。
配置登录失败后的账户锁定策略:
- # 编辑/etc/pam.d/system-auth文件
- sudo vi /etc/pam.d/system-auth
- # 在auth部分添加以下行(如果不存在):
- auth required pam_tally2.so deny=5 unlock_time=900 onerr=fail audit
- # 在account部分添加以下行(如果不存在):
- account required pam_tally2.so
复制代码
此配置将在5次登录失败后锁定账户15分钟。
文件系统与权限安全
检查关键系统文件的权限:
- # 检查关键目录权限
- ls -ld /etc /etc/passwd /etc/shadow /etc/group /etc/gshadow
- # 检查SUID/SGID文件
- find / -type f \( -perm -4000 -o -perm -2000 \) -ls 2>/dev/null
- # 检查全局可写文件
- find / -type f -perm -o+w -ls 2>/dev/null
- # 检查无主文件
- find / -nouser -o -nogroup -ls 2>/dev/null
复制代码
对于敏感数据,可以使用LUKS(Linux Unified Key Setup)进行加密:
- # 安装cryptsetup
- sudo dnf install -y cryptsetup
- # 创建加密分区(假设设备为/dev/sdb1)
- sudo cryptsetup luksFormat /dev/sdb1
- sudo cryptsetup open /dev/sdb1 encrypted_data
- sudo mkfs.ext4 /dev/mapper/encrypted_data
- sudo mount /dev/mapper/encrypted_data /mnt/encrypted
- # 创建自动挂载配置
- echo "encrypted_data /dev/sdb1 /mnt/encrypted ext4 defaults 0 0" | sudo tee -a /etc/crypttab
- echo "/dev/mapper/encrypted_data /mnt/encrypted ext4 defaults 0 0" | sudo tee -a /etc/fstab
复制代码
网络安全配置
防火墙配置
Rocky Linux使用firewalld作为默认防火墙管理工具:
- # 安装并启用firewalld
- sudo dnf install -y firewalld
- sudo systemctl enable --now firewalld
- # 查看默认区域和活动区域
- sudo firewall-cmd --get-default-zone
- sudo firewall-cmd --get-active-zones
- # 开放特定端口(如HTTP和HTTPS)
- sudo firewall-cmd --permanent --add-service=http
- sudo firewall-cmd --permanent --add-service=https
- sudo firewall-cmd --reload
- # 限制特定IP访问
- sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" service name="ssh" accept'
- sudo firewall-cmd --reload
- # 拒绝特定IP访问
- sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.0.0.100" reject'
- sudo firewall-cmd --reload
复制代码
网络服务安全
SSH是服务器管理的常用工具,但其默认配置可能存在安全风险:
- # 编辑SSH配置文件
- sudo vi /etc/ssh/sshd_config
- # 建议的安全配置:
- Port 2222 # 更改默认端口
- PermitRootLogin no # 禁止root登录
- PasswordAuthentication no # 禁用密码认证,仅允许密钥认证
- PubkeyAuthentication yes # 启用公钥认证
- PermitEmptyPasswords no # 禁止空密码
- MaxAuthTries 3 # 最大认证尝试次数
- LoginGraceTime 60 # 登录宽限时间
- AllowUsers user1 user2 # 仅允许特定用户登录
- AllowGroups sshusers # 仅允许特定组登录
- # 重启SSH服务
- sudo systemctl restart sshd
复制代码
减少攻击面需要禁用不必要的服务:
- # 列出所有启用的服务
- sudo systemctl list-unit-files | grep enabled
- # 禁用不必要的服务(示例)
- sudo systemctl disable telnet.socket
- sudo systemctl disable rsh.socket
- sudo systemctl disable rexec.socket
- sudo systemctl disable nfs-server
- sudo systemctl disable rpcbind
- sudo systemctl disable avahi-daemon
复制代码
网络参数调优
通过调整内核网络参数来增强安全性:
- # 编辑sysctl配置文件
- sudo vi /etc/sysctl.d/99-security.conf
- # 添加以下配置:
- # 启用IP欺骗保护
- net.ipv4.conf.all.rp_filter = 1
- net.ipv4.conf.default.rp_filter = 1
- # 禁用IP源路由
- net.ipv4.conf.all.accept_source_route = 0
- net.ipv4.conf.default.accept_source_route = 0
- net.ipv6.conf.all.accept_source_route = 0
- net.ipv6.conf.default.accept_source_route = 0
- # 忽略ICMP重定向
- net.ipv4.conf.all.accept_redirects = 0
- net.ipv4.conf.default.accept_redirects = 0
- net.ipv6.conf.all.accept_redirects = 0
- net.ipv6.conf.default.accept_redirects = 0
- # 忽略发送ICMP重定向
- net.ipv4.conf.all.send_redirects = 0
- net.ipv4.conf.default.send_redirects = 0
- # 不启用IP转发
- net.ipv4.ip_forward = 0
- net.ipv6.conf.all.forwarding = 0
- # 启用TCP SYN Cookie保护
- net.ipv4.tcp_syncookies = 1
- # 防止TCP时间戳攻击
- net.ipv4.tcp_timestamps = 0
- # 记录可疑数据包
- net.ipv4.conf.all.log_martians = 1
- net.ipv4.conf.default.log_martians = 1
- # 应用配置
- sudo sysctl -p /etc/sysctl.d/99-security.conf
复制代码
高级安全防护
SELinux配置
SELinux(Security-Enhanced Linux)是Linux内核的安全模块,提供强制访问控制(MAC):
- # 检查SELinux状态
- sestatus
- # 设置SELinux为强制模式
- sudo setenforce 1
- sudo vi /etc/selinux/config
- # 设置SELINUX=enforcing
- # 查看文件和进程的SELinux上下文
- ls -Z
- ps -eZ
- # 修改文件或目录的SELinux上下文
- sudo chcon -t httpd_sys_content_t /var/www/html/index.html
- # 永久保存SELinux上下文修改
- sudo semanage fcontext -a -t httpd_sys_content_t "/var/www/html(/.*)?"
- sudo restorecon -Rv /var/www/html
- # 查看SELinux布尔值
- getsebool -a
- # 设置SELinux布尔值
- sudo setsebool -P httpd_can_network_connect on
- # 查看SELinux拒绝日志
- sudo ausearch -m avc -ts recent
- sudo sealert -a /var/log/audit/audit.log
复制代码
入侵检测系统
AIDE是一个文件完整性检查工具:
- # 安装AIDE
- sudo dnf install -y aide
- # 初始化AIDE数据库
- sudo aide --init
- # 将新数据库移动到正确位置
- sudo mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz
- # 执行系统检查
- sudo aide --check
- # 创建定期检查任务
- echo "0 3 * * * root /usr/sbin/aide --check | mail -s 'AIDE Report' admin@example.com" | sudo tee -a /etc/crontab
复制代码
Fail2ban可以防止暴力破解攻击:
- # 安装Fail2ban
- sudo dnf install -y fail2ban
- # 创建本地配置文件
- sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
- # 编辑配置文件
- sudo vi /etc/fail2ban/jail.local
- # 示例SSH保护配置:
- [sshd]
- enabled = true
- port = 2222
- filter = sshd
- logpath = /var/log/secure
- maxretry = 3
- bantime = 3600
- findtime = 600
- # 启动并启用Fail2ban
- sudo systemctl enable --now fail2ban
- # 查看被禁止的IP
- sudo fail2ban-client status sshd
复制代码
安全审计
Auditd提供系统审计功能:
- # 安装auditd
- sudo dnf install -y audit
- # 启动并启用auditd
- sudo systemctl enable --now auditd
- # 添加审计规则
- # 监控文件访问
- sudo auditctl -w /etc/passwd -p wa -k passwd_changes
- sudo auditctl -w /etc/shadow -p wa -k shadow_changes
- sudo auditctl -w /etc/group -p wa -k group_changes
- # 监控系统调用
- sudo auditctl -a always,exit -F arch=b64 -S execve -k process_creation
- # 监控登录尝试
- sudo auditctl -w /var/log/lastlog -p wa -k logins
- sudo auditctl -w /var/log/faillog -p wa -k logins
- # 永久保存规则
- sudo auditctl -l | sudo tee /etc/audit/rules.d/audit.rules
- # 查看审计日志
- sudo ausearch -k passwd_changes
- sudo aureport -m
复制代码
配置集中式日志管理:
- # 安装rsyslog
- sudo dnf install -y rsyslog
- # 编辑rsyslog配置
- sudo vi /etc/rsyslog.conf
- # 取消注释以下行以启用TCP日志接收:
- # Provides TCP syslog reception
- module(load="imtcp")
- input(type="imtcp" port="514")
- # 配置日志模板
- $template RemoteLogs,"/var/log/remote/%HOSTNAME%/%PROGRAMNAME%.log"
- *.* ?RemoteLogs
- # 重启rsyslog服务
- sudo systemctl restart rsyslog
- # 配置日志轮转
- sudo vi /etc/logrotate.d/syslog
- # 示例配置:
- /var/log/remote/*/*.log {
- daily
- missingok
- rotate 7
- compress
- delaycompress
- notifempty
- create 640 root adm
- sharedscripts
- postrotate
- /usr/bin/systemctl reload rsyslog >/dev/null 2>&1 || true
- endscript
- }
复制代码
安全监控与日志分析
实时监控工具
osquery是一个操作系统检测和分析框架:
- # 添加osquery仓库
- sudo rpm -ivh https://pkg.osquery.io/rpm/osquery-s3.rpm
- # 安装osquery
- sudo dnf install -y osquery
- # 配置osquery
- sudo vi /etc/osquery/osquery.conf
- # 示例配置:
- {
- "options": {
- "host_identifier": "hostname",
- "schedule_splay_percent": 10
- },
- "schedule": {
- "process_info": {
- "query": "SELECT pid, name, path, cmdline FROM processes",
- "interval": 60
- },
- "listening_ports": {
- "query": "SELECT pid, port, protocol, address FROM listening_ports",
- "interval": 60
- },
- "logged_in_users": {
- "query": "SELECT user, tty, host, time FROM logged_in_users",
- "interval": 360
- }
- }
- }
- # 启动并启用osqueryd
- sudo systemctl enable --now osqueryd
- # 交互式查询
- sudo osqueryi
复制代码
Wazuh是一个开源的安全监控平台:
- # 添加Wazuh仓库
- sudo rpm --import https://packages.wazuh.com/key/GPG-KEY-WAZUH
- echo -e '[wazuh]\ngpgcheck=1\ngpgkey=https://packages.wazuh.com/key/GPG-KEY-WAZUH\nenabled=1\nname=EL-$releasever - Wazuh\nbaseurl=https://packages.wazuh.com/4.x/yum/\nprotect=1' | sudo tee /etc/yum.repos.d/wazuh.repo
- # 安装Wazuh agent
- sudo dnf install -y wazuh-agent
- # 配置Wazuh agent
- sudo vi /var/ossec/etc/ossec.conf
- # 配置服务器地址(示例):
- <ossec_config>
- <client>
- <server>
- <address>MANAGER_IP</address>
- <port>1514</port>
- <protocol>tcp</protocol>
- </server>
- </client>
- </ossec_config>
- # 启动并启用Wazuh agent
- sudo systemctl enable --now wazuh-agent
复制代码
日志分析工具
ELK Stack是一个强大的日志分析平台:
- # 安装Elasticsearch
- sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
- echo -e '[elasticsearch-7.x]\nname=Elasticsearch repository for 7.x packages\nbaseurl=https://artifacts.elastic.co/packages/7.x/yum\ngpgcheck=1\ngpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch\nenabled=1\nautorefresh=1\ntype=rpm-md' | sudo tee /etc/yum.repos.d/elasticsearch.repo
- sudo dnf install -y elasticsearch
- sudo systemctl enable --now elasticsearch
- # 安装Logstash
- echo -e '[logstash-7.x]\nname=Elasticsearch repository for 7.x packages\nbaseurl=https://artifacts.elastic.co/packages/7.x/yum\ngpgcheck=1\ngpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch\nenabled=1\nautorefresh=1\ntype=rpm-md' | sudo tee /etc/yum.repos.d/logstash.repo
- sudo dnf install -y logstash
- # 配置Logstash
- sudo vi /etc/logstash/conf.d/syslog.conf
- # 示例配置:
- input {
- tcp {
- port => 514
- type => syslog
- }
- udp {
- port => 514
- type => syslog
- }
- }
- filter {
- if [type] == "syslog" {
- grok {
- match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
- }
- date {
- match => [ "syslog_timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ]
- }
- }
- }
- output {
- elasticsearch {
- hosts => ["localhost:9200"]
- index => "syslog-%{+YYYY.MM.dd}"
- }
- }
- # 启动并启用Logstash
- sudo systemctl enable --now logstash
- # 安装Kibana
- echo -e '[kibana-7.x]\nname=Kibana repository for 7.x packages\nbaseurl=https://artifacts.elastic.co/packages/7.x/yum\ngpgcheck=1\ngpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch\nenabled=1\nautorefresh=1\ntype=rpm-md' | sudo tee /etc/yum.repos.d/kibana.repo
- sudo dnf install -y kibana
- # 配置Kibana
- sudo vi /etc/kibana/kibana.yml
- # 设置服务器地址:
- server.host: "0.0.0.0"
- elasticsearch.hosts: ["http://localhost:9200"]
- # 启动并启用Kibana
- sudo systemctl enable --now kibana
复制代码
安全应急响应
入侵检测与响应
Lynis是一个强大的安全审计工具:
- # 安装Lynis
- sudo dnf install -y lynis
- # 执行系统安全扫描
- sudo lynis audit system
- # 查看扫描报告
- sudo cat /var/log/lynis-report.dat
- # 定期执行扫描
- echo "0 3 * * * root /usr/bin/lynis audit system --quiet" | sudo tee -a /etc/crontab
复制代码
Chkrootkit是一个检测rootkit的工具:
- # 安装Chkrootkit
- sudo dnf install -y chkrootkit
- # 执行检测
- sudo chkrootkit
- # 定期执行检测
- echo "0 2 * * * root /usr/sbin/chkrootkit | mail -s 'Chkrootkit Report' admin@example.com" | sudo tee -a /etc/crontab
复制代码
事件响应流程
创建一个简单的自动化应急响应脚本:
最佳实践与建议
企业环境下的安全基线配置
创建Rocky Linux安全基线配置:
安全意识培训
安全意识培训是企业安全的重要组成部分:
- # 创建安全意识培训文档
- sudo vi /etc/security/security-awareness.md
- # 示例内容:
- # # 安全意识培训指南
- # ## 1. 密码安全
- # - 使用强密码(至少12个字符,包含大小写字母、数字和特殊字符)
- # - 不同系统使用不同密码
- # - 定期更换密码
- # - 使用密码管理器
- # - 启用多因素认证
- # ## 2. 邮件安全
- # - 警惕钓鱼邮件
- - 不点击可疑链接
- - 不下载可疑附件
- - 验证发件人身份
- - 使用加密邮件
- # ## 3. 网络安全
- # - 使用VPN连接公司网络
- # - 避免使用公共Wi-Fi处理敏感信息
- # - 确保网站使用HTTPS
- # - 不随意连接未知USB设备
- # ## 4. 社交工程防护
- # - 不随意透露个人信息
- # - 验证身份请求
- # - 警惕紧急请求
- # - 报告可疑活动
- # ## 5. 设备安全
- # - 使用设备加密
- # - 设置设备锁屏密码
- # - 及时更新操作系统和应用
- # - 不越狱或root设备
- # ## 6. 数据处理
- # - 遵循数据分类标准
- # - 不在个人设备上处理敏感数据
- # - 安全传输数据
- # - 正确处置数据
- # ## 7. 事件报告
- # - 了解安全事件类型
- # - 知道如何报告安全事件
- # - 不试图自行解决安全问题
- # - 配合安全调查
复制代码
总结
Rocky Linux系统安全是一个多层次、全方位的工作,需要从基础检查到高级防护全面考虑。本文详细介绍了Rocky Linux系统安全校验的各个方面,包括:
1. 基础安全检查:系统更新、用户管理、文件权限等
2. 网络安全配置:防火墙设置、网络服务安全等
3. 高级安全防护:SELinux、入侵检测系统、安全审计等
4. 安全监控与日志分析:实时监控工具和日志分析平台
5. 安全应急响应:入侵检测与响应、事件响应流程
6. 最佳实践与建议:企业环境下的安全策略和安全意识培训
通过实施这些安全措施,企业可以显著提高Rocky Linux服务器的安全性,降低安全风险,确保服务器安全无忧。然而,安全是一个持续的过程,需要定期评估、更新和改进安全策略,以应对不断变化的安全威胁。
希望本文提供的实用技巧和详细示例能够帮助IT管理员更好地保护Rocky Linux服务器,构建安全可靠的企业IT环境。 |
|