加入收藏 | 设为首页 | 会员中心 | 我要投稿 辽源站长网 (https://www.0437zz.com/)- 云专线、云连接、智能数据、边缘计算、数据安全!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

详解IPTABLES

发布时间:2021-01-22 00:34:01 所属栏目:Linux 来源:网络整理
导读:h1 id="详解iptables"详解IPTABLES Iptables 是Linux 内核集成的 IP 信息包过滤系统。如果Linux 系统连接到因特网或 LAN、服务器或连接 LAN 和因特网的代理服务器, 则该系统有利于在 Linux 系统上更好地控制 IP 信息包过滤和防火墙配置。 防火墙在做信息包
副标题[/!--empirenews.page--]

<h1 id="详解iptables">详解IPTABLES

Iptables 是Linux 内核集成的 IP 信息包过滤系统。如果Linux 系统连接到因特网或 LAN、服务器或连接 LAN 和因特网的代理服务器, 则该系统有利于在 Linux 系统上更好地控制 IP 信息包过滤和防火墙配置。

防火墙在做信息包过滤决定时,有一套遵循和组成的规则,这些规则存储在专用的信息包过滤表中,而这些表集成在 Linux 内核中。在信息包过滤表中,规则被分组放在我们所谓的链(chain)中。而netfilter/iptables IP 信息包过滤系统是一款功能强大的工具,可用于添加、编辑和移除规则。
虽然 netfilter/iptables IP 信息包过滤系统被称为单个实体,但它实际上由两个组件netfilter 和 iptables 组成。

  • netfilter 组件也称为内核空间(kernelspace),是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。
  • iptables 组件是一种工具,也称为用户空间(userspace),是用来管理netfilter的,它使得配置防火墙变得简单。

Iptables的规则链分为三种:输入、转发和输出。

  1. 输入——这条链用来过滤目的地址是本机的连接。例如,如果一个用户试图使用SSH登陆到你的PC服务器,iptables会首先匹配其IP地址和端口到iptables的输入链规则。
  2. 转发——这条链用来过滤目的地址和源地址都不是本机的连接。例如,路由器收到的绝大数数据均需要转发给其它主机。如果你的系统没有开启类似于路由器的功能,如NATing,你就不需要使用这条链。
  3. 输出——这条链用来过滤源地址是本机的连接。例如,当你尝试ping www.baidu.com时,iptables会检查输出链中与ping和baidu.com相关的规则,然后决定允许还是拒绝你的连接请求。

  1. 清空所有规则:

     iptables -F
  2. 添加22端口可以正常连接:

      iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
     iptables -A OUTPUT -p tcp -m tcp --sport 22 -j ACCEPT
  3. 设置默认规则:
    一般设置默认规则有两种思想:一种是都接受,然后重点拒绝;另一种是都拒绝,然后重点放行。

      iptables -P INPUT DROP
     iptables -P OUTPUT ACCEPT
     iptables -P FORWARD DROP
  4. 开放具体的端口:

      iptables -A INPUT -p tcp -m tcp --dport 3304 -j ACCEPT
     iptables -A OUTPUT -p tcp -m tcp --sport 3304 -j ACCEPT(如果OUTPUT默认是DROP)
    

    iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
    iptables -A OUTPUT -p tcp -m tcp --sport 80 -j ACCEPT (如果OUTPUT默认是DROP,下面的一样)

  5. 支持ping:

     iptables -A INPUT -p icmp -j ACCEPT 
     iptables -A OUTPUT -p icmp -j ACCEPT

    禁止ping

     iptables -A INPUT -p icmp -j REJECT 
     iptables -A OUTPUT -p icmp -j REJECT
  6. 具体到IP地址:
    只接受192.168.1.55的包:

     iptables -A INPUT -s 192.168.1.55 -p icmp -j ACCEPT (默认是DROP)
     iptables -A OUTPUT -s 192.168.1.23 -p icmp -j ACCEPT 
  7. IPTABLES规则的相关操作:

     iptables -F :清空规则
     iptables -X :删除用户自定义的规则
     iptables -L :查看规则
     iptables -L -n :以数字的形式显示规则
     iptables -L --line-numbers :查看规则的编号(适用于删除规则)
     iptables -D chain num :删除编号是NUM的规则
  8. 扩展规则:

多端口:

iptables -I INPUT -s 192.168.1.0/24 -d 192.168.1.23 -p tcp -m multiport --dport 22,80,3306 -j ACCEPT
iptables -I OUTPUT -d 192.168.1.0/24 -s 192.168.1.23 -p tcp -m multiport --sport 22,3306 -j ACCEPT

iprange扩展:

iptables -I OUTPUT -s 192.168.1.23 -p tcp -m multiport --sport 21,22,80 -m iprange --dst-range 192.168.1.10-192.168.1.20 -j ACCEPT
iptables -I INPUT -d 192.168.1.23 -p tcp -m multiport --dport 21,80 -m iprange --src-range 192.168.1.10-192.168.1.20 -j ACCEPT

string扩展:检查报文中出现的字符串。

--algo {bm|kmp}
--string patterm

iptables -I OUTPUT -m string --algo bm --string 'movie' -j REJECT

time扩展:根据报文对时间范围进行匹配。

--datestart --datestop
--timestart --timestop
--monthdays --weekdays

iptables -I INPUT -d 192.168.1.23 -p tcp --dport 80 -m time --timestart 23:00 --timestop 6:00 -j REJECT

connlimit扩展:根据客户端IP做并发连接数量匹配

--connlimit-upto n :连接数量小于n
--connlimit-above n :连接数量大于n
--connlimit-saddr :源地址转换
--connlimit-daddr :目标地址转换

iptables -I INPUT -p tcp --dport 22 -m connlimit --connlimit-above 3 -j REJECT

limit扩展:基于收发报文速率做检查

--limit rate/[second|minute|hour|day]
--limit-burst number 

iptables -A INPUT -d 192.168.1.23 -p icmp --icmp-type 8 -m limit --limit-burst 5 --limit 10/minute -j ACCEPT
防止DOS攻击:
iptables -A INPUT -p tcp --dport 80 -m limit --limit 25/minute --limite-burst 100 -j ACCEPT

state扩展:根据连接跟踪机制检查连接的状态。

查看连接追踪功能所能容纳的最大连接个数:/proc/sys/net/nf_conntrack_max 
查看追踪到的连接:/proc/net/nf_conntrack
不同协议或者连接类型的时长:/proc/sys/net/netfilter/..

                                                

(编辑:辽源站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读