Centos7 防火墙iptables?

Centos7 防火墙iptables?

1. 介绍

在centos7中,有几种防火墙共存:firewald , iptables . 默认情况下,CentOS是使用firewalld来管理netfilter子系统,不过底层调用的命令仍然是iptables

2. firewalld 和 iptables区别

  1. firewalld 可以动态修改单挑规则,而不像iptables那样,在修改了规则后必须全部刷新才可以生效。

  2. firewalld在使用上比iptables人性化很多,即使不明白"五张表五条链"而且对TCP/IP协议也不理解也可以实现大部分功能。

  3. firewalld跟iptables比起来,不好的地方是每个服务都需要去设置才能放行,因为默认是拒绝。而iptables里默认每个服务是允许,需要拒绝才去限制。

  4. firewalld自身并不具备防火墙的功能,而是和iptables一样需要通过内核的netfilter来实现,也就是说firewalld和iptables一样,他们的作用是用于维护规则,而真正使用规则干活的是内核的netfilter,只不过firewalld和iptables的结构以及使用方法不一样罢了。

3. 区域管理概念

区域管理

通过将网络划分成不同的区域,制定不同区域之间的访问控制策略来控制不同程序间传送的数据流。例如,互联网不是可信任的区域,而内部网络是高度信任的区域。网络安全模型可以在安装,初次启动和首次建立网络连接时选择初始化。该模型描述了主机所连接的整个网络环境的可信级别,并定义了新连接的处理方式。

有如下几种不同的初始化区域:

阻塞区域(block):任何传入的网络数据包都将被阻止

工作区域(work):相信网络上的其他计算机,不会损害你的计算机

家庭区域(home):相信网络上的其他计算机,不会损害你的计算机

公共区域(public):不相信网络上的任何计算机,只有选择接受传入的网络连接

隔离区域(DMZ):隔离区域也称为非军事区域,内外网络之间增加的一层网络,起到缓冲作用。对于隔离区域,只有选择接受传入的网络连接。

信任区域(trusted):所有的网络连接都可以接受

丢弃区域(drop):任何传入的网络连接都被拒绝

内部区域(internal):信任网络上的其他计算机,不会损害你的计算机。只有选择接受传入的网络连接

外部区域(external):不相信网络上的其他计算机,不会损害你的计算机。只有选择接受传入的网络连接

注:Firewalld的默认区域是public

firewalld默认提供了九个zone配置文件:block.xml、dmz.xml、drop.xml、external.xml、 home.xml、internal.xml、public.xml、trusted.xml、work.xml,他们都保存在“/usr/lib /firewalld/zones/”目录下。

4.iptables的配置

1.简述

iptables防火墙由Netfilter项目(http://www.netfilter.org) 开发,自2001年1月在Linux2.4内核发布以来就是Linux的一部分了。

Netfilter是由Linux提供的所有包过滤和包修改设施的官方项目名称,但这个术语同时也指Linux内核的一个框架,他可以用于在不同的阶段将函数挂接(hook)进网络栈。另一方面,iptables使用Netfilter框架指在将对数据包进行操作(如过滤)的函数挂接进网络栈。

所以,你可以认为Netfilter提供了一个框架,而iptables在它之上建立了防火墙功能

2.基本原理

规则(rules)其实就是网络管理员预定义的条件,规则一般的定义为“如果数据包头符合这样的条件,就这样处理这个数据包”。规则存储在内核空间的信息 包过滤表中,这些规则分别指定了源地址、目的地址、传输协议(如TCP、UDP、ICMP)和服务类型(如HTTP、FTP和SMTP)等。当数据

### 如何在 CentOS 7 中使用 iptables 配置规则来开放指定端口 #### 准备工作 在开始配置之前,确保系统的 `iptables` 已经安装并启动。如果未启用,则可以通过以下命令进行操作: ```bash sudo yum install -y iptables-services sudo systemctl start iptables sudo systemctl enable iptables ``` #### 添加开放端口规则 为了开放某个特定的端口(例如80端口),可以按照如下方式进行设置: 1. **添加允许入站流量的规则** 执行以下命令以允许外部访问该端口上的服务: ```bash sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT ``` 这条命令的作用是向 `INPUT` 链中追加一条规则,允许目标端口号为80的TCP数据包通过防火墙[^4]。 2. **保存规则以便持久化** 默认情况下,在重新启动服务器之后,上述修改可能会丢失。因此需要保存当前的 `iptables` 规则集到文件中,从而使其永久有效。 可以运行下面这条指令完成保存动作: ```bash sudo service iptables save ``` 3. **验证新加入的规则是否成功应用** 查看现有的所有规则列表,并查找刚刚新增的内容是否存在以及状态正常与否: ```bash sudo iptables -L -n -v ``` 此处会显示详细的表项详情,包括匹配条件、计数器数值等信息[^2]。 #### 自动加载规则于每次开机时 除了手动调用 `service iptables save` 命令外,还有另一种更推荐的方法就是利用 `firewalld` 或者直接编辑 `/etc/sysconfig/iptables` 文件实现自动化管理目的[^3]。 对于后者而言,只需将自定义好的策略写回到对应位置即可;而对于前者来说,则需调整相关参数让其支持兼容模式下的恢复功能。 --- ### 示例脚本:批量处理多个端口开启需求 当存在大量不同类型的网络通信请求待解决时,可考虑编写简单的Shell Script简化流程: ```bash #!/bin/bash ports=(80 443 22) for port in "${ports[@]}";do echo "Opening Port $port..." sudo iptables -A INPUT -p tcp --dport "$port" -j ACCEPT done echo "Saving Iptables Rules..." sudo service iptables save echo "Rules have been updated and saved." ``` 此段程序能够一次性打开数组变量所列举出来的全部端口资源供外界连接使用。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值