• 欢迎访问LLYCLOUD information technical share center (ITSC),Linux 安全,Linux 系统,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入LLYCLOUD QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏LLYCLOUD ITSC吧

10.iptables(1)

Linux安全与高级应用 Akide_Liu 9个月前 (02-01) 188次浏览 0个评论

脚本分享:

https://seafile.llycloud.com/d/bf6928e1447041ce99bd/

规则链:

  • 规则的作用:对数据包进行过滤或处理
  • 链的作用:容纳各种防火墙规则
  • 链的分类依据:处理数据包的不同时机

默认包括5种规则链

  • INPUT:处理入站数据包
  • OUTPUT:处理出站数据包
  • FORWARD:处理转发数据包
  • POSTROUTING链:在进行路由选择后处理数据包
  • PREROUTING链:在进行路由选择前处理数据包

规则表

表的作用:容纳各种规则链

表的划分依据:防火墙规则的作用相似

默认包括4个规则表

raw表:确定是否对该数据包进行状态跟踪

mangle表:为数据包设置标记

nat表:修改数据包中的源、目标IP地址或端口

filter表:确定是否放行该数据包(过滤)

规则表之间的顺序

raw–>mangle–>nat–>filter

规则链之间的顺序

入站:PREROUTING–>INPUT

出站:OUTPUT–>POSTROUTING

转发:PREROUTING–>FORWARD–>POSTROUTING

规则链内的匹配顺序

按顺序依次检查,匹配即停止(LOG策略例外)

若找不到相匹配的规则,则按该链的默认策略处理

语法构成

iptables [-t 表名] 选项 [链名] [条件] [-j 控制类型]

例子:

[[email protected] ~]# iptables -t filter -I INPUT -p icmp -j REJECT

插入iptables语句,对filter表的input链中icmp进行拒绝处理

-p 用来指定协议

注意:几个注意事项

  • 不指定表名时,默认指filter表
  • 不指定链名时,默认指表内的所有链
  • 除非设置链的默认策略,否则必须指定匹配条件
  • 选项、链名、控制类型使用大写字母,其余均为小写

数据包的常见控制类型

  • ACCEPT:允许通过
  • DROP:直接丢弃,不给出任何回应
  • REJECT:拒绝通过,必要时会给出提示
  • LOG:记录日志信息,然后传给下一条规则继续匹配

添加新的规则

-A:在链的末尾追加一条规则

-I:在链的开头(或指定序号)插入一条规则

[[email protected] ~]# iptables -t filter -A INPUT -p tcp -j ACCEPT

添加iptables语句,对filter表的input链中的tcp连接进行允许通过处理

[[email protected] ~]# iptables -I INPUT -p udp -j ACCEPT

插入iptables语句,对input链中的udp连接进行通过处理

[[email protected] ~]# iptables -I INPUT 2 -p icmp -j ACCEPT

插入iptables语句,对input链中的允许icmp通过

查看规则列表

  • -L:列出所有的规则条目
  • -n:以数字形式显示地址、端口等信息
  • -v:以更详细的方式显示规则信息
  • –line-numbers:查看规则时,显示规则的序号

删除、清空规则

-D:删除链内指定序号(或内容)的一条规则

-F:清空所有的规则

设置默认策略

-P:为指定的链设置默认规则

默认策略要么是ACCEPT、要么是DROP

[[email protected] ~]# iptables -t filter -P FORWARD DROP

设置filter表forward链的默认策略为,禁止建立连接

[[email protected] ~]# iptables -P OUTPUT ACCEPT

设置output链的默认策略为允许建立连接

10.iptables(1)

通用匹配

  • 可直接使用,不依赖于其他条件或扩展
  • 包括网络协议、IP地址、网络接口等条件

协议匹配:-p 协议名

[[email protected] ~]# iptables -I INPUT -p icmp -j DROP

插入iptables规则,在INPU链中不允许建立icmp连接

[[email protected] ~]# iptables -A FORWARD ! -p icmp -j ACCEPT

添加iptables规则,在forward连接不允许不建立(允许)icmp连接

地址匹配:-s 源地址、-d 目的地址

[[email protected] ~]# iptables -A FORWARD -s 192.168.1.11 -j REJECT

添加iptables规则,在forward链中允许建立源地址为192.168.1.11的连接

[[email protected] ~]# iptables -I INPUT -s 10.20.30.0/24 -j DROP

插入iptables规则,在input链中不允许建立原网段为10.20.30.0/24的连接

接口匹配:-i 入站网卡、-o 出站网卡

[email protected] ~]# iptables -A INPUT -i eth1 -s 192.168.0.0/16 -j DROP

添加iptables规则,在input表中,拒绝建立通过eth1,源网段为192.168.0.0的连接

[[email protected] ~]# iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP

添加iptables规则,在input表中,拒绝建立通过eth1。元网段为10.0.0.0的连接

隐含匹配

  • 要求以特定的协议匹配作为前提
  • 包括端口、TCP标记、ICMP类型等条件

常用的隐含匹配条件

端口匹配:–sport 源端口、–dport 目的端口

TCP标记匹配:–tcp-flags 检查范围 被设置的标记

ICMP类型匹配:–icmp-type ICMP类型8 请求,0 回显,3 不可达

[[email protected] ~]# iptables -A FORWARD -s 192.168.4.0/24 -p udp –dport 53 -j ACCEPT

[[email protected] ~]# iptables -A INPUT -p tcp –dport 20:21 -j ACCEPT

[[email protected] ~]# iptables -A INPUT -p icmp –icmp-type 8 -j DROP

[[email protected] ~]# iptables -A INPUT -p icmp –icmp-type 0 -j ACCEPT

[[email protected] ~]# iptables -A INPUT -p icmp –icmp-type 3 -j ACCEPT

[[email protected] ~]# iptables -A INPUT -p icmp -j DROP

显式匹配

  • 要求以“-m 扩展模块”的形式明确指出类型
  • 包括多端口、MAC地址、IP范围、数据包状态等条件

常用的显式匹配条件

多端口匹配:-m multiport –sports 源端口列表

-m multiport –dports 目的端口列表

IP范围匹配:-m iprange –src-range IP范围

MAC地址匹配:-m mac –mac-source MAC地址

状态匹配:-m state –state 连接状态

[[email protected] ~]# iptables -P INPUT DROP

[[email protected] ~]# iptables -I INPUT -p tcp -m multiport –dport 80 -j ACCEPT

[[email protected] ~]# iptables -I INPUT -p tcp -m state –state ESTABLISHED -j ACCEPT

[[email protected] ~]# iptables -A INPUT -p tcp -m multiport –dport 25,80,110,143 -j ACCEPT

[[email protected] ~]# iptables -A FORWARD -p tcp -m iprange –src-range 192.168.4.21-192.168.4.28 -j ACCEPT

[[email protected] ~]# iptables -A INPUT -m mac –mac-source 00:0c:29:c0:55:3f -j DROP

10.iptables(1)

实验描述

搭建环境,3台linux主机服务器,其中一个为客户机,中间做防火墙 做网站,要求全网互通

为web主机编写入站规则,运行客户端ping http主机,允许访问80端口

为网关主机编写转发规则,允许基本上的网站访问

1.为网关主机添加双网卡

10.iptables(1)

2.设置主机ip和网关

[[email protected] Desktop]# vim /etc/sysconfig/network-scripts/ifcfg-eth0

10.iptables(1)

重启网卡服务

10.iptables(1)

3.设置网关服务器ip和路由转发

[[email protected] ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0

10.iptables(1)

[[email protected] ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1

10.iptables(1)

开启路由转发

[[email protected] ~]# echo “1” > /proc/sys/net/ipv4/ip_forward 【立刻生效】

[[email protected] ~]# vim /etc/sysctl.conf 【永久生效,可能需要重启】

10.iptables(1)

重启网卡

[[email protected] ~]# /etc/init.d/network restart

10.iptables(1)

10.iptables(1)

4.配置客户端ip地址和网关

[[email protected] ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0

10.iptables(1)

重启网卡

[[email protected] ~]# /etc/init.d/network restart

10.iptables(1)

5.验证

10.iptables(1)

6.配置主机规则

默认拒绝所有

[[email protected] Desktop]# iptables -t filter -P INPUT DROP

[[email protected] Desktop]# iptables -t filter -A INPUT -s 172.32.32.1 -p icmp -j ACCEPT

[[email protected] Desktop]# iptables -t filter -A INPUT -s 172.32.32.1 -p tcp –dport 80 -j ACCEPT

[[email protected] Desktop]# iptables -t filter -A OUTPUT -d 172.32.32.1 -p tcp –sport 80 -j ACCEPT

7.配置网络防火墙

[[email protected] ~]# iptables -t filter -A FORWARD -s 192.168.1.100 -d 172.32.32.1 -p icmp -j ACCEPT

[[email protected] ~]# iptables -t filter -A FORWARD -d 192.168.1.100 -s 172.32.32.1 -p icmp -j ACCEPT

[[email protected] ~]# iptables -t filter -A FORWARD -p tcp -s 172.32.32.1 -d 192.168.1.100 –dport 80 -j ACCEPT

[[email protected] ~]# iptables -t filter -A FORWARD -p tcp -d 172.32.32.1 -s 192.168.1.100 –sport 80 -j ACCEPT

[[email protected] ~]# iptables -t filter -P FORWARD DROP

8.验证

10.iptables(1)


Llycloud ITSC , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:10.iptables(1)
喜欢 (0)
[]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址