day21、2 - 防火墙的部署实验

本文详细介绍了如何部署防火墙、创建区域、配置策略,并通过虚拟机模拟环境进行实验。涵盖了防火墙的区域划分规则、IP配置、端口映射、访问控制以及不同功能的实战演示,如PAT转换、URL过滤等。

一、总实验说明

  • 要求如图所示

    image-20211118180346452

二、防火墙部署说明

  • 先在防火墙上创建区域,创建好后将对应的端口划分到对应的区域。
  • 写策略:一般都是高区域向低区域写策略,只允许高区域主动去访问低区域,不允许低区域与向高区域主动访问。高到低:inside > DMZ > outside

三、环境搭建说明

  • 命名规则:防火墙的接口和路由器交换机的接口命名不太一样,防火墙的大部分厂家的接口命名为eth0/1/2/3,因为大部分的防火墙都是基于linux开发的,linux中eth就是接口的意思。inside即内部区域、outside为外部区域、DMZ为为DMZ区域

  • 我们怎么用虚拟机模拟防火墙:硬件防火墙也是买硬件然后在其中装防火墙软件,然后配置好,来模拟一个简单的硬件防火墙。一般天融信的防火墙出厂时就给第一个端口–名为eth0配置了IP,目的就是为了方便我们配置防火墙的内置功能,比如现在eth0为防火墙的第一个接口,配置的IP为192.168.1.254,且端口一般为80/443。那么我们可以插一根网线到防火墙的eth0端口,另一端连接我们的PC,将我们的PC的IP地址配置与防火墙的端口在同一网段的IP地址,打开浏览器地址栏输入192.168.1.254:80或者443来访问防火墙的配置页面,配置相关的内置功能即可。我们使用的模拟硬件防火墙的虚拟机中接口的端口号默认为8080,所以输入IP:8080即可访问。

  • 但是如果是最新的防火墙,可能不支持版本太低的浏览器去访问配置页面,所以就选把xpIP配置同网段,也无法访问。但是我们知道我们的真实机有一块虚拟网卡,打开后是可以桥接到vmnet1的,所以我们可以用真实机打开vmnet1虚拟网卡,配置IP与防火墙第一个端口IP在同一网段,用真实机的浏览器访问防火墙配置页面即可

    image-20211118160123195 image-20211118160151357

  • 如何给实验中的网络设置模拟不同的区域不同的网段:我们可以把防火墙的每个端口和其连接的PC桥接到同一个vmnet,但是防火墙的不同端口桥接到不同vmnet。如图中防火墙的eth0端口与xp端口都桥接到vmnet1;防火墙的eth1端口与2003端口都桥接到vmnet2;防火墙的eth2端口与下面的2003都桥接到vmnet3。那么此时三台PC虚拟机相互通信都要经过防火墙,把防火墙对应连接的接口当网关

四、实验一

1.环境搭建

  • 在网上找FortiGate镜像,https://blog.youkuaiyun.com/B_E_A_S_T/article/details/117573687?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163722321316780261974980%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=163722321316780261974980&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_ecpm_v1~rank_v31_ecpm-1-117573687.first_rank_v2_pc_rank_v29&utm_term=%E6%9C%89%E5%85%B3fortigate&spm=1018.2226.3001.4187,下载好后代替实验中的topgate镜像防火墙

  • 开启连接防火墙的三个端口,从上到下依次是eth0,eth1,eth2;分别桥接到v1,v2,v3

    image-20211118163701898
  • 将xp虚拟机桥接到v1,2003-1桥接到v2,2003-2桥接到v3

    image-20211118164004065image-20211118164022864image-20211118164043903

  • 开启防火墙,登录成功(飞塔防火墙的默认用户名为 admin ,密码为空)

    image-20211118164435899
  • 开启真实机的vmnet1虚拟网卡

    image-20211118180112604

2.实验步骤

1)PC配置IP及网关
  • xp,win2003-1,win2003-2

    image-20211118180749209image-20211118180931097image-20211118181035794

2)进入防火墙配置页面
  • 给真实机的v1虚拟接口配IP,与eth0(fortigate防火墙的第一个端口名为port1)以及xp在同一网段,但是不用配置网关,因为我们只是用真实机访问防火墙的页面而不需要访问其他网段的几个虚拟机

    image-20211118181423473
  • 打开真实机浏览器,输入防火墙port1端口出厂自带的IP地址,真实中默认是80端口(没有的话打开命令行输入命令配置好即可)

    image-20211118182219612image-20211118182304851

  • 输入port1IP,再输入账号密码访问防火墙配置页面

    image-20211118182453623
  • 防火墙创建区域,接口加入区域

    image-20211118185255371

  • 并给接口配置IP(本实验不需要配置路由表,因为没涉及到有路由器网络)

    image-20211118183324102

  • 写策略并验证:inside --> outside inside --> dmz dmz --> outside 放行

    image-20211118184603348

    此时192.168.1.1可以ping通172.16.1.1和100.1.1.1,但是反过来就不行;172.16.1.1可以ping通100.1.1.1,但是反过来就不行

五、实验二

1.环境搭建

  • 模拟一个互联网的公网IP环境:将外网PC的网关去掉,则外网PC现在只能访问同网段的,访问不同网段的由于没指网关,则无法访问。

2.实验步骤

  • 此时如果在防火墙上添加PAT功能,将内网IP转换为外网IP,那么内部区域PC就可以直接访问外网服务器了,因为防火墙利用PAT做了一个IP地址转换的功能。

  • 根据区域的方向来做地址转换,不用定义内外网端口!

    image-20211118185832183
  • 验证inside区域和dmz区域的员工依然可以上网

六、实验三

1.实验步骤

  • 将DMZ区域的2003部署为web服务器并发布出去

    1)做目标转换–即做静态端口转换:从外网进来的流量目标IP为172.16.1.1且端口号为80,即可转换地址,转换成172.16.1.1

    2)还需要写策略:outside–>dmz:172.16.1.1:80

  • 使用outside区域2003通过访问http://100.1.1.88

七、实验四

1.实验步骤

完成应用层的过滤

  • 外网的2003部署成公网的某色情web服务器和dns服务器

  • 给DMZ区域以及inside区域员工指公网的DNS,然后在浏览器输入域名访问某色情网站,可以访问

  • 现在再在外网2003发布一个百度的网站

  • 现在要求做URL过滤,url为一般的网站可以访问,黑名单url禁止访问,即在inside到outside的策略里和在dmz到outside策略里再设置一个内容安全策略:

    image-20211118193348923 image-20211118193426875 image-20211118193644872
  • http内容过滤,结果包含敏感词汇,禁止访问网站

    image-20211118193842329 image-20211118193933066
<think>好的,用户之前已经询问过一年的详细学习计划,现在他需要针对第1-2月的计划制定更详细的版本。我需要先回顾之前的回答,确保这次的内容是更细致的展开。 用户可能已经按照之前的计划开始学习,但需要更具体的每日或每周安排,以及更详细的任务分解。他可能希望知道每天要学什么,如何分配时间,具体的学习资源和练习项目是什么。同时,他可能担心自己能否坚持,或者需要一些方法来跟踪进度。 我需要把第1-2月的内容拆解得更细,比如分周安排任务,明确每天的学习目标,推荐具体的学习资料,以及提供检查点来评估进展。此外,用户可能对某些工具或技术不熟悉,需要给出入门指南或示例,比如Shell脚本的具体例子,Python项目的步骤。 还要考虑用户的学习曲线,从基础开始逐步深入,确保每个任务都有明确的产出,比如GitHub提交的脚本或博客文章。同时,提醒用户记录学习日志,帮助复盘和调整计划。可能还需要加入一些时间管理的建议,比如每日时间分配,避免过度劳累。 最后,检查是否有遗漏的部分,比如是否需要推荐书籍或在线课程,是否需要强调某些重点难点,或者给出常见问题的解决方法。确保整个计划实用、可行,并且能够帮助用户有效掌握Linux、Python和网络基础知识。</think>以下是针对**第1-2月(基础技能强化)**的**超详细学习计划**,精确到每周任务、每日学习清单和实操案例,适合零基础快速上手: --- ### **学习目标** 1. 熟练使用Linux基础命令和Shell脚本编写 2. 掌握Python核心语法及运维常用库(Pandas/Flask) 3. 理解Docker容器化部署流程 4. 输出可复用的脚本工具库 --- ### **分周计划** #### **第1周:Linux核心操作** **重点**:文件系统/权限管理/进程监控 - **每日任务**: - **Day1-2**: - 掌握20个高频命令: ```bash # 文件操作:find、grep、rsync find /var/log -name "*.log" -mtime +7 -delete # 清理7天前日志 grep "500" access.log | awk '{print $7}' | sort | uniq -c # 统计500错误的URL # 资源监控:top/htop、free、iostat watch -n 1 'df -h | grep /dev/sda1' # 实时监控磁盘分区使用率 ``` - 实验:用`cron`设置定时任务(每天凌晨压缩日志) - **Day3-4**: - 用户与权限实战: ```bash groupadd devops && useradd -G devops alice # 创建组和用户 chmod 755 /opt/scripts && chown alice:devops /opt/scripts # 设置目录权限 ``` - 实验:用`systemd`管理Nginx服务(启动/重启/查看状态) - **Day5-7**: - 网络配置: ```bash ip addr show eth0 # 查看网卡信息 nc -zv 192.168.1.10 80 # 检测端口连通性 tcpdump -i eth0 port 22 -w ssh.pcap # 抓取SSH流量 ``` - 实验:用`ufw`配置防火墙规则(仅允许22/80/443端口) --- #### **第2周:Shell脚本自动化** **重点**:脚本调试/日志处理/任务调度 - **每日任务**: - **Day1-2**: - 编写第一个Shell脚本: ```bash #!/bin/bash # 自动备份MySQL数据库并删除7天前的旧备份 mysqldump -u root -p$DB_PASS wordpress > /backup/$(date +%F).sql find /backup -name "*.sql" -mtime +7 -exec rm {} \; ``` - 实验:添加`set -e`和`set -x`调试脚本 - **Day3-4**: - 日志分析实战: ```bash # 统计Nginx日志中每分钟请求量Top10的IP awk '{print $1}' access.log | cut -d: -f2 | sort | uniq -c | sort -nr | head -n10 ``` - 实验:用`sed`批量替换配置文件的端口号(如将8080改为8000) - **Day5-7**: - 定时任务进阶: ```bash # 每小时检查磁盘使用率,超过90%时发邮件告警 df -h | awk '$5+0 > 90 {print $6 " is full!"}' | mail -s "Disk Alert" admin@example.com ``` - 实验:用`logger`将脚本输出写入syslog --- #### **第3周:Python运维编程** **重点**:文件处理/API开发/数据分析 - **每日任务**: - **Day1-2**:Python基础速成: - 用`os`和`shutil`模块遍历目录并清理临时文件: ```python import os for root, dirs, files in os.walk('/tmp'): for file in files: if file.endswith('.tmp'): os.remove(os.path.join(root, file)) ``` - **Day3-4**:Pandas数据分析: - 解析服务器性能CSV并输出报告: ```python import pandas as pd df = pd.read_csv('server_metrics.csv') print(df[df['cpu_usage'] > 80].groupby('hostname').size()) ``` - **Day5-7**:Flask API开发: - 创建接收告警的API端点: ```python from flask import Flask, request app = Flask(__name__) @app.route('/alert', methods=['POST']) def alert(): data = request.json print(f"收到告警:{data['message']}") return 'OK' if __name__ == '__main__': app.run(host='0.0.0.0', port=5000) ``` --- #### **第4周:Docker实战与整合** **重点**:镜像构建/容器网络/服务编排 - **每日任务**: - **Day1-2**:Docker基础操作: - 部署一个WordPress容器栈: ```bash docker run -d --name mysql -e MYSQL_ROOT_PASSWORD=pass mysql:5.7 docker run -d --name wordpress --link mysql -p 8080:80 wordpress ``` - **Day3-4**:自定义镜像: - 构建带Python环境的镜像: ```Dockerfile FROM alpine:3.12 RUN apk add --no-cache python3 py3-pip && pip3 install flask COPY app.py /app.py CMD ["python3", "/app.py"] ``` - **Day5-7**:Docker网络与存储: - 实验:创建自定义网络并配置容器间通信: ```bash docker network create devops-net docker run -d --net devops-net --name redis redis:alpine docker run -it --net devops-net alpine ping redis ``` --- ### **每日学习时间表** | 时间段 | 内容 | 示例任务 | |--------------|------------------------------|-----------------------------------| | **07:00-08:00** | Linux命令练习 | 用`find`清理日志文件 | | **12:30-13:30** | Python编码 | 完善Flask告警API的错误处理 | | **19:00-20:30** | 综合实验 | 部署Docker容器并编写部署文档 | | **周末** | 复盘与输出 | 撰写技术博客/GitHub提交代码 | --- ### **学习资源推荐** 1. **Linux**: - 书籍:《Linux命令行与Shell脚本编程大全》 - 实验:[Linux Journey](https://linuxjourney.com/)(免费交互式教程) 2. **Python**: - 视频:[Corey Schafer的Python教程](https://www.youtube.com/c/Coreyms)(重点看Pandas部分) - 代码库:[Real Python](https://realpython.com/)(搜索“Flask API”案例) 3. **Docker**: - 官方文档:[Docker Get Started](https://docs.docker.com/get-started/) - 实战平台:[Play with Docker](https://labs.play-with-docker.com/) --- ### **学习检查点** - **每周五晚**:自我测试(例如:不查文档写出一个日志切割脚本) - **每周末**:提交GitHub代码+更新学习日志(记录遇到的坑和解决方法) - **第2个月底**: 1. 完成一个综合项目: - 用Shell脚本监控服务器状态 → 调用Python生成报告 → 通过Docker部署 2. 产出物: - GitHub仓库:包含至少10个实用脚本 - 博客文章:《从零到一的Linux运维入门指南》 --- ### **避坑提醒** 1. **不要死记命令**:用`tldr`工具快速查看常用命令示例(比man更友好) ```bash # 安装后快速查询 tldr tar # 显示tar命令的常用场景 ``` 2. **优先解决报错**:遇到Python异常时,先阅读完整的Traceback信息(重点关注最后一行) 3. **容器安全**:避免在Dfile中使用`latest`标签,始终指定版本号(如`python:3.9-slim`) 通过这个计划,2个月内你将具备**独立编写运维自动化脚本**和**部署基础服务**的能力。关键点:**每天至少写30行代码**,坚持在[LeetCode](https://leetcode.com/)或[Exercism](https://exercism.org/)做Python练习题保持手感!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值