linux -- 学习笔记iptables

本文详细解析了iptables防火墙的工作原理,包括其结构、规则链、策略规则及常见操作命令。介绍了iptables如何通过表、规则链和策略规则来监控和过滤网络流量,保护内网安全。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

防火墙, 是一种位于内部网络与外部网络之间的网络安全系统

可以将内部网络与外部网络隔离, 如果没有防火墙, 内网与外网之间则是盲目传递流量

防火墙 能监控 和 过滤 未经允许的流量, 是一种分离内网与外网的技术

iptables 是一款防火墙工具, 所有发行版都能使用

在redhat7/centos7中默认的防火墙工具是firewalld, 当然也可以使用iptables

iptables与firewalld都不是真正的防火墙, 因此都称他们为防火墙工具

netfilter才是真正的防火墙, iptables和firewalld是设置netfilter的工具

 

iptables的结构:

     iptables由 -- 规则链 -- 策略规则 三部分组成      

     策略规则:  

      一般防火墙的策略规则有两种, 放行和阻止     

     规则链:

     多条策略规则组合就是一个规则链     

      防火墙会从上至下读取规则链, 在找到匹配项后, 就结束匹配工作, 去执行目标行为(放行阻止)

      如果读完了所有的策略规则都没有找到匹配项, 则执行默认的策略

     根据处理数据包的位置不同, 可分为不同的规则链

     Prerouting -- 在路由选择前处理数据包

     Input -- 处理流入的数据包

     Output -- 处理流出的数据包

      Forward -- 处理转发的数据包

      Postrouting -- 在路由选择后处理数据包  

      使用最多的是Input规则链, 此规则链可以增加黑客从外网入侵内网的难度

      比如现在给Input链增加两个策略规则: 某公司门口 -> 1.禁止一切车辆入内 2.禁止外来人员入内

      那么规则1拦截开车的人, 规则2拦截无公司证件的人

     其实最后还有一个默认规则 -- 就是前面的规则都没有匹配到时使用的规则

      对于被规则1, 规则2挡住的人, 怎么处理呢  -->  目标行为

      目标行为包括:

       Accept  -- 允许流量通过

       Reject -- 拒绝流量通过, 做出拒绝响应, 发送流量方能看到端口不可达的响应

       Log -- 记录日志信息

      Drop -- 拒绝流量通过, 不作任何响应, 发送流量方并不知道对应主机是否在线

 

      了解四表五链:

      五链就是上面的5种规则链

      四表包括Filter , NAT, Mangle, Raw 每种表包含几种链, 默认使用Filter

      Filter -- INPUT + OUTPUT + FORWARD

      NAT -- PREROUTING + POSTROUTING + OUTPUT

      Mangle -- PREROUTING + OUTPUT + FORWARD + INPUT + POSTROUTING

      Raw -- PREROUTING + OUTPUT 

 

iptables基本命令:

     iptables命令根据 流量源地址 目的地址 传输协议 服务类型 信息进行匹配

     一旦匹配成功, iptables就会根据策略规则预设定的动作来这些流量

     默认情况下使用的是Filter表, 即包含INPUT, FORWARD, OUTPUT链

     一般情况下, 我们使用最多的是INPUT规则链

   

   1.查看已有的防火墙规则: iptables -L

    

    需要root权限的用户, 蓝色是三个规则链, 绿色是该链的默认规则 

   

    2.清空已有的防火墙规则: iptables -F

    

    清空防火墙时, 先使用iptables -F, 然后可以使用iptables -X 清空其它自定义规则

   

    3.设置默认策略: iptables -P 规则链 目标行为

    -P表示设置某规则链的默认策略(大写)

    

    每一个规则链, 最后都有一个默认策略, 当前面所有规则都没有匹配到时, 作为默认行为

    另外, 默认行为不能设置为REJECT

   

    4.向规则链中添加一条规则: iptables -I 规则链 -p 协议 -j 行为

       规则链使用最多的是INPUT链, 它也是默认的规则链

    测试1:

    

     测试2:

    

   测试3: 使用另一台主机ping 此主机, 就不能再ping通

   

   -I 表示向规则链头部插入, 即插入以后, 此规则作为该链的第一条规则(i 大写)

   -p 表示协议, 即要控制哪种协议的流量(小写)

   -j 表示动作, 一般接REJECT 或 DROP

 

   5.删除规则链中的规则 : iptables -D 规则链 数字

      

       现在有一条INPUT规则 

       

      可以看到已经没有INPUT规则了

      -D表示删除规则链中的规则

      数字 从1开始, 删除第3条规则, 则 iptables -D INPUT 3 

     

   6.只允许部分主机访问: 

              比如, 我现在只允许网段内的主机访问 某服务, 同时拒绝其它主机

              1.在默认规则中设置全部拒绝, 然后只开放允许的主机(但这样的话限制的太死了, 其它的访问都受限制)

              2.可以设置我要允许哪些主机, 要拒绝哪些主机(并不影响其它的访问)

              如下使用第2种方式: 

              

             -A 与-I 对应, -I是从头部插入, -A是从尾部插入

              当要拒绝的流量中包含有要允许的流量, 注意须将要允许的规则放在前面

              如上所示, 拒绝的主机中包含了允许的主机, 所以允许的规则插入到头部, 拒绝的规则放在了尾部

     

   7.指定主机, 指定端口, 指定协议

               iptables -I INPUT -s 192.168.43.51 -j REJECT   拒绝主机 192.168.43.51 访问

               iptables -I INPUT -p tcp --dport 22 -j REJECT    拒绝访问22端口

               iptables -I INPUT -p tcp --dport 1000:2000 -j REJECT 拒绝访问1000~2000内的端口

               iptables -I INPUT -p tcp -s 192.168.43.10/24 --dport 1000:2000 -j REJECT 拒绝网段主机访问1000~2000内的端口

              -s 指定主机 , 可指定单一主机, 也可以是网段内主机

              -p 指定协议, 一般是tcp, udp, icmp  

              --dport指定端口, 可以指定单一端口, 也可指定区间内的端口

   8. iptables服务: service iptables save

               使用iptables命令配置的防火墙规则, 默认会在重启后失效

               使用service iptables save可以使规则永久生效               

               但是在使用service iptables save时会报错, 因为没有安装 iptables服务

              这时需要yum安装或更新: yum install iptables-services

               解释: yum install iptables-service 用于安装iptables服务程序           

                        就比如网络服务(service network restart) , 只不过network是系统自带的, iptables服务需要安装而已                                                所以在安装iptables服务后, 才可以像 service network start / restart / ...  这样使用                     

                        如: service iptables save,  service iptables status,  service iptables stop,  service iptables restart

               安装以后, 开机自启: systemctl enable iptables              

               但是重启后使用iptables -L -n 发现还是回到原来的样子

               因为在centos7,rhel7中, 默认使用的防火墙工具是firewalld, 会影响到iptables工具

               因此停用firewalld -> systemctl disable firewalld (或者systemctl musk firewalld锁定)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值