首页
人工智能
网络安全
手机
搜索
登录
搜索
golden81
累计撰写
154
篇文章
累计收到
0
条评论
首页
栏目
首页
人工智能
网络安全
手机
包含标签 【bash】 的文章
2025-4-24
firewalld防火墙
1. 基本概念 Firewalld 是 Linux 系统中用于管理防火墙规则的工具,基于 D-Bus 接口,支持动态更新规则而无需重启服务,适用于 CentOS 7+、RHEL 7+、Fedora 等系统。 核心功能:通过 区域(Zone) 和 服务(Service) 简化防火墙配置,支持 IPv4/IPv6、网络地址转换(NAT)、端口转发等。 2. 关键术语 区域(Zone):预定义的规则集合,根据网络环境的安全等级应用不同规则(如 public、private、trusted 等)。 服务(Service):预定义的端口 / 协议组合(如 ssh、http、https 等),可直接调用。 永久规则(Permanent):重启服务或系统后仍生效的规则。 临时规则(Non-permanent):仅在当前运行时生效,重启后失效。 二、Firewalld 常用命令 1. 服务控制 命令 说明 systemctl start firewalld 启动防火墙服务 systemctl stop firewalld 停止防火墙服务 systemctl restart firewalld 重启防火墙服务 systemctl enable firewalld 设置开机自启 systemctl disable firewalld 取消开机自启 systemctl status firewalld 查看服务状态(是否运行、规则加载情况等) 2. 查看状态 查看默认区域:bash firewall-cmd --get-default-zone 查看所有区域及规则:bash firewall-cmd --list-all-zones 查看当前区域规则:bash firewall-cmd --list-all # 临时规则 firewall-cmd --list-all --permanent # 永久规则 3. 区域管理 设置默认区域:bash firewall-cmd --set-default-zone=<zone-name> # 如 public 查询接口所属区域:bash firewall-cmd --get-zone-of-interface=<interface-name> # 如 eth0 将接口添加到指定区域:bash firewall-cmd --zone=<zone-name> --add-interface=<interface-name> --permanent 4. 服务与端口操作 允许服务通过防火墙:bash firewall-cmd --zone=<zone-name> --add-service=<service-name> --permanent # 如 ssh 禁止服务通过防火墙:bash firewall-cmd --zone=<zone-name> --remove-service=<service-name> --permanent 允许端口 / 协议通过防火墙:bash firewall-cmd --zone=<zone-name> --add-port=<port>/<protocol> --permanent # 如 80/tcp 示例:允许 TCP 8080 端口:bash firewall-cmd --add-port=8080/tcp --permanent 删除端口规则:bash firewall-cmd --zone=<zone-name> --remove-port=<port>/<protocol> --permanent 5. 重载与生效 加载永久规则(使修改生效):bash firewall-cmd --reload 临时规则立即生效(无需重启):bash firewall-cmd --add-service=http # 临时规则,重启后失效 三、预定义区域(Zone)详解 区域名称 安全级别 默认规则(允许的流量) 适用场景 public 最低 仅允许 SSH、DHCPv6 客户端 公共网络(如开放 Wi-Fi) private 中等 允许 SSH、MDNS、Samba 客户端等 家庭或办公网络 trusted 最高 允许所有流量 可信网络(如本地局域网) dmz 低 允许 SSH,拒绝其他入站流量 隔离区(DMZ)服务器 block 拒绝所有入站 仅响应出站请求 阻断所有外部连接 drop 拒绝所有入站 丢弃数据包(不响应) 严格阻断外部连接 四、高级功能配置 1. 端口转发(NAT) 启用 IP 转发(需先配置内核参数):bash echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf sysctl -p # 立即生效 配置端口转发规则:bash # 将外部 8080 端口转发到内部服务器 80 端口 firewall-cmd --add-forward-port=port=8080:proto=tcp:toport=80:toaddr=192.168.1.100 --permanent firewall-cmd --reload 2. 富规则(Rich Rules) 用于定义更复杂的规则(优先级高于普通规则):bash # 允许来自 192.168.1.0/24 的 SSH 连接 firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" service name="ssh" accept' --permanent # 拒绝特定 IP 访问 80 端口 firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="10.0.0.5" port port="80" protocol="tcp" reject' --permanent 3. 查看规则优先级 bash firewall-cmd --list-rich-rules # 查看富规则 firewall-cmd --list-ports # 查看端口规则 firewall-cmd --list-services # 查看服务规则 五、故障排除与注意事项 规则不生效? 检查是否添加了 --permanent 参数(永久规则需重载生效)。 使用 firewall-cmd --reload 重新加载规则。 确认区域是否正确应用到接口(firewall-cmd --get-zone-of-interface=<interface>)。 端口仍被阻止? 检查是否同时存在临时规则和永久规则,临时规则优先级更高。 使用 tcping 或 nmap 测试端口连通性:bash nmap -p <port> <target-ip> 服务与端口映射 部分服务(如 Docker)可能动态占用端口,需单独配置或关闭防火墙。 若服务未在预定义 service 中,需手动添加端口规则。 六、参考资料 官方文档:Firewalld Documentation CentOS 手册:man firewall-cmd 最佳实践:生产环境中建议先在测试环境验证规则,避免误封导致服务中断。 通过以上笔记,可快速掌握 Firewalld 的基础配置和高级功能,根据实际网络环境灵活调整规则,确保系统安全。 Firwalld防火墙笔记多 以下是进一步补充和扩展的 Firewalld 防火墙笔记,涵盖更多细节、实战技巧和常见场景,帮助你更全面地掌握这一工具: 七、Firewalld 配置文件解析 Firewalld 的配置存储在 /etc/firewalld/ 目录下,主要文件包括: firewalld.conf 全局配置文件,定义默认区域、日志级别、IPv6 支持等。 示例配置:ini [firewalld] default-zone=public ipv6_routing=no logging=off zones/ 目录 每个区域对应一个 .xml 文件(如 public.xml),存储该区域的规则。 手动编辑示例(添加 8080 端口规则):xml <zone name="public"> <port port="8080" protocol="tcp"/> </zone> 注意:手动修改配置文件后需执行 firewall-cmd --reload 加载规则。 services/ 目录 预定义服务的 .xml 文件(如 ssh.xml),可自定义服务。 自定义服务示例(创建 myapp.xml):xml <service name="myapp" short="My App Service" description="Allow My App Traffic"> <port port="5000" protocol="tcp"/> <port port="5001" protocol="udp"/> </service> 加载自定义服务:bash firewall-cmd --add-service=myapp --permanent 八、实战场景配置示例 1. 多网卡不同区域配置 需求:服务器有两张网卡,eth0 连接公网(public 区域),eth1 连接内网(private 区域)。配置步骤: bash # 将 eth0 加入 public 区域(默认可能已生效) firewall-cmd --zone=public --add-interface=eth0 --permanent # 将 eth1 加入 private 区域 firewall-cmd --zone=private --add-interface=eth1 --permanent # 分别配置区域规则: # public 区域仅允许 SSH 和 HTTP firewall-cmd --zone=public --add-service={ssh,http} --permanent # private 区域允许 SSH、Samba(文件共享)和自定义端口 3306 firewall-cmd --zone=private --add-service={ssh,samba} --add-port=3306/tcp --permanent firewall-cmd --reload 2. 基于时间的访问控制 需求:仅允许办公时段(9:00-18:00)访问 Web 服务(80 端口)。实现方法:结合富规则和 time 模块: bash firewall-cmd --zone=public --add-rich-rule='rule service name="http" accept time "weekdays 09:00-18:00"' --permanent firewall-cmd --reload 3. 容器环境下的防火墙配置(Docker) 问题:Docker 容器默认使用 NAT 模式,可能导致防火墙规则失效。解决方案: 允许 Docker 桥接接口(docker0)流量:bash firewall-cmd --zone=public --add-interface=docker0 --permanent firewall-cmd --reload 为容器指定固定 IP 并配置端口映射规则:bash # 假设容器 IP 为 172.17.0.2,映射主机 8080 到容器 80 firewall-cmd --add-forward-port=port=8080:proto=tcp:toport=80:toaddr=172.17.0.2 --permanent firewall-cmd --reload 九、性能优化与安全策略 1. 批量操作提升效率 使用 --permanent 和 --zone 参数批量添加规则,减少 --reload 次数:bash firewall-cmd --permanent --zone=public --add-service={ssh,https,dns} --add-port={8080,9090}/tcp firewall-cmd --reload # 仅需一次重载 2. 限制并发连接数与速率 通过富规则配置连接限制(防止 DDoS 入侵):bash # 限制 SSH 并发连接数为 5 个 firewall-cmd --zone=public --add-rich-rule='rule service name="ssh" limit value="5/minute" accept' --permanent # 限制 HTTP 流量速率为 100 包/秒 firewall-cmd --zone=public --add-rich-rule='rule service name="http" limit value="100/s" accept' --permanent 3. 启用日志记录 配置防火墙日志(记录被拒绝的流量):bash # 修改全局配置文件 sed -i 's/logging=off/logging=on/' /etc/firewalld/firewalld.conf sed -i 's/log-level=error/log-level=info/' /etc/firewalld/firewalld.conf # 在区域中开启日志(以 public 为例) firewall-cmd --zone=public --set-log-level=info --permanent firewall-cmd --zone=public --add-rich-rule='rule action="log" log-prefix="DENY: " level="info"' --permanent firewall-cmd --reload 查看日志:bash tail -f /var/log/firewalld 十、与其他工具对比 工具 优势 劣势 适用场景 Firewalld 动态更新、区域管理、图形界面支持 配置复杂度高于 iptables 企业级服务器、需要灵活规则的场景 Iptables 性能高、灵活性强 静态配置、需手动管理链 传统 Linux 服务器、性能敏感场景 Nftables 下一代防火墙,支持更复杂规则 学习曲线陡峭 高级网络策略、容器化环境(如 Kubernetes) 十一、常见错误与解决方法 错误:No rule to chain 原因:手动修改 iptables 规则导致 Firewalld 管理混乱。 解决:清空 iptables 规则并由 Firewalld 接管:bash iptables -F && iptables -X && iptables -t nat -F && iptables -t nat -X firewall-cmd --reload 错误:ZONE_CONFLICT 原因:同一接口被分配到多个区域。 解决:检查接口所属区域并调整:bash firewall-cmd --get-zone-of-interface=eth0 # 确认当前区域 firewall-cmd --zone=public --remove-interface=eth0 --permanent # 移除冲突区域 端口映射失效 原因:未启用 IP 转发或目标地址不可达。 解决:bash sysctl -w net.ipv4.ip_forward=1 # 临时启用 # 检查目标服务器是否可达 ping 192.168.1.100 十二、扩展学习资源 官方教程:Firewalld 入门指南 实战案例:使用 Firewalld 构建 DMZ 网络 社区工具: FirewallD Configuration Assistant:图形化配置工具(firewall-config 命令)。 Ansible 模块:通过 firewalld 模块自动化配置防火墙。
2025年-4月-24日
15 阅读
0 评论
网络安全
2025-4-23
系统安全及应用
一、Linux 系统安全基础 1. 用户与权限管理 核心原则: 最小权限原则:普通用户不使用 root 权限,通过sudo分配特定操作权限。 用户组隔离:按业务功能划分用户组(如www-data、docker),限制跨组访问。 关键操作: 禁用闲置账户:usermod -L <username>(锁定账户)或删除无用账户:userdel -r <username>。 强密码策略:通过/etc/pam.d/passwd配置密码复杂度(如pam_cracklib模块),强制定期修改密码(chage -M 90 <username>)。 sudo配置:编辑/etc/sudoers,限制用户仅能执行指定命令(如user ALL=(ALL) NOPASSWD: /usr/sbin/service httpd restart)。 2. 文件系统安全 权限控制: 重要文件权限示例: /etc/shadow(用户密码哈希):权限-rw-------,仅 root 可读。 /etc/sudoers:权限-rw-r--r--,需通过visudo编辑防止语法错误。 禁止用户修改关键目录:chattr +i /etc/passwd(添加不可变属性,需chattr -i取消)。 文件系统挂载选项: 挂载时禁用执行权限:mount -o noexec /dev/sdb1 /mnt/data(防止 U 盘恶意文件执行)。 启用nosuid和nodev:禁止 SUID 程序和设备文件创建(如/etc/fstab中设置/home nosuid,nodev)。 3. 内核安全加固 修改/etc/sysctl.conf配置: 禁止 IP 转发:net.ipv4.ip_forward = 0。 防范 SYN Flood 破坏:bash net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_max_syn_backlog = 4096 限制核心转储(Core Dump):fs.suid_dumpable = 0(防止敏感数据泄露)。 加载安全模块: 启用grsecurity或PaX内核补丁(增强内存保护,防范缓冲区溢出)。 二、网络安全防护 1. 防火墙配置 iptables 基础规则:bash # 清空默认规则 iptables -F iptables -X # 允许本地回环接口 iptables -A INPUT -i lo -j ACCEPT # 允许已建立的连接回流 iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # 仅允许SSH(22端口)、HTTP(80)、HTTPS(443)入站 iptables -A INPUT -p tcp --dport 22 -j ACCEPT iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp --dport 443 -j ACCEPT # 拒绝所有其他入站流量 iptables -P INPUT DROP # 保存规则(不同发行版命令可能不同,如Debian用iptables-persistent) service iptables save firewalld(CentOS 7 + 推荐):bash # 添加永久HTTP服务规则 firewall-cmd --permanent --add-service=http firewall-cmd --reload 2. SELinux 与 AppArmor SELinux(Security-Enhanced Linux): 模式:enforcing(强制模式,拦截违规操作)、permissive(仅日志记录,不拦截)。 查看状态:sestatus 修改文件上下文:chcon -t httpd_sys_content_t /var/www/html/newfile.txt(允许 HTTP 服务访问文件)。 AppArmor(Ubuntu 默认): 限制程序行为:aa-complain /usr/sbin/sshd(进入警告模式,测试规则)。 3. SSH 安全加固 禁止 root 直接登录:编辑/etc/ssh/sshd_config,设置PermitRootLogin no。 使用密钥认证: 生成密钥对:ssh-keygen -t rsa -b 4096 上传公钥至服务器:ssh-copy-id user@server 禁用密码登录:PasswordAuthentication no 限制登录来源:AllowUsers user1@192.168.1.*(仅允许指定 IP 段用户登录)。 三、服务与应用安全 1. Web 服务(如 Apache/Nginx) Apache 加固: 隐藏版本号:在httpd.conf中设置ServerTokens Prod、ServerSignature Off。 禁用危险模块:a2dismod autoindex(关闭目录索引)。 Nginx 配置示例:nginx server { listen 80; server_name example.com; return 301 https://$server_name$request_uri; # 强制HTTPS location / { deny all; # 默认拒绝所有访问,通过子规则开放特定路径 } } 2. 数据库服务(如 MySQL/PostgreSQL) MySQL 安全措施: 禁用远程 root 登录:UPDATE mysql.user SET Host='localhost' WHERE User='root'; 启用 SSL 连接:在my.cnf中配置require_secure_transport = ON。 PostgreSQL 访问控制:编辑pg_hba.conf,使用md5或sCRAM-SHA-256认证:bash host all all 127.0.0.1/32 scram-sha-256 3. 软件包管理与bug修复 定期更新系统: Debian/Ubuntu:apt update && apt upgrade -y RHEL/CentOS:yum update -y或dnf update -y(Fedora) bug扫描工具: yum install yum-plugin-security(查看可用安全补丁) OpenVAS或Nessus扫描系统bug。 四、日志监控与入侵检测 1. 系统日志管理 关键日志文件: 身份验证日志:/var/log/auth.log(记录 SSH 登录、sudo 操作) 系统服务日志:/var/log/syslog(通用系统消息) Apache/Nginx 日志:/var/log/apache2/access.log、/var/log/nginx/error.log 集中日志管理: 通过rsyslog将日志发送至远程服务器:bash # 在/etc/rsyslog.conf添加 *.* @remote-log-server:514 使用 ELK Stack 或logrotate进行日志分析和轮转。 2. 入侵检测工具 OSSEC(开源主机入侵检测系统): 监控文件完整性:检测/etc/passwd等关键文件修改。 实时告警:通过邮件或 API 发送异常行为通知。 Tripwire:基于文件哈希的完整性检查工具,定期对比文件变化。 实时进程监控:bash ps aux | grep -v grep | awk '{print $11}' | sort -u # 查看异常进程 lsof -i :80 # 查看占用80端口的进程 五、数据安全与加密 1. 磁盘加密 LUKS(Linux Unified Key Setup):bash # 加密新分区 cryptsetup luksFormat /dev/sdb1 cryptsetup luksOpen /dev/sdb1 encrypted_data mkfs.ext4 /dev/mapper/encrypted_data 文件级加密: gpg加密文件:gpg -c sensitive.txt(生成加密文件sensitive.txt.gpg)。 ecryptfs加密用户目录:ecryptfs-setup-private(自动加密 /home/user 目录)。 2. 传输安全 使用scp/sftp替代ftp/scp传输文件。 配置 VPN(如 OpenVPN)实现安全远程访问:bash # OpenVPN服务器配置示例 port 1194 proto udp dev tun ca /etc/openvpn/ca.crt cert /etc/openvpn/server.crt key /etc/openvpn/server.key 六、安全最佳实践 最小化安装:仅安装必要服务,卸载无用软件(如yum remove httpd)。 禁用不需要的服务:bash systemctl disable --now telnet.socket # 禁用Telnet服务 systemctl status | grep "enabled" # 检查开机自启服务 定期备份: 全量备份:tar -czvf /backup/full_$(date +%F).tar.gz /etc /var/www 增量备份:使用rsync --inplace --backup-dir。 应急响应流程: 发现异常进程:使用kill -9 <PID>终止,结合netstat -antp查看连接来源。 检查可疑文件:ls -ltr /tmp(查看临时目录近期修改文件)、使用rkhunter扫描 Rootkit。 七、常用 Linux 安全工具列表 类别 工具 功能描述 防火墙 iptables/firewalld 配置网络流量过滤规则 入侵检测 OSSEC、Tripwire 监控系统异常和文件篡改 bug扫描 Lynis、OpenVAS 检测系统配置缺陷和软件bug 日志分析 Logwatch、GoAccess 生成日志报告、可视化 Web 访问日志 安全审计 sudo-audit、auditd 记录 sudo 操作、系统调用审计 加密工具 GPG、LUKS 文件加密、磁盘加密 网络监控 nmap、tcpdump、iftop 端口扫描、抓包分析、流量监控 八、云环境下的 Linux 安全补充 容器安全: 使用Docker Security Scanning扫描镜像bug。 限制容器权限:docker run --security-opt=no-new-privileges。 云服务商工具: AWS:EC2 Instance Metadata Service (IMDSv2) 防窃取元数据。 阿里云:开启安全组隔离、使用云盾主机安全。
2025年-4月-23日
10 阅读
0 评论
网络安全