赞
踩
firewalld 概述:
动态防火墙后台程序 firewalld 提供了一个 动态管理的防火墙, 用以支持网络 “zones” , 以分配对一个网络及其相关链接和界面一定程度的信任。它具备对 IP v4 和 IP v6 防火墙设置的支持。它支持以太网桥, 并有分离运行时间和永久性配置选择。它还具备一个通向服务或者应用程序以直接增加防火墙规则的接口系统提供了图像化的配置工具 firewall-config 、 system-config-firewall, 提供命令行客户端 firewall-cmd, 用于配置 firewalld 永久性或非永久性运行时间的改变 : 它依次用iptables 工具与执行数据包筛选的内核中的 Netfilter 通信。
firewalld域:
1.启用firewalld
##安装firewalld
[root@localhost Desktop]# yum install -y firewalld firewall-config
##开启firewalld
[root@localhost Desktop]# systemctl start firewalld
##开机自启
[root@localhost Desktop]# systemctl enable firewalld
2.管理firewalld
(1)图形的方式
以添加http为例:
[root@localhost Desktop]# firewall-cmd --list-all
[root@localhost Desktop]# firewall-config
–permanent 永久生效,需重新加载
[root@localhost Desktop]# firewall-cmd --list-all
(2)命令的方式
firewall-cmd --state #查看火墙的状态
firewall-cmd --get-active-zones #查看火墙当前默认生效(正在使用)的域
firewall-cmd --get-default-zone #查看火墙的默认数据规则,默认为public
firewall-cmd --get-zones #查看所有可用的域
firewall-cmd --zone=public --list-all #查看public域的信息
firewall-cmd --list-all-zones #查看所有域的信息
firewall-cmd --get-services #查看系统中可以用名称来表示的服务(用文件名称表示端口)
firewall-cmd --set-default-zone=public #改回public
firewall-cmd --add-source=172.25.254.77 --zone=trusted #添加此77主机为信任,即只允许77主机访问
firewall-cmd --remove-source=172.25.254.77 #移除此77主机
firewall-cmd --list-interfaces #查看系统中生效的网络接口
firewall-cmd --get-zone-of-interface=eth1 #查看eth1所在的域
firewall-cmd --change-interface=eth0 --zone=trusted #改变eth0所在的域为trusted
firewall-cmd --remove-interface=eth0 --zone=trusted #从trusted域中移除eth0
firewall-cmd --add-interface=eth0 --zone=public #添加eth0所在的域为public
1.火墙信息的查看
##查看火墙的状态
[root@localhost Desktop]# firewall-cmd --state
running
##查看火墙当前生效(正在使用)的域
[root@localhost Desktop]# firewall-cmd --get-active-zones
public
interfaces: eth0 eth1
##查看火墙的默认域
[root@localhost Desktop]# firewall-cmd --get-default-zone
public
##查看所有可用的域
[root@localhost Desktop]# firewall-cmd --get-zones
block dmz drop external home internal public trusted work
##查看public域的信息
[root@localhost Desktop]# firewall-cmd --zone=public --list-all
##查看block域的信息
[root@localhost Desktop]# firewall-cmd --zone=block --list-all
##查看所有域的信息
[root@localhost Desktop]# firewall-cmd --list-all-zones
##查看可控制的服务
[root@localhost Desktop]# firewall-cmd --get-services
2.火墙对apache的访问控制
@1.默认所有主机均不能访问apache
@2.允许所有主机访问apache
##永久添加http服务到火墙策略中
[root@localhost Desktop]# firewall-cmd --permanent --add-service=http
success
[root@localhost Desktop]# firewall-cmd --list-all
##重新加载火墙
[root@localhost Desktop]# firewall-cmd --reload
success
[root@localhost Desktop]# firewall-cmd --list-all
测试:
还原:
##永久移除http服务
[root@localhost Desktop]# firewall-cmd --permanent --remove-service=http
success
##重新加载
[root@localhost Desktop]# firewall-cmd --reload
success
[root@localhost Desktop]# firewall-cmd --list-all
##永久添加2主机到trusted(信任)域中
[root@localhost Desktop]# firewall-cmd --permanent --zone=trusted --add-source=172.25.254.102
success
##重新加载
[root@localhost Desktop]# firewall-cmd --reload
success
测试:
在102主机中
还原:(注意:以怎样的方式添加的就以怎样的方式删除)
[root@localhost Desktop]# firewall-cmd --permanent --zone=trusted --remove-source=172.25.254.26
success
[root@localhost Desktop]# firewall-cmd --reload
success
3.block和drop的区别
二者都表示拒绝,但drop只拒绝不回应,而block不仅拒绝并且会回应 。一般企业使用block域来有回应的拒绝,
因为这样将不会再接收到被拒绝方发送来的任何数据
注意:block 域 不能防御,只能降低影响
2.block域对通信的影响
@.默认同网段的主机可以进行通信
##将2主机添加到block域中
[root@localhost Desktop]# firewall-cmd --zone=block --add-source=172.25.254.2
测试:
[root@foundation2 ~]# ping -w 3 172.25.254.102
@3.drop域对通信的影响
##重新添加域时,必须先移除之前的域,因为不能同时存在于两个域中
[root@localhost Desktop]# firewall-cmd --zone=drop --add-source=172.25.254.26
Error: ZONE_CONFLICT
##先将26主机从block域中移除
[root@localhost Desktop]# firewall-cmd --zone=block --remove-source=172.25.254.26
success
##再将26主机添加drop域中
[root@localhost Desktop]# firewall-cmd --zone=drop --add-source=172.25.254.26
测试:
[root@foundation26 ~]# ping -w 3 172.25.254.126
还原:
##移除
[root@localhost Desktop]# firewall-cmd --zone=drop --remove-source=172.25.254.26
success
4.网络接口的使用
##查看系统中生效的网络接口
[root@localhost Desktop]# firewall-cmd --list-interfaces
eth0
##查看eth0接口所在的域
[root@localhost Desktop]# firewall-cmd --get-zone-of-interface=eth0
public
##更改eth0接口所在域为trusted
[root@localhost Desktop]# firewall-cmd --change-interface=eth0 --zone=trusted
success
##查看eth0接口所在的域
[root@localhost Desktop]# firewall-cmd --get-zone-of-interface=eth0
trusted
##从trusted域中移除eth0接口
[root@localhost Desktop]# firewall-cmd --remove-interface=eth0 --zone=trusted
success
[root@localhost Desktop]# firewall-cmd --get-zone-of-interface=eth0
no zone
还原:
[root@localhost Desktop]# firewall-cmd --add-interface=eth0 --zone=public
success
5.网络端口的使用
##查看火墙可用的端口
[root@localhost services]# firewall-cmd --list-ports
##永久性添加端口
[root@localhost services]# firewall-cmd --permanent --add-port=8080/tcp
success
##重新加载
[root@localhost services]# firewall-cmd --reload
success
##可查看刚添加的端口
[root@localhost services]# firewall-cmd --list-ports
8080/tcp
还原:
##移除端口
[root@localhost services]# firewall-cmd --permanent --remove-port=8080/tcp
success
##重新加载
[root@localhost services]# firewall-cmd --reload
success
[root@localhost services]# firewall-cmd --list-ports
6.reload与complete-reload的区别
--reload ##只刷新策略,不会将正在连接的断开
--complete-reload ##刷新策略,并且会中断正在连接的终端(完全中断)
3.firewalld文件管理
(1)添加ip源的两种方式
临时性添加:
##临时添加ip源
[root@localhost Desktop]# firewall-cmd --add-source=172.25.254.226
success
##可查看到新添加的ip源
[root@localhost Desktop]# firewall-cmd --list-all
##重启火墙
[root@localhost Desktop]# systemctl restart firewalld
##发现ip源消失
[root@localhost Desktop]# firewall-cmd --list-all
永久性添加:
##永久性添加ip源; --permanent表示永久性的
[root@localhost Desktop]# firewall-cmd --permanent --add-source=172.25.254.226
success
##重新加载
[root@localhost Desktop]# firewall-cmd --reload
success
##重启火墙
[root@localhost Desktop]# systemctl restart firewalld
##发现此时ip源仍然存在
[root@localhost Desktop]# firewall-cmd --list-all
永久添加方式,实质上是通过自动写入/etc/firewalld/zones/public.xml 文件中实现的
###可查看到刚添加的ip源,xml代表可扩展性标记语言
[root@localhost Desktop]# vim /etc/firewalld/zones/public.xml永久添加,是通过自动写入/etc/firewalld/zones/public.xml 中实现的
还原:
##移除ip源
[root@localhost services]# firewall-cmd --permanent --remove-source=172.25.254.226
success
[root@localhost services]# firewall-cmd --reload
success
[root@localhost services]# firewall-cmd --list-all
(2)以文件的方式添加apache服务(永久性)
[root@localhost Desktop]# vim /etc/firewalld/zones/public.xml
#########################
8 ##添加http服务
##重启火墙
[root@localhost Desktop]# systemctl restart firewalld
##可查看到http服务成功添加到火墙策略中
[root@localhost Desktop]# firewall-cmd --list-all
添加apache服务实际上是在/usr/lib/firewalld/services/http.xml 文件中添加的80端口
##可查看到80端口
[root@localhost services]# vim /usr/lib/firewalld/services/http.xml
4.端口转发与在地址伪装
(1).端口转发
##由于ssh服务是之前临时添加的,重新加载后便会失效。所以先永久性添加ssh服务
[root@localhost Desktop]# firewall-cmd --add-service=ssh --permanent
success
[root@localhost Desktop]# firewall-cmd --reload
success
[root@localhost Desktop]# firewall-cmd --list-all
默认ssh连接到哪台主机,便显示的是哪台主机的ip
##1.开启路由功能
[root@localhost Desktop]# firewall-cmd --add-masquerade --permanent
success
[root@localhost Desktop]# firewall-cmd --reload
success
[root@localhost Desktop]# firewall-cmd --list-all
##2.端口转发;将本机的22端口转到226主机的22端口上(注意:226必须是可以ping通的ip)
[root@localhost Desktop]# firewall-cmd --add-forward-port=port=22:proto=tcp:toport=22:toaddr=172.25.254.226
success
具体参数含义:
port=22 ##表示22端口(ssh的端口)
proto=tcp ##表示tcp协议
toport ##表示将22端口转向22端口
toaddr ##表示转向ip
[root@localhost Desktop]# firewall-cmd --list-all
[root@foundation34 ~]# ssh root@172.25.254.126
[root@localhost ~]# ifconfig eth0
还原:(删除端口转发策略)
[root@localhost Desktop]# firewall-cmd --remove-forward-port=port=22:proto=tcp:toport=22:toaddr=172.25.254.226
success
[root@localhost Desktop]# firewall-cmd --list-all
(2)地址伪装
配置服务端:
1.配置双网卡ip
[root@localhost ~]# cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth1
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1
###################
DEVICE=eth1
ONBOOT=yes
BOOTPROTO=none
IPADDR=1.1.1.126
PREFIX=24
[root@localhost ~]# systemctl restart network
[root@localhost ~]# ip addr show
配置客户端: 路由功能已经开启
2.配置ip和网关
[root@client Desktop]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
#########################
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=none
IPADDR=1.1.1.226
PREFIX=24
GATEWAY=1.1.1.126 ##网关(路由器的内网)
##查看网关
[root@client Desktop]# route -n
##此时便可以ping通不在同一个网段的ip
[root@client Desktop]# ping 172.25.254.26
[root@client Desktop]# ssh root@172.25.254.26
##发现地址伪装了;原本是1.1.1网段的伪装成了172.25.254网段
[root@foundation26 ~]# w -i
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。