企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
## 防火墙的配置 >[success] 服务器中,防火墙的配置是十分必要的! 在这里以Centos的iptables为例,进行讲解 ### iptables 介绍(iptables 内置了4个表,5个链) #### 五个规则链 1. PREROUTING (路由前) 2. INPUT (数据包流入口) 3. FORWARD (转发管卡) 4. OUTPUT(数据包出口) 5. POSTROUTING(路由后) >[danger] 这是NetFilter规定的五个规则链,任何一个数据包,只要经过本机,必将经过这五个链中的其中一个链。 ### 四个表(提供特定功能) 1. fileter 用于数据的过滤 2. nat 用于对数据包的源、目标地址进行修改 3. mangle 用于数据包进行高级修改 4. raw 该项优先级最高,但一般不做设置,一量设置一般是为了不再让iptables做数据包的连接跟 踪。 ### 防火墙的策略 >[success]防火墙策略一般分为两种,一种叫“通”策略,一种叫“堵”策略 ### 使用率较高的功能 >[success] 现在用的比较多个功能有3个 1. filter 定义允许或者不允许的 2. nat 定义地址转换的 3. mangle功能:修改报文原数据 ### iptables 的规则是针对表和链进行操作的,但不是所有表在所有链上都能做防火墙设置 >[danger] 对于filter来讲一般只能做在3个链上:INPUT ,FORWARD ,OUTPUT 对于nat来讲一般也只能做在3个链上:PREROUTING ,OUTPUT ,POSTROUTING 而mangle则是5个链都可以做:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING ### iptables 基本命令 **查看是否安装防火墙** ~~~ whereis iptables ~~~ **查看防火墙规则列表** ~~~ iptables -L ~~~ **临时清空防火墙(重启失效)** ~~~ iptables -F ~~~ **永久保存防火墙配置** ~~~ service iptables save ~~~ **启动防火墙** ~~~ service iptables start ~~~ **重启防火墙** ~~~ service iptables restart ~~~ **停止防火墙** ~~~ service iptables stop ~~~ **查看iptables状态** ~~~ service iptables status ~~~ **查看iptables是否开机启动** ~~~ chkconfig iptables --list ~~~ **设置iptables开机启动/不启动** ~~~ chkconfig iptables on chkconfig iptables off ~~~ ### iptables语法 #### iptablse介绍 名称:iptables 使用权限:root(其它用户需要授权) 使用方式:iptalbes [-t 表格名称] 指令 条件 [目标|链] 说明:显示当前登录系统用户的信息,可以轻松显示登录账号,使用的终端,登录时间和来源IP 参数:iptables的参数较多,分为指令集,目标集和条件集。 #### 指令集表 | 参数 | 含义 | | --- | --- | | -N | 建立一个新的(自定义)链 | | -P | 改变一条链的原则 | | -F | 清除一条链中的所有规则 | | -I | 在链内的某一个位置插入(insert)一条新规则 | | -D | 在链内某个位置删除一条规则 | | -X | 删除一个空链 | | -L | 列出一个链中的规则 | | -A | 在一个链的最后面新增(append)一条规则,也要追加规则 | | -R | 在链内某个位置替换(replace)一条规则 | #### 目标集表 | 参数 | 含义| | -- |--| | ACCEPT | 通过链检验,接受这个数据包| | DROP| 未通过链检验,立即丢弃这个封包| | QUEUE | 将封包重导至本机队列| | RETURN| 通过链的检验,回到原来的链中| | TOS| 改变封包TOS字段的值| | REJECT| 未通过链检验,丢弃数据包| | SNAT| 改变封包来源IP字段的值| | DNAT | 改变封包目标IP字段的值| | MASQUERADE | 动态地根据中由参数修改Source socket| | TTL| 改变封TTL字段的值| #### 条件集表 | 参数 |含义| |--|--| | -i -o | 网络接口匹配| | -p | 匹配所属协议(tcp、udp、icmp等,可以使用all指定所有协议)| | -m state | 清除一条链中的所有规则| | --tcp-flags| 封包类型| | --icmp-type| 封包类型| | -s | 匹配数据包源IP| | --sport| 匹配数据包的源端口| | --dport| 匹配数据包的目的端口| | INPUT| 封包在防火墙中的流向| | OUTPUT| 封包在防火墙中的流向| | FORWARD| 封包在防火墙中的流向| | -j | 跳至目标或自定义链| ### 常用规则 >[success]最为常用的就是追加新规则 #### 语法: ~~~ iptables -A chain firewall-rule # -A chain 指定要追加的规则链 # firewall-rule 为具体的规则参数 ~~~ #### 常用实例: 1. 插入一条规则允许22号端口的所有数据进入 ~~~ shell>iptables -I INPUT 3 -p tcp --dport 22 -j ACCEPT # -I: 插入规则 # INPUT: 输入链 # 3: 规则排序 #-p tcp:指定表,指定协议规则 # dport 22:指定端口 # -j ACCEPT 运行 ~~~ >[danger]防火墙规则设置后立即生效,所以在设置一些规则的时侯必须谨慎,比如说ssh,一旦我们自身采用的是远程访问,但是又拒绝了ssh的INPUT,我们马上会被拒之门外。 2. 防止别人ping ~~~ shell>iptables -A INPUT -p icmp -j DROP ~~~ >[danger]规则设置原则: 规则的次序非常关键,谁的规则越严格,应该放的越靠前,而检查规则的时候,是按照从上往下的方式进行检查的 ### 防火墙执行顺序 >[danger]在这里一定要注意,防火墙规则,是按照从上到下的顺进行匹配的,如果遇到匹配的就执行,如果没有匹配的,就继续执行下一条。 所以,如果规则中,同时写了如下两条件: ~~~ iptables -A INPUT -p icmp -j DROP iptables -A INPUT -p icmp -j ACCEPT #这一条是无效的 ~~~