20252913 2025-2026-2 《网络攻防实践》实践5报告

20252913 2025-2026-2 《网络攻防实践》实践5报告

1.实践内容

  1. 防火墙配置实践

​ 在Linux操作系统上,通过配置iptables防火墙策略实现主机级安全防护。一方面,设置规则丢弃所有入站的ICMP回显请求,使主机对网络中的Ping探测行为保持静默,有效隐藏主机在线状态。另一方面,实施基于源IP的精细化服务访问控制,构建HTTP服务的白名单策略:仅允许指定IP地址的TCP连接请求,并显式拒绝其他一切对该端口的访问。通过实际发起连接测试,验证了策略的有效性,展现了防火墙在实现网络访问控制列表(ACL)和最小权限原则中的基础作用。

  1. 动手实践:Snort

​ 利用开源网络入侵检测系统Snort,对提供的网络抓包文件(listen.pcap)进行离线分析,对历史流量进行深度包检测。通过解析Snort运行后生成的警报日志与协议统计摘要,成功从海量数据包中识别出隐蔽的网络扫描活动。具体分析出攻击者采用了TCP SYN扫描技术,通过向目标主机的大量端口发送SYN包并根据响应判断端口开放状态,从而揭示了该pcap文件中存在的网络侦查行为。

  1. 分析配置规则

​ 通过分析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包

  1. kali-new1首先查看当前防火墙规则:
iptables -L -n -v

image-20260413184535483

image-20260413184656433

可以ping通kali-v8。

2.kali-v8启动icmp监听:

sudo tcpdump -i eth0 icmp

image-20260413184851369

可以ping通kali-new1。

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

sudo iptables -A INPUT -p icmp --icmp-type echo-request -j DROP

image-20260413185211325

4.kali-new1 ping kali-v8

image-20260413185248149

此时已经不能ping通。

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

image-20260413185515000

6.kali-v8 ping kali-new1:

image-20260413185605649

由于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

image-20260413203130811

4.kali-new1访问kali-v8的http服务成功:

curl http://192.168.200.6:8080

image-20260413190312702

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

image-20260413190353220

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

image-20260413190427073

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

image-20260413190508866

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 因默认规则未开启端口扫描检测功能而未触发告警,但该异常流量已明确存在安全风险。

image-20260413190827341

2.3 分析配置规则

1.通过指令查看防火墙配置:

more /etc/init.d/rc.firewall

image-20260413194245799

2.通过指令查看防火墙规则链:

cd /etc/init.d 
iptables -t filter -L 

image-20260413194320474

3.通过指令查看snort规则:

vim /etc/init.d/snortd

image-20260413194352176

4.通过指令查看snort入侵防御系统的配置:

vim /etc/init.d/hw-snort_inline

image-20260413194416576

5.通过指令查看防火墙和snort是开启状态:

chkconfig --list | grep iptables
chkconfig --list | grep snort

image-20260413194500152

6.通过指令查看蜜网网关配置:

vim /etc/honeywall.conf

image-20260413194526407

总结:蜜网网关通过配置防火墙“策略性放行”攻击流量进入、同时“严格监控与限制”出站连接以实现数据控制,并借助入侵检测/防御系统对全部流入、流出及内部攻击行为进行实时监控、记录与分析,从而在受控环境中完成对攻击数据的捕获、分析和行为研究。

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的配置规则,理解了蜜网网关是如何利用防火墙和入侵检测技术完成其攻击数据捕获和控制需求的。通过本次实验,我加深了对网络安全防护的理解,熟悉了防火墙和入侵检测系统的配置和使用。

posted @ 2026-04-13 20:04  G116h6  阅读(28)  评论(0)    收藏  举报