20252913 2025-2026-2 《网络攻防实践》实践5报告
20252913 2025-2026-2 《网络攻防实践》实践5报告
1.实践内容
- 防火墙配置实践
在Linux操作系统上,通过配置iptables防火墙策略实现主机级安全防护。一方面,设置规则丢弃所有入站的ICMP回显请求,使主机对网络中的Ping探测行为保持静默,有效隐藏主机在线状态。另一方面,实施基于源IP的精细化服务访问控制,构建HTTP服务的白名单策略:仅允许指定IP地址的TCP连接请求,并显式拒绝其他一切对该端口的访问。通过实际发起连接测试,验证了策略的有效性,展现了防火墙在实现网络访问控制列表(ACL)和最小权限原则中的基础作用。
- 动手实践:Snort
利用开源网络入侵检测系统Snort,对提供的网络抓包文件(listen.pcap)进行离线分析,对历史流量进行深度包检测。通过解析Snort运行后生成的警报日志与协议统计摘要,成功从海量数据包中识别出隐蔽的网络扫描活动。具体分析出攻击者采用了TCP SYN扫描技术,通过向目标主机的大量端口发送SYN包并根据响应判断端口开放状态,从而揭示了该pcap文件中存在的网络侦查行为。
- 分析配置规则
通过分析Honeywall蜜网网关的配置架构,理解协同防御体系。具体分析了网关的核心配置文件:防火墙初始化脚本中定义的自定义链实现了流量的粗筛与导向;同时,通过研究Snort_inline的配置文件及其服务启动脚本,理解了其如何工作在IPS模式下,对通过网关的数据包进行实时检查与主动丢弃或修改。
2.实践过程
实验环境:
kali-new1:IP:192.168.200.7
kali-v8:IP:192.168.200.6
kali克隆1:IP:192.168.200.8
2.1 防火墙配置
2.1.1 过滤ICMP数据包,使得主机不接收Ping包
- kali-new1首先查看当前防火墙规则:
iptables -L -n -v


可以ping通kali-v8。
2.kali-v8启动icmp监听:
sudo tcpdump -i eth0 icmp

可以ping通kali-new1。
3.kali-v8通过指令设置,将所有发往本机的 ICMP 回显请求(即常见的 ping 请求)这类数据包直接丢弃。执行后,外部主机 ping 该主机时将收不到任何响应。
sudo iptables -A INPUT -p icmp --icmp-type echo-request -j DROP

4.kali-new1 ping kali-v8

此时已经不能ping通。
5.在kali-v8的终端通过监听可以看到来自kali-new1的大量的icmp回显请求报文,没有对其回复。

6.kali-v8 ping kali-new1:

由于kali-new1没有配置防火墙,可以正常ping通。
7.实验结束后,清除防火墙配置,恢复原状。
iptables -F
2.1.2 只允许特定IP地址,访问主机的某一网络服务,而其他的IP地址无法访问
1.在kali-v8执行指令,启动http服务:
python3 -m http.server 8080
2.通过指令允许ip为192.168.200.7的主机(即kali-new1)访问TCP 8080端口,拒绝其他IP的访问。
iptables -A INPUT -p tcp --dport 8080 -s 192.168.200.7 -j ACCEPT
iptables -A INPUT -p tcp --dport 8080 -j DROP
3.查看防火墙规则
iptables -L INPUT -n -v

4.kali-new1访问kali-v8的http服务成功:
curl http://192.168.200.6:8080

同网段的kali克隆1访问失败:

5.实验结束,kali-v8清除防火墙规则:

6.清除规则后,同网段的kali克隆1可以成功访问http服务:

2.2 动手实践Snort
1.通过指令分析listen.pcap文件:
snort -r listen.pcap -c /etc/snort/snort.lua -A alert_fast -l /var/log/snort
可得到以下内容:
--------------------------------------------------
o")~ Snort++ 3.12.1.0
--------------------------------------------------
Loading /etc/snort/snort.lua:
Loading snort_defaults.lua:
Finished snort_defaults.lua:
ssh
host_cache
pop
binder
stream_tcp
mms
smtp
gtp_inspect
packets
dce_http_proxy
ips
stream_icmp
normalizer
wizard
appid
js_norm
file_inspect
http2_inspect
http_inspect
ftp_data
stream_udp
ftp_server
port_scan
search_engine
dce_http_server
dce_tcp
dce_smb
iec104
cip
telnet
ssl
sip
rpc_decode
netflow
modbus
host_tracker
stream_user
stream_ip
process
back_orifice
classifications
dnp3
opcua
active
ftp_client
daq
socks
decode
alerts
stream
network
references
arp_spoof
output
hosts
dns
dce_udp
imap
file_policy
s7commplus
stream_file
Finished /etc/snort/snort.lua:
Loading file_inspect.rules_file:
Loading file_magic.rules:
Finished file_magic.rules:
Finished file_inspect.rules_file:
--------------------------------------------------
ips policies rule stats
id loaded shared enabled file
1 219 0 219 /etc/snort/snort.lua
--------------------------------------------------
rule counts
total rules loaded: 219
text rules: 219
option chains: 219
chain headers: 1
--------------------------------------------------
service rule counts to-srv to-cli
file_id: 219 219
total: 219 219
--------------------------------------------------
fast pattern groups
to_server: 1
to_client: 1
--------------------------------------------------
search engine (ac_bnfa)
instances: 2
patterns: 438
pattern chars: 2602
num states: 1832
num match states: 392
memory scale: KB
total memory: 71.2812
pattern memory: 19.6484
match list memory: 28.4375
transition memory: 22.9453
appid: MaxRss diff: 2880
appid: patterns loaded: 300
--------------------------------------------------
pcap DAQ configured to read-file.
Commencing packet processing
Retry queue interval is: 200 ms
++ [0] listen.pcap
-- [0] listen.pcap
--------------------------------------------------
Packet Statistics
--------------------------------------------------
daq
pcaps: 1
received: 135580
analyzed: 135580
allow: 135580
rx_bytes: 8139156
--------------------------------------------------
codec
total: 135580 (100.000%)
discards: 45 ( 0.033%)
arp: 20 ( 0.015%)
eth: 135580 (100.000%)
ipv4: 135560 ( 99.985%)
tcp: 135512 ( 99.950%)
udp: 3 ( 0.002%)
--------------------------------------------------
Module Statistics
--------------------------------------------------
ac_full
searches: 28
matches: 42
bytes: 398
--------------------------------------------------
appid
packets: 135515
processed_packets: 135505
ignored_packets: 10
total_sessions: 67660
service_cache_adds: 7
bytes_in_use: 1176
items_in_use: 7
--------------------------------------------------
arp_spoof
packets: 20
--------------------------------------------------
back_orifice
packets: 3
--------------------------------------------------
binder
raw_packets: 75
new_flows: 67660
service_changes: 7
inspects: 67735
--------------------------------------------------
detection
analyzed: 135580
--------------------------------------------------
dns
packets: 3
requests: 3
dns_over_udp: 3
--------------------------------------------------
http_inspect
flows: 6
scans: 12
reassembles: 12
inspections: 12
requests: 6
get_requests: 5
options_requests: 1
max_concurrent_sessions: 3
total_bytes: 88
--------------------------------------------------
port_scan
packets: 135515
trackers: 6
--------------------------------------------------
stream
flows: 67660
total_prunes: 67659
idle_prunes_proto_timeout: 120
closed_prunes: 67539
tcp_timeout_prunes: 117
udp_timeout_prunes: 3
no_flow_tcp_rst: 3
no_flow_unwanted: 7
--------------------------------------------------
stream_tcp
sessions: 67657
max: 67657
created: 67657
released: 67657
instantiated: 67657
setups: 67657
restarts: 7
syn_trackers: 67657
segs_queued: 19
segs_released: 19
segs_used: 19
rebuilt_packets: 25
rebuilt_bytes: 263
client_cleanups: 1
server_cleanups: 12
syns: 67657
syn_acks: 83
rsts: 67549
rsts_ok_rfc5961: 46
rsts_ack_ok: 67503
fins: 72
max_segs: 1
max_bytes: 23
--------------------------------------------------
stream_udp
sessions: 3
max: 3
created: 3
released: 3
total_bytes: 129
--------------------------------------------------
telnet
total_packets: 1
max_concurrent_sessions: 1
--------------------------------------------------
wizard
tcp_scans: 19
tcp_hits: 7
--------------------------------------------------
Appid Statistics
--------------------------------------------------
detected apps and services
Application: Services Clients Users Payloads Misc Referred
unknown: 7 3 0 0 0 0
--------------------------------------------------
Summary Statistics
--------------------------------------------------
timing
runtime: 00:00:00
seconds: 0.252320
pkts/sec: 537334
Mbits/sec: 258
o")~ Snort exiting
可以看出:Snort 日志中 stream_tcp 模块的统计数据存在明显异常,共产生 67657 个 TCP 会话,均仅发送 SYN 连接请求,却仅收到 83 个 SYN-ACK 响应,随后有 67549 个 RST 包强制断开连接,未形成完整的 TCP 三次握手,该特征符合典型的半连接端口扫描(如 nmap -sS 扫描)行为,属于恶意探测流量,尽管 Snort 因默认规则未开启端口扫描检测功能而未触发告警,但该异常流量已明确存在安全风险。

2.3 分析配置规则
1.通过指令查看防火墙配置:
more /etc/init.d/rc.firewall

2.通过指令查看防火墙规则链:
cd /etc/init.d
iptables -t filter -L

3.通过指令查看snort规则:
vim /etc/init.d/snortd

4.通过指令查看snort入侵防御系统的配置:
vim /etc/init.d/hw-snort_inline

5.通过指令查看防火墙和snort是开启状态:
chkconfig --list | grep iptables
chkconfig --list | grep snort

6.通过指令查看蜜网网关配置:
vim /etc/honeywall.conf

总结:蜜网网关通过配置防火墙“策略性放行”攻击流量进入、同时“严格监控与限制”出站连接以实现数据控制,并借助入侵检测/防御系统对全部流入、流出及内部攻击行为进行实时监控、记录与分析,从而在受控环境中完成对攻击数据的捕获、分析和行为研究。
3.学习中遇到的问题及解决
-
问题1:安装snort时,系统在尝试用IPv6 地址连接中科大源的 HTTPS 端口 (443),但网络环境不支持 IPv6,导致连接失败,源索引文件下载失败,apt 无法找到snort包,最终报错 E: Unable to locate package snort。
-
问题1解决方案:直接让 apt 放弃 IPv6,只走 IPv4 网络下载安装。
4.实践总结
在本次实践中,我完成了基于iptables的防火墙策略部署、Snort入侵检测分析及蜜网网关配置规则解析。通过设置iptables规则实现ICMP过滤和基于IP的访问控制,验证了防火墙在精细化流量管控中的作用。通过Snort对离线pcap文件进行入侵检测分析,成功识别出扫描与攻击行为,掌握了网络威胁检测的基本流程。最后分析蜜网网关的防火墙与IDS/IPS的配置规则,理解了蜜网网关是如何利用防火墙和入侵检测技术完成其攻击数据捕获和控制需求的。通过本次实验,我加深了对网络安全防护的理解,熟悉了防火墙和入侵检测系统的配置和使用。

浙公网安备 33010602011771号