企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
>[info]###标题 : Linux防火墙 IPtables 配置:一、常用命令详解<b/> 作者 : fankey <6424051@qq.com><b/> 时间 : 2015-09-30<b/> <br> >[success]### IPtables的组成规则 : **<font style="color:#f00;">四张表</font>** , **<font style="color:#f00;">五条链接</font>** , **<font style="color:#f00;">规则</font>** 一. **四张表** :<font style="color:#f00;">`filter 表(常用)`</font>,<font style="color:#f00;">`nat 表(常用)`</font>,<font style="color:#00f;">`mangle 表`</font>,<font style="color:#00f;">`raw 表`</font> <b/> >[danger]filter 表的作用 : 访问控制 , 规则匹配 <b/> >[warning]nat 表的作用 : 地址转发 <b/> >[info]mangle 表和 raw 表不常用 , 其作用暂不解释 <br> 二. **五条链接** :`INPUT` , `OUTPUT` , `FORWARD` , `PREROUTING` , `POSTROUTING` <b/> ![document/2015-09-30/560bbfb13b261](https://box.kancloud.cn/document_2015-09-30_560bbfb13b261.png) <b/> ![document/2015-09-30/560bc108d1735](https://box.kancloud.cn/document_2015-09-30_560bc108d1735.png) <b/> ![document/2015-09-30/560bc15a0ae74](https://box.kancloud.cn/document_2015-09-30_560bc15a0ae74.png) >[success]二、常用命令列表 : <br><font color='red'> -A</font> 追加规则、<font color='red'> -D</font> 删除规则、<font color='red'> -R</font> 修改规则、<font color='red'> -I</font> 插入规则、<font color='red'> -L</font> 查看规则 …… <b/> ###`1. -A 命令` <b/> | 命<b/>令 | -A | | :-------: | :--------- | | 范例 |iptables -A INPUT ...| | 说明 | 新增规则<font color=red>(追加方式)</font>到某个规则链<font color=red>(这里是INPUT规则链)</font>中,该规则将会成为规则链中的最后一条规则 | <br/> ###`2. -D 命令` <b/> | 命<b/>令 | -D | | :-------: | :--------- | | 范例 |iptables -D INPUT --dport 80 -j DROP<br/>或 iptables -D INPUT 1 <font color=red> (索引删除)</font>| | 说明 | 从某个规则链中删除一条规则,可以输入完整规则,或直接指定规则编号加以删除 | <br/> ###`3. -R 命令` <b/> | 命<b/>令 | -R | | :-------: | :--------- | | 范例 |iptables -R INPUT 1 -s 192.168.0.1 -j DROP| | 说明 | 取代现行规则,规则被取代后并不会改变顺序。<font color=red>(1是位置)</font>| <br/> ###`4. -I 命令` <b/> | 命<b/>令 | -I | | :-------: | :--------- | | 范例 |iptables -I INPUT 1 --dport 80 -j ACCEPT| | 说明 | 插入一条规则,原本该位置<font color=red>(这里是位置1)</font>上的规则将会往后移动一个顺位| <br/> ###`5. -L 命令` <b/> | 命<b/>令 | -L | | :-------: | :--------- | | 范例 |iptables -L INPUT| | 说明 | 列出某规则链中的所有规则<font color=red> (范例是列出INPUT规则链中所有信息) </font>| <br/> ####<font color=red>`-L 命令 附加参数说明 : iptables 附加参数 -L `</font> <b/> | 参数 | 注解 | | :-------: | :--------- | | `-n` |以数字的方式显示ip,它会将ip直接显示出来,如果不加-n,则会将ip反向解析成主机名| | `-v` | 显示详细信息| | `-vv` | 同上<font color=red>(v越多越详细)</font>| | `-vvv` | 同上<font color=red>(v越多越详细)</font>| | `-x` | 在计数器上显示精确值,不做单位换算| | `--line-numbers` |显示规则的行号<font color=red>(删除某规则时的索引行号)</font>| |`-t nat`|显示所有的关卡的信息| |范例|`iptables --line-numbers -L INPUT`| |说明|范例是列出 INPUT链中的所有规则,并且在这些规则前显示其索引 <font color=red>(删除规则时可以根据索引删除)</font>| <br/> ###`6. -F 命令` <b/> | 命<b/>令 | -F | | :-------: | :--------- | | 范例 |iptables -F INPUT| | 说明 | 删除某规则链<font color=red>(这里是INPUT规则链)</font>中的所有规则| <br/> ###`7. -P 命令` <b/> | 命<b/>令 | -P | | :-------: | :--------- | | 范例 |iptables -P INPUT DROP| | 说明 | 定义过滤政策。 也就是未符合过滤条件之封包,预设的处理方式| <br/> ###`8. -Z 命令` <b/> | 命<b/>令 | -Z | | :-------: | :--------- | | 范例 |iptables -Z INPUT| | 说明 | 将封包计数器归零。封包计数器是用来计算同一封包出现次数,是过滤阻断式攻击不可或缺的工具| <br/> ###`9. -N 命令` <b/> | 命<b/>令 | -N | | :-------: | :--------- | | 范例 |iptables -N allowed| | 说明 | 定义新的规则链 <font color=red>allowed</font>| <br/> ###`10. -X 命令` <b/> | 命<b/>令 | -X | | :-------: | :--------- | | 范例 |iptables -X allowed| | 说明 | 删除某个规则链 <font color=red>(范例是删除 allowed 规则链)</font>| <br/> ###`11. -E 命令` <b/> | 命<b/>令 | -E | | :-------: | :--------- | | 范例 |iptables -E allowed disallowed| | 说明 | 修改某自订规则链的名称 <font color=red>(范例是把 allowed 改为:disallowed)</font>| <br/> <br/> >[info]<b>####`命令使用场景 : `</b> <font color=#5bc0de>`场景一 : 禁止80端口的TCP协议访问`<b/></font> <font color=red>`iptables -A INPUT -p tcp --dport 80 -j REJECT` <br/> <font color=#5bc0de>`场景二 : 允许80端口的TCP协议访问`<b/></font> <font color=red>`iptables -A INPUT -p tcp --dport 80 -j ACCEPT` <br/> <font color=#5bc0de>`场景三 : 允许30-60之间的端口都可以访问` <b/></font> <font color=red>`iptables -A INPUT -p tcp --dport 30:60 -j ACCEPT` <br/> <font color=#5bc0de>`场景四 : 开放 ping 命令,可以 ping 主机ip`<b/></font> <font color=red>`iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT` <br/> <font color=#5bc0de>`场景五 : 查询当前INPUT链下有多少规则,并且显示规则索引`<b/> </font> <font color=red>`iptables -n --line-numbers -L INPUT`<b/> <font color=#aaa>`得到结果如下图:`</font> ![document/2015-10-01/560cb0f93f8d7](https://box.kancloud.cn/document_2015-10-01_560cb0f93f8d7.png) <br/> <font color=#5bc0de>`场景六 : 删除8080端口的tcp访问`<b/></font> `首先执行规则查询,查看要删除规则所在的索引 : `<b/> `iptables -n --line-numbers -L INPUT`<br/> ![document/2015-10-01/560cdbbc05668](https://box.kancloud.cn/document_2015-10-01_560cdbbc05668.png) <b/> `执行删除: iptables -D INPUT 3` <br/> ![document/2015-10-01/560cdca322d3d](https://box.kancloud.cn/document_2015-10-01_560cdca322d3d.png) <br/> <font color=#5bc0de>`场景七:开启SVN服务的3690端口 : `<b/></font> <font color='red'> `iptables -I INPUT -p tcp --dport 3690 -j ACCEPT` </font> 然后保存更改 : `service iptables save` 重新启动防火墙 : `service iptables restart` 查看防火墙状态 : `service iptables status` 开启FTP端口21 : `iptables -A INPUT -p tcp --dport 21 -j ACCEPT` 开启MySql端口3306 : `iptables -I INPUT -p tcp --dport 3306 -j ACCEPT` 要添加内网ip信任(接受其所有TCP请求) `iptables -A INPUT -p tcp -s 45.96.174.68 -j ACCEPT` 过滤所有非以上规则的请求 `iptables -P INPUT DROP` 数据同步端口 873 `iptables -A INPUT -p tcp --dport 873 -j ACCEPT` `iptables -A INPUT -p tcp --sport 873 -m state --state ESTABLISHED -j ACCEPT` (注意:一定要有这句)