20212805 2021-2022-2 《网络攻防实践》第五次(第七周)作业

一、知识点梳理与总结

1.1 防火墙技术及产品

    • 定义:是一种访问控制机制,置于不同的网络安全域之间,对网络流量或访问行为实施访问控制的安全组件或设备,达到保护特定网络安全域免受非法访问和破坏的安全目标。
    • 分类:包过滤(网络层);电路级网关(传输层);应用层代理(应用层)
    • 功能:
      检查控制进出网络的流量。
      防止脆弱或不安全的协议和服务。(免受基于路由得攻击)
      防止内部网络信息的外泄。
      对网络存取和访问进行监控审计。(日志记录)
      强化网络安全策略并集成其他安全防御机制。
    • 不足:
      先天不足:无法防范:来自网络内部的安全威胁、通过非法外联的网络攻击(内部人员私自接入外部网络)和计算机病毒传播(磁盘、U盘)。
      技术瓶颈:无法防范:针对开放服务安全漏洞的渗透攻击、针对网络客户端程序的渗透攻击(防火墙很难从网络流量中检测出针对)和基于隐蔽通道(HTTP隧道)进行通信的特洛伊木马或僵尸网络。

1.2 Linux开源防火墙:netfilter/iptables介绍

  • 原理:netfilter位于Linux内核空间,实现静态包过滤和状态报文检查功能,具备构建防火墙、NAT共享上网、构建透明代理、构建QoS或策略路由器的功能。iptables(应用态防火墙管理工具)通过命令行方式允许用户为netfilter配置各种防火墙过滤和管理规则。不同来源和目的网络数据包在协议栈处理是会通过不同的netfilter检查链,并依据Iptables在规则链上的配置进行操作。
  • 命令:iptables的命令的语法为:iptables -t [table] command [match] [target]。-t指定规则所在的表,缺省表包括gilter、nat、mangle、raw。
    cammand告诉iptables要做什么,比如-A就是在链表末尾插入规则。
    Match:规则匹配条件,满足规则的数据包才会被采取措施。
    Target:目标操作, ACCEPT(接受)、DROP(丢弃)、REJECT、RETURN等。
  • 规则链:链是顺序执行规则的编排方式,在复杂的网络环境中,管理员需求这种可控的、有序执行的规则应用方式。iptables 提供了5条链:INPUT链、OUTPUT链、FORWARD链、路由前链(PreRouting)、路由后链(PostRouting)。
  • 规则表:表的本质就是规则集的组织形式。iptables提供了以下5种表:filter表(用于包过滤)、nat表(用于网络地址转换处理)、mangle表(用于特殊目的数据包修改)、raw表、security表(强制访问)。

1.3 netfilter/iptables的NAT机制

    • IP伪装:在内部网络使用私有IP,将内部发出的网络连接源IP伪装成防火墙自身外网IP。
    • SNAT机制:改变网络连接数据包的源地址。可以按照用户制定的规则,将源IP灵活的变成各种IP。SNAT机制需要在POSTOUTING链中完成,这样才能让路由、包过滤在源IP改变之前做完。
      iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 192.168.254.2的意思是将发出的源IP改为192.168.254.2。
    • DNAT机制:改变网络连接数据包的目的地址。在PREROUTING链中完成。

1.4 开源网络入侵检测系统:Snort

  • 简介:Snort是一款跨平台、轻量级的网络入侵检测软件,还具备数据包嗅探、数据包分析与记录等多种功能,还支持内联模式,可作为网络入侵防御系统使用。
  • snort的四个主要部件:
    数据包嗅探:将网卡设置为混杂模式,用libpacp函数来进行抓包。
    预处理器:弥补检测引擎检测能力的不足。在检测引擎之前对数据包进行检查和操作。包括:TCP/IP协议栈模拟、应用层协议解码、异常检测。
    检测引擎:核心功能,对数据包的信息进行模式匹配,检测引擎依据预先设置的规则检查数据包。主要包括规则库解析、多模式匹配、规则插件。
    输出模块:进行各种报警和日志记录。
  • alert tcp 源ip范围(默认any) any ->目标ip范围 21 (msg: ""; content:""
    alert表示规则动作为报警。
    tcp表示协议类型为TCP协议。
    源ip范围(默认any)。
    any表示源端口为任意端口。
    ->表示发送方向操作符。
    21表示目的端口为21。
    content:匹配的字符串。
    msg:触发规则之后的报警信息。
    content:用于字符串匹配的攻击特征。
  • 三种工作模式:嗅探器(从网络上读取数据包,命令./snort -vde)、数据包记录器(将数据包记录到硬盘上,常用命令./snort –vde -b)、网络入侵检测系统(分析网络数据流以发现攻击行为)。

二、实践过程

2.1 防火墙配置

虚拟机IP
Kali(A) 192.168.13.70
Ubuntu(C) 192.168.13.130
WinXPattacker(B) 192.168.200.65

2.1.1 过滤ICMP数据包,使得主机不接收Ping包

提权后,用 iptables -L 命令查看链中的默认规则,此时主机C可以被ping通,然后使用 iptables -A INPUT -p icmp -j DROP 命令添加一条入站规则,即丢弃ICMP数据包,添加完后使用 iptables -L 命令查看添加的规则:

(-A代表增加规则,-p代表指定协议,-j代表对该规则执行的操作)

 

 

 执行完该命令后,尝试用主机Aping主机C,失败,如图

 

 

 执行 iptables -F,删除添加的命令,则又可以ping通

 

 

 

 

 

 

2.1.2 只允许特定IP地址(如局域网中的Linux攻击机192.168.200.3),访问主机的某一网络服务(如FTP、HTTP、SMB),而其他的IP地址(如Windows攻击机192. 168.200.4)无法访问。

首先在主机A、主机B上进行远程登陆测试

 

 

 

 

 

 首先使用使用sudo iptables -P INPUT DROP命令,丢弃所有与INPUT链中任何规则都不匹配的数据包,然后使用sudo iptables -A INPUT -p tcp -s 192.168.13.69 --dport 23 -j ACCEPT命令添加一条入站规则,即只接受(主机A)来自IP地址为192.168.13.69的访问23号端口的TCP包:

 

 

 进行测试,主机A可以正常进行远程登陆,主机B失败

 

 

 

 

 

2.2  动手实践:Snort

使用Snort对给定pcap文件(listen.pcap文件)进行入侵检测,并对检测出的攻击进行说明。在BT4 Linux攻击机或 Windows Attacker攻击机上使用Snort,对给定的pcap文件进行入侵检测,获得报警日志。

执行snort -r listen.pcap -c /etc/snort/snort.conf -K ascii 读取网络日志数据源:

显而易见,绝大多数为TCP包。

  • snort会在默认目录 /var/log/snort 生成一个日志文件,cd /var/log/snort 查看日志文件 vim snort.alert.fast,可看到本次攻击是用nmap发起的。攻击机IP地址是 172.31.4.178,靶机IP地址 172.31.4.188 ,还可以看到端口号等信息:

 

 

 2.3 分析配置规则

分析虚拟网络攻防环境中蜜网网关的防火墙和IDS/IPS配置规则,说明蜜网网关是如何利用防火墙和入侵检测技术完成其攻击数据捕获和控制需求的。

先使用su -提权,否则无法查看rc.firewall文件,输入vim /etc/init.d/rc.firewall。

create_chains函数定义了3个链,白名单、黑名单和防护名单,白名单是设置能通过的用户,白名单以外的用户都不能通过,黑名单是设置不能通过的用户,防护名单是部分包能通过。

获取IPTables的实际规则列表、snort和snort_line的实际执行参数

输入iptables -L,查看((命令行往上翻页可以使用Shift + PgUp

 

 

文件的后半部分我们可以看到上文提到的xxxHandler,这也验证了上述分析的正确性:

 vim /etc/init.d/snortd  打开Snort脚本文件,可以查看监听网卡和存储配置文件的位置。

 

 vim /etc/init.d/hw-snort_inline可以看到Snort_inline运行时参数,-D表示Daemon模式,-c表示读取config文件,-Q表示使用QUEUE模式,-l表示输出log文件的目录,-t表示改变程序执行时所参考的根目录位置:

 

 运行命令chkconfig --list|grep [服务]查看服务情况,如果从0~6全是off,那就不自动启动。可以看到防火墙和NIPS(snort_inline)是自动启动的,NIDS要手动启动:

 

snort规则的升级方式:使用命令vim /etc/honeywall.conf打开配置文件,找到update variables,可以看到其值为no,不自动更新

 

posted @ 2022-04-15 10:40  20212805  阅读(130)  评论(0编辑  收藏  举报