网安技术与应用(3)——Linux防火墙iptables的使用

一 实验目的

掌握Linux下防火墙的原理和配置方法。

二 实验内容

配置Linux下的一组防火墙规则,对内网、外网以及DMZ区交互的访问进行有效约束。

三 实验原理

防火墙作为一种访问控制的机制是确保网络安全的重要手段。针对不同的的需求和应用环境,可以量身定制出不同的防火墙系统。在众多网络防火墙产品中,Linux操作系统上的防火墙软件特点显著。首先是Linux操作系统在系统稳定性、健壮性及价格的低廉性方面都独具优势;更为重要的是系统包含了建立Internet所需的所有服务软件包。

Linux提供的防火墙软件包内置于Linux内核中,是一种基于包过滤型的防火墙实现技术。其中心思想是根据网络层IP包头中的源地址、目的地址及包类型等信息来控制包的流向。更彻底地过滤规则是检查包中的源端口、目的端口以及连接状态等信息。在Linux 2.4以上版的内核应用里一个全新的包过滤管理工具Iptables,可以加入、插入或删除包过滤表格中的规则。

iptables的原理主要是对数据包的控制:

  1. 一个数据包进入网卡时,它首先进入PREROUTING链,内核根据数据包目的IP判断是否需要转发出去。
  2. 如果数据包就是进入本机的,它就会沿着图向下移动,到达INPUT链。数据包到了INPUT链后,任何进程都会收到它。本机上运行的程序可以发送数据包,这些数据包会经过OUTPUT链,然后到达POSTROUTING链输出。
  3. 如果数据包是要转发出去的,且内核允许转发,数据包就会如图所示向右移动,经过FORWARD链,然后到达POSTROUTING链输出。

23102856_n6Xd

四 实验条件

计算机一台,用作外终端,带有一个网卡,命名为B,带linux操作系统虚拟机,命名为A,虚拟机用作路由器。(Ubuntu 20.04)

五 实验过程

1、查看IP并ping通

将虚拟机IP地址配置到和宿主机一个网段即可,注意地址不可与其他地址冲突。

关闭宿主机防火墙后,此时A和B是可以互ping的。

  • 查看虚拟机的IP
# sudo apt install net-tools
ifconfig -a

如果说 ifconfig not found,就用第一行代码安装一下 net-tools

image-20220404111755206

发现IP是192.168.85.128

  • 查看window的IP
ipconfig

image-20220408233627508

  • 互相ping

在Windows:

ping 192.168.85.128

image-20220404112647855

在虚拟机:

ping 192.168.85.1

截图结果是类似的。

发现已经可以互相成功Ping通了,该步骤完成。

问题:如果Ping不通,采取以下步骤:

打开"高级安全Windows Defender"防火墙
入站规则
找到配置文件类型为“公用”的“文件和打印共享(回显请求–ICMPv4-In)”规则,设置为允许
虚拟机可以ping通主机

参考博客 解决——虚拟机无法Ping通主机

2、启动防火墙

# 启动防火墙
modprobe ip_tables
sudo ufw enable
sudo ufw reload

image-20220428150454242

3、设置规则

清除filter表中的规则,设置默认规则为丢弃一切报文 ,并用wireshark检验

# 设置规则
sudo iptables -F
sudo iptables -P INPUT DROP
sudo iptables -P OUTPUT DROP
sudo iptables -P FORWARD DROP
# ping命令检验
ping 192.168.85.1

image-20220408233829026

设置完后发现发送的报文已经都被丢弃了

4、限制Ping----A可Ping

设置规则,让主机A可以 ping其它机器,其它机器不可以ping主机A 【此时由虚拟机去ping的话又可以接受到包】

sudo iptables -A INPUT -p icmp -m state --state ESTABLISHED,RELATED -j ACCEPT
# 第一个IP为虚拟机地址,第二个为window地址
sudo iptables -A OUTPUT -s 192.168.85.128 -d 192.168.85.1 -p icmp -j ACCEPT  

  • 虚拟机去ping windows:
ping 192.168.85.1

image-20220408234029046

  • windows去ping虚拟机:
ping 192.168.85.128

image-20220404114945413

5、限制Ping----A不可Ping

设置规则:让其它机器可以ping主机A ,阻止主机A ping其它机器

# 先要把之前的规则去掉
sudo iptables -F OUTPUT
sudo iptables -F INPUT
sudo iptables -A OUTPUT -p icmp -m state --state ESTABLISHED,RELATED -j ACCEPT
# 位置反一反
sudo iptables -A INPUT -s 192.168.85.1 -d 192.168.85.128 -p icmp -j ACCEPT
# 查看INPUT情况
sudo iptables -L
sudo iptables -P INPUT ACCEPT

  • 虚拟机去ping windows:
ping 192.168.85.1

image-20220408234145780

  • windows去ping虚拟机:
ping 192.168.85.128

image-20220408234337221

6、开放Ping

主机A可以ping其它机器,也允许其它机器ping主机A

sudo iptables -F OUTPUT
sudo iptables -F INPUT
sudo iptables -P OUTPUT ACCEPT
sudo iptables -A OUTPUT -s 192.168.85.128 -d 192.168.85.1 -p icmp -j ACCEPT
sudo iptables -A INPUT -s 192.168.85.1 -d 192.168.85.128 -p icmp -j ACCEPT

  • 虚拟机去ping windows:
ping 192.168.85.1

image-20220408234423542

  • windows去ping虚拟机:
ping 192.168.85.128

image-20220408234441883

六 思考题

(1)所有链的预设规则应该设置为什么?为什么?(DROP、ACCEPT?)

  • FORWARD(相当于路由器):DROP,做到对内网ip的控制,你允许哪一个访问internet就可以增加一个规则,不在规则中的ip将无法访问internet
  • INPUT:DROP,当服务器不需要与他人通信时,将INPUT设置为DROP就可以防止其他人对自身进行攻击
  • OUTPUT:ACCEPT,由于accept会过滤从本机向外发出的数据包,当没有外界信息流入,仅自己与外界通信时,是具备一定的可靠性的

(2)包过滤防火墙有什么优缺点?

包过滤防火墙是用一个软件查看所流经的数据包的包头(header),由此决定整个包的命运。它可能会决定丢弃(DROP)这个包,可能会接受(ACCEPT)这个包(让这个包通过),也可能执行其它更复杂的动作

  • 对于一个小型的、不太复杂的站点,包过滤比较容易实现
  • 过滤路由器工作在IP层和TCP层,所以处理包的速度比代理服务器快
  • 过滤路由器为用户提供了一种透明的服务,用户不需要改变客户端的任何应用程序,也不需要用户学习任何新的东西。因为过滤路由器工作在IP层和TCP层,而IP层和TCP层与应用层的问题毫不相关。所以,过滤路由器有时也被称为“包过滤网关”或“透明网关”,之所被称为网关,是因为包过滤路由器和传统路由器不同,它涉及到了传输层。
  • 过滤路由器在价格上一般比代理服务器便宜

  • 一些包过滤网关不支持有效的用户认证
  • 规则表很快会变得很大而且复杂,规则很难测试。随着表的增大和复杂性的增加,规则结构出现漏洞的可能 性也会增加
  • 这种防火墙最大的缺陷是它依赖一个单一的部件来保护系统。如果这个部件出现了问题,会使得网络大门敞开,而用户甚至可能还不知道
  • 在一般情况下,如果外部用户被允许访问内部主机,则它就可以访问内部网上的任何主机
  • 包过滤防火墙只能阻止一种类型的IP欺骗,即外部主机伪装内部主机的IP,对于外部主机伪装外部主机的IP欺骗却不可能阻止,而且它不能防止DNS欺骗

(3)如果规则链中两条规则是互相矛盾的,如前一条是禁止某个端口,后一条是打开这个端口,会出现什么情况?

iptables的规则匹配是按顺序匹配的,因此如果前一条是禁止某个端口,由于其位置更为靠前,将会被优先匹配,因此在这种情况下会禁止该端口。

sudo iptables -F
sudo iptables -P INPUT DROP
sudo iptables -P OUTPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -A INPUT -s 192.168.85.1 -d 192.168.85.128 -p icmp -j ACCEPT
sudo iptables -A OUTPUT -s 192.168.85.128 -d 192.168.85.1 -p icmp -j ACCEPT

image-20220409103239911

sudo iptables -F
sudo iptables -P INPUT DROP
sudo iptables -P OUTPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -A INPUT -s 192.168.85.1 -d 192.168.85.128 -p icmp -j DROP
sudo iptables -A INPUT -s 192.168.85.1 -d 192.168.85.128 -p icmp -j ACCEPT
sudo iptables -A OUTPUT -s 192.168.85.128 -d 192.168.85.1 -p icmp -j ACCEPT

image-20220409103330498

七 实验问题

1、解决:ifconfig not found

如果说 ifconfig not found,就用以下代码安装一下 net-tools

sudo apt install net-tools

2、解决:虚拟机与主机Ping不通

网络安全学习路线&学习资源在这里插入图片描述

网络安全的知识多而杂,怎么科学合理安排?

下面给大家总结了一套适用于网安零基础的学习路线,应届生和转行人员都适用,学完保底6k!就算你底子差,如果能趁着网安良好的发展势头不断学习,日后跳槽大厂、拿到百万年薪也不是不可能!

初级网工

1、网络安全理论知识(2天)

①了解行业相关背景,前景,确定发展方向。
②学习网络安全相关法律法规。
③网络安全运营的概念。
④等保简介、等保规定、流程和规范。(非常重要)

2、渗透测试基础(一周)

①渗透测试的流程、分类、标准
②信息收集技术:主动/被动信息搜集、Nmap工具、Google Hacking
③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察
④主机攻防演练:MS17-010、MS08-067、MS10-046、MS12-20等

3、操作系统基础(一周)

①Windows系统常见功能和命令
②Kali Linux系统常见功能和命令
③操作系统安全(系统入侵排查/系统加固基础)

4、计算机网络基础(一周)

①计算机网络基础、协议和架构
②网络通信原理、OSI模型、数据转发流程
③常见协议解析(HTTP、TCP/IP、ARP等)
④网络攻击技术与网络安全防御技术
⑤Web漏洞原理与防御:主动/被动攻击、DDOS攻击、CVE漏洞复现

5、数据库基础操作(2天)

①数据库基础
②SQL语言基础
③数据库安全加固

6、Web渗透(1周)

①HTML、CSS和JavaScript简介
②OWASP Top10
③Web漏洞扫描工具
④Web渗透工具:Nmap、BurpSuite、SQLMap、其他(菜刀、漏扫等)

恭喜你,如果学到这里,你基本可以从事一份网络安全相关的工作,比如渗透测试、Web 渗透、安全服务、安全分析等岗位;如果等保模块学的好,还可以从事等保工程师。薪资区间6k-15k

到此为止,大概1个月的时间。你已经成为了一名“脚本小子”。那么你还想往下探索吗?

“脚本小子”成长进阶资源领取

7、脚本编程(初级/中级/高级)

在网络安全领域。是否具备编程能力是“脚本小子”和真正黑客的本质区别。在实际的渗透测试过程中,面对复杂多变的网络环境,当常用工具不能满足实际需求的时候,往往需要对现有工具进行扩展,或者编写符合我们要求的工具、自动化脚本,这个时候就需要具备一定的编程能力。在分秒必争的CTF竞赛中,想要高效地使用自制的脚本工具来实现各种目的,更是需要拥有编程能力.

零基础入门,建议选择脚本语言Python/PHP/Go/Java中的一种,对常用库进行编程学习; 搭建开发环境和选择IDE,PHP环境推荐Wamp和XAMPP, IDE强烈推荐Sublime; ·Python编程学习,学习内容包含:语法、正则、文件、 网络、多线程等常用库,推荐《Python核心编程》,不要看完; ·用Python编写漏洞的exp,然后写一个简单的网络爬虫; ·PHP基本语法学习并书写一个简单的博客系统; 熟悉MVC架构,并试着学习一个PHP框架或者Python框架 (可选); ·了解Bootstrap的布局或者CSS。

8、超级网工

这部分内容对零基础的同学来说还比较遥远,就不展开细说了,贴一个大概的路线。感兴趣的童鞋可以研究一下,不懂得地方可以【点这里】加我耗油,跟我学习交流一下。

网络安全工程师企业级学习路线

如图片过大被平台压缩导致看不清的话,可以【点这里】加我耗油发给你,大家也可以一起学习交流一下。

一些我自己买的、其他平台白嫖不到的视频教程:

需要的话可以扫描下方卡片加我耗油发给你(都是无偿分享的),大家也可以一起学习交流一下。

网络安全学习路线&学习资源在这里插入图片描述

结语

网络安全产业就像一个江湖,各色人等聚集。相对于欧美国家基础扎实(懂加密、会防护、能挖洞、擅工程)的众多名门正派,我国的人才更多的属于旁门左道(很多白帽子可能会不服气),因此在未来的人才培养和建设上,需要调整结构,鼓励更多的人去做“正向”的、结合“业务”与“数据”、“自动化”的“体系、建设”,才能解人才之渴,真正的为社会全面互联网化提供安全保障。

特别声明:

此教程为纯技术分享!本书的目的决不是为那些怀有不良动机的人提供及技术支持!也不承担因为技术被滥用所产生的连带责任!本书的目的在于最大限度地唤醒大家对网络安全的重视,并采取相应的安全措施,从而减少由网络安全而带来的经济损失!!!

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值