Firewalld

Firewalld概述

  • 动态防火墙后台程序 firewalld 提供了一个动态管理的防火墙,用以支持网络 “ zones” ,以分配对一个网络及其相关链接和界面一定程度的信任。它具备对 IP v4 和 IP v6 防火墙设置的支持。它支持以太网桥,并有分离运行时间和永久性配置选择。它还具备一个通向服务或者应用程序以直接增加防火墙规则的接口
  • 系统提供了图像化的配置工具firewall-config、system-config-firewall,提供命令行客户端firewall-cmd,用于配置firewalld永久性或非永久性运行时间的改变:它依次用 iptables工具与执行数据包筛选的内核中的 Netfilter通信

  • firewalld和iptables service 之间最本质的不同是:
    1、iptables service 在 /etc/sysconfig/iptables 中储存配置,而 firewalld将配置储存在/usr/lib/firewalld/ 和 /etc/firewalld/ 中的各种XML文件里
    2、使用 iptables service每一个单独更改意味着清除所有旧有的规则和从/etc/sysconfig/iptables里读取所有新的规则,然而使用 firewalld却不会再创建任何新的规则;仅仅运行规则中的不同之处。因此,firewalld可以在运行时间内,改变设置而不丢失现行连接

    基于用户对网络中设备和交通所给与的信任程度,防火墙可以用来将网络分割成不同的区域NetworkManager通知firewalld一个接口归属某个区域,新加入的接口被分配到默认区域。

网络区名称 默认配置
trusted(信任) 可接受所有的网络连接
home(家庭) 用于家庭网络,仅接受ssh、mdns、ipp-client、samba-client、或dhcpv6-client服务连接
internal(内部) 用于内部网络,仅接受ssh、mdns、ipp-client、samba-client、dhcpv6-client服务连接
work(工作) 用于工作区,仅接受ssh、ipp-client或dhcpv6-client服务连接
public(公共) 在公共区域内使用,仅接受ssh或dhcpv6-client服务连接,为firewalld的默认区域
external(外部) 出去的ipv4网络连接通过此区域伪装和转发,仅接受ssh服务连接
dmz(非军事区) 仅接受ssh服务接连
block(限制) 拒绝所有网络连接
drop(丢弃) 任何接收的网络数据包都被丢弃,没有任何回复

管理防火墙

1、安装防火墙软件

  • yum install firewalld firewalld-config -y
  • [root@client Desktop]# firewalld-config & firewalld的图形化管理

2、启动和禁止防火墙

  • systemctl start firewalld
  • systemctl enable firewalld
  • systemctl stop firewalld
  • systemctl disable firewalld

3、使用命令行接口配置防火墙

  • 查看firewalld的状态
[root@client Desktop]# firewall-cmd --state
running
  • 查看当前活动的区域,并附带一个目前分配给它们的接口列表
[root@client Desktop]# firewall-cmd --get-active-zones
ROLsources: 172.25.0.252/32
public           ##网络区为公共interfaces: eth0
  • 查看默认网络区域
[root@client Desktop]# firewall-cmd --get-default-zone
public
  • 查看所有可用区域
[root@client Desktop]# firewall-cmd --get-zones
ROL block dmz drop external home internal public trusted work
  • 列出指定域(public)的所有设置
[root@client Desktop]# firewall-cmd --zone=public --list-all
public (default, active)interfaces: eth0sources: services: dhcpv6-client sshports: masquerade: noforward-ports: icmp-blocks: rich rules:
  • 列出指定域(block)的所有设置
[root@client Desktop]# firewall-cmd --zone=block --list-all
blockinterfaces: sources: services: ports: masquerade: noforward-ports: icmp-blocks: rich rules:
  • 列出所有预设服务
[root@client Desktop]# firewall-cmd --get-services
amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns ftp high-availability http https imaps ipp ipp-client ipsec kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mountd ms-wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis pop3s postgresql proxy-dhcp radius rpc-bind samba samba-client smtp ssh telnet tftp tftp-client transmission-client vnc-server wbem-https
  • 列出所有区域的设置
  • [root@client Desktop]# firewall-cmd --list-all-zones

  • 设置默认区域
[root@client Desktop]# firewall-cmd --set-default-zone=trusted
success
[root@client Desktop]# firewall-cmd --get-default-zone
trusted
[root@client Desktop]# firewall-cmd --get-active-zones
ROLsources: 172.25.0.252/32
trusted      ##网络区为信任interfaces: eth0
  • 设置网络地址到指定的区域
  • firewall-cmd -permanent --add-source=172.25.254.27 --zone=trusted
  • firewall-cmd -permanent --add-source=172.25.254.27/24 --zone=trusted
    –permanent参数表示永久生效设置
    如果没有指定–zone参数,那么会加入默认区域
    172.25.254.27(IP指定)、172.25.254.27/24(网络位相同即可)
  • 删除指定区域中的网络地址
  • firewall-cmd -permanent --remove-source=172.25.254.27 --zone=trusted
  • 添加、改变、删除网络接口

查看指定级别的接口

[root@client Desktop]# firewall-cmd --list-interfaces
eth0

查看指定接口的 Zone 信息

[root@client Desktop]# firewall-cmd --get-zone-of-interface=eth0
trusted

添加网络接口

[root@client Desktop]# firewall-cmd --add-interface=eth1 --zone=public
success
[root@client Desktop]# firewall-cmd --get-zone-of-interface=eth1
public

改变某接口至某信任等级,譬如改变 eth0 至 public

[root@client Desktop]# firewall-cmd --change-interface=eth0 --zone=public
success
[root@client Desktop]# firewall-cmd --get-zone-of-interface=eth0
public
[root@client Desktop]# firewall-cmd --get-zone-of-interface=eth1
public

删除指定接口eth1

[root@client Desktop]# firewall-cmd --remove-interface=eth1 --zone=trusted
success
[root@client Desktop]# firewall-cmd --get-zone-of-interface=eth1
no zone
  • 添加、删除服务

添加

[root@client ~]# firewall-cmd --zone=public -add-service=http
success
[root@client ~]# firewall-cmd --list-all
public (default, active)interfaces: eth0 eth1sources: services: dhcpv6-client http sshports: masquerade: noforward-ports: icmp-blocks: rich rules: 

删除

[root@client ~]# firewall-cmd --remove-service=http
success
[root@client ~]# firewall-cmd --reload   ##不完全刷新
success
[root@client ~]# firewall-cmd --list-all
[root@client ~]# firewall-cmd --list-all
public (default, active)interfaces: eth0 eth1sources: services: dhcpv6-client sshports: masquerade: noforward-ports: icmp-blocks: rich rules:
  • 列出、添加、删除端口
  • firewall-cmd --zone=public -list-ports
  • firewall-cmd --add-port=8080/tcp --zone=public
  • firewall-cmd --remove-port=8080/tcp --zone=public

  • 重新加载防火墙

    注意:这并不会中断已经建立的连接,如果打算中断,可以使用 –complete-reload选项)firewalld的规则被保存在/etc/firewalld目录下的文件中,你也可以直接编辑这些文件达到配置防火墙的目的。/usr/lib/firewalld目录下的内容是不可以被编辑的,但可以用做默认模板

4、Direct Rules

通过 firewall-wall-cmd 工具,可以使用 --direct 选项在运行时间里增加或者移除链。
如果不熟悉 iptables ,使用直接接口非常危险,因为可能会无意间导致防火墙被入侵。
直接端口模式适用于服务或者程序,以便在运行时间内增加特定的防火墙规则。
直接端口模式添加的规则优先应用
firewall-cmd –-direct –get-all-rules   ##列出规则
firewall-cmd –-direct –add-rule ipv4 filter INPUT 1 -p tcp –dport 80 -s 172.25.254.50 -j ACCEPT   ##添加规则
firewall-cmd –-direct –remove-rule ipv4 filter INPUT 1 -p tcp –dport 80 -s 172.25.254.50 -j ACCEPT   ##删除规则

例如:不让50主机访问80端口的请求响应:

5、端口转发与地址伪装

在防火墙服务器上将伪装打开:

当50从端口登陆主机时,将50伪装

当访问本机22端口时,将其转到227这个主机上

刷新

IP为172.25.254.50的主机连接主机172.25.254.127时,将其转到主机172.25.254.227
测试
用50主机ssh连接136主机:

登陆的是227主机:

查看登陆者,登陆者是127。50主机被伪装起来了

Iptables

首先得保持一个纯净的环境,将firewalld关闭。安装iptables,并启动

  • yum install iptables-services -y 安装iptables
[root@client Desktop]# iptables -nL   ##查看策略
略,此时显示出的是 firewalld 的策略
[root@client Desktop]# systemctl stop firewalld.service
[root@client Desktop]# systemctl disable firewalld.service
[root@client Desktop]# systemctl start iptables.service
[root@client Desktop]# systemctl enable iptables.service
[root@client Desktop]# iptables -F    ##刷新策略
[root@client Desktop]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
[root@client Desktop]#

(1)理论基础:当主机收到一个数据包后,数据包先在内核空间中处理,若发现目的地址是自身,则传到用户空间中交给对应的应用程序处理,若发现目的不是自身,则会将包丢弃或进行转发。
(2)iptables实现防火墙功能的原理是:在数据包经过内核的过程中有五处关键地方,分别是PREROUTING、INPUT、OUTPUT、FORWARD、POSTROUTING,称为钩子函数,iptables这款用户空间的软件可以在这5处地方写规则,对经过的数据包进行处理,规则一般的定义为“如果数据包头符合这样的条件,就这样处理数据包”。
iptables中定义有表,分别表示提供的功能,有filter表(实现包过滤)、nat表(实现网络地址转换)、mangle表(实现包修改)、raw表(实现数据跟踪),这些表具有一定的优先级:raw–>mangle–>nat–>filter
下面是数据包流向图:

数据包先经过PREOUTING,由该链确定数据包的走向:

  • 目的地址是本地,则发送到INPUT,让INPUT决定是否接收下来送到用户空间,流程为①—>②

  • 若满足PREROUTING的nat表上的转发规则,则发送给FORWARD,然后再经过POSTROUTING发送出去,流程为: ①—>③—>④—>⑥

  • 主机发送数据包时,流程则是⑤—>⑥

(3)iptables的规则书写:
基本语法:iptables [-t 表] [操作命令] [链][规则匹配器][-j 目标动作]

iptables
[-t filter]
[-AI INPUT,OUTPUT,FORWARD]
[-io interface]
[-p tcp,udp.icmp,all]
[-s ip/nerwork]
[--sport ports]
[-d ip/network]
[--dport ports]
[-j ACCEPT DROP REJECT REDIRECT MASQUERADE LOG
DNAT SNAT MIRROR QUEUE RETURN MARK]

常用操作命令:
-A 在指定链尾部添加规则
-D 删除匹配的规则
-R 替换匹配的规则
-I 在指定位置插入规则

其他操作命令:
-L/S 列出指定链或所有链的规则
-F 删除指定链或所有链的规则
-N 创建用户自定义链
-X 删除指定的用户自定义链
-P 为指定链设置默认规则策略,对自定义链不起作用
-Z 将指定链或所有链的计数器清零
-E 更改自定义链的名称
-n ip地址和端口号以数字方式显示

常见规则匹配器说明:
-p tcp|udp|icmp|all 匹配协议,all会匹配所有协议
-s addr[/mask] 匹配源地址
-d addr[/mask] 匹配目标地址
–sport port1[:port2] 匹配源端口(可指定连续的端口)
–dport port1[:port2] 匹配目的端口(可指定连续的端口)
-o interface
匹配出口网卡,只适用FORWARD、POSTROUTING、OUTPUT。
匹配入口网卡,只使用PREROUTING、INPUT、FORWARD。

目标动作说明:
ACCEPT 允许数据包通过
DROP 丢弃数据包
REJECT 丢弃数据包,并且将拒绝信息发送给发送方

实验

  • 显示filter表所有链的规则,默认为filter表

    如上,可以看到filter三条链
  • 查看nat表的
  • 注意一点:火墙设置的策略好坏会影响到传输速率的快慢,因为火墙规则读取是有先后顺序的。
  • NAT (Net Address Trancelate:网络地址转换)
  • SNAT(源地址转换)是指在数据包从网卡发送出去的时候,把数据包中的源地址部分替换为指定的IP,这样,接收方就认为数据包的来源是被替换的那个IP的主机
  • DNAT(目标地址转换),就是指数据包从网卡发送出去的时候,修改数据包中的目的IP,表现为如果你想访问A,可是因为网关做了DNAT,把所有访问A的数据包的目的IP全部修改为B,那么,你实际上访问的是B

下面我们来模拟以下两个转换:

SNAT

实验准备:
双网卡主机:

单网卡主机:
IP:

网关:

注意:这里双网卡主机类似于路由器的功能。所以单网卡主机的网关必须是和本机ip处于同一网段而且是和双网卡主机上的一块网卡IP相同。

接下来在单网卡主机上ping网关,检查实验环境(结果如下图,说明双网卡主机网卡良好。):

在进行SNAT之前,单网卡主机是不能连接不同网段的172.25.254.50这台主机的 。
我们要用单网卡主机来连不同网段的主机,必须要做SNAT。在双网卡主机上做防火墙规则书写:
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 172.25.254.127
查看火墙规则:
这时查看 net 表的ip转发功能,0代表未开启,则需要将其开启;1代表已开启:

注:开启方法

[root@client Desktop]# sysctl -a | grep ip_forward
net.ipv4.ip_forward = 0
[root@client Desktop]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1   ##添加
[root@client Desktop]# sysctl -p
net.ipv4.ip_forward = 1
[root@client Desktop]# sysctl -a | grep ip_forward
net.ipv4.ip_forward = 1

此时在单网卡主机ping不同网段的主机,发现可以:

SNAT:局域网共享一个公网IP接入lnternel
好处如下:

  • 保护内网用户安全,因为公网地址总有一些人恶意扫描,而内网地址在公网没有路由所以无法被扫描,能被扫描的只有防火墙这一台,这样就减少了被攻击的可能。

  • Ipv4地址匮乏,很多公司只有一个ipv4地址,但是却有几百个用户需要上网,这个时候就需要使用SNAT。

  • 省钱,公网地址付费,使用SNAT只需要一个公网ip就可以满足几百人同时上网。

DNAT

在双网卡主机上书写规则:
iptables -t nat -A PREROUTING -i eth0 -j DNAT --to-dest 172.25.20.227

从eth0接口进来的数据包我们将其目标地址转为172.25.20.227这台主机上

在172.25.254.50主机上测试——用ssh连接172.25.254.127:

但是却是登陆的172.25.20.227这台主机:

实现了目的地转换。

DNAT的用途(DNAT:向internel发布内网服务器 )
在内网中有服务器,如果想让公网用户访问有有两种方法:

  • 配置双网卡,一网卡对内,一网卡对外;一般是高访问量的web服务器,为了避免占用网关的流量才这样做,使用不是很广泛。

  • 内网web服务器,或是ftp服务器,为了用户在公网也可以访问,有不想买公网ip地址,采用DNAT方案。

linux——Firewalld与iptables的基本配置相关推荐

  1. Firewalld,iptables概述(netfilter和Firewalld,iptables三者之间的关系,四表五链,Firewalld防火墙的配置方发,SNAT,DNAT了解)

    文章目录 Firewalld,iptables概述 Firewalld了解 iptables了解 Firewalld和iptables的关系 netfilter Firewalld.iptables ...

  2. linux防火墙(firewalld和iptables)

    目录 1安全技术和防火墙 1.1 安全技术 1.2 防火墙的分类 2.Linux 防火墙的基本认识 2.1Netfilter 2.2防火墙工具介绍 2.2.1 iptables 2.2.2 firew ...

  3. Linux下防火墙iptables用法规则详及其防火墙配置

    原博主文章更美丽: http://www.cnblogs.com/yi-meng/p/3213925.html iptables规则 规则--顾名思义就是规矩和原则,和现实生活中的事情是一样的,国有国 ...

  4. Android Linux自带iptables配置IP访问规则

    利用Linux自带iptables配置IP访问规则,即可做到防火墙效果 初始化防火墙Chain规则 禁止指定app访问数据网络 禁止指定app访问wifi 转载于:https://www.cnblog ...

  5. [linux] redhat 7 iptables 配置

    RHEL 7系统中,firewalld防火墙取代了iptables防火墙.其实,iptables与firewalld都不是真正的防火墙, 它们只是一种服务.iptables服务会把配置好的防火墙策略交 ...

  6. linux配置指定ip访问指定端口号,操作系统linux和dos linux下通过iptables只允许指定ip地址访问指定端...

    一篇 : linux下通过iptables只允许指定ip地址访问指定端口的设置方法 首先,清除所有预设置 iptables -F#清除预设表filter中的所有规则链的规则 iptables -X#清 ...

  7. Linux系统中的火墙策略——firewalld、iptables

    文章目录 一.基本介绍 二.火墙管理工具切换 1. firewalld切换为iptablds 2. iptables切换为firewalld 三.iptables的使用 四.火墙默认策略 1. 默认策 ...

  8. Linux防火墙与iptables命令

    Linux防火墙与iptables命令 防火墙概念 一.Firewalld与iptables简介 1.1Firewalld 1.2Firewalld.iptables 二.iptables 2.1四表 ...

  9. 细说firewalld和iptables

    在RHEL7里有几种防火墙共存:firewalld.iptables.ebtables,默认是使用firewalld来管理netfilter子系统,不过底层调用的命令仍然是iptables等. fir ...

最新文章

  1. 【并发编程】volatile简单使用
  2. linux下的arm仿真,使用QEMU仿真ARM Linux系统
  3. Django 基本使用及目录结构
  4. 判断是否为ie8浏览器
  5. JVM调优——之CMS GC日志分析
  6. 14.5.5.1 An InnoDB Deadlock Example 一个InnoDB 死锁实例
  7. c语言中变量可以用x1表示没,你必须知道的495个C语言问题 读书笔记
  8. 手机wps怎么设置语言_怎么使用手机对路由器进行设置
  9. Firefox附加在合谋表演,谁跟踪你上网
  10. yolov3前向传播(三)-- 坐标转换,iou计算,权重加载,图片显示
  11. 内置模块--又称为常用模块
  12. 用计算机画画内容,【经验】怎么用电脑绘画?
  13. web前端开发培训学院,前端校招面试题及解析大全,值得收藏!
  14. 测试面试题-如何测试朋友圈
  15. HDU 4125 Moles 线段树+KMP
  16. 年轻人,你活着不是为了观察K线做布朗运动 ——从“全要素参与分配理论”谈股票市场的赚钱陷阱
  17. 每天一篇论文 365/365 Visual Odometry Revisited: What Should Be Learnt?
  18. win7用软激活后今天失效,解决办法
  19. C++程序设计 实验三
  20. 基于captcha的图形验证码实现

热门文章

  1. SAP License管理
  2. ABAP Version Management
  3. 客户信贷应收总额相关
  4. 批创建清账凭证,POSTING_INTERFACE_CLEARING
  5. Oracle 海量数据处理- 索引的选择
  6. SAP中会计凭证和物料凭证的对应关系
  7. SAP 物料分类账常用表
  8. SAP ABAP 中一些常用函数
  9. 为何红黄蓝一边在被做空,一边在逆势上涨?
  10. html如何在li里加a,li里面嵌套a标签html和css小例子