linux防火墙iptables工作原理

防火墙对于系统安全至关重要,iptables则是防火墙的管理工具 iptables帮助我们定义各种验证规则,实现对网络的验证控制 数据包的传输过程 数据包来到防火墙后,传输过程会经历一系列验证链: (1)prerouting 数据包作路由选择前 (2)forward 转发数据包的时候 (3)input 数据包进入系统的时候 (4)output 系统发出数据包的时候 (5)postrouting 数据包作路由选择后 过程说明

从外界到达防火墙的数据包,先被 prerouting 规则链处理(是否修改数据包地址等),之后会进行路由选择(判断该数据包应该发往何处) 如果数据包的目标是本机,内核将其传给input链处理(决定是否允许通过等),通过以后再交给系统上层的应用程序(如Apache服务器)进行响应,响应完成后如果需要发出数据包,就交给output规则链,验证通过之后进行路由选择,然后传递给 postrouting 规则链(是否修改数据包的地址等)进行处理 如果数据包的目标地址是其它外部地址,则内核将其传递给 forward 链进行处理(是否转发或拦截),然后再交给postrouting 规则链(是否修改数据包的地址等)进行处理 iptables的规则表 iptables从名字就可以看出,它还有个重要的概念,就是验证表 iptables内置了4个表,每个表中定义了各个规则链中的具体验证规则 这几个表有优先级,当数据包到达某个规则链时,就会按照表的优先级,取得表中定义的此验证链的规则 4个表及优先级如下

iptables的管理 (1)查看已添加的规则 iptables -L -n (2)清除已有规则 iptables -F iptables -X iptables -Z (3)添加规则 先看几个示例,然后通过示例看各项具体含义 #允许所有本机向外的访问 iptables -A OUTPUT -j ACCEPT # 允许访问22端口 iptables -A INPUT -p tcp --dport 22 -j ACCEPT #屏蔽单个IP的命令是 iptables -I INPUT -s 123.45.6.7 -j DROP #减少不安全的端口连接 iptables -A OUTPUT -p tcp --sport 31337 -j DROP iptables命令格式 iptables table command chain parameter action table 指定要操作哪个规则表 通过 -t 指定,没指定时默认为 filter 表 command 定义如何对规则进行管理 常用命令有 -A : 追加,在当前链的最后新增一个规则 -I num : 把当前规则插入为第几条,没有num时插入头部 -R num : Replays替换/修改第几条规则 -D num : 删除,明确指定删除第几条规则 chain 指定接下来的规则是在哪个链上的 parameter 指定匹配规则 常用参数 -s:指定作为源地址匹配,必须是IP -d:表示匹配目标地址 -p:用于匹配协议(TCP/UDP/ICMP) --dport XX-XX:指定目标端口,不能指定多个非连续端口,只能指定单个端口 --sport:指定源端口 action 指定如何进行处理 -j ACCEPT 同意接受 -j DROP 悄悄放弃

-j REJECT 明确拒绝

本文分享自微信公众号 - 性能与架构(yogoup)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2015-12-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏运维技术迷

Linux下删除指定文件之外的其他文件

目录下有好多个文件,且文件名和扩展名都不太一致。我的需求是只想保留yhtz.php这个文件,除此之外的全部删除。 [root@tokyo wwwroot]# c...

35960
来自专栏云计算D1net

容器技术逐渐成熟 终将被大企业所接受

容器技术近年来因为Docker的不断发展而壮大,Docker逐渐成为容器的代表,容器技术通过不断的试验和发展也逐渐得到企业的认可。 Docker 简单来说,Do...

378110
来自专栏运维技术迷

linux配置ssh互信实现免密登陆

公钥认证的基本思想 对信息的加密和解密采用不同的key,这对key分别称作private key(私钥)和public key(公钥),其中,public ke...

631100
来自专栏运维技术迷

crontab执行后发送邮件到指定邮箱

如何知道每次crontab的执行结果,可以通过把crontab的执行日志以邮件的方式发送到你的邮箱。crontab本身就有这个功能,只需在在crontab -e...

40360
来自专栏about云

日志分析实战之清洗日志小实例3:如何在spark shell中导入自定义包

问题导读 1.自定义包,本文放到哪个路径下面? 2.复制包之后,需要做哪些权限操作? 3.如何验证导入是否成功? ? 在复制到Linux中,首...

32940
来自专栏运维技术迷

试试Linux下的ip命令

linux的ip命令和ifconfig类似,但前者功能更强大,并旨在取代后者。使用ip命令,只需一个命令,你就能很轻松地执行一些网络管理任务。ifconfig是...

50650
来自专栏运维技术迷

Redis全局命令

redis有5种数据结构,他们是键值对中的值,对于键来说有一些通用的命令。 查看所有键 语法:keys * [root@vultr ~]# redis-cli ...

36770
来自专栏运维技术迷

centos7编译安装Redis

redis能够兼容绝大部分的POSIX系统,比如Linux、OS X、OpenBSD、NetBSD、FreeBSD,其中比较典型的是Linux操作系统(如Cen...

35930
来自专栏程序猿DD

12 条用于 Linux 的 MySQL/MariaDB 安全最佳实践

MySQL 是世界上最流行的开源数据库系统,MariaDB(一个 MySQL 分支)是世界上增长最快的开源数据库系统。在安装 MySQL 服务器之后,在默认配置...

402100
来自专栏运维技术迷

crontab命令详解

一. Crontab 介绍 1、crontab命令的功能是在一定的时间间隔调度一些命令的执行,我理解为windows下的任务计划。 2、/etc/cronta...

39950

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励