linux防火墙的管理和策略控制

iptables

一:IPtables防火墙的简介

IPTABLES 是与最新的 3.5 版本 Linux 内核集成的 IP 信息包过滤系统。如果 Linux 系统连接到因特网或 LAN、服务器或连接 LAN 和因特网的代理服务器, 则该系统有利于在 Linux 系统上更好地控制 IP 信息包过滤和防火墙配置。

防火墙在做信息包过滤决定时,有一套遵循和组成的规则,这些规则存储在专用的信 息包过滤表中,而这些表集成在 Linux 内核中。在信息包过滤表中,规则被分组放在我们所谓的链(chain)中。而netfilter/iptables IP 信息包过滤系统是一款功能强大的工具,可用于添加、编辑和移除规则。

虽然 netfilter/iptables IP 信息包过滤系统被称为单个实体,但它实际上由两个组件netfilter 和 iptables 组成。

netfilter 组件也称为内核空间(kernelspace),是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。

iptables 组件是一种工具,也称为用户空间(userspace),它使插入、修改和除去信息包过滤表中的规则变得容易。除非您正在使用 Red Hat Linux 7.1 或更高版本,否则需要下载该工具并安装使用它。

主要由四表五链组成

 

二iptables防火墙的基本配置和优化

下面是一些其常用的选项:

-L:查看

 

 -F;清空

 

-P:建立一条默认的策略:

 

-I:指定链路,-p:指定协议,-j:链路规则

 

-t table

这个选项指定命令要操作的匹配包的表。如果内核被配置为自动加载模块,这时若模块没有加载,(系统)将尝试(为该表)加载适合的模块。这些表如下:filter,这是默认的表,包含了内建的链INPUT(处理进入的包)、FORWARD(处理通过的包)和OUTPUT(处理本地生成的包)。nat,这个表被查询时表示遇到了产生新的连接的包,由三个内建的链构成:PREROUTING (修改到来的包)、OUTPUT(修改路由之前本地的包)、POSTROUTING(修改准备出去的包)。mangle 这个表用来对指定的包进行修改。它有两个内建规则:PREROUTING(修改路由之前进入的包)和OUTPUT(修改路由IPTABLESIPTABLES之前本地的包)。

OPTIONS

这些可被iptables识别的选项可以区分不同的种类。

COMMANDS

这些选项指定执行明确的动作:若指令行下没有其他规定,该行只能指定一个选项.对于长格式的命令和选项名,所用字母长度只要保证iptables能从其他选项中区分出该指令就行了。

-A -append

在所选择的链末添加一条或更多规则。当源(地址)或者/与 目的(地址)转换为多个地址时,这条规则会加到所有可能的地址(组合)后面。

-D -delete

从所选链中删除一条或更多规则。这条命令可以有两种方法:可以把被删除规则指定为链中的序号(第一条序号为1),或者指定为要匹配的规则。

-R -replace

从选中的链中取代一条规则。如果源(地址)或者/与 目的(地址)被转换为多地址,该命令会失败。规则序号从1开始。

-I -insert

根据给出的规则序号向所选链中插入一条或更多规则。所以,如果规则序号为1,规则会被插入链的头部。这也是不指定规则序号时的默认方式。

-L -list

显示所选链的所有规则。如果没有选择链,所有链将被显示。也可以和z选项一起使用,这时链会被自动列出和归零。精确输出受其它所给参数影响。

-F -flush

清空所选链。这等于把所有规则一个个的删除。

--Z -zero

把所有链的包及字节的计数器清空。它可以和 -L配合使用,在清空前察看计数器,请参见前文。

-N -new-chain

根据给出的名称建立一个新的用户定义链。这必须保证没有同名的链存在。

-X -delete-chain

删除指定的用户自定义链。这个链必须没有被引用,如果被引用,在删除之前你必须删除或者替换与之有关的规则。如果没有给出参数,这条命令将试着删除每个非内建的链。

-P -policy

设置链的目标规则。

-E -rename-chain

根据用户给出的名字对指定链进行重命名,这仅仅是修饰,对整个表的结构没有影响。TARGETS参数给出一个合法的目标。只有非用户自定义链可以使用规则,而且内建链和用户自定义链都不能是规则的目标。

-h Help.

帮助。给出当前命令语法非常简短的说明。

PARAMETERS

参数

以下参数构成规则详述,如用于add、delete、replace、append 和 check命令。

-p -protocal [!]protocol

规则或者包检查(待检查包)的协议。指定协议可以是tcp、udp、icmp中的一个或者全部,也可以是数值,代表这些协议中的某一个。当然也可以使用在/etc/protocols中定义的协议名。在协议名前加上"!"表示相反的规则。数字0相当于所有all。Protocol all会匹配所有协议,而且这是缺省时的选项。在和check命令结合时,all可以不被使用。

-s -source [!] address[/mask]

指定源地址,可以是主机名、网络名和清楚的IP地址。mask说明可以是网络掩码或清楚的数字,在网络掩码的左边指定网络掩码左边"1"的个数,因此,mask值为24等于255.255.255.0。在指定地址前加上"!"说明指定了相反的地址段。标志 --src 是这个选项的简写。

-d --destination [!] address[/mask]

指定目标地址,要获取详细说明请参见 -s标志的说明。标志 --dst 是这个选项的简写。

-j --jump target

-j 目标跳转

指定规则的目标;也就是说,如果包匹配应当做什么。目标可以是用户自定义链(不是这条规则所在的),某个会立即决定包的命运的专用内建目标,或者一个扩展(参见下面的EXTENSIONS)。如果规则的这个选项被忽略,那么匹配的过程不会对包产生影响,不过规则的计数器会增加。

-i -in-interface [!] [name]

i -进入的(网络)接口 [!][名称]

这是包经由该接口接收的可选的入口名称,包通过该接口接收(在链INPUT、FORWORD和PREROUTING中进入的包)。当在接口名前使用"!"说明后,指的是相反的名称。如果接口名后面加上"+",则所有以此接口名开头的接口都会被匹配。如果这个选项被忽略,会假设为"+",那么将匹配任意接口。

-o --out-interface [!][name]

-o --输出接口[名称]

这是包经由该接口送出的可选的出口名称,包通过该口输出(在链FORWARD、OUTPUT和POSTROUTING中送出的包)那么将匹配所有任意接口。

[!] -f,--fragment

[!] -f --分片

这意味着在分片的包中,规则只询问第二及以后的片。自那以后由于无法判断这种把包的源端口或目标端口(或者是ICMP类型的),这类包将不能匹配任何指定对他们进行匹配的规则。如果"!"说明用在了"-f"标志之前,表示相反的意思。

OTHER OPTIONS

其他选项

还可以指定下列附加选项:

-v --verbose

-v --详细

详细输出。这个选项让list命令显示接口地址、规则选项(如果有)和TOS(Type of Service)掩码。包和字节计数器也将被显示,分别用K、M、G(前缀)表示1000、1,000,000和1,000,000,000倍(不过请参看-x标志改变它),对于添加,插入,删除和替换命令,这会使一个或多个规则的相关详细信息被打印。

-n --numeric

-n --数字

数字输出。IP地址和端口会以数字的形式打印。默认情况下,程序试显示主机名、网络名或者服务(只要可用)。

-x -exact

-x -精确

扩展数字。显示包和字节计数器的精确值,代替用K,M,G表示的约数。这个选项仅能用于 -L 命令。

--line-numbers

 iptables防火墙规则的备份和恢复

 

 

日志监视:

 firewalld

 一:firewalld防火墙的主要配置

Firewalld防火墙中所使用到的命令可以分为三大类:安装卸载、维护和策略操作。

其常见的区域可分为下列几种

 block dmz drop external home internal public trusted work 

各个区域的作用用如下图表示

 

运行模式

runtime:仅在系统运行时生效

perment:永久生效

安装

在Centos7中默认已经安装了firewalld,如果需要自行安装,可以直接使用yum安装

 [root@excelib.com ~]# yum install firewalld 

如果需要使用图形化配置工具还需要安装firewall-config

 [root@excelib.com ~]# yum install firewall-config 

这样firewalld就安装完成了,不过要注意firewalld跟iptables不能同时使用,所以在使用firewalld之前首先需要将iptables停用。

维护命令

firewalld的维护相对来说是非常简单的,其命令主要分为三大类:启动停止和查询状态、设置开机自动启动以及更新规则。

启动停止和查询状态

在Centos7中默认将原来的服务管理工具service升级为了systemctl,其实原来的service只是一个脚本执行工具,而systemctl的功能非常强大,关于systemctl的详细用法大家可以阅读linux中国的一篇文章,地址是:https://linux.cn/article-5926-1.html,这篇文章写的非常详细,所以学生就不再给大家做补充了,下面来说一说怎么用它来操作firewalld。

启动

 [root@excelib.com ~]# systemctl start firewalld 

停止

 [root@excelib.com ~]# systemctl stop firewalld 

重启

 [root@excelib.com ~]# systemctl restart firewalld 

查询状态

 [root@excelib.com ~]$ systemctl status firewalld 

另外,对于firewalld来说还可以使用自身的firewall-cmd工具来查询运行状态

 [root@excelib.com ~]$ firewall-cmd --state 

设置开机自动启动

设置开机自动启动也是使用systemctl来操作的,命令如下

启用开机自动启动

 [root@excelib.com ~]$ systemctl enable firewalld 

禁用开机自动启动

 [root@excelib.com ~]$ systemctl disable firewalld 

查看自动启动状态

 [root@excelib.com ~]$ systemctl is-enabled firewalld 

当然,systemctl的这些命令不只适用于firewalld,也适用于其他服务,使用时只要将firewalld换成相应服务的名称就可以了。

更新规则

直接使用firewall-cmd修改的规则是不需要更新就可以直接生效的,但是如果加了--permanent参数,或者直接编辑xml文件之后就需要我们手动reload了,firewall-cmd提供了两个更新规则的参数:--reload和--complete-reload,前者只是更新需要更新规则,而且更新的过程中不会影响现有的连接,而后者在更新时会将所有的规则清除掉然后重建,而且为了安全考虑,在更新之前首先会将策略设置为DROP,等更新完成之后再恢复为ACCEPT,这样就会对现有连接造成影响,所以如果没有特殊需求我们应该尽量使用前者。同样也可以指定complete参数即表示完全重启firewalld防火墙具体命令如下

--reload和--complete-reload的区别是对用户数据的丢弃是不是要做出处理,--reload不丢弃,反之--complete-reload丢弃

 [root@excelib.com ~]# firewall-cmd --reload [root@excelib.com ~]# firewall-cmd --complete-reload 

 

策略操作

对于firewalld来说最重要的就是策略操作了,策略操作主要有三种方法:使用firewall-config操作、使用firewall-cmd操作和直接编辑xml文件,学生在上节已经给大家介绍过了,firewall-config是图形化工具,firewall-cmd是命令行工具,我们这里主要以命令行工具为主来给大家介绍。

firewall-cmd中关于规则的命令非常多,如果在这里全部列出来再给大家解释一遍应该效果也不会太好,所以学生在后面讲到具体相关内容时再给大家讲相应的命令,比如讲到zone的时候给大家介绍跟zone相关的命令,这样大家更容易理解和记忆。

firewall-cmd中的命令虽然非常多,但是有四大类使用频率非常高的命令:

--add-xxx、--remove-xxx、--query-xxx、--get-xxx以及--list-xxx,这里前两个非常容易理解,一个是添加一个是删除,而后三个从名字上就不太容易区分了,下面学生给大家解释一下。

--query-xxx

主要用于布尔值的查询,比如

 [root@excelib.com ~]$ firewall-cmd --zone=public --query-service=ssh 

这个命令用于查询在public这个zone中是否包含ssh这个服务。

--get-xxx

主要用于获取特定的内容,比如

查询系统所属的默认区域

获取指定网卡所属的区域

 

--set-xx

设置系统的默认区域

 

--list-xxx

主要用于按一定条件进行查询(不过有的list命名也不需要条件),比如

 [root@excelib.com ~]$ firewall-cmd --zone=public --list-services 

这个命令可以返回public这个zone中所包含的services。

-add-xxx

query还是比较容易理解的,但是get和list从字面上并不容易区分,刚开始学生以为get命令用于获取单个结果,list用于获取多个结果,但后来发现并不是这样。当然,我们在使用的时候按照文档中的说明来使用就可以了。

另外,在firewall-cmd中有一个比较特殊的参数:--permanent,他表示是否将修改后的规则保存下来,如果不加这个参数,那么所做的修改当时会立即生效,但是在firewalld重启之后就会丢失,而加上这个参数后所做的修改就会永久保存下来,不过这时的修改不会立即生效而是需要reload后才可以生效。其实这个也非常容易理解,当不加--permanent修改规则时firewalld会实际修改运行时的规则,而如果加了这个参数firewalld其实是去修改的xml配置文件,和我们直接编辑xml文件一样,所以就需要reload才可以生效。

设允许ssh服务通过work区域

 

 仅允许21-23号端通过public区域

NAT转发  (服务地址的转发和端口的重定向)

xx--forwadr-port

port         //源端口号

proto         //源协议

toport        //目的端口

toaddr      //目的地址

移除ssh服务的22端口通过端口转发映射成目标地址10.0.0.1的800端口也可以访问·

 将public区域中的源端口80转发成tcp可以访问的8080

开启代理上网功能

 富规则:

设置允许所有10.0.0.0/24网段的用户通过ssh接入public区域

 --remove-xx

设置拒绝ssh服务访问work区域

 

特殊的匹配规则(恐慌模式)

开启|关闭|查询应急模式,阻断一切连接

 

 

ICMP阻塞设定:

列出public区域的阻塞情况

 

--change-xxx:选择

 设置指定网卡的默认区域永久生效

 

 

--query-xx:查询

查询public区域是否支持http服务

 

firewall-config:

firewall防火墙的图形化管理工具

 

三:服务器路由转发

通常要把服务器作为一台路由器,即为使服务器具备路由转发功能

vim编辑/etc/sysctl.conf启用系统的路由转发功能

  

四:TCP包装器(服务访问控制列表)

 vim 编辑/etc/hosts.deny或/etc/hosts.allow

 

 

 

 

 

转载于:https://www.cnblogs.com/activecode/p/9412073.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
超完整的论文、 本人制作、大家分享 目 录 摘要 4 Abstract 5 引言 6 第1章 绪论 7 1.1Intranet系统以及其安全问题 7 1.2防火墙技术 8 1.2.1 防火墙的定义 9 1.2.2 防火墙的基本类型 9 1.2.3 包过滤防火墙 10 1.2.4 应用网关 11 1.2.4.1 回路层代理 12 1.2.4.2 应用层代理 13 1.3 设计与实现Linux防火墙的缘起与目标 13 第2章 使用防火墙构造安全的解决方案 15 2.1 堡垒主机或双穴主机网关 15 2.2 被屏蔽主机网关 16 2.3 被屏蔽子网 16 第3章 Linux防火墙技术 18 3.1 Linux 防火墙技术的发展 18 3.2 利用Linux 实现路由和包过滤 18 3.2.1 Ipchains原理及简介 18 3.2.1.1 原理简介 18 3.2.1.2 源代码分析 20 3.2.2 Ipchains命令使用简介 23 3.3 Linux下代理的实现 29 3.3.1代理服务器概述 29 3.3.1.1 什么是代理服务器 29 3.3.1.2 代理服务器的功能 30 3.3.2 代理软件的简介和比较 33 结 论 36 致 谢 38 参考文献 39 摘要 随着计算机网络,特别是近年来Internet的飞速发展,各公司、企业、政府机关交流信息的方式正在发生变化。但这些部门面临的最大的问题就是如何用一种有效的安全解决方案来保护网络及信息系统不受攻击。在众多的方案中,防火墙是安全解决策略的关键部分。 防火墙是一类安全防范措施的总称,它是在两个网络之间强制实施访问控制策略的一个系统或一组系统。本文主要是针对有关防火墙的技术和防火墙应用的模型、设计和实现进行研究,通过对各种防火墙技术和防火墙体系结构的分类比较,对明确防火墙相关概念和选择使用防火墙上具有指导意义。同时,介绍了一种在Linux系统下集包过滤与代理于一身的复合防火墙的设计和实现过程。在这里介绍的一些技术细节和实现策略可以为今后的防火墙构造提供借鉴。这种防火墙技术不仅可以使系统更具有灵活性和可扩展性,更使得系统的安全性得到提高。 关键词: 防火墙 包过滤 代理 复合型防火墙 Linux Abstract Recently, with computer network and Internet increasing rapidly, its have changed forever the way of corporations, enterprises, and organizations communicating. But the vital problem that they must face is how to protect their network and information system against attack by setting an effective network security solution. In all of this solution, firewall is one of the important parts. Firewall is a type of network security measure. A firewall is a system or group of systems that enforces an access control policy between two networks. In the dissertation, we study on the modeling, design, and implementation of firewall technologies and firewall application, By the comparing and classifying the all types of firewall technology, we present a whole concept of firewall technology to reader. It is the good guide to choice and building firewall system. In additional, we illustrate a process of designing and implementing a complex firewall system which make packet filter and proxy under Linux operation system, All of
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值