实践五 网络安全防范技术
1.实践内容
1.1 防火墙
1.1.1 概念
防火墙是一种网络安全系统,它监控和控制进出某一网络的数据包。防火墙可以是硬件也可以是软件,或者二者的结合。其主要功能是根据一定的规则过滤流经它的数据包,以防止未授权的网络访问,同时允许合法的通信。防火墙可以配置为最简单的访问控制列表形式,也可以包括更复杂的安全功能,如入侵防御系统(IDS)和入侵防御系统(IPS)。
1.1.2 功能
-
访问控制:
- 防火墙的核心功能是实施访问控制,以决定哪些服务(如HTTP、FTP或SMTP等)可从网络的一个部分访问另一个部分。
- 它可以基于源IP地址、目标IP地址、端口号等信息,允许或拒绝数据包的传输。
- 这种控制不仅限于入站流量(从外部网络到内部网络),也适用于出站流量(从内部网络到外部网络)。
-
包过滤:
- 防火墙会检查经过的每个数据包,并根据预定规则决定这些数据包是否被允许通过。
- 这包括分析数据包的头部信息,比如源地址和目标地址、端口号和协议类型。
-
状态检查(有状态防火墙):
- 有状态防火墙不仅基于单个数据包的信息作出决策,还会跟踪每个网络连接的状态信息(例如,TCP连接的建立、传输和断开)。
- 这种方法允许防火墙更精确地控制流量,因为它能够识别和区分不同阶段的网络通信。
-
网络地址转换(NAT):
- 防火墙可以修改经过的数据包中的源或目的IP地址,这被称为网络地址转换。
- NAT可以用于隐藏内部网络的IP地址,提供额外的一层保护,并支持私有地址在互联网上的通信。
-
应用层过滤:
- 高级防火墙可以进行应用层过滤,检查通过HTTP、HTTPS、FTP等协议的数据流内容。
- 它们可以拦截和阻止特定类型的网络流量,如病毒、蠕虫、间谍软件和其它恶意软件,甚至是针对特定应用程序的攻击。
-
虚拟私人网络(VPN)支持:
- 许多防火墙提供VPN功能,允许远程用户安全地连接到内部网络。
- VPN使用加密和其他安全措施来保护数据传输,确保数据的私密性和完整性。
-
入侵检测和防御:
- 一些高级防火墙还集成了入侵检测系统(IDS)和入侵防御系统(IPS)的功能。
- 这些系统能够监测和分析网络流量,以识别和响应各种网络攻击和异常行为。
1.2 iptables
iptables是Linux操作系统上广泛使用的一个命令行防火墙工具,它允许系统管理员配置内核防火墙提供的表和链条。iptables工具是基于Netfilter框架,用于创建和管理网络包过滤规则。这些规则可以用来控制进入、离开或通过系统的数据包,实现包过滤、网络地址转换(NAT)和其它类型的包处理。iptables的灵活性和强大的功能使其成为Linux系统中网络安全管理的基石之一。
1.3 snort
Snort是一个开源的网络入侵防御系统(NIDS)和网络入侵检测系统(NIDS),能够实时进行包分析和日志记录。它使用一系列的规则来分析网络流量,并通过匹配这些规则来检测各种攻击、探测、拒绝服务攻击、溢出、和其它可疑行为。Snort广泛应用于网络安全领域,不仅因为它功能强大,还因为它的灵活性,用户可以编写和实现自己的检测规则,以适应不断变化的网络威胁环境。
2.实践过程
2.1 防火墙
2.1.1 过滤包
验证kali和xp可以互相ping通
kali查看iptables配置 iptables -L
现在是空的
向里面添加过滤ICMP过滤规则 iptables -A INPUT -p icmp -j DROP
现在遇到ICMP包会直接drop掉
现在XP ping不通kali了
2.1.2 服务访问过滤
kali装telnet
装xinetd
编辑/etc/inetd.conf nano /etc/inetd.conf
删除这一行前面的注释
配置xinted.conf,添加默认配置
配置telnet
启动服务(改完配置文件之后是restart)
XP可以登录
seed也可以
不允许访问
仅允许.3(seed)访问 iptables -A INPUT -p tcp -s 192.168.200.3 -j ACCEPT
.4(XP)无法访问
.3(seed)仍然可以
2.2 snort入侵检测
在Seed Ubuntu20.04做,不要在Kali做,Kali获取的snort缺少很多东西
编辑配置文件,以ASCII格式输出警报日志,把原来的输出方式注释掉
进对应目录然后
snort -c /etc/snort/snort.conf -l /var/log/snort -A fast -r /home/treedream/history/3.21/listen.pcap
会自己跑分析
10条被记录的警报(警报规则设置不一样)
总共67660个会话,其中67657个都是TCP包
去对应目录下查看警报文件
可以看到发现很多nmap扫描
2.3 分析蜜网配置文件
2.3.1 数据控制
包括两方面,防火墙对数据的控制,IPS对异常数据的限制(snort_inline)。大致在上面的功能之上,增加了:
- 防火墙对源地址或者目的地址属于黑名单的主机,丢弃所有包。
- 对于属于白名单的主机,接受且不记录。
- 对于属于防护名单内的主机,禁止访问某些不希望被访问到的主机。
- 白名单是设置能通过的用户,白名单以外的用户都不能通过,黑名单是设置不能通过的用户,防护名单是部分包能通过
vim /etc/init.d/rc.firewall,然后找到creat_chains函数位置
2.3.2 数据捕获
数据捕获包括:防火墙的日志记录(记录的信息如目的地址/端口、源地址/端口、协议、长度等。)Snort记录的网络流。
2.3.3 IPTables的实际规则列表
通过指令iptables -t filter -L来查看规则列表。找到chain output等所在的默认规则
可以看到默认的规则如INPUT、FORWARD、OUTPUT都已经被关闭了
2.3.4 Snort实际执行参数
vim /etc/rc.d/init.d/snortd
可以看到默认使用默认目录下的snort.conf规则,默认监听网卡为eth0,配置文件的位置在/etc/snort/snort.conf
2.3.5 Snort_inline实际执行参数
vim /etc/init.d/hw-snort_inline
-D表示Daemon模式,-c表示读取config文件,-Q表示使用QUEUE模式,-l表示输出log文件的目录,-t表示改变程序执行时所参考的根目录位置
2.3.6 蜜网网关相关
2.3.6.1 查看服务开启状态
chkconfig --list | grep iptables 查看防火墙服务开启状态
chkconfig --list | grep snort 查看snort服务开启状态
- 0~6分别表示关机、单用户模式、无网络连接的多用户命令行模式、有网络连接的多用户命令行模式、不可用、带图形界面的多用户模式、重新启动。
- 可以看出iptables和hw-snort_inline在无网络连接的多用户命令行模式下开始启动,而snortd不会自启动。
2.3.6.2 查看更新方式
vim /etc/honeywall.conf
rule 和 snort_restart都是NO,snort的rule默认不自动更新,snort也不自动重启
3.学习中遇到的问题及解决
虚拟机要联网的话,除了访问某些公网IP以外,记得给自己的虚拟机设置DNS服务器,不然装不了各种软件包
继续用Kali做的话,要重新安装和配置snort,并且语法是3.x版本的,按2.x版本的语法写配置文件会报错
4.学习感想和体会
最麻烦的部分就是在Kali安装telnet,有些方法和教程或许有些过时?或者有一些小瑕疵,导致安装失败或者服务启动失败。