千家信息网

iptables基础知识详解

发表于:2025-02-03 作者:千家信息网编辑
千家信息网最后更新 2025年02月03日,iptables被称为数据包过滤器,只能检查数据链路层,IP层以及传输层的协议iptables有五个内置链:PREROUTING:路由钱(不能做过滤)INPUT:报文转发到本机FORWARD:报文转发
千家信息网最后更新 2025年02月03日iptables基础知识详解

iptables被称为数据包过滤器,只能检查数据链路层,IP层以及传输层的协议

iptables有五个内置链:

PREROUTING:路由钱(不能做过滤)

INPUT:报文转发到本机

FORWARD:报文转发输出到其它机器

OUTPUT:经由本机进程转发

POSTROUTING:路由决策发生以后

iptables的功能:

filter:过滤,防火墙

nat:用于修改源IP或目标IP,也可以修改端口;

mangle:拆解报文,作出修改后,并重新封装起来;

raw:关闭nat表上启用的连接追踪机制

功能<-->链的对应关系:

功能只能应用到那些链上面

raw:PREROUTING,OUTPUT

mangle:PREOUTING,INPUT,FORWARD,OUTPUT,POSTROUTING

nat:PREROUTING,{Centos 7 INPUT}OUTPUT,POSTROUTING

filter:INPUT,FORWARD,OUTPUT

报文流向:

流入本机:PREROUTING-->INPUT

由本机流出:OUTPUT-->POSTROUTING

转发:PREROUTING-->FORWARD-->POSTROUTING


iptables(管理工具,命令行配置)/netfilter(内核模块,具体功能它来实现)

组成部分:根据规则匹配条件来尝试匹配报文,一旦匹配成功,就有规则定义的处理动作做出处理;

匹配条件:

基本匹配条件

扩展匹配条件

处理动作:

基本处理动作

扩展处理动作

自定义处理动作

添加过则的考量点:

(1)要实现那种功能:判断添加到哪个表上;

(2)报文流经的路径:判断添加到哪个链上;

链:链上 的规则次序,即为检查的次序;因此,隐含一定的应用法则;

(1)同类规则(访问同一应用),匹配范围小的放上面;

(2)不同类的规则(访问不同应用),匹配到报文频率较大的放上面;

(3)将那些可由一条规则描述的多个规则合并起来;

(4)设置默认策略;

iptables规则格式:

iptables [-t table] COMMAND chain [-m matchname [per-match-options]] -j targetname[per-target-options]

-t table: 不加-t选项的默认为filter

raw,mangle,nat,filter

COMMAND:

链管理:

-N:new,自定义一条新的规则链;

-X:delete,删除自定义的规则链;

-P:Policy,设置默认策略;对filter表中的链而言,其默认策略有;

ACCEPT:接受

DROP:丢弃

REJECt:拒绝

-E:重命名自定义链;引用计数不为0的自定义链不能够被重命名,也不能被删除;

规则管理:

-A:append,追加;

-I:Insert,插入,要指明位置,省略时表示第一条;

-D:delete,删除;

(1)指明规则序号;

(2)指明规则本身;

-R:replace,替换指定的规则链;

-F:flush,清空指定的规则链;

-Z:zero,置零;

iptables的每条规则都有两个计数器;

(1)匹配到的报文的个数;

(2)匹配到的所有报文的大小之和;

查看:

-L:list,列出指定链上的所有规则;

-n --line-numbers,以数字格式显示地址和端口号;

-v:verbose,详细信息

-x:exactly,显示计数器结果的精确值;

chain:

PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING

匹配条件:

基本匹配条件:无需加载任何模块,由iptables/netfilter自行提供;

[!]-s,--source address[/mask][,...]:检查报文中的源IP地址是否符合此处理的地址或范围

[!]-d,--destination address[/mask][,...]:检查报文中的目标IP地址是否符合此处指定的地址范围;

[!]-p,--protocol protocol

protocol:tcp,udp,icmp

[!]-i,--in-interface name:数据报文流入的接口;只能应用于数据报文流入的缓解,只能应用于PREROUTING,INPUT和FORWARD链;

[!]-o,--out-Interface name:数据报文流出的接口;只能应用于数据报文流出的环节,只能

扩展匹配条件:需要加载扩展模块,方可生效;

隐式扩展:不需要手动加载扩展模块;因为他们是对协议的扩展,所以,但凡使用-p指明了协议,就表示已经指明的要扩展的模块;

tcp:

[!]--source-port,--sport port[:port]:匹配报文的源端口;可以是端口范围;

[!]--destination-port,--dport port[:port]:匹配报文的目标端口;可以是端口范围;

[!]--tcp-flage mask comp

例如:"--tcp-flagsSYN,ACK,FIN,RST SYN"表示,要检查的标志位为SYN,ACK,FIN,RST四个,其中SYN必须为1,余下的必须为0;

[!]--syn:用于第一次握手,相当于"--tcp-flagsSYN,ACK,FIN,RST SYN";

udp:

[!]--source-port,--sport port[:port]:匹配报文的源端口;可以是端口范围;

[!]--destination-port --dport port[:port]:匹配报文的目标端口;可以是端口范围;

icmp:

[!]--icmp-type {type[/code]|typename}

echo-requesr:8 请求

echo-reply:0:响应

显示扩展:必须要手动加载扩展模块,[-m matchname [per-match-options]];

显示扩展将在下一小结用具体示例详解

处理动作:

-j targetname

ACCEPT

DROP

REJECT

防火墙(服务)

Centos 6:

sevice iptables {start|stop|restart|status}

start:读取事先保存的规则,并应用到netfilter上;

stop:清空netfilter上的规则,以及还原默认策略等;

status:显示生效的规则

restart:清空netfilter上的规则,再读取事先保存的规则,并应用到netfilter上;

Centos 7:

systemctl start|stop|restart|status firewalld.service

systemctl disabled firewalld.server

systemctl stop firewalld.service

防火墙基本配置命令:

查看iptables规则链命令

iptables -t filter -L -n --line-numbers -v

清空规则链

iptables -t filter -F

清空自定义规则链

iptables -t filter -X

现在我们设置192.168.32.144(本机)拒绝192.168.32.145主机所有的访问

iptables -t filter -A INPUT -s 192.168.32.145 -d 192.168.32.144 -j DROP

删除这一条规则则

iptables -t filter -D INPUT 1

修改上述规则链只限制192.168.32.145对本机的icmp协议

iptables -t filter -R INPUT 1 -s 192.168.32.145 -d 192.169.32.144 -p icmp -j REJECT

iptables -A INPUT -s 192.168.32.145 -d 192.168.32.144 -p icmp -j REJECT

在本机流入接口做限制192.168.32.145的icmp协议访问

iptables -A INPUT -s 192.168.32.145 -d 192.168.32.144 -p icmp -o eno16777736 -j DROP

限制192.168.32.145主机使用ssh访问192.168.32.144

iptables -t filter -A INPUT -s 192.168.32.145 -d 192.168.32.144 -p tcp --dport 22 -j DROP

限制其它主机ping本主机,但是不限制本主机ping其它主机

iptables -A INPUT -d 192.168.32.144 -p icmp --icmp-type 8 -j DROP





0