20211912 2021-2022-2 《网络攻防实践》第五周作业
20211912 2021-2022-2 《网络攻防实践》第五周作业
1 知识点梳理与总结
1.1 防火墙的功能
-
检查控制进出网络的网络流量
-
防止脆弱或不安全的协议及服务
-
防止内部网络信外泄
-
对网络存取和访问进行监控审计
-
防火墙可以强化网络安全策略并集成其他安全防御机制
1.2 传统的防火墙的不足
-
无法检测加密的Web流量
-
普通应用程序加密后,也能轻易躲过防火墙的检测
-
对于Web应用程序,防范能力不足
-
应用防护特性,只适用于简单情况
-
无法扩展带深度检测功能
1.3 iptables
-
概念:netfilter/iptables(简称为iptables)组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案,完成封包过滤、封包重定向和网络地址转换等功能
-
iptables的表(Tables):
表 | 功能 |
---|---|
raw | 用于配置数据包,raw中的数据包不会被系统跟踪 |
filter | 用于存放所有与防火墙相关操作的默认表 |
nat | 用于 网络地址转换 |
mangle | 用于对特定数据包的修改 |
security | 用于 强制访问控制 网络规则 |
-
iptables的链(Chains):表由链组成,链是一些按顺序排列的规则的列表;默认的filter表包含INPUT,OUTPUT和FORWARD3条内建的链,这3条链作用于数据包过滤过程中的不同时间点
-
iptables的规则(Rules):规则由一个目标(数据包包匹配所有条件后的动作)和很多匹配(导致该规则可以应用的数据包所满足的条件)指定,一个规则的典型匹配事项是数据包进入的端口、数据包的类型和数据包的目的端口;目标使用-j或者--jump选项指定,目标可以是用户定义的链、一个内置的特定目标或者是一个目标扩展,内置目标是ACCEPT,DROP,QUEUE和RETURN,目标扩展是 REJECT和LOG
-
iptables的一些常用指令:
命令 | 功能 |
---|---|
iptables –F | 删除iptables现有规则 |
iptables –L(iptables –L –v -n) | 查看iptables规则 |
iptables -I INPUT 2 -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT | 添加一条规则到指定位置 |
iptables -R INPUT 3 -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT | 修改一条规则 |
iptabels -D INPUT 2 | 删除一条规则 |
iptables -P INPUT DROP | 设置默认策略 |
security | 用于 强制访问控制 网络规则 |
1.4 实践内容
2 虚拟机信息
虚拟机 | IP地址 |
---|---|
Kali | 192.168.31.104 |
Seed Ubuntu16 | 192.168.31.174 |
Metasploitable_ubuntu | 192.168.31.154 |
WinXPattacker | 192.168.31.134 |
3 Linux防火墙配置
3.1 过滤ICMP数据包,使主机不接受ping包
-
在SEED Ubuntu16上使用命令iptables -L查看规则,发现都是默认规则
-
通过命令iptables -A INPUT -p icmp -j DROP使主机不接受icmp的数据包(-A表示追加一条规则,INPUT表示数据包入口(规则),-p用于匹配协议,-j表示指定如何处理(ACTION))
-
此时Kali是ping不通SEED Ubuntu16的,并且在SEED Ubuntu16上再次可以查看规则,可以看见多了一条icmp针对任何位置不允许访问的规则
-
最后在SEED Ubuntu16上使用命令iptables -F删除自定义规则,此时Kali是可以ping通SEED Ubuntu16了
3.2 只允许Kali访问SEED Ubuntu的telnet服务
-
首先确定两台主机都可以进行telnet登陆
-
在SEED Ubuntu16上使用命令iptables -P INPUT DROP指令拒绝一切的数据包流入,则两台主机无法进行telnet登陆
-
在SEED Ubuntu16上使用命令iptables -A INPUT -p tcp -s 192.168.31.104 -j ACCEPT开启对Kali的TCP服务,则Kali可以重新进行telnet登陆,并且用iptables -L查看规则
-
最后在SEED Ubuntu16上使用命令iptables -F和iptables -P INPUT ACCEPT恢复状态
4 Windows防火墙配置
4.1 过滤ICMP数据包,使主机不接受ping包
- 打开WinXPattacker的防火墙,并在高级——ICMP设置中将允许传入回显请求前的勾去掉,此时Kali是ping不通WinXPattacker的
4.2 只允许Metasploitable_ubuntu访问WinXPattacker的telnet服务
-
首先确定两台主机都可以进行telnet登陆
-
依次打开控制面板——管理工具——本地安全策略,右键IP安全策略并点击创建IP安全策略进入设置向导,设置均保持默认
-
点击添加进入设置向导,设置均保持默认
-
点击添加进入设置向导
-
点击添加进入设置向导,源地址选择Kali的IP地址,目标地址选择我的IP地址,协议类型选择TCP,协议端口选择从任意端口和到此端口23,剩余设置均保持默认
-
选中新筛选器操作,点击下一步,点击添加,选择阻止
-
同理建一个允许特定IP访问的筛选器,与上述不同的是,源地址选择Metasploitable_ubuntu的IP地址,筛选器操作选择许可
-
指派该IP安全策略后,发现Kali无法对WinXPattacker进行telnet登陆,而Metasploitable_ubuntu可以
5 Snort
-
使用指令snort -r listen.pcap -c /etc/snort/snort.conf -K ascii对listen.pacp进行入侵检测,-K ascii是为了指定输出log文件的编码为ASCII,可以看到检测出的数据包大部分为TCP数据包
-
在/var/log/snort/目录下通过vim snort.alert.fast查看输出的日志文件,可以看到时间、源地址、目的地址等信息
6 分析蜜网网关的防火墙和IDS/IPS配置规则
-
数据控制一般分为防火墙的控制和IPS对异常数据的限制。
-
打开蜜网网关,使用命令vim /etc/init.d/rc.firewall,可以看到黑名单、白名单和防护名单三个链(对于黑名单的主机:丢弃所有包,对于白名单的主机:接受并不记录,对于防护名单的主机:禁止其访问某些不希望被访问到的主机)
-
使用命令iptables -t filter -L | more来查看规则列表。其中的OUTPUT、INPUT、FORWARD等默认规则都已经被关闭了,而一些自定义的规则被添加在上面
-
使用命令vim /etc/init.d/snortd打开Snort脚本文件,可以看到下图分别是一些参数的选项以及实际运行时的参数;例如:默认保存log文件为二进制形式
-
使用命令vim hw-snort_inline打开Snort_inline脚本文件,可以看到实际运行时的参数以及在最前面定义的参数;例如:-d表示日志包详细信息
-
使用命令chkconfig --list | grep iptables/snort可以看到查询的服务是否开启,可以看到防火墙和NIPS是跟随系统启动的,NIDS不自动启动
-
使用命令vim /etc/honeywall.conf打开honeywall配置文件,可以看到Snort规则默认是不自动更新的
7 学习中遇到的问题及解决
- 问题1:在windows下过滤ICMP数据包,使主机不接受ping包时,允许传入回显请求前的勾无法改动
- 问题1解决方案:将例外中的勾全部取消即可
- 问题2:Kali和Metasploitable_ubuntu都无法访问WinXPattacker的telnet服务
- 问题2解决方案:参考xp系统怎么开telnet功能
8 学习感悟、思考
- 本次的实践较难,通过网上的一些参考资料学习了iptables的命令以及windows防火墙的配置,最终完成了,受益匪浅
9 参考资料
- Linux常用命令
- [网络攻防技术与实践(诸葛建伟编著)]
- xp系统怎么开telnet功能
- iptables命令详解和举例
- IDS和IPS的部署介绍