linux防火墙(firewalld/iptables)的设置与修改

简介:

官方文档介绍地址:

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Security_Guide/sec-Using_Firewalls.html#sec-Introduction_to_firewalld1

一、firewall介绍

CentOS 7中防火墙是一个非常的强大的功能,在CentOS 6.5中在iptables防火墙中进行了升级了。

1、官方介绍

The dynamic firewall daemon firewalld provides a dynamically managed firewall with support for network “zones” to assign a level of trust to a network and its associated connections and interfaces. It has support for IPv4 and IPv6 firewall settings. It supports Ethernet bridges and has a separation of runtime and permanent configuration options. It also has an interface for services or applications to add firewall rules directly.

2、什么是区域Zone:

网络区域定义了网络连接的可信等级。这是一个 一对多的关系,这意味着一次连接可以仅仅是一个区域的一部分,而一个区域可以用于很多连接。

3、哪个区域可用?

由firewalld 提供的区域按照从不信任到信任的顺序排序。

4、区域的分类?

Firewalls can be used to separate networks into different zones based on the level of trust the user has decided to place on the devices and traffic within that network. NetworkManager informs firewalld to which zone an interface belongs. An interface’s assigned zone can be changed by NetworkManager or via the firewall-config tool which can open the relevant NetworkManager window for you.

The zone settings in /etc/firewalld/ are a range of preset settings which can be quickly applied to a network interface. They are listed here with a brief explanation:

drop
Any incoming network packets are dropped, there is no reply. Only outgoing network connections are possible.

block
Any incoming network connections are rejected with an icmp-host-prohibited message for IPv4 and icmp6-adm-prohibited for IPv6. Only network connections initiated from within the system are possible.

public
For use in public areas. You do not trust the other computers on the network to not harm your computer. Only selected incoming connections are accepted.

external
For use on external networks with masquerading enabled especially for routers. You do not trust the other computers on the network to not harm your computer. Only selected incoming connections are accepted.

dmz
For computers in your demilitarized zone that are publicly-accessible with limited access to your internal network. Only selected incoming connections are accepted.

work
For use in work areas. You mostly trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.

home
For use in home areas. You mostly trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.

internal
For use on internal networks. You mostly trust the other computers on the networks to not harm your computer. Only selected incoming connections are accepted.

trusted
All network connections are accepted.
It is possible to designate one of these zones to be the default zone. When interface connections are added to NetworkManager, they are assigned to the default zone. On installation, the default zone in firewalld is set to be the public zone.

注:具体内容,请参见官方文档介绍!

二、firewall配置

The configuration for firewalld is stored in various XML files in /usr/lib/firewalld/ and /etc/firewalld/.

This allows a great deal of flexibility as the files can be edited, written to, backed up, used as templates for other installations and so on.

注意:以下firewalld 的操作只有重启之后才有效:service firewalld restart 重启

1、系统配置目录

/usr/lib/firewalld/services
  • 1

目录中存放定义好的网络服务和端口参数,系统参数,不能修改。

这里写图片描述

2、用户配置目录

/etc/firewalld/
  • 1
这里写图片描述

3、如何自定义添加端口

用户可以通过修改配置文件的方式添加端口,也可以通过命令的方式添加端口,注意,修改的内容会在/etc/firewalld/ 目录下的配置文件中还体现。

  • 3.1、命令的方式添加端口
firewall-cmd --permanent --add-port=9527/tcp 
  • 1

参数介绍:



  
  
  1. 1、firewall-cmd:是Linux提供的操作firewall的一个工具;

  2. 2、--permanent:表示设置为持久;

  3. 3、--add-port:标识添加的端口;

  • 1
  • 2
  • 3

另外,firewall中有Zone的概念,可以将具体的端口制定到具体的zone配置文件中。

例如:添加8010端口

firewall-cmd --zone=public --permanent --add-port=8010/tcp
  • 1
--zone=public:指定的zone为public
  • 1

添加结果如下:

这里写图片描述

如果–zone=dmz 这样设置的话,会在dmz.xml文件中新增一条。

  • 3.2、修改配置文件的方式添加端口


  
  
  1. <?xml version="1.0" encoding="utf-8"?>

  2. <zone>

  3. <short>Public</short>

  4. <description>For use in public areas.</description>

  5. <rule family="ipv4">

  6. <source address="122.10.70.234"/>

  7. <port protocol="udp" port="514"/>

  8. <accept/>

  9. </rule>

  10. <rule family="ipv4">

  11. <source address="123.60.255.14"/>

  12. <port protocol="tcp" port="10050-10051"/>

  13. <accept/>

  14. </rule>

  15. <rule family="ipv4">

  16. <source address="192.249.87.114"/> 放通指定ip,指定端口、协议

  17. <port protocol="tcp" port="80"/>

  18. <accept/>

  19. </rule>

  20. <rule family="ipv4"> 放通任意ip访问服务器的9527端口

  21. <port protocol="tcp" port="9527"/>

  22. <accept/>

  23. </rule>

  24. </zone>

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

上述的一个配置文件可以很好的看出:



  
  
  1. 1、添加需要的规则,开放通源ip为122.10.70.234,端口514,协议tcp;

  2. 2、开放通源ip为123.60.255.14,端口10050-10051,协议tcp;/3、开放通源ip为任意,端口9527,协议tcp;

  • 1
  • 2

三、firewall常用命令

1、重启、关闭、开启firewalld.service服务



  
  
  1. service firewalld restart 重启

  2. service firewalld start 开启

  3. service firewalld stop 关闭

  • 1
  • 2
  • 3

2、查看firewall服务状态

systemctl status firewall 
  • 1

3、查看firewall的状态

firewall-cmd --state
  • 1
这里写图片描述

4、查看防火墙规则

firewall-cmd --list-all 
  • 1
这里写图片描述

四、CentOS切换为iptables防火墙

切换到iptables首先应该关掉默认的firewalld,然后安装iptables服务。

1、关闭firewall:



  
  
  1. service firewalld stop

  2. systemctl disable firewalld.service #禁止firewall开机启动

  • 1
  • 2

2、安装iptables防火墙

yum install iptables-services #安装
  • 1

3、编辑iptables防火墙配置

vi /etc/sysconfig/iptables #编辑防火墙配置文件
  • 1

下边是一个完整的配置文件:



  
  
  1. Firewall configuration written by system-config-firewall

  2. Manual customization of this file is not recommended.

  3. *filter

  4. :INPUT ACCEPT [0:0]

  5. :FORWARD ACCEPT [0:0]

  6. :OUTPUT ACCEPT [0:0]

  7. -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

  8. -A INPUT -p icmp -j ACCEPT

  9. -A INPUT -i lo -j ACCEPT

  10. -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

  11. -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

  12. -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT

  13. -A INPUT -j REJECT --reject-with icmp-host-prohibited

  14. -A FORWARD -j REJECT --reject-with icmp-host-prohibited

  15. COMMIT

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

:wq! #保存退出



  
  
  1. service iptables start #开启

  2. systemctl enable iptables.service #设置防火墙开机启动

相关文章
|
网络协议 网络安全
华为openEuler欧拉系统的防火墙常用设置方法
在有防火墙的系统中,比如我们部署了一个WEB项目,我们需要给该WEB项目所需的端口放行。本文介绍了防火墙常用设置方法。
2644 81
|
Ubuntu Linux 网络安全
在Linux云服务器上限制特定IP进行SSH远程连接的设置
温馨提示,修改iptables规则时要格外小心,否则可能导致无法远程访问你的服务器。最好在掌握足够技术知识和理解清楚操作含义之后再进行。另外,在已经配置了防火墙的情况下,例如ufw(Ubuntu Firewall)或firewalld,需要按照相应的防火墙的规则来设置。
666 24
|
Java 关系型数据库 MySQL
在Linux操作系统上设置JDK、Tomcat、MySQL以及J2EE后端接口的部署步骤
让我们总结一下,给你的Linux操作系统装备上最强的军队,需要先后装备好JDK的弓箭,布置好Tomcat的阵地,再把MySQL的物资原料准备好,最后部署好J2EE攻城车,那就准备好进军吧,你的Linux军团,无人可挡!
494 18
|
Linux Shell
在Linux、CentOS7中设置shell脚本开机自启动服务
以上就是在CentOS 7中设置shell脚本开机自启动服务的全部步骤。希望这个指南能帮助你更好地管理你的Linux系统。
1996 25
|
Ubuntu Linux 网络安全
防火墙设置
本文介绍了Ubuntu和CentOS系统中防火墙的基本设置方法。对于Ubuntu,重点讲解了UFW(Uncomplicated Firewall)的使用,包括查看状态、开启/关闭防火墙、管理端口和IP地址以及服务配置。而对于CentOS,主要涉及firewalld的常用操作,如查看状态、启动/关闭防火墙、设置开机启动、管理端口和IP地址,以及服务允许等具体命令示例。内容简洁实用,适合系统管理员快速上手。
1515 10
|
Linux 网络性能优化 网络安全
Linux(openwrt)下iptables+tc工具实现网络流量限速控制(QoS)
通过以上步骤,您可以在Linux(OpenWrt)系统中使用iptables和tc工具实现网络流量限速控制(QoS)。这种方法灵活且功能强大,可以帮助管理员有效管理网络带宽,确保关键业务的网络性能。希望本文能够为您提供有价值的参考。
3213 28
|
监控 安全 Linux
启用Linux防火墙日志记录和分析功能
为iptables启用日志记录对于监控进出流量至关重要
587 1
|
监控 Oracle 关系型数据库
Linux平台Oracle开机自启动设置
【11月更文挑战第8天】在 Linux 平台设置 Oracle 开机自启动有多种方法,本文以 CentOS 为例,介绍了两种常见方法:使用 `rc.local` 文件(较简单但不推荐用于生产环境)和使用 `systemd` 服务(推荐)。具体步骤包括编写启动脚本、赋予执行权限、配置 `rc.local` 或创建 `systemd` 服务单元文件,并设置开机自启动。通过 `systemd` 方式可以更好地与系统启动过程集成,更规范和可靠。
1273 2
|
Oracle Ubuntu 关系型数据库
Linux平台Oracle开机自启动设置
【11月更文挑战第7天】本文介绍了 Linux 系统中服务管理机制,并详细说明了如何在使用 systemd 和 System V 的系统上设置 Oracle 数据库的开机自启动。包括创建服务单元文件、编辑启动脚本、设置开机自启动和启动服务的具体步骤。最后建议重启系统验证设置是否成功。
619 1
|
存储 运维 Linux
Linux防火墙firewall的使用
CentOS 7 中的 firewalld 是基于 Netfilter 的防火墙服务,支持动态配置,无需重启服务即可生效。它通过区域管理网络流量,每个区域可以设置不同的防火墙规则。默认区域为 public,可以通过命令行工具 firewall-cmd 进行管理和配置。firewalld 提供了丰富的预定义服务和区域,方便用户根据需求进行灵活配置。
374 0