网络安全相关知识
持续更新,网络安全相关知识
26、
你可能是想执行 firewall-cmd --permanent --add-service=https 命令(注意是 firewall-cmd 而非 firewalld -cmd),这是 Linux 系统中通过 firewalld 防火墙 永久开放 HTTPS 服务(默认端口 443/TCP)的命令,用于允许外部通过 HTTPS 协议访问服务器。
命令解析
firewall-cmd:firewalld 防火墙的命令行管理工具。
--permanent:表示配置为永久生效(若不加此参数,配置仅在当前会话有效,重启 firewalld 后失效)。
--add-service=https:添加预定义的 https 服务规则(firewalld 内置了常见服务的端口定义,https 对应 TCP 443 端口)。
执行效果
执行该命令后,firewalld 会永久允许外部主机通过 TCP 443 端口 访问本机(即允许 HTTPS 服务的入站连接),适用于部署了 HTTPS 网站(如 Nginx、Apache 配置了 SSL/TLS)的服务器。
完整操作流程
添加永久规则:
bash
sudo firewall-cmd --permanent --add-service=https
成功会返回 success。
重新加载防火墙配置:由于使用了 --permanent,需要重新加载配置使规则生效:
bash
sudo firewall-cmd --reload
验证规则是否生效:查看当前活跃的规则,确认 HTTPS 服务已开放:
bash
sudo firewall-cmd --list-services
输出中若包含 https,表示规则已生效。
相关补充
临时开放 HTTPS:若只需临时开放(重启防火墙后失效),去掉 --permanent 即可:
bash
sudo firewall-cmd --add-service=https
移除 HTTPS 规则:如需关闭 HTTPS 访问,执行:
bash
sudo firewall-cmd --permanent --remove-service=https # 移除永久规则
sudo firewall-cmd --reload # 重新加载
直接开放端口:若服务未使用默认端口(如 HTTPS 用了 8443 端口),可直接指定端口开放:
bash
sudo firewall-cmd --permanent --add-port=8443/tcp # 永久开放 TCP 8443 端口
sudo firewall-cmd --reload
注意事项
必须使用 sudo 或 root 权限执行,普通用户无权限修改防火墙配置。
--permanent 规则会保存在 /etc/firewalld/ 目录下,重启 firewalld 服务或系统后依然有效。
开放端口 / 服务前,需确保对应的服务(如 Nginx 的 HTTPS 配置)已正确部署,否则开放后仍无法访问。
通过该命令可快速配置防火墙允许 HTTPS 访问,是部署 HTTPS 网站时的必要操作之一。
firewall-cmd reload
firewall-cmd --zone=public --list-all
27、
spamassassin -t
systemctl start spamassassin
loacal.cf
28、clamAV
which clamd
sudo systemctl start clamav-daemon//重启clamav工具
sudo systemctl status clamav-daemon//检查服务状态
ClamAV 包含多个核心工具,协同完成病毒扫描和管理:
clamd:ClamAV 守护进程(后台服务),用于提供持续的扫描服务,支持实时监控(inotify 机制)和客户端连接。
clamscan:命令行扫描工具,用于手动触发文件 / 目录扫描(无需启动 clamd 服务)。
freshclam:病毒库更新工具,用于下载和更新最新的病毒特征库(.cvd 文件)。
sigtool:病毒特征库管理工具,用于验证、查看或创建病毒特征。
基本使用流程
1. 安装 ClamAV
Debian/Ubuntu:
bash
sudo apt update && sudo apt install clamav clamav-daemon
CentOS/RHEL:
bash
sudo yum install clamav clamav-server
安装后需停止 freshclam 服务(首次更新需要):
bash
sudo systemctl stop clamav-freshclam
2. 更新病毒库
首次使用或需要更新时,执行:
bash
sudo freshclam # 手动更新病毒库
更新完成后,病毒库文件默认存储在 /var/lib/clamav/(如 main.cvd、daily.cvd)。
配置自动更新:启动 freshclam 服务,默认会定期(每小时)自动更新:
bash
sudo systemctl start clamav-freshclam
sudo systemctl enable clamav-freshclam # 开机自启
3. 手动扫描(clamscan)
适合临时扫描文件或目录,无需启动 clamd 服务:
bash
# 扫描指定目录(如 /home),仅显示感染文件
sudo clamscan --infected --recursive /home
# 扫描单个文件
sudo clamscan /tmp/suspicious_file.exe
# 扫描并自动删除感染文件(谨慎使用)
sudo clamscan --infected --remove /path/to/dir
常用参数:
--infected:仅显示被感染的文件(忽略正常文件)。
--recursive:递归扫描子目录(-r 简写)。
--remove:自动删除感染文件。
--quiet:安静模式,仅输出关键信息。
4. 后台服务扫描(clamd)
通过 clamd 守护进程提供高效扫描(适合频繁扫描或实时监控):
启动 clamd 服务:
bash
sudo systemctl start clamd
sudo systemctl enable clamd # 开机自启
使用 clamdscan 客户端调用服务扫描(速度比 clamscan 快,因为病毒库已加载到内存):
bash
sudo clamdscan --infected /home # 扫描 /home 目录
5. 实时监控(clamonacc)
通过 clamonacc 工具(需 clamd 支持)实时监控文件系统变化,自动扫描新创建 / 修改的文件:
bash
sudo clamonacc --foreground # 前台运行,实时监控并输出日志
可通过配置文件 /etc/clamav/clamd.conf 调整监控目录和行为。
注意事项
权限问题:扫描系统目录或其他用户文件时,需使用 sudo 权限,否则可能因权限不足导致漏扫。
误报处理:开源病毒库可能存在一定误报,建议对 “感染文件” 手动验证后再处理(尤其是 --remove 参数需谨慎)。
性能影响:全系统扫描可能占用较多 CPU 和 I/O 资源,建议在非业务高峰期执行。
病毒库存储:病毒库默认路径可在 /etc/clamav/freshclam.conf 中修改(DatabaseDirectory 配置项)。
ClamAV 凭借开源免费、轻量高效的特点,成为服务器端反病毒的首选工具之一,尤其适合对成本敏感或需要自定义集成的场景(如邮件服务器、文件服务器的恶意文件检测)
Amavis 是一款开源的邮件内容过滤系统,主要用于邮件服务器(如 Postfix、Sendmail 等)的安全防护,核心功能是扫描邮件中的恶意软件(病毒、木马)、垃圾邮件,并检测邮件内容是否符合安全策略(如禁止附件类型、邮件大小限制等),是邮件服务器的重要安全组件。
核心功能
病毒扫描集成反病毒引擎(如 ClamAV、Sophos、F-Prot 等),自动扫描邮件正文及附件,拦截含恶意软件的邮件。
垃圾邮件检测结合多种反垃圾邮件技术(如 SpamAssassin 评分、DNS 黑名单(DNSBL)、发件人信誉验证等),对邮件进行垃圾邮件判定并标记或拦截。
内容过滤
禁止特定类型的附件(如 .exe、.bat 等可执行文件);
限制邮件大小、正文长度或特定关键词;
检测邮件是否包含钓鱼链接、恶意脚本等。
邮件规范化处理邮件格式(如转换编码、移除不安全的 HTML 标签),减少邮件客户端解析漏洞带来的风险。
集成与扩展性可与主流邮件服务器(Postfix、Exim 等)无缝集成,支持自定义规则和第三方插件扩展功能。
工作原理
Amavis 通常作为邮件服务器的 “中间代理” 工作,流程如下:
外部邮件发送到邮件服务器(如 Postfix);
邮件服务器将邮件转发给 Amavis 进行处理;
Amavis 调用病毒扫描引擎、垃圾邮件过滤器等对邮件进行检测;
根据检测结果(如 “含病毒”“垃圾邮件”“正常邮件”),Amavis 向邮件服务器返回处理建议(如 “拒收”“标记后放行”“直接放行”);
邮件服务器根据 Amavis 的建议完成最终的邮件投递或拦截。
典型组件与集成
Amavis 本身不直接提供病毒扫描或垃圾邮件检测能力,而是通过集成其他工具实现功能:
病毒扫描:最常用 ClamAV(开源免费),也可集成商业反病毒引擎;
垃圾邮件检测:主要依赖 SpamAssassin(开源的垃圾邮件评分系统);
邮件服务器:通常与 Postfix 配合使用(通过 content_filter 配置转发邮件到 Amavis)。
基本使用(以与 Postfix + ClamAV + SpamAssassin 集成为例)
1. 安装组件
bash
# Debian/Ubuntu 示例
sudo apt install amavisd-new clamav clamav-daemon spamassassin
2. 配置 Amavis
核心配置文件为 /etc/amavis/conf.d/50-user,可自定义规则:
perl
# 启用病毒扫描和垃圾邮件检测
@bypass_virus_checks_maps = (0); # 不绕过病毒扫描
@bypass_spam_checks_maps = (0); # 不绕过垃圾邮件检测
# 禁止的附件类型(如可执行文件)
%banned_filename_re = (
qr/\.exe$/i => 1,
qr/\.bat$/i => 1,
qr/\.vbs$/i => 1,
);
# 垃圾邮件阈值(SpamAssassin 评分超过 5 分标记为垃圾邮件)
$sa_tag_level_deflt = 5.0;
$sa_kill_level_deflt = 10.0; # 超过 10 分直接拦截
3. 配置 Postfix 转发邮件到 Amavis
修改 Postfix 配置 /etc/postfix/main.cf,添加内容过滤:
ini
content_filter = amavis:[127.0.0.1]:10024 # 转发邮件到 Amavis 监听的端口
修改 /etc/postfix/master.cf,添加 Amavis 反馈通道:
ini
amavis unix - - n - 2 smtp
-o smtp_data_done_timeout=1200
-o smtp_send_xforward_command=yes
127.0.0.1:10025 inet n - n - - smtpd
-o content_filter=
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_client_restrictions=
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks=127.0.0.0/8
-o strict_rfc821_envelopes=yes
-o smtpd_error_sleep_time=0
-o smtpd_soft_error_limit=1001
-o smtpd_hard_error_limit=1000
4. 启动服务
bash
sudo systemctl restart amavisd clamav-daemon spamassassin postfix
注意事项
性能优化:Amavis 处理邮件会增加服务器负载,建议根据邮件流量调整 amavisd 进程数(配置文件中 $max_servers)。
误判处理:垃圾邮件检测可能存在误判,需定期查看日志(如 /var/log/amavis/amavis.log),添加白名单($whitelist_senders)或调整评分阈值。
病毒库更新:确保集成的反病毒引擎(如 ClamAV)病毒库实时更新,否则无法检测新威胁。
兼容性:不同版本的 Amavis 与邮件服务器、扫描引擎可能存在兼容性问题,建议选择稳定版本并参考官方文档配置。
Amavis 作为邮件安全的 “守门人”,通过整合多种安全工具,为邮件服务器提供全方位的内容防护,是企业和个人邮件系统抵御恶意邮件威胁的核心方案之一。
sudo systemctl restart amavis
sudo systemctl restart clamav-daemon
awk命令统计日志中的所有IP地址:
awk '{count[$1]++} END {for (ip in count) print ip}' access_log20250304.log
awk命令统计日志中的所有IP地址及其访问次数:
awk '{count[$1]++} END {for (ip in count) print ip, count[ip]' accesslog20250304.log
(3)准确选出了访问量最高的前10个IP地址及其访问次数(1分)
通过awk命令统计,awk命令:
awk '{count[$1]++} END {for (ip in count) print ip, count[ip] | "sort-k2-r|head-n10
access_log20250304.log
awk命令统计日志中所有包含404状态码的请求:
awk '$9 == 404 {print $0}' access_log
[root@192 httpd]# awk '$9 == 404 {print $1 $7}' access_log20250304.log | sort | uniq -c
OPNsense
OPNsense 是一个开源、用户友好的防火墙和路由平台。它于 2014 年从 pfSense 和 m0n0wall 分叉而来,并于 2015 年 1 月首次正式发布。该平台基于 FreeBSD,具有以下特点:
安全功能强大:支持状态包检查、入侵检测和防御系统(IDS/IPS)、VPN 支持以及深度包检测(DPI)等多种安全功能。
高可用性:支持通用地址冗余协议(CARP)以实现故障转移,确保网络的高可用性。
VPN 支持灵活:支持 OpenVPN、IPsec 和 WireGuard 等多种 VPN 协议,便于远程访问和安全的数据传输。
插件和扩展性好:通过插件系统,用户可以扩展 OPNsense 的功能,例如添加不同的 DNS 黑名单或额外的监控工具。
入侵检测系统(IDS)软件,如Snort或 Suricata
nort 是一款由 Marty Roesch 先生于 1998 年用 C 语言开发的开源网络入侵检测与防御系统(NIDS/NIPS)。它基于 FreeBSD,具有跨平台、实时流量分析、网络 IP 数据包记录等特性。以下是关于 Snort 的详细介绍:
工作模式
嗅探器模式:仅从网络上读取数据包,并作为连续不断的流显示在终端上,类似于 tcpdump 的功能。
数据包记录器模式:将捕获的数据包记录到硬盘上,可用于网络流量调试,方便管理员后续分析网络活动。
网络入侵检测系统模式:这是 Snort 最主要的工作模式,它会对数据包进行分析,根据用户定义的规则来检测是否存在入侵行为,并根据检测结果采取相应的响应措施。
工作过程
数据包捕获:Snort 通过在网络 TCP/IP 的数据链路层抓取网络数据包,抓包时需将网卡设置为混杂模式,根据操作系统的不同采用 libpcap 或 winpcap 函数从网络中捕获数据包。
数据包解码:捕获的数据包会被送到包解码器进行解码,将其转换为 Snort 能够识别的统一格式。
预处理:预处理过程主要通过插件来完成,包括对分片的数据包进行重新组装、处理明显的错误等。
规则检测:这是 Snort 的核心环节,它会将经过解码和预处理的数据包与预设的规则进行匹配,以检测数据包中是否包含有入侵行为。
输出结果:经过检测后的数据包会通过输出模块以各种形式将结果进行输出,输出形式可以是输出到 alert 文件、其它日志文件、数据库 UNIX 域或 Socket 等。
规则集:Snort 的规则集是其检测入侵行为的关键。规则集分为 “Community Ruleset” 和 “Snort Subscriber Ruleset”。前者由 Snort 社区开发,经 Cisco Talos 质量保证,对所有用户免费;后者由 Cisco Talos 开发、测试和批准,订阅用户可实时获取。
部署方式:Snort 的部署非常灵活,可以运行在 Windows XP、Windows 2003、Linux 等多种操作系统上。其部署结构一般由传感器层、服务器层、管理员控制台层三层组成,可根据企业网络规模的大小,采用三层结构分别部署、三层结构集成在一台机器上进行部署,或采用服务器层与控制台集成的两层结构。
优点与不足:Snort 具有功能强大、开源免费、跨平台性好、扩展性强等优点,能够检测各种不同的攻击方式,对攻击对象进行实时报警。但它也存在一些不足,如功能相对不够完善,与其他产品的联动性有待改进,安装复杂,且由于对所有流量数据根据规则进行匹配,可能会产生较多误报。
Suricata 是一款开源的高性能网络威胁检测与防御工具。以下是关于它的详细介绍:
基本信息:Suricata 由 Open Information Security Foundation(OISF)拥有和支持,它是一个免费、成熟、快速且强大的网络威胁检测引擎,能够进行实时入侵检测(IDS)、在线入侵防御(IPS)、网络安全监控(NSM)和离线 PCAP 处理。
工作模式
IDS 模式:这是默认模式,Suricata 根据签名(规则)、IOC 匹配(如哈希、域名、URL、TLS、SSH 指纹等)和 / 或 Lua 脚本对流量进行检查,生成安全事件(警报),此模式生成的日志量最少。
IPS 模式:该模式在日志量和流量检查方面与 IDS 模式非常相似,主要区别在于 Suricata 会根据网络检查结果主动阻止(丢弃)或允许流量,即它不是被动的嗅探器,而是在线部署。
NSM 模式:也是默认模式之一,Suricata 会为任何协议、文件事务、文件提取、异常和流日志生成日志,无需签名即可运行,此模式生成的日志量最多。
FPC 模式:Suricata 会对其检查的流量进行无条件的完整数据包捕获,该模式需要大量存储空间。
条件 PCAP 捕获模式:这是 FPC 模式的一个子集,它会为任何警报生成重复数据删除后的完整会话 / 流 PCAP 捕获,即所有警报都伴随着触发警报的流的完整会话 PCAP。
功能特性
协议分析与检测:支持多种网络协议的深度检测,包括 IPv4、IPv6、TCP、UDP、HTTP、TLS、SMB 等,能准确识别各种协议中的异常和恶意行为。
规则与签名匹配:使用强大且可扩展的规则和签名语言检查网络流量,规则由动作、头部和规则选项三部分组成,安全分析师可利用其快速检测和识别已知恶意活动。
Lua 脚本支持:允许用户通过编写 Lua 脚本来实现自定义检测和输出逻辑,弥补规则集无法描述的复杂特征和行为,增强检测能力和灵活性。
多线程与高性能:基于多线程编码和硬件加速技术,如 PF_RING、AF_PACKET 等,能在单个实例中处理千兆网络流量,确保高流量环境下的性能表现。
标准输入输出格式:支持 YAML 和 JSON 等标准格式,方便与现有安全信息和事件管理系统(SIEM)、Splunk、Logstash/Elasticsearch、Kibana 等工具集成,提升安全运营效率。
应用场景
企业网络安全防护:可部署在网络边界或关键网段,实时监测和防御外部攻击和内部威胁,保护企业关键信息资产安全。
数据中心安全监控:能对数据中心的大量网络流量进行深度检测和分析,及时发现并阻止针对服务器和应用程序的攻击,确保数据安全。
云环境安全保障:可部署在云平台上,为云环境中的网络安全提供支持,保障云租户的网络和数据安全。
网络安全研究与教育:安全研究人员和教育机构可利用 Suricata 进行网络安全研究、实验和教学,通过分析真实流量和攻击样本,提高网络安全防护能力和意识。
snort -T -c /etc/snort/snort.conf
