Linux下iptables的简介和自己的记录

本文涉及的产品
公网NAT网关,每月750个小时 15CU
简介:

本文简单描述了Linux下 iptables 的原理介绍 和 自己在使用过程中的小小总结。


欢迎转载,请注明作者、出处。

作者:张正
blog:http://space.itpub.net/26355921 
QQ:176036317
如有疑问,欢迎联系。

一、iptables基础:(封包过滤、封包重定向、NAT等功能)

->规则(rules)

->(chains)

->(tables)

->iptables传输数据包的过程

1.规则:

->规则一般的定义为:如果数据包头符合这样的条件,就这样处理这个数据包

->规则存储在内核空间的信息包过滤表中,这些规则分别指定了源地址、目的地址、传输协议和服务类型

->当数据包与规则匹配时,iptables就根据规则所定义的方法来处理这些数据包,如放行(accept)、拒绝(reject)和丢弃(drop)等。

->配置防火墙的主要工作就是添加、修改、删除这些规则

2.

->链是数据包传播的路径,每一条链其实就是众多规则中的一个检查清单,每一条链中可以有一条或数条规则。

->当数据包到达链时,会从链中的第一条规则开始检查。如果满足条件,就会根据该条规则所定义的方法处理该数据包,否则就继续检查下一条规则。如果数据包不符合链中任意一条规则,就会按照预先定义的默认策略来处理数据包。

3.

a.filter表:包过滤(iptables的默认表)

包含:

->INPUT(处理进入的数据包)

->FORWARD(处理转发的数据包)

->OUTPUT(处理本地生成的数据包)

filter表中,只允许对数据包进行接受、丢弃的操作,无法对数据包进行更改

b.nat表:网络地址转换

包含:

->PREROUTING(修改即将到来的数据包)

->OUTPUT(修改在路由之前本地生成的数据包)

->POSTROUTING(修改即将出去的数据包)

 

c.mangle表:(对指定包进行修改,使用相对较少)

包含:

->PREROUTING

->INPUT

->FORWARD

->OUTPUT

->POSTROUTING

 

 

 

二、数据包的传输过程:

__________________________________________________________

|                                                                                                               |

|   进入的数据包                                     输出的数据包 |

|                 |                                            |

|                                                                                         |       |

|    PREROUTING ------>FORWARD链条 --->  POSTROUTING |

|                 |                                            |

|                                                                                         |       |

|      INPUT    ------>内部处理过程 -->   OUTPUT链条   |

|________________________________________________________|

1.当一个数据包进入网卡时,首先进入PREROUTING链,内核根据数据包目的IP判断是否需要转送出去

2.如果是进入本机的,数据包就会达到INPUT链,经过内部处理,然后经过OUTPUT链,最后到达POSTROUTING链输出

3.如果数据包是要转发出去的,且内核允许转发,数据包就会到达FORWARD链,然后到达POSTROUTING链输出

三、iptables命令格式

一般格式:iptables [ -t  ] -命令  匹配  [ -j 动作 ]

1.表选项

指定命令应用于哪个表:filternatmangle

2.命令选项

-P(--policy) <链名>  :定义默认策略

-L(--list)   <链名>  :查看iptables规则列表

-A(--append) <链名>  :在规则列表的最后增加1条规则

-I(--insert) <链名>  :在指定位置插入1条规则

-D(--delete) <链名>  :从规则列表中删除1条规则

-R(--replace)<链名>  :替换规则列表中的某条规则

-F(--flush)  <链名>  :删除表中所有规则

-Z(--zero)   <链名>  :将表中数据包计数器和流量计数器归零

3.匹配选项

-i <网络接口名>       :指定数据包从哪个网络接口进入,如eth0eth1

-o <网络接口名>     :指定数据包从哪个网络接口输出,如eth0eth1

-p <协议类型>          :指定数据包匹配的协议,如TCPUDPICMP

-s <源地址或子网>   :指定数据包匹配的源地址

--sport <源端口号>  :执行数据包匹配的源端口号,可用"起始端口号:结束端口号"

-d <目标地址或子网:指定数据包匹配的目标地址

--dport <目标端口号>:指定数据包匹配的目标端口号,可用"起始端口号:结束端口号"

4.动作选项

ACCEPT  接受数据包

DROP      丢弃数据包

REJECT    拒绝数据包

REDIRECT将数据包重新转到本机或另一台主机的某个端口

SNAT      源地址转换

DNAT      目标地址转换

MASQUERADE  NAT技术

LOG        将符合规则的数据包的相关信息记录在日志中

四、iptables命令示范

1.filter表默认接收

iptables -P INPUT ACCEPT

(没有-t <表名则默认为filter)

2.nat表默认丢弃

iptable -t nat -P OUTPUT DROP

3.查看规则

iptables [ -t  表名 ] -L [ 链名 ]

iptables -L

iptables -t nat

iptables -t mangle

4.禁止访问百度:

iptables -A INPUT -s www.baidu.com -j DROP

说明:

在访问百度网站的例子中

对于INPUT www.baidu.com(s)源地址,本机是(d)目的地址

对于OUTPUT:本机是(s)源地址,www.baidu.com(d)目的地址

因此禁止访问百度网站的方法有两种:

iptables -A INPUT -s www.baidu.com -j DROP

iptables -A OUTPUT -d www.baidu.com -j DROP

修改防火墙的文件:/etc/sysconfig/iptables

================================================================
防火墙设置-案例

开放22、80、6114、6115端口,其他端口默认关闭:
iptables -A INPUT -p icmp -j ACCEPT                        #允许ping
iptables -A INPUT -p tcp --dport 22 -j ACCEPT       #开放22端口,ssh
iptables -A INPUT -p tcp --dport 6114 -j ACCEPT  #开放6114端口,mysql使用
iptables -A INPUT -p tcp --dport 6115 -j ACCEPT  #开放6115端口,mysql使用
iptables -A INPUT -p tcp --dport 80 -j ACCEPT       #开放80端口
#iptables -A INPUT -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT  #对80端口 新建立和已经建立的连接 开放
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT   #对所有已经建立的连接 开放
#此条很重要,如果不设置,机器上的一些对网页的连接或者数据库的连接就无法正常 。设置此条后,就不用设置上面那条。
iptables -A INPUT -s 192.168.101.207 -j ACCEPT    
iptables -A INPUT -s 127.0.0.1 -j ACCEPT
iptables -A INPUT -p udp --sport 53 -j ACCEPT     #开放DNS ,否则iptables对域名解析很慢
iptables -A INPUT -p tcp --sport 53 -j ACCEPT
iptables -P INPUT DROP    # 设置 默认INPUT链 丢失所有连接,此条慎重,一定要 开启22端口后才能设置此条。
本文转自ITPUB博客84223932的博客,原文链接:Linux下iptables的简介和自己的记录,如需转载请自行联系原博主。
相关文章
|
6月前
|
安全 Linux 网络安全
百度搜索:蓝易云【linux iptables安全技术与防火墙】
请注意,iptables的具体使用方法和配置选项可能会有所不同,取决于Linux发行版和版本。管理员应该参考相关文档和资源,以了解适用于其特定环境的最佳实践和配置方法。
467 0
百度搜索:蓝易云【linux iptables安全技术与防火墙】
|
6月前
|
存储 Linux 网络安全
如何使用iptables在Linux中进行流量转发?
如何使用iptables在Linux中进行流量转发?
678 0
如何使用iptables在Linux中进行流量转发?
|
7月前
|
Linux 开发工具
18.4 【Linux】systemd-journald.service 简介
18.4 【Linux】systemd-journald.service 简介
71 0
|
4月前
|
缓存 算法 Java
Linux内核新特性年终大盘点-安卓杀后台现象减少的背后功臣MGLRU算法简介
MGLRU是一种新型内存管理算法,它的出现是为了弥补传统LRU(Least Recently Used)和LFU(Least Frequently Used)算法在缓存替换选择上的不足,LRU和LFU的共同缺点就是在做内存页面替换时,只考虑内存页面在最近一段时间内被访问的次数和最后一次的访问时间,但是一个页面的最近访问次数少或者最近一次的访问时间较早,可能仅仅是因为这个内存页面新近才被创建,属于刚刚完成初始化的年代代页面,它的频繁访问往往会出现在初始化之后的一段时间里,那么这时候就把这种年轻代的页面迁移出去
|
22天前
|
传感器 Linux API
嵌入式Linux串口编程简介
嵌入式Linux串口编程简介
19 1
|
6月前
|
关系型数据库 MySQL Unix
Linux 目录结构简介
Linux 目录结构简介
|
2月前
|
存储 Linux
|
3月前
|
人工智能 Linux Shell
Linux——vim简介、配置方案(附带超美观的配置方案)、常用模式的基本操作
Linux——vim简介、配置方案(附带超美观的配置方案)、常用模式的基本操作
|
3月前
|
Ubuntu Linux
Linux文件目录简介
Linux文件目录简介
|
3月前
|
Linux 网络安全 网络架构
百度搜索:蓝易云【强大的iptables:解锁Linux网络安全的神器】
总结: iptables是Linux系统中的强大防火墙工具,通过管理网络流量和实施安全策略来保护系统的网络安全。通过配置iptables规则,可以防止未经授权的访问、过滤恶意流量、实现端口转发和网络地址转换等功能。合理使用iptables,可以加强系统的网络安全性和灵活性。
32 0