iptable规则的设定与查看

Firewall:防火墙,隔离工具;工作于主机或网络的边缘,对于进出本地或网络的报文根据实现定义好的检查规则做匹配检查,对于能够被规则所匹配到的报文作出相应处理的组件;

iptables/netfilter

功能

filter:过滤,防火墙;
nat:网络地址转换;
mangle:拆解报文,作出修改,封装报文;
raw:关闭nat表上启用的连接追踪机制;

PREROUTING
INPUT
FORWARD
OUTPUT
POSTROUTING
流入:PREROUTING –> INPUT
流出:OUTPUT –> POSTROUTING
转发:PREROUTING –> FORWARD –> POSTROUTING

各功能的分别实现

filter:INPUT,FORWARD,OUTPUT
nat:PREROUTING(DNAT),OUTPUT,POSTROUTING(SNAT)
mangle:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
raw:PREROUTING,OUTPUT

路由发生的时刻

报文进入主机后:判断目标主机;
报文发出之前:判断经由哪个接口送往下一跳;

iptables:四表五链

添加规则时的考量点:
(1)要实现哪种功能:判断添加在哪张表上;
(2)报文流经的路径:判断添加在哪条链上;

链:链上规则的次序,即为检查的次序:因此隐含一定的法则
(1)同类规则(访问同一应用),匹配范围小的放在上面;
(2)不同类规则(访问不同的应用),匹配到报文频率较大的放上面;
(3)将那些可由以调规则描述的多条规则合并为一个;
(4)设置默认策略;

功能的优先级次序:raw–> mangle –> nat –> filter

iptable:规则管理工具

添加,修改,删除,显示等;

链管理:

-F:flush,清空规则链;省略链,表示清空指定表上的所有链;
-N:new,创建新的自定义规则链;
-X:drop,删除用户自定义的空的规则链;
-P:Policy,为指定链设置默认策略;对filter表中的链而言,默认策略通常有ACCEPT,DROP,REJECT
-E:rEname,重命名自定义链;引入计数不为0的自定义链,无法改名,也无法删除;
这里写图片描述

规则管理:

-A:append,将新规则追加于指定链的尾部;
-I:insert,将新规则插入至指定链的指定位置;
-D:delete,删除指定链上的指定规则;
-R:replace,替换指定链上的指定规则;

扫描二维码关注公众号,回复: 1066876 查看本文章
查看:

-L:list,列出指定链上的所有规则;
-n:numberic,以数字格式显示地址和端口号;
-v:verbose,显示详细信息;
-line-numbers:显示规则编号;
-x:exactly,显示即数其计数结果的精确值;
这里写图片描述

目标

-j TARFET:jump至指定的TARGET
ACCEPT:接受
DROP:丢弃
REJECT:拒绝
RETURN:返回调用链
REDIRECT:端口重定向
LOG:记录日志
MARK:做防火墙标记
DNAT:目标地址转换
SNAT:源地址转换
MASQUEPADE:地址伪装
。。。
自定义链:有自定义链上的规则进行匹配检查

匹配条件

基本匹配:
[!] -s, –src, –source IP|Netaddr:检查报文中源IP地址是否符合此处指定的地址范围;
[!] -d, –dst, –destination IP|Netaddr:检查报文中源IP地址是否符合此处指定的地址范围;
-p, –protocol {tcp|udp|icmp}:检查报文中的协议,即ip首部中的protocols所标识的协议;
-i, –in-interface IFACE:数据报文的流入接口;仅能用于PREROUTING,INPUT及FORWARD链上;
-o, –out-interface IFACE:数据报文的流出接口;仅能用于FORWARD,OUTPUT及POSTROUTING链上;

清空防火墙策略;凡是目标ip为172.25.254.1的tcp报文都接受,凡是从172.25.254.1ip出去的tcp报文都放行。
这里写图片描述

将filter表上的三条链的默认策略改为DROP,丢弃。此时正在连接的ssh服务并没有断开,因为ssh使用的是tcp协议,被表中的第一条规则匹配到。如果此是使用ping去测试这台主机,是不通的,ping使用的是icmp协议。
这里写图片描述
这里写图片描述

接收目标地址为172.25.254.1的icmp报文,但此时还是无法ping通主机。
这里写图片描述
允许源地址为172.25.254.1的icmp协议的报文出去,此时就可以ping通了。所以要禁止一个报文的响应,既可以在INPUT链上拒绝接收,也可以在OUTPUT链上拒绝发出。但最好是在INPUT链上就拒绝,这样就不会浪费计算机的资源了。
这里写图片描述

删除刚刚加入的两条策略
这里写图片描述

接受来自eth0接口的目标ip为172.25.254.1的报文,允许eth0接口上源ip为172.25.254.1的报文出去。数据流入只能在INPUT,PREROUTING,FORWARD链上设定,数据流出控制只能在OUTPUT,POSTROUTING,FORWARD链上设定。
这里写图片描述

接受目标地址为172.25.254.1目标端口为22的TCP报文,允许源地址为172.25.254.1,源端口为22的TCP报文出去。
这里写图片描述

扩展

1 multiport扩展

以离散方式定义多端口匹配;最多匹配指定15个端口;
[!] –source-ports, –sports port[,port|,port:port]…:指明多个源端口;
[!] –destination-ports, dports port[,port|,port:port]…:指明多个离散的目标端口;
[!] –ports port[,port|,port:port]…

接受源地址为172.25.254.0/32,目标地址为172.25.254.1,目标端口为22和80的tcp报文,让目标地址为172.25.254.0/24,源地址为172.25.254.1,源端口为22和80的tcp报文出去。
这里写图片描述

2 iprange扩展

指明连续的(但一般是不能扩展为整个网络)ip地址范围时使用;
[!] –src-range from[-to]:指明连续的源ip地址范围;
[!] –dst-range from[-to]:指明连续的目标IP地址范围;

接受源地址为172.25.254.0-172.25.254.201,目标地址为172.25.254.1,目标端口为22,23和80的tcp报文,让目标地址为172.25.254.0-172.25.254.201,源地址为172.25.254.1,源端口为22,23和80的tcp报文出去。
这里写图片描述

3 time扩展

根据报文到达的时间与指定的时间范围进行匹配
–datestart
–datestop

–timestart
–timestop

–monthdays
–weekdays
在00:00-23:59时间内,接受目标地址为172.25.254.1,目标端口为20的tcp报文,让源地址为172.25.254.1,源端口为80的tcp报文出去。
这里写图片描述

猜你喜欢

转载自blog.csdn.net/qq_36462472/article/details/80332143