当前位置:   article > 正文

IPTables防火墙规则简单使用!_2.开启iptables规则 (终端2) iptables -t nat -a prerouting

2.开启iptables规则 (终端2) iptables -t nat -a prerouting -p tcp --destion-po

目录

一、iptables的结构:

 四表五链

1. Filter表

2. NAT表

3. Mangle表

4. Raw表

二、iptables规则

追加iptables规则

1.语法

2.描述规则的基本参数

3.描述规则的扩展参数

4.追加规则的完整实例:仅允许SSH服务

配置应用程序规则

1.SSH

2.HTTP

nat规则

限制单个来源IP

一、iptables的结构:

iptables由上而下,由Tables,Chains,Rules组成。

 四表五链

1. Filter表

Filter是iptables的默认表,它有以下三种内建链(chains):

INPUT链 – 处理来自外部的数据。

OUTPUT链 – 处理向外发送的数据。

FORWARD链 – 将数据转发到本机的其他网卡设备上。

2. NAT表

NAT表有三种内建链:

PREROUTING链 – 处理刚到达本机并在路由转发前的数据包。它会转换数据包中的目标IP地址(destination ip address),通常用于DNAT(destination NAT)。

POSTROUTING链 – 处理即将离开本机的数据包。它会转换数据包中的源IP地址(source ip address),通常用于SNAT(source NAT)。

OUTPUT链 – 处理本机产生的数据包。

3. Mangle表

Mangle表用于指定如何处理数据包。它能改变TCP头中的QoS位。Mangle表具有5个内建链(chains):

  • PREROUTING
  • OUTPUT
  • FORWARD
  • INPUT
  • POSTROUTING

4. Raw表

Raw表用于处理异常,它具有2个内建链:

PREROUTING chain

OUTPUT chain

二、iptables规则

追加iptables规则

可以使用iptables -A命令追加新规则,其中-A表示Append。因此,新的规则将追加到链尾。
一般而言,最后一条规则用于丢弃(DROP)所有数据包。如果你已经有这样的规则了,并且使用-A参数添加新规则,那么就是无用功。

1.语法

iptables -A chain firewall-rule
  • -A chain – 指定要追加规则的链
  • firewall-rule – 具体的规则参数

2.描述规则的基本参数

以下这些规则参数用于描述数据包的协议、源地址、目的地址、允许经过的网络接口,以及如何处理这些数据包。这些描述是对规则的基本描述。

  1. -p 协议(protocol)
  2. 指定规则的协议,如tcp, udp, icmp等,可以使用all来指定所有协议。
  3. 如果不指定-p参数,则默认是all值。这并不明智,请总是明确指定协议名称。
  4. 可以使用协议名(如tcp),或者是协议值(比如6代表tcp)来指定协议。映射关系请查看/etc/protocols
  5. 还可以使用–protocol参数代替-p参数
  6. -s 源地址(source
  7. 指定数据包的源地址
  8. 参数可以使IP地址、网络地址、主机名
  9. 例如:-s 192.168.1.101指定IP地址
  10. 例如:-s 192.168.1.10/24指定网络地址
  11. 如果不指定-s参数,就代表所有地址
  12. 还可以使用–src或者–source
  13. -d 目的地址(destination
  14. 指定目的地址
  15. 参数和-s相同
  16. 还可以使用–dst或者–destination
  17. -j 执行目标(jump to target)
  18. -j代表”jump to target”
  19. -j指定了当与规则(Rule)匹配时如何处理数据包
  20. 可能的值是ACCEPT, DROP, QUEUE, RETURN
  21. 还可以指定其他链(Chain)作为目标
  22. -i 输入接口(input interface
  23. -i代表输入接口(input interface)
  24. -i指定了要处理来自哪个接口的数据包
  25. 这些数据包即将进入INPUT, FORWARD, PREROUTE链
  26. 例如:-i eth0指定了要处理经由eth0进入的数据包
  27. 如果不指定-i参数,那么将处理进入所有接口的数据包
  28. 如果出现! -i eth0,那么将处理所有经由eth0以外的接口进入的数据包
  29. 如果出现-i eth+,那么将处理所有经由eth开头的接口进入的数据包
  30. 还可以使用–in-interface参数
  31. -o 输出(out interface
  32. -o代表”output interface
  33. -o指定了数据包由哪个接口输出
  34. 这些数据包即将进入FORWARD, OUTPUT, POSTROUTING链
  35. 如果不指定-o选项,那么系统上的所有接口都可以作为输出接口
  36. 如果出现! -o eth0,那么将从eth0以外的接口输出
  37. 如果出现-i eth+,那么将仅从eth开头的接口输出
  38. 还可以使用–out-interface参数

3.描述规则的扩展参数

对规则有了一个基本描述之后,有时候我们还希望指定端口、TCP标志、ICMP类型等内容。

  1. –sport 源端口(source port)针对 -p tcp 或者 -p udp
  2. 缺省情况下,将匹配所有端口
  3. 可以指定端口号或者端口名称,例如”–sport 22″与”–sport ssh”。
  4. /etc/services文件描述了上述映射关系。
  5. 从性能上讲,使用端口号更好
  6. 使用冒号可以匹配端口范围,如”–sport 22:100
  7. 还可以使用”–source-port”
  8. –-dport 目的端口(destination port)针对-p tcp 或者 -p udp
  9. 参数和–sport类似
  10. 还可以使用”–destination-port”
  11. -–tcp-flags TCP标志 针对-p tcp
  12. 可以指定由逗号分隔的多个参数
  13. 有效值可以是:SYN, ACK, FIN, RST, URG, PSH
  14. 可以使用ALL或者NONE
  15. -–icmp-type ICMP类型 针对-p icmp
  16. –icmp-type 0 表示Echo Reply
  17. –icmp-type 8 表示Echo

4.追加规则的完整实例:仅允许SSH服务

本例实现的规则将仅允许SSH数据包通过本地计算机,其他一切连接(包括ping)都将被拒绝。

  1. # 1.清空所有iptables规则
  2. iptables -F
  3. # 2.接收目标端口为22的数据包
  4. iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
  5. # 3.拒绝所有其他数据包
  6. iptables -A INPUT -j DROP

配置应用程序规则

1.SSH

  1. # 1.允许接收远程主机的SSH请求
  2. iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
  3. # 2.允许发送本地主机的SSH响应
  4. iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
  • -m state: 启用状态匹配模块(state matching module)
  • –-state: 状态匹配模块的参数。当SSH客户端第一个数据包到达服务器时,状态字段为NEW;建立连接后数据包的状态字段都是ESTABLISHED
  • –sport 22: sshd监听22端口,同时也通过该端口和客户端建立连接、传送数据。因此对于SSH服务器而言,源端口就是22
  • –dport 22: ssh客户端程序可以从本机的随机端口与SSH服务器的22端口建立连接。因此对于SSH客户端而言,目的端口就是22

如果服务器也需要使用SSH连接其他远程主机,则还需要增加以下配置:

  1. # 1.送出的数据包目的端口为22
  2. iptables -A OUTPUT -o eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
  3. # 2.接收的数据包源端口为22
  4. iptables -A INPUT -i eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

2.HTTP

HTTP的配置与SSH类似:

  1. # 1.允许接收远程主机的HTTP请求
  2. iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
  3. # 1.允许发送本地主机的HTTP响应
  4. iptables -A OUTPUT -o eth0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT

nat规则

  1. iptables -t nat -A PREROUTING -p tcp -m tcp --dport 63306 -j DNAT --to-destination 127.0.0.1:3306
  2. iptables -t nat -A POSTROUTING -p tcp -m tcp --dport 63306 -j SNAT --to-source 127.0.0.1

注:这是允许所有外来的IP访问,慎用。

限制单个来源IP

  1. iptables -t nat -R PREROUTING 4 -s 192.168.40.154 -p tcp -m tcp --dport 63306 -j DNAT --to-destination 127.0.0.1:3306
  2. iptables -t nat -R POSTROUTING 4 -s 192.168.40.154 -p tcp -m tcp --dport 63306 -j SNAT --to-source 127.0.0.1

注:这是只给外网的192.168.40.154连接, 其他的都连不上,

修改规则(4代表编号, --line-number可查看对应编号, -s 指定来源IP)。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/631853
推荐阅读
相关标签
  

闽ICP备14008679号