作业课程: | https://edu.cnblogs.com/campus/besti/19attackdefense |
---|---|
作业要求: | https://edu.cnblogs.com/campus/besti/19attackdefense/homework/10589 |
课程目标: | 学习《网络攻防技术与实践》教材第六章,并完成课后作业 |
本次作业实现目标: | 学习网络安全防范技术 |
作业正文:
1 知识点梳理
1.1 信息安全
信息安全金三角:机密性、完整性和可用性
传统的静态安全技术及方法:防火墙,加密、身份认证
检测机制:是动态响应和加强防护的依据,是强制落实安全策略的工具,通过不断地检测和检测网络和系统,发现新的威胁和弱点,并通过循环反馈来及时做出有效的响应。
检测技术:入侵检测和漏洞评估
响应措施主要包括:应急处理,备份恢复,灾难恢复
2 实验内容
2.1 防火墙技术
防火墙:置于不同的网络安全领域之间,对网络流量或访问行为实施访问控制的安全组件或设备,在技术范畴上,防火墙属于一种网络上的访问控制机制,通过在不同的网络安全域之间建立起安全控制点,对通过的网络传输数据进行检查,根据具体的安全需求和策略设置决定是否允许网络访问通过防火墙,达到保护特定网络安全免受非法访问和破坏的安全目标。
根据网络协议栈层次,防火墙技术可以分为包过滤(网络层)
、电路级网关(传输层)
和应用层代理技术(应用层)
基本功能:控制在计算机网络中不同信任程度网络域之间实施网络安全访问控制。
防火墙提供的安全功能:
- 1)检查控制进出网络的网络流量;
- 2)防止脆弱或不安全的协议和服务;
- 3)防止内部网络信息的外泄;
- 4)对网络存取和访问进行监控审计;
- 5)防火墙可以强化安全策略并集成其他安全防御机制。
防火墙的不足:
- 1)来自网络内部的安全威胁;
- 2)通过非法外联的网络攻击;
- 3)计算机病毒传播。
技术瓶颈问题:
- 1)针对开放服务安全漏铜的渗透攻击;
- 2)针对网络客户端程序的渗透攻击;
- 3)基于隐蔽通道进行通行的特洛伊木马或僵尸网络。
2.2 防火墙部署方法:
包过滤路由器:将带有包过滤防火墙功能的路由器作为内部网络和外部网络之间唯一的连接点,路由器在完成其数据包路由转发基本功能的同时,将依据网络管理员配置的访问控制列表,对数据包进行过滤。
- 优势:成本低、易于使用等。
- 缺点:如配置不当的路由器可能受到攻击,而一旦包过滤路由器被渗透攻陷,那么内部网络上所有系统都会完全暴露在攻击者面前、可以针对包过滤路由器允许开放的主机和服务进行攻击等。
双宿主堡垒主机:与包过滤路由器非常相似,不同的是使用应用代理网关作为双素质堡垒主机,代替包过滤路由器。垒主机具有两个网络接口,一个使用公网IP地址连接外部网络,另一个使用私有IP地址连接内部网络,两个网络接口之间并不具备路由转发功能,而仅仅由应用代理服务器程序为特定的网络应用提供代理。
- 优势:双宿主堡垒主机模式对外屏蔽了内部网络的信息,并可通过应用代理服务器中实现的访问控制机制提供用户级的身份认证和行为审计,此外还可通过对数据内容的严格检查提供了强大的安全特性。
- 不足:一方面对内部网络对外的网络访问控制过于严格,只能允许访问应用代理所支持的一些网络应用协议,一般只能用于安全要求很高的企业用户单位:另一方面双宿主堡垒主机通常会运行在一个通用操作系统平台上,其自身安全维护变得相对复杂,一旦这个堡垒主机被攻击者攻破,内部网络也将全面地暴露在攻击者面前。
屏蔽主机:包过滤防火墙和应用代理技术的集成部署,采用了屏蔽路由和堡垒主机双重安全设施,所有进出内部网络的数据都要经过包过滤防火墙和堡垒主机,由包过滤防火墙进行网络层的访问控制,由堡垒主机进行应用安全控制,保证了网络层和应用层的双重安全。
- 优势:这是一种很可靠的设计,网络攻击者必须穿透防火墙和堡垒主机才能够到达内部网络。除了为内部网络提供互联网接入之外,如果还想向互联网提供一些外部服务,如Web服务等,也可以在包过滤防火墙之后,在与应用代理服务器同一的网段内放置这些服务器
- 不足:但如果对外开放的服务器被攻破,内部网络也将暴露给攻击者。
屏蔽子网:是在屏蔽主机模式的基础上进行改进的防火墙部署模式。它与屏蔽主机模式的区别在于在应用代理及对外服务器所构成网段和内部主.机之间安装了第二个包过滤防火墙,应用代理及对外服务器所处的网段也被称为DMZ(非军事区)。在这种部署模式中,内部的包过滤防火墙能够在应用代理和对外服务器被攻破之后提供对内部网络的进一步安全防护能力。
2.3 Linux开源防火墙:netfilter/iptables
netfilter:是Linux内核中实现的防火墙功能模块,实现了静态包过滤和状态报文检查(动态包过滤),也支持灵活可扩展的框架,支持NAT网络地址转换等其他额外功能,此外也支持一个灵活可扩展的框架
iptables是应用态的防火墙管理工具框架,支持NAT网络地址转换等其他额外功能,并提供了多层API接口以支持第三方扩展。
三个最基本的规则表:包过滤处理的filter表、用于网络地址转换处理的nat表、以及用于特殊目的数据包修改的mangle表
netfilter/itables的缺省规则表/链:
fileter表:
INPUT发往本地的数据包进行过滤处理;
OUTPUT本地发出的数据包进行过滤处理;
FORWARD经过主机进行路由转发的数据包进行过滤处理;
nat 表:
PREROUTING对未经路由选择的数据包转换其目标IP地址和端口
POSTROUTING对已经过路由选择的数据包进行源IP地址和端口转换
OUTPUT规则链针对本地数据包进行目标IP地址和端口转换;
mangle 表:
针对数据包头部信息进行特殊地修改,如设置TOS值,标记数据包,用于策略路由、网络流量整形等一些目的。
五种规则链:
- PREROUTING规则链的规则检查点为NF_ IP PRE _ROUTING,能够对所有进入主机的数据包进行检查,通常用于源地址NAT转换处理;
- INPUT规则链的检查点在NF_ IP_ LOCAL_ IN, 对发往本地网络协议栈、由本地进程处理的数据包进行检查,通常用于过滤本地网络服务的连接;
- FORWARD规则链的检查点在NF_ IP_ FORWARD,对经由本地进行路由转发的数据包进行检查,在本机作为路由器使用时,对通过的网络连接进行过滤,这个Hook点也是实现防火墙包过滤最主要的位置:
- POSTROUTING规则链的检查点在NF_ IP POST _ROUTING,对本地协议栈发出和经由路由转发的数据包进行检查和处理,通常用于目的地址NAT转换;
- OUTPUT链的检查点在NF_JIP_LOCAL_OUT,特别针对由本地进程通过本地TCP/IP协议栈发出的数据包进行检查。可以配置本地对外访问的限制措施以及目的网络地址转换处理。
主要语法:iptables [-t table] command [match] [target]
其中-t
是配置规则所在的表,缺省表包括filter
,nat
,mangle
,raw
,command
部分是告诉iptables
要做什么。
command:
-A或--append
:命令将一条规则附加到链的末尾。
-D或--delete
:指定匹配的规则或者指定规则在链中的位置编号,该命令从链中删除该规则。
-P或--policy
:设置链的缺省目标操作,所有与链中任何规则都不匹配的信息包都将被强制使用此链的策略。
-N或--new-chain
:用命令中所指的名称创建一个新链。
-F或--flush
:如果指定链名,该命令删除链中所有的规则,如果为指定链名,该命令删除所有链中所有的规则,此参数用于快速清除。
-或--list
:列出指定链中所有的规则。
target:
ACCEPT
:当信息包与具有ACCEPT
目标操作的规则完全匹配时,会被接受(允许它前往目的地),并且它将停止遍历规则链。该目标操作被指定为-j ACCEPT
。
DROP
:当信息包与具有DROP
目标操作的规则完全匹配时,会阻塞该信息包,并且不对它做进一步处理。 该目标操作被指定为-j DROP
。
REJECT
: 该目标操作的工作方式与DROP
目标操作类似,但与DROP
不同的是,REJECT
不会在服务器和客户机上留下死套接字。另外,REJECT 将错误消息发回给数据包的发送方。该目标操作被指定为j REJECT
。
RETURN
:在规则中设置的RETURN目标操作让与该规则匹配的信息包停止遍历包含该规则的链。如果链是如INPUT之类的主链,则使用该链的缺省策略处理信息包。它被指定为-jump RETURN
。
入侵检测技术:
- 基于主机的入侵检测系统(HIDS):一般用来监视主机信息,其数据源通常包括操作系统审计记录,系统调用序列、应用程序审计信息等。
- 基于网络的入侵检测系统(NIDS):以其监听到的网络数据包作为分析数据源。
- 分布式入侵检测系统(DIDS):融合了两者作为其组成部分,并通过集中式、层次分布式或完全分布式的融合分析提高检测系统的覆盖面和有效性。
动手实践:防火墙配置
实践任务:配置Linux操作系统平台上的iptables,或者Windows操作系统平台上的个人防火墙,完成如下功能,并进行测试: .
1.过滤ICMP数据包,使得主机不接收Ping包:
先对目标机进行ping连接:
然后执行iptables -A INPUT -p icmp -j DROP
命令,在INPUT链中添加将所以有ping连接产生的icmp数据包丢失的规则,此时再ping目标机则ping连接失败:
除去刚才的过滤规则:
再次尝试ping连接则恢复:
2.只允许特定IP地址(如局域网中的Linux攻击机192.168.200.7),访问主机的某一网络服务(如FTP、HTTP、SMB),而其他的IP地址(如Windows攻击机192.168.200.5)无法访问
telnet中运用了三次握手协议建立TCP连接,四次握手协议取消TCP连接:
通过telnet命令对目标机192.168.200.5
进行连接,源ip地址为192.168.200.7
以及192.168.200.10
:
然后用iptables -A INPUT -p icmp -j DROP
将满足规则的数据报丢弃,此时telnet连接失败:
然后用指令iptables -A INPUT -p tcp -s 192.168.200.7 -j ACCEPT
开启对源IP192.168.200.7
对目标机的tcp服务,可以用iptables -L
查看规则
192.168.200.7
可以telnet目标IP,而192.168.200.10
连接失败:
动手实践:snort
任务:使用Snort对给定pcap文件(第4章中的解码网络扫描任一个pcap文件)进行入侵检测,并对检测出的攻击进行说明。在BT4 Linux攻击机或Windows Attacker攻击机上使用Snort,对给定的pcap文件进行入侵检测,获得报警日志。
Snort运行命令提示如下。
从离线的pcap文件读取网络日志数据源
在snort.conf中配置明文输出报警日志文件
指定报警日志log目录(或缺省log目录=/var/log/snort)
执行如下命令,-K ascii
主要是为了指定输出log文件的编码为ASCII(默认为binary):
大部分为TCP包,少部分为ARP包:
报警数据包有10条,均被日志记录,所有数据包都裁决允许:
数据流统计:
在缺省log目录/var/log/snort
中可以用vim
读取生成的alert文件,记录了报警数据10条的入侵检测信息:
3.实践作业
分析虚拟网络攻防环境中蜜罐网网关的防火墙和IDS/IPS配置规则,并撰写分析报告,说明蜜罐网网关是如何利用防火墙和入侵检测技术完成其攻击数据捕获和控制需求的。
具体分析配置规则与启动项文件包括:
防火墙(netfilter+IPTables):/etc/init.d/rc.firewall
入侵检测系统(Snort):/etc/init.d/hflow-snort与/etc/snort/snort.conf(未找到第一个文件)
入侵防御系统(Snort_inline):/etc/init.d/hflow-snort_inline与/etc/snort_inline/snort_inline.conf(第一个文件为hw-snort_inline)
分析内容:
1.上述脚本是如何实现蜜网网关的数据捕获和数据控制机制?
snort主要通过对整个网络数据包进行预警提示,多侧重于数据捕获,当然查询防火墙和snort_inline日志也可以获得一定的数据捕获信息。
iptables中有用 modprobe ipt_LOG
,iptables -N FenceLogDrop
等存储数据捕获的日志,snort文件好像并未找到相关代码,不过snort_inlin可以用snort -c [snort.conf绝对路径} -l [log路径] -K ascii
来实现输出log文件。
iptables防火墙主要负责对数据accept,reject,drop等规则的制定和执行,多用于数据控制。
分析相关脚本的关键代码,防火墙文件rc.firewall
中create_chains()
用于创建链,该函数分别创建了黑名单和白名单,防护名单以及防护日志删除,-N的意思表示根据用户指定的名字创建新链,其中黑名单就是阻止某些网络地址和用户进入主机,白名单就是用户设置的认为可以添加信任的网络用户以及网络地址,防护名单是IPS的文件列表,防护日志删除是一个表,用于记录/删除从围栏反弹的数据包。
create_chains() {
if [ -n "${HwFWBLACK}" ] && [ -e ${HwFWBLACK} ] &&
[ "${HwBWLIST_ENABLE}" == "yes" ]; then
# 黑名单
iptables -N BlackList
fi
if [ -n "${HwFWWHITE}" ] && [ -e ${HwFWWHITE} ] &&
[ "${HwBWLIST_ENABLE}" == "yes" ]; then
# 白名单
iptables -N WhiteList
fi
if [ -n "${HwFWFENCE}" ] && [ -e ${HwFWFENCE} ] &&
[ "${HwFENCELIST_ENABLE}" == "yes" ]; then
# 防护名单
iptables -N FenceList
# 防护日志删除
iptables -N FenceLogDrop
fi
if [ -n $HwTCPRATE ] && [ $HwTCPRATE -gt 0 ]; then
# 创建TCP处理链
iptables -N tcpHandler
fi
if [ -n $HwUDPRATE ] && [ $HwUDPRATE -gt 0 ]; then
# 创建UDP处理链
iptables -N udpHandler
fi
if [ -n $HwICMPRATE ] && [ $HwICMPRATE -gt 0 ]; then
# 创建ICMP处理链
iptables -N icmpHandler
fi
if [ -n $HwOTHERRATE ] && [ $HwOTHERRATE -gt 0 ]; then
# 创建其他协议处理链
iptables -N otherHandler
fi
}
网络信息防御系统snort_inline主要对异常数据的进行控制,可以和iptables进行联动
2.获取IPTables的实际规则列表、Snort和Snort_inline的实际执行参数?
获取IPTables的实际规则列表
通过指令iptables -t filter -L
来查看规则:
获取Snort的实际执行参数:
snort --h
或者查询snort文件vim /etc/rc.d/init.d/snortd
获取Snort_inline的实际执行参数:
-D表示Daemon模式,-c表示读取config文件,-Q表示使用QUEUE模式,-l表示输出log文件的目录,-t表示改变程序执行时所参考的根目录位置。
3.蜜网网关开机之后,防火墙、NIDS、NIPS是如何启动的?
根据chkconfig --list | grep [服务]
可以查询到开启服务的情况,其中1表示单用户模式,2表示无网络连接的多用户命令行模式,3表示有网络连接的多用户命令行模式,4表示不可用,5表示带图形界面的多用户模式,6表示重新启动可以看到iptables和snort_inline(NIPS)是随系统开机而开启的,而snort(NIPS)需要手动开启:
4.Bonus:蜜网网关中的Snort规则是如何自动升级的?
可以从vim /etc/honeywall.conf
来看snort的rule是否自动更新,默认为不更新:
4.学习中遇到的问题及解决
- 问题1:对于snort,snort_inline以及iptables之间关系不是很理解
问题1解决方案:查询网上的snort_inline和iptables联动进行数据控制有比较消息介绍和实践内容。
- 问题3:登录seed虚拟机文件查询不方便
问题3解决方案:改用了MobaXterm登录本地IP和账号,界面交互性更佳。
5.学习感悟和思考
本次学习内容主要为网络安全防范技术,感觉iptables以及snort两种工具的命令还是掌握的不够,只是在实验过程中运用了某几个常用的命令参数,分析脚本源码还是主要借助英文注释以及网上的资料,有待加强。