Linux-iptables基本使用

Linux-iptables

[root@promethues-01 ~]# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

iptables 的三个主要链(INPUT、FORWARD、OUTPUT)的默认策略都是 ACCEPT,这意味着它们目前允许所有进入、转发和出去的流量。

Chain INPUT:处理进入本机的流量。
Chain FORWARD:处理通过本机转发的流量。
Chain OUTPUT:处理从本机发出的流量。
每一行的 target 表示流量匹配规则后的处理动作,例如 ACCEPT、DROP 或 REJECT 等。prot 表示协议类型,如 tcp、udp 等。opt 是选项,source 和 destination 表示流量的源地址和目的地址。

由于输出结果中没有具体的规则,这意味着当前没有设置任何特定的防火墙规则来限制或允许特定的流量。如果您需要设置或查看特定的规则,可以使用 iptables 的其他命令来添加或修改规则。例如,使用 -A(Append)来添加规则,使用 -I(Insert)来插入规则,或者使用 -D(Delete)来删除规则。
iptables 的基本用法:

-A:向指定链的末尾添加一条规则。
-I:在指定链的开始处插入一条规则。
-D:从指定链中删除一条规则。
-p:指定协议(如 tcp, udp, icmp)。
--dport:指定目标端口。
-s:指定源 IP 地址。
-d:指定目标 IP 地址。
-j:指定匹配流量的处理动作,如 ACCEPT(接受)、DROP(丢弃)、REJECT(拒绝)等。

INPUT用法说明

1、允许来自特定 IP 的 SSH 访问
命令:iptables -A INPUT -p tcp --dport 22 -s 192.168.1.100 -j ACCEPT
解释:这条命令添加了一条规则到 INPUT 链,允许来自 IP 地址 192.168.1.100 的 TCP 流量通过端口 22(SSH 服务的默认端口)。

2、禁止所有 ICMP 包(防止 ping 扫描)
命令:iptables -A INPUT -p icmp --icmp-type 8 -j DROP
解释:这条命令添加了一条规则到 INPUT 链,丢弃所有 ICMP 类型为 8 的数据包(即 ICMP Echo Request 或 ping 请求)。

3、限制特定 IP 的访问
命令:iptables -A INPUT -s 192.168.1.101 -j DROP
解释:这条命令添加了一条规则到 INPUT 链,丢弃来自 IP 地址 192.168.1.101 的所有进入流量。

FORWARD用法说明

1、允许特定网络通过本机转发
允许从网络 192.168.1.0/24 到网络 192.168.2.0/24 的所有流量通过本机进行转发,可以使用以下命令:
iptables -A FORWARD -s 192.168.1.0/24 -d 192.168.2.0/24 -j ACCEPT

2、阻止特定 IP 地址通过本机转发
阻止 IP 地址 192.168.1.100 发送的流量通过本机转发到任何目的地,可以使用以下命令:
iptables -A FORWARD -s 192.168.1.100 -j DROP

3、限制通过本机转发的 ICMP 流量
允许来自特定网络的 ICMP 流量通过本机转发,可以设置如下规则:
iptables -A FORWARD -p icmp -s 192.168.1.0/24 -j ACCEPT
iptables -A FORWARD -p icmp -j DROP
这里首先允许来自 192.168.1.0/24 网络的 ICMP 流量,然后丢弃所有其他 ICMP 流量。

4、设置默认的转发拒绝规则
默认情况下拒绝所有转发流量,只在特定情况下允许,可以首先设置一条默认的拒绝规则:
iptables -A FORWARD -j DROP
然后添加特定的允许规则,如前面的例子所示。

5、使用端口转发
将进入端口 80 的流量转发到另一台服务器的端口 8080,可以使用以下命令:
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.2.2:8080
#  iptables -t nat -L查看
iptables -A FORWARD -p tcp -d 192.168.2.2 --dport 8080 -j ACCEPT
这里首先使用 DNAT 将进入的 TCP 流量目标端口从 80 改为 8080,然后允许转发到特定 IP 和端口。

6、源地址转换
希望将所有通过本机转发到特定网络的流量的源地址转换为另一个 IP 地址,可以使用 SNAT:
iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source 192.168.2.1
这条命令将所有从 eth1 接口出去的流量的源地址改为 192.168.2.1

OUTPUT用法说明

1、允许或拒绝特定端口的流量
允许从本机发出到任意目的地的 HTTP 流量(端口 80):
iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
拒绝从本机发出到任意目的地的 FTP 流量(端口 21):
iptables -A OUTPUT -p tcp --dport 21 -j DROP

2、控制对特定服务的访问
允许从本机访问 DNS 服务(端口 53):
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT

3、限制对特定 IP 或网络的访问
只允许从本机向 192.168.1.0/24 网络发起的连接:
iptables -A OUTPUT -d 192.168.1.0/24 -j ACCEPT
iptables -A OUTPUT -j DROP
这里首先允许到指定网络的流量,然后默认拒绝其他所有输出流量。

4、基于源地址的流量控制
允许从本机的 eth0 接口发出的所有流量:
iptables -A OUTPUT -o eth0 -j ACCEPT

5、限制特定应用程序的网络访问
假设某个应用程序监听在本机的 1234 端口上,只允许该应用程序发送数据:
iptables -A OUTPUT -p tcp --dport 1234 -m owner --uid-owner application_user -j ACCEPT

6、使用多路径路由
如果您的系统配置了多个默认网关,可以使用 OUTPUT 链来控制流量通过特定的网关:
iptables -A OUTPUT -o eth0 -j ACCEPT
iptables -A OUTPUT -o eth1 -j DROP

7、日志记录
记录所有从本机发出的 ICMP 流量:
iptables -A OUTPUT -p icmp -j LOG --log-prefix "Outgoing ICMP: "
# dmesg | grep "Outgoing ICMP"可查看

8、限制特定用户的网络访问
限制用户 username 发出的流量,可以使用用户 ID(UID):
iptables -A OUTPUT -m owner --uid-owner username -j DROP
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

深度学习0407

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值