赞
踩
1、什么是“防火墙”
防火墙技术是通过有机结合各类用于==安全管理与筛选==的软件和硬件设备,帮助计算机网络与其==内、外网之间==构建一道相对隔绝的==保护屏障==,以保护用户资料与信息安全性的一种技术。
外网通过IP访问内网时,只有在防火墙同意情况下,用户才能够进入计算机内,如果不同意就会被阻挡于外。
2、“防火墙”的作用是什么
防火墙技术的功能主要在于==及时发现并处理==计算机网络运行时可能存在的安全风险、数据传输等问题,其中处理措施包括==隔离与保护==,同时可对计算机网络安全当中的各项操作实施==记录与检测==,以确保计算机网络运行的安全性,保障用户资料与信息的完整性,为用户提供更好、更安全的计算机网络使用体验。
3、可使用哪些软件管理“防火墙”
可使用==firewalld==以及==iptables==对防火墙进行管理,下面会介绍这两个软件如何管理防火墙。
4、“防火墙”其实由三张表构成
(1)==filter==表(数据过滤表)
(2)==nat==表(地址转换表)
(3)==mangle==表(附加表)
当filter表和nat表不够用时,才会启用mangle表
- ## 1、firewalld的管理和存储方式
-
- ### (1)firewalld的安装
- yum search firewalld |查看firewalld相关安装包
- yum install firewalld -y |安装firewalld
- rpm -qa |grep firewalld |查看firewalld是否安装上
-
- ### (2)使用firewalld时的环境配置
- ##### ==firewalld==不能与==iptables==共同开启,所以使用firewalld前应对iptables进行管理
- systemctl stop iptables |关闭iptables
- systemctl disable iptables |设定开机不启动iptables
- systemctl mask iptables |将iptables锁住
- systemctl start firewalld |开启firewalld
- systemctl enable firewalld |设定开机自动启动firewalld
- /etc/firewalld/zones |firewalld更改支持的服务时,所生成的文件放置在此目录
- /etc/firewalld/zones/public.xml |firewalld支持的服务的文件,当添加新的支持服务时,会生成新的该文件,且原先文件会自动重命名为public.xml.old
- /usr/lib/firewalld/services |firewalld存放服务配置的目录,该目录下为.xml文件
- mv /usr/lib/firewalld/services/http.xml /usr/lib/firewalld/services/httpd.xml |给服务配置文件重命名,可以修改添加该服务时的服务名称
- systemctl restart firewalld |修改文件名后需重启firewalld服务生效,若修改名称的服务是firewalld已添加的支持服务,则该服务从支持列表中消失,需重新添加
1、查看存放irewall目录列表
2、对系统服务进行添加、查看对应文件的内容
3、查看各个服务的信息文件
4、修改服务的文件名称
5、修改文件名称后原来的文件名称不会自动识别
6、重新添加修改后文件的名称
7、firewalld的图形化管理
firewall-config |使用该命令打开firewalld的图形化管理界面,即可对firewalld进行图形化管理
firewall中各个域对应的列表如下:
网络区名称 | 该区域默认的策略配置 |
drop(丢弃) | 任何接收的网络数据包都被丢弃,没有任何回复,仅能有发送出去的网络连接 |
block(限制) | 任何接收的网络连接都被IPv4的icmp-host-prohibited信息和IPv6的icmp6-adm-prohibited信息所拒绝 |
public(公共) | 在公共区域内使用,不能相信网络内的其他计算机不会对你的计算机造成危害,仅接收经过选择的连接 |
external(外部) | 特别是为路由器启用了伪装功能的外部网,你不能信任来自网络的其他计算机,仅接收经过选择的连接 |
dmz(非军事区) | 用于你的非军事区的电脑,此区域内可公开访问,可以有限地进入你的内部网络,仅仅接收经过选择的连接 |
work(工作) | 用于工作区,你可以基本相信网络内的其他电脑不会危害你的电脑,仅接收经过选择的连接 |
home(家庭) | 用于家庭网络,可以基本信任网络内的其他电脑不会危害你的电脑,仅接收经过选择的连接 |
internal(内部) | 用于内部网络,你可以基本上信任网络内的其他电脑不会危害你的电脑,仅接收经过选择的连接 |
trusted(信任) | 可以接收所有的网络连接 |
1、允许所有人可以访问(public)
- firewall-cmd --set-defautl-zone=public ##将默认域设为 public
- firewall-cmd --list-all ##查看列表
(1)、设置如下
(2)、测试:登录172.25.66.66登录成功
2、限制所有人禁止登录(block)
- firewall-cmd --set-defautl-zone=block ##将默认域设为 block
- firewall-cmd --list-all ##查看列表
(1)、设置如下:
(2)、测试:登录172.25.66.66 登录失败
3、将默认域设置为可以接收所有的网络连接(trusted)
- firewall-cmd --set-defautl-zone=trusted ##将默认域设为 trusted
- firewall-cmd --list-all ##查看列表
(2)、测试:登录成功
- firewall-cmd --state |查看firewalld的状态
- firewall-cmd --get-services |查看所有能添加的服务
- firewall-cmd --get-zones |查看所有能使用的firewalld域
- firewall-cmd --get-default-zone |查看当前默认的firewalld域
- firewall-cmd --get-active-zones |查看当前在使用的firewalld域
- firewall-cmd --list-all |列出当前域的策略信息
- firewall-cmd --list-all --zone=xxx |列出指定域的策略信息
- firewall-cmd --list-all-zones |列出所有域的策略信息
- firewall-cmd --set-default-zone=xxx |设定默认的firewalld域为xxx
1、
-
- firewall-cmd --get-default-zone |查看当前默认的firewalld域
- firewall-cmd --get-active-zones |查看当前在使用的firewalld域
2、
-
- firewall-cmd --list-all |列出当前域的策略信息
- firewall-cmd --list-all --zone=public(trusted)(block) |列出public(trusted)(block)域的策略信息
3、
-
- firewall-cmd --list-all-zones |列出所有域的策略信息
- firewall-cmd --set-default-zone=xxx |设定默认的firewalld域为xxx
(一)、相关ip的设定
- #### <2>firewalld来源的配置与测试
- 配置了来源后,该来源访问本机时,将使用==与该来源匹配的配置好的策略==,==不使用默认策略==
-
- firewall-cmd --list-all |查看默认域信息,确定策略(此处我设置的默认域为block)
- ssh root@xxx.xxx.xxx.xxx |(在客户端测试)查看是否可以访问,此时不可(因为默认域为block)
- firewall-cmd --permanent --add-source=172.25.66.250 --zone=trusted |永久添加来源IP:172.25.66.250(我的客户端IP),通过该IP访问时,策略为trusted域的策略
- firewall-cmd --reload |加载改动
- firewall-cmd --list-all --zone=trusted |查看trusted域信息,确定来源IP(此时172.25.254.54确认添加)
- firewall-cmd --get-active-zones |查看当前在使用的域信息,此时有trusted域信息,且显示添加的来源IP
- ssh root@xxx.xxx.xxx.xxx |(在客户端测试)查看是否可以访问,此时可以(因为通过该IP访问时,策略为trusted域的策略)
- firewall-cmd --permanent --remove-source=172.25.66.250 --zone=trusted |永久删除通过该IP访问时,策略为trusted域的策略的来源IP:172.25.66.250(我的客户端IP)
- firewall-cmd --reload |加载改动
- firewall-cmd --list-all --zone=trusted |查看trusted域信息,确定来源IP(此时172.25.66.250确认删除)
- firewall-cmd --get-active-zones |查看当前在使用的域信息,此时无trusted域信息
- ssh root@xxx.xxx.xxx.xxx |(在客户端测试)查看是否可以访问,此时不可(因为默认域为block)
-

1、 firewall 中永久添加可以被 firewall识别的ip
- firewall-cmd --permanent --add-source=172.25.66.250 永久添加通过该IP访问时,策略默认域的策略的来源IP:172.25.66.250(我的客户端IP)
- firewall-cmd --reload ##刷新
- firewall-cmd --permanent --remove-source=172.25.66.250 永久删除通过该IP访问时,策略默认域的策略的来源IP:172.25.66.250(我的客户端IP)
2、
- firewall-cmd --permanent --add-source=172.25.66.250 --zone=trusted 永久添加通过该IP访问时,策略为trusted域的策略的来源IP:172.25.66.250(我的客户端IP)
- firewall-cmd --reload ##刷新
- firewall-cmd --permanent --remove-source=172.25.66.250 --zone=trusted 永久删除通过该IP访问时,策略为trusted域的策略的来源IP:172.25.66.250(我的客户端IP)
3、只添加没有指定哪个域无法别系统识别
- firewall-cmd --permanent --add-source=172.25.66.250 永久添加通过该IP访问时,策略默认域的策略的来源IP:172.25.66.250(我的客户端IP)
- firewall-cmd --reload ##刷新
- firewall-cmd --get-active-zone ##查看正在工作的域
测试:无法登录
4、
-
- firewall-cmd --permanent --remove-source=172.25.66.250 永久删除通过该IP访问时,策略默认域的策略的来源IP:172.25.66.250
- firewall-cmd --reload ##刷新
(1)、删除之前实验对实验的影响
(2)、
- firewall-cmd --permanent --add-source=172.25.66.250 --zone=trusted 永久添加通过该IP访问时,策略为trusted域的策略的来源IP:172.25.66.250(我的客户端IP)
- firewall-cmd --reload ##刷新
- firewall-cmd --permanent --remove-source=172.25.66.250 --zone=trusted 永久删除通过该IP访问时,策略为trusted域的策略的来源IP:172.25.66.250(我的客户端IP)
(3)、测试:用户登录成功
(4)、、
修改默认域的值
测试:
(二)、firewall对网卡的设置
-
- #### <1>firewalld网卡的配置与测试
- 一个网卡可以对应一个默认的firewalld域,可以实现==不同网卡对应不同策略==的控制
-
- ifconfig |确认自己有几块网卡,并确认不同网卡对应的不同IP
- firewall-cmd --list-all |查看默认域信息,确定策略(此时我设置的当前默认域为block),并查看当前域上的网卡(此时eth0、eth1均在)
- firewall-cmd --remove-interface=eth1 --zone=block |将网卡eth1从block域上删除(即通过网卡eth1的IP访问时,不使用block的策略)
- firewall-cmd --add-interface=eth1 --zone=trusted |将网卡eth1添加到trusted域上(即通过网卡eth1的IP访问时,使用trusted的策略)
- firewall-cmd --list-all |查看默认域信息,确定网卡(此时只有eth0,eth1被删除)
- firewall-cmd --list-all --zone=trusted |查看trusted域信息,确定网卡(此时eth1添加成功)
- ssh root@xxx.xxx.xxx.xxx(通过网卡eth0的IP访问) |(在客户端测试)查看通过网卡eth0的IP是否可以访问,此时不可(因为eth0的域是block)
- ssh root@xxx.xxx.xxx.xxx(通过网卡eth1的IP访问) |(在客户端测试)查看通过网卡eth1的IP是否可以访问,此时可以(因为eth1的域是trusted)
- firewall-cmd --change-interface=eth1 --zone=block |改变网卡eth1的域为block
- firewall-cmd --list-all |查看默认域信息,确定网卡(此时有eth0、eth1)
- firewall-cmd --list-all --zone=trusted |查看trusted域信息,确定网卡(此时无eth1)
- ssh root@xxx.xxx.xxx.xxx(通过网卡eth1的IP访问) |(在客户端测试)查看通过网卡eth1的IP是否可以访问,此时不可(因为eth1的域是block)

1、在实验机上设置两块网卡 eth0、eth1
eth0:172.25.66.66
eth1:172.25.66.77
2、修改 firewall 的默认域为 block
3、
- firweall-cmd --remove-interface=eth1 --zone=block ## 将eth1从block域中删除
- firewall-cmd --add-interface=eth1 --zone=trusted ## 将eth1添加到trusted域中
- firewall-cmd --list-all --zone=trusted ##查看trusted 域中的信息
4、
- firewall-cmd --reload ##刷新
- systemctl restart firewalld ##重启firewalld服务
5、
测试:eth0 不可以登录 eth1可以登录
1、在firewall中添加服务
- firewall-cmd --permanent --add-service=ssh ##添加ssh服务
- firewall-cmd --permanent --remove-service=ssh ##删除ssh服务
2、在firewall中进行相关服务端口的添加
- firewall-cmd --permanent --add-port=22/tcp ##添加22端口ssh服务
- firewall-cmd --permanent --remove-port=22/tcp ##删除22端口ssh服务
3、永久添加服务
- firewall-cmd --direct --get-all-rules |查看当前的所有添加的rule
- firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -s 172.25.254.250 -p tcp --dport 80 -j ACCEPT |添加rule:ipv4,添加到filter表的INPUT字段中的第一行,针对IP172.25.254.250生效,协议为tcp协议,端口为80端口,IP符合条件时为ACCEPT,通过(意为给该IP添加的特殊策略,符合IP时80端口开启)
- firewall-cmd --direct --add-rule ipv4 filter INPUT 2 -s 172.25.254.250 -p tcp --dport 22 -j REJECT |添加rule:ipv4,添加到filter表的INPUT字段中的第二行,针对IP172.25.254.250生效,协议为tcp协议,端口为22端口,IP符合条件时为REJECT,拒绝(符合条件时22端口拒绝)
- firewall-cmd --direct --remove-rule ipv4 filter INPUT 1 -s 172.25.254.250 -p tcp --dport 80 -j ACCEPT |删除该rule
- firewall-cmd --direct --remove-rule ipv4 filter INPUT 2 -s 172.25.254.250 -p tcp --dport 22 -j REJECT |删除该rule
-
1、禁止172.25.66.250访问22端口(ssh的服务端口)
- firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -s 172.25.66.250 -p tcp --dport 22 -j REJECT 添加rule:ipv4,添加到filter表的INPUT字段中的第一行,针对IP172.25.66.250生效,协议为tcp协议,端口为22端口,IP符合条件时为ACCEPT,通过(意为给该IP添加的特殊策略,符合IP时80端口开启)
- firewall-cmd --reload ##刷新
测试:登录失败
2、设置只有172.25.66.250可以访问22端口(ssh的服务端口)
- firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -s 172.25.66.250 -p tcp --dport 22 -j ACCEPT 添加rule:ipv4,添加到filter表的INPUT字段中的第一行,针对IP172.25.66.250生效,协议为tcp协议,端口为22端口,IP符合条件时为ACCEPT,通过(意为给该IP添加的特殊策略,符合IP时80端口开启)
- firewall-cmd --reload ##刷新
- firewall-cmd --direct --get-all-rules ##查看rule域
测试:172.25.666.250 可以登录
3、只允许172.25.66.250登录172.25.66.66主机的apache
(1)、设置相应的命令
- firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -s 172.25.66.250 -p tcp --dport 80 -j ACCEPT 添加rule:ipv4,添加到filter表的INPUT字段中的第一行,针对IP172.25.66.250生效,协议为tcp协议,端口为22端口,IP符合条件时为ACCEPT,通过(意为给该IP添加的特殊策略,符合IP时80端口开启)
- firewall-cmd --reload ##刷新
- firewall-cmd --direct --get-all-rules ##查看rule域
(2)、测试:172.25.66.250可以登录
172.25.66.166登录失败
3、进行实验的对比
-
- firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -s 172.25.66.250 -p tcp --dport 80 -j ACCEPT |添加rule:ipv4,添加到filter表的INPUT字段中的第一行,针对IP172.25.254.250生效,协议为tcp协议,端口为80端口,IP符合条件时为ACCEPT,通过(意为给该IP添加的特殊策略,符合IP时80端口开启)
- firewall-cmd --direct --add-rule ipv4 filter INPUT 2 -s 172.25.66.250 -p tcp --dport 22 -j REJECT |添加rule:ipv4,添加到filter表的INPUT字段中的第二行,针对IP172.25.254.250生效,协议为tcp协议,端口为22端口,IP符合条件时为REJECT,拒绝(符合条件时22端口拒绝)
测试:
4、firewalld的地址伪装
此实验需要三台机,提供目的地地址的、提供路由功能的(需两块网卡,两个不同网段)、提供原地址的。
此处设定的原地址为:
172.25.0.166,网关为172.25.0.1(路由器的一个IP)
路由器的两个IP为:
172.25.0.1和172.25.66.66
目的地IP为:
172.25.66.250
### 在原地址端设置:
vim /etc/sysconfig/network-scripts/ifcfg-eth0 |修改该文件
IPADDR=172.25.0.166 |将IP设定为与路由器一个IP同网段,但与目的地IP不同网段的IP
GATEWAY=172.25.0.1 |设置网关为路由器上的一个IP,该IP与本机IP在同一网段
systemctl restart network |设定完成后重启服务
route -n |查看网关是否设置成功,此时应成功
### 在路由器上设置:
firewall-cmd --add-forward-port=port=22:proto=tcp:toport=22:toaddr=172.25.66.250 |给firewall添加伪装:将来自端口22的对本机IP(172.25.66.250)的访问转化为:通过22端口,以tcp协议对IP172.25.66.250的访问
firewall-cmd --permanent --add-masquerade |永久开启masquerade
firewall-cmd --list-all |列出当前默认域的策略,查看masquerade是否开启(此时应为yes)
### 在目的地上测试目的地地址转换:
ssh root@172.25.0.166 |在目的地访问路由器上与目的地同网段的IP(172.25.0.166)
ifconfig |登陆成功后,查看IP,此时经过==目的地地址转换==,实际访问的真实地址应显示是原地址(172.25.66.250)
### 在原地址端测试原地址转换:
w -i |在原地址端查看连接本机的IP是谁,此时经过==原地址转换==,查看到的访问本机的IP是路由器的一个IP(172.25.66.66),但真实访问本机的IP应是目的地IP(172.25.66.250)
目的地地址转换 |目的地地址的转换是在==陆游前==做的
原地址转换 |原地址的转换是在==陆游后==做的
(一)、源地地址转换
1、设置转换地址
- firewall-cmd --add-forward-port=port=22:proto=tcp:toport=22:toaddr=172.25.54.254 |给firewall添加伪装:将来自端口22的对本机
- firewall-cmd --add-masquerade ##开启masquerade 伪装功能后直接可以进行源地址转换
2、测试:在172.25.66.250主机上登录172.25.66.66主机连接到的主机为172.25.66.166主机
(2)、在172.25.66.166主机上看到的是172.25.66.66主机在与之相连
(二)、目的地址转换
1、在172.25.66.166主机上添加另外一块网卡 充当路由器的功能
2、在server主机上设置ip使其与172.25.0.1段ip相同(充当外网主机 )
(1)、将网关设置为172.25.0.1
(2)、查看修改后的ip以及相应的网关连接的情况
- ifconfig
- route -n ##查看所连接的网关
(3)、检查外网主机和路由器之间的网络是否畅通:
3、将转换地址设置为将172.25.66.250
4、开启火墙伪装功能方便做源地址转换
firewall-cmd --add-masquerade ##开启防火墙伪装功能 开启后可以直接做源地址转换
5、测试:
(1)、在172.25.0.166(外网主机)上登录172.25.66.66
跳转到了172.25.66.250 主机上
(2)、在172.25.66.250主机上查看谁与之相连
w -i ##查看正在连接本机的主机
6、外网主机直接与内部主机相连
(1)、用外网地址直接访问内部主机
(2)、查看到的是172.25.66.66主机在连接
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。