初接触Linux,防火墙的规则和语法

今天给大家带来的是防火墙



一、防火墙

防火墙分为网络防火墙和应用层防火墙

1、网络防火墙

网络防火墙就是一个位于计算机和它所连接的网络之间的防火墙。该计算机流入流出的所有网络通信均要经过此防火墙。防火墙对流经它的网络通信进行扫描,这样能够过滤掉一些攻击,以免其在目标计算机上被执行。防火墙还可以关闭不使用的端口。而且它还能禁止特定端口的流出通信,封锁特洛伊木马。最后,它可以禁止来自特殊站点的访问,从而防止来自不明入侵者的所有通信。

2、应用层防火墙

应用层防火墙是在 TCP/IP 堆栈的“应用层”上运作,您使用浏览器时所产生的数据流或是使用 FTP 时的数据流都是属于这一层。应用层防火墙可以拦截进出某应用程序的所有封包,并且封锁其他的封包(通常是直接将封包丢弃)。理论上,这一类的防火墙可以完全阻绝外部的数据流进到受保护的机器里。

因为应用层防火墙的算法会更复杂,过虑更为严格,所以在部署防火墙的时候,要把应用层防火墙部署到网络防火墙的里边。

Linux防火墙体系主要工作在网络层,针对TCP/IP数据包实施过滤和限制,属于典型的包过滤防火墙(网络层防火墙)。

二、iptables的表链结构

1、iptables简介

平时说iptables是防火墙,其实iptables是iptables/netfilter组合中的一个,只有iptables/netfilter才应该叫做防火墙,它是基于软件方式工作的网络防火墙。iptables工作于用户空间,是防火墙的规则编写工具,使用iptables编写规则并且发送到netfilter;防火墙的规则刚放到netfilter中,它是一个能够让规则生效的网络架构,工作于内核空间。

2、iptables的表、链结构

iptables是由四表五链组成的,想要配置iptables必须先了解这四表五链

一个规则可以出现在多个表中,谁先谁后呢?所以在这四个表中是存在优先级关系的:

1)四表

   优先级:raw表  >  mangle表 >  nat表  >  filter表

①、raw表

RAW表只使用在PREROUTING链和OUTPUT链上,因为优先级最高,从而可以对收到的数据包在连接跟踪前进行处理。一但用户使用了RAW表,在某个链上,RAW表处理完后,将跳过NAT表和ip_conntrack处理,即不再做地址转换和数据包的链接跟踪处理了。

RAW表可以应用在那些不需要做nat的情况下,以提高性能。如大量访问的web服务器,可以让80端口不再让iptables做数据包的链接跟踪处理,以提高用户的访问速度。

raw内含有两个链:PREROUTING和OUTPUT

②、mangle表

mangle表一般是对数据包进行修改用的

比如在网络的转发过程中,数据包要从X到Z,中间夹了一个Y,当数据从X到Y的时候,Y要运行拆包,看是不是自己的,如果是就收下了,如果不就是重新封装,把源IP改为自己的,而不再是X的了,再进行转发。

mangle表中含五个链:PREROUTING、INPUT、FORWARD、OUTPUT、POSTROUTING

③、nat表

用于nat功能(端口映射,地址映射等)

主要用来处理一些将要到达本机路由和将要离开本机路由的数据包,修改数据包中的源、目标IP地址或端口;其对应的模块为iptable_nat。

nat表内含三个链:PREROUTING、POSTROUTING、OUTPUT

④、filter表

一看名字就知道是用来做过滤用的。filter表是iptables的默认表,如果在设置规则时,不指定表,则默认就是在filter表上操作

filter表内含三个链:INPUT、FORWARD、OUTPUT

2)五链

这五条链其实就是针对防火墙策略的规则

①、PREROUTING

路由前,数据包在经过防火墙前应做如何处理

②、INPUT

在数据包进行进入本机前就做何处理,目标是本机,不是网络内的主机

③、OUTPUT

在数据包离开本机时做何处理,源是本机,目标是其它主机

④、FORWARD

对于转发数据包做如何处理,因为本机可能是一台代理服务器,网络内的其它主机在与互联网通信时都需要经过这台服务器的转发

⑤、POSTROUTING

在数据包离开防火墙时做如何处理

INPUT、OUTPUT链主要用在“主机型防火墙”中,即主要针对服务器本机进行保护的防火墙;而FORWARD、PREROUTING、POSTROUTING链多用在“网络型防火墙”中,

三、iptables数据包的过滤流程

为了更直观的表现数据包的过滤流程,请参考第二步及下图

四、iptables使用规则

iptables规则=检查条件+处理机制

1)检查条件

(1)IP:源IP,目标IP

(2)Protocal:TCP、UDP、ICMP

TCP:源端口、目标端口、Flags

UDP:源端口、目标端口

ICMP:ICMP-TYPE

TCP Flags:基于标记的TCP包匹配经常被用于过滤试图打开新连接的TCP数据包,共有六个标志位,UDP没有

①、URG

如为1,则表示本数据包中含有紧急数据

②、ACK

确认标志们

③、PSH

PUSH操作,所谓PUSH操作就是批数据包到达接收端以后,立即传送给应用程序,而不是在缓冲区中排队

④、RST

表示连接复位请求,用来复位那些产生错误的连接;当PST=1时,表示出现严重错误,必须释放连接,然后再重新建立

⑤、SYN

表示同步序号,用来建立连接。

SYN=1,ACK=0 表示连接请求

SYN=1,ACK=1 表示连接请求被响应

⑥、FIN

表示数据已经发送完毕,希望释放连接

2)处理机制、动作     -j target

ACCEPT:将包放行,进行完此处理动作后,将不再匹配其它规则,直接跳往下一个规则链

DENY:拒绝,委婉式的拒绝

DROP:丢弃数据包,进行完此处理动作后,将不再匹配其它规则,直接中断过滤程序

REJECT:阻拦该数据包,并通知对方(ICMP消息)

SNAT:改定数据包源IP

DNAT:改定数据包目标IP

RETURN:结束在目前规则链中的过滤程序,返回主规则链继续过滤,如果把自定义规则链看成是一个子程序,那么这个动作,就相当于提前结束子程序并返回到主程序中。

REDIRECT:将数据包重新导向到另一个端口(PNAT),进行完此处理动作后,将会继续匹配其它规则

LOG:记录日志

五、iptables语法

1)创建一条自定义的规则链


1

iptables [-t table] -N chain

2)删除一条自定义的规则链,必须为空链


1

iptables [-t table] -X [chain]

3)修改自定义链名


1

iptables [-t table] -E old-chain-name  new-chain-name

4)为链指定默认策略,指定默认规则


1

iptables [-t table] -P chain target

5)iptables [-t talbe] {-F|-L|-Z} [chain[rulenum]][options...]

-F:flush,清空链中的规则,不指链则清空表中的所有规则,规则有编号,自上而下从1开始

-L:list,列出表中的所有规则

-n:只和-L一块用,数字格式显示IP和PORT

-v:verbose,以详细格式显示

-vvv

-x:exactly,精确值,不执行单位换算

--line-numbers:显示各规则的行号

-Z:zero,清零,把规则的计数器清零

6)iptables [-t table] {-A|-D} chain rule-specification

-A:append,附加一条规则,添加到现在规则链的最下面(-I:默认添加到最前面)
rule-specification

匹配条件 -j 处理机制

(1)通用匹配:

-s:source,匹配源地址,可以是IP,也可以是网络地址;可以使用!操作符取反

-d:匹配目标地址,可以是IP,也可以是网络地址;可以使用!操作符取反

-p:匹配协议,通常只使用{TCP|UDP|ICMP}三者之一

-i:数据报文流入接口;通常只用于INPUT、FORWARD和PREROUTING

-o:数据报文流出接口;通常只用于OUTPUT、FORWARD和POSTROUTING

(2)扩展匹配:

①隐含扩展:使用-p{tcp|udp|icmp}指定某特定服务后,自动能够对协议进行扩展

-p tcp

--dport m[-n]:匹配的目标端口,可以是连续的多个端口

--sport m[-n]:匹配的源端口,可以是连续的多个端口

--tcpflags           (6个标志们:URG、PSH、RST、SYN、ACK、FIN)

--tcp-flags rst,syn,ack,fin syn = --syn

ALL,NONE

-p udp     udp没有标志位,所以只有源端口和目标端口可选

--dport

--sport

-p icmp

--icmp-type

8:ping 请求

0:ping响应

②显示扩展:必须要明确指定的扩展模块

-m 扩展模块名称 --专用选项1 --专用选项2

multiport:多端口匹配,一次指定多个(15个以内)离散端口

--source-ports, --sports

--destination-ports,  --dports

--ports

iprange:ip地址范围

[!] --src-range from[-to]

[!] --dst-range from[-to]

time:指定时间范围

datestart YYYY[-MM[-DD[Thh[:mm[:ss]]]]]

datestop

timestart hh:mm[:ss]

timestop hh:mm[:ss]

[!]--weekdays day[,day...]

string:字符串匹配

--algo{bm|kmp}:字符匹配查找时使用算法

--string "STRING":要查找的字符串

--hex-string "HEX-STRING":要查找的字符,先编码成16进制格式

connlimit:第IP对指定服务的最大并发连接数

[!]--connlimit-above [n]

limit:报文速率控制

--limit #[/second|/minute|/hour|/day]

--limit-burst #

state:状态匹配

ip_conntrack,nf_conntrack

--state

NEW

ESTABLISHED

RELATED

INVALID

-D 删除规则


1

iptables [-t table] -D chain rulenum

-I 插入规则


1

iptables [-t table] -I chain [rulenum] rule-specification

-R 替换指定规则


1

iptables [-t table] -Rchain rulenum rule-specification

-S 只显示指定链上的规则添加命令


1

iptables [-t table] -S [chain [rulenum]]

初接触Linux,防火墙的规则和语法,布布扣,bubuko.com

时间: 2024-08-07 00:16:03

初接触Linux,防火墙的规则和语法的相关文章

初接触Linux,mysql备份

一.简介 mysqldump是mysql用于转存储数据库的实用程序.它主要产生一个SQL脚本,其中包含从头重新创建数据库所必需的命令CREATE TABLE INSERT等 它可以把整个数据库装载到一个单独的文本文件中.这个文件包含有所有重建你的数据库所需要的SQL命令.这个命令取得所有的模式并且将其转换成DDL语法(CREATE语句,即数据库定义语句),取得所有的数据,并且从这些数据中创建INSERT语句.这个工具将你的数据库中所有的设计倒转.因为所有的东西都被包含到了一个文本文件中.这个文本

初接触Linux,LAMP的构架

今天给大家带来的是LAMP的构架 一.LAMP简介 LAMP(Linux- Apache-MySQL-PHP)网站架构是目前国际流行的Web框架,该框架包括:Linux操作系统,Apache网络服务器,MySQL数据库,Perl.PHP或者Python编程语言,所有组成产品均是开源软件,是国际上成熟的架构框架,很多流行的商业应用都是采取这个架构.LAMP具有通用.跨平台.高性能.低价格的 优势,因此LAMP无论是性能.质量还是价格都是企业搭建网站的首选平台. 二.相关说明 1.本篇(LAMP系列

初接触Linux,使用Xtrabackuo给Mysql(MariaDB)备份

今天给大家带来的是Xtrabackup给mysql(mariaDB)备份 一.Xtrabackup 1.Xtrabackup介绍 Percona XtraBackup是开源免费的MySQL数据库热备份软件,它能对InnoDB和XtraDB存储引擎的数据库非阻塞地备份,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具 2.Xtrabackup的特点 (1)在线热备整个库的InnoDB.XtraDB表 (2)备份过程不会打断正在执行的事务: (3)在xtra

初接触Linux,LVM的备份

今天给大家来的得失LVM相关的备份 一.LVM快照写时复制的特性(copy-on-write,COW) 写时复制快照在快照时间点之后,没有物理数据复制发生,仅仅复制了原始数据物理位置的元数据.因此,快照创建非常快,可以瞬间完成.然后,快照副本跟踪原始卷的数据变化(即原始卷写操作),一旦原始卷数据块发生写操作,则先将原始卷数据块读出并写入快照卷,然后用新数据块覆盖原始卷.这样我们访问快照卷上的数据仍旧是写操作前的,可以保证我们备份数据的一致性.它是一个接近于热备的工具 1.逻辑卷快照事实上是一个逻

Linux防火墙基础与编写防火墙规则

Iptables采用了表和链的分层结构,每个规则表相当于内核空间的一个容器,根据规则集的不同用途划分为默认的四个表,raw表,mangle表,nat表,filter表,每个表容器内包括不同的规则链,根据处理数据包的不同时机划分为五种链,而决定是否过滤或处理数据包的各种规则,按先后顺序存放在各规则链中. 1.防火墙:内核中具有包过滤体系 内核态:netfilter 用户态:iptables  管理工具 工作在网络层:可以对ip地址.端口.协议等信息进行处理 2.规则链:规则的集合 五种链:(必须大

linux的初接触

最初衷:当自己的才能不能支配起内心的梦想时,便需要静下心来读读书.知道linux算一个巧合,但既然选择,那便努力一把.这是我的第一篇博文,也是我正式接触linux的所学.愿与大家共勉. ---Aolens 一,Linux比较常见的几个版本以及他们包含的常见的分支: 1,  Debian:ubuntu 2,  Slackware:s.u.S.E 3,  Redhat:CentOS,Fedora,HREL(centos的社区版,由centos调试一些软件是否成功来添加到HREL中         )

笔记8(日常运维w、vmstat、top、sar、nload、free、ps、netstat、tcptump、Linux防火墙)

w查看系统负载 date 查看当前系统的时间 w出来的,第一行从左面开始显示的信息依次为:时间,系统运行时间,登录用户数,平均负载.第二行开始以及下面所有的行,告诉我们的信息是,当前登录的都有哪些用户,以及他们是从哪里登录的等等.其实,在这些信息当中,我们最应该关注的应该是第一行中的 'load average:' 后面的三个数值. 第一个数值表示1分钟内系统的平均负载值:第二个数值表示5分钟内系统的平均负载值:第三个数值表示15分钟系统的平均负载值.这个值的意义是,单位时间段内CPU活动进程数

Linux服务器集群架构部署搭建(二)linux防火墙iptables使用及NAT共享

第一章 外网防火墙部署企业应用 1.1 生产中iptables的实际应用 ①iptables是基于内核的防火墙,功能非常强大,基于数据包的过滤!特别是可以在一台非常低的硬件配置下跑的非常好.iptables主要工作在OSI七层的2.3.4层.七层的控制可以使用squid代理+iptables. ②iptabes:生产中根据具体情况,一般,内网关闭,外网打开.大并发的情况不能开iptables,影响性能,iptables是要消耗CPU的,所以大并发的情况下,我们使用硬件防火墙的各方面做的很仔细.s

Linux防火墙基础知识及配置

Linux防火墙基础知识 Linux的防火墙正确的来说并不算是防火墙,只是一种防火墙的功能体现.我们现在来讲解下Linux的这个防火墙功能的详细解释. Linux的防火墙是由iptables与netfilter两个程序组成的,而iptables是一个单独的程序,netfilter是集成到内核中的一个程序,两个程序合作才能拥有完整的防火墙功能. Iptables的功能是向netfiler提供规则,netfilter则是将规则执行起来. Linux防火墙还分为主机防火墙与网络防火墙. 主机防火墙:工