iptables:超详细Iptables防火墙基础规则(四个规则表,5个种规则链)与编写Iptables防火墙规则, | 您所在的位置:网站首页 › ip地址组成规则有几种形式 › iptables:超详细Iptables防火墙基础规则(四个规则表,5个种规则链)与编写Iptables防火墙规则, |
Iptables防火墙基础规则与编写Iptables防火墙规则
Linux包过滤防火墙概述■iptables的表、链结构■默认包括5种规则链■规则表的作用■默认包括4个规则表■表链的结构示意图
数据包过滤的匹配流程■规则表之间的顺序■规则链之间的顺序■规则链内的匹配顺序
iptables安装iptables的基本语法■注意事项■数据包的常见控制类型
iptables的管理选项■添加新的规则■查看规则列表;■删除、清空规则■设置默认策略■常用管理选项汇总
规则的匹配条件■通用匹配■隐含匹配■显式匹配■常见的通用匹配条件■常用的隐含匹配条件■常用的显式匹配条件
■本章总结
Linux包过滤防火墙概述
■netfilter ●位于Linux内核中的包过滤功能体系 称为Linux防火墙的“内核态” ■iptables ●位于/sbin/iptables,用来管理防火墙规则的工具 ●称为Linux防火墙的“用户态” 上述2种称呼都可以表示L inux防火墙 ■iptables的表、链结构■规则链 ●规则的作用:对数据包进行过滤或处理 ●链的作用:容纳各种防火墙规则 ●链的分类依据:处理数据包的不同时机 ■默认包括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安装CentOS 7默认使用firewalld防火墙,若想使用iptables防火墙, ■关闭firewalld防火墙 必须先关闭firewalld防火墙 [root@localhost ~]systemctl stop firewalld [root@localhost ~]systemctl disable firewalld■安装iptables防火墙 [root@localhost ~]yum -y install iptables iptables-services■设置iptables开机启动 [root@localhost ~]systemctl start iptables [root@localhost ~]systemctl enable iptables iptables的基本语法■语法构成 ●iptables [ -t 表名 ] 选项 [ 链名 ] [ 条件 ] [ j 控制类型 ] 比如: [root@localhost ~]# iptables -t filter -I INPUT -P icmp -j REJECT阻止ping测试 -I 为插入 -P用来指定协议 意思为:去filter表中在第一行插入阻止 icmp 入站的命令 ,必要时给出提醒 ■注意事项●不指定表名时,默认指filter表 ●不指定链名时,默认指表内的所有链 ●除非设置链的默认策略,否则必须指定匹配条件 ●选项、链名、控制类型使用大写字母,其余均为小写 ■数据包的常见控制类型●ACCEPT : 允许通过 ●DROP : 直接丢弃,不给出任何回应 ●REJECT : 拒绝通过,必要时会给出提示 ●LOG : 记录日志信息,然后传给下一条规则继续匹配 iptables的管理选项 ■添加新的规则●-A:在链的末尾追加一条规则 ●-I:在链的开头(或指定序号)插入- -条规则 [root@localhost ~]iptables -t filter -A INPUT -p tcp -j ACCEPT 去filter末行添加允许tpc入站规则 [root@localhost ~]iptables -I ANPUT -p udp -j ACCEPT 不指定表明时,默认指filter表 去filter表第一行添加入站规则:允许udp放通 [root@localhost ~]iptables -I INPUT 2 -p icmp -j ACCEPT 去filter表第二行添加入站规则:允许icmp放通-p用来指定协议 ■查看规则列表;●-L:列出所有的规则条目 ●-n:以数字形式显示地址、端口等信息 ●-V:以更详细的方式显示规则信息 ●-line-numbers:查看规则时,显示规则的序号 比如: [root@localhost ~]iptables -L INPUT 列出INPUT所有的规则条目 Chain INPUT (policy ACCEPT) target prot opt source destination REJECT icmp -- anywhere anywhere reject-with icmp-port-unreachable ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh REJECT all -- anywhere anywhere reject-with icmp-host-prohibited ACCEPT tcp -- anywhere anywhere [root@localhost ~] iptables -vL INPUT 以更详细的信息列出INPUT所有的规则条目 Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 4 344 ACCEPT udp -- any any anywhere anywhere 0 0 ACCEPT icmp -- any any anywhere anywhere 8 890 REJECT icmp -- any any anywhere anywhere reject-with icmp-port-unreachable 863 82931 ACCEPT all -- any any anywhere anywhere state RELATED,ESTABLISHED 1 52 ACCEPT tcp -- any any anywhere anywhere state NEW tcp dpt:ssh 390 35169 REJECT all -- any any anywhere anywhere reject-with icmp-host-prohibited 0 0 ACCEPT tcp -- any any anywhere anywhere [root@localhost ~] iptables -nL INPUT 以数字形式显示地址端口等列出INPUT所有的规则条目 Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 REJECT icmp -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHE ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 [root@localhost ~]# iptables -L INPUT --line-numbers 列出INPUT所有的规则条目,显示规则的序号 Chain INPUT (policy ACCEPT) num target prot opt source destination 1 ACCEPT udp -- anywhere anywhere 2 ACCEPT icmp -- anywhere anywhere 3 REJECT icmp -- anywhere anywhere reject-with icmp-port-unreachable 4 ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED 5 ACCEPT icmp -- anywhere anywhere prohibited ■删除、清空规则●-D:删除链内指定序号(或内容)的一条规则 ●-F:清空所有的规则 比如: [root@localhost ~]# iptables -nL INPUT --line-numbers 以数字形式显示地址端口等列出INPUT所有的规则条目 并显示规则的序号 Chain INPUT (policy ACCEPT) num target prot opt source destination 1 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 3 REJECT icmp -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable 4 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED [root@localhost ~]# iptables -D INPUT 4 删除INPUT规则里的第四条 [root@localhost ~]# iptables -nL INPUT --line-numbers 以数字形式显示地址端口等列出INPUT所有的规则条目 并显示规则的序号 Chain INPUT (policy ACCEPT) num target prot opt source destination 1 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 3 REJECT icmp -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable [root@localhost ~]# iptables -nL INPUT --line-numbers 以数字形式显示地址端口等列出INPUT所有的规则条目 并显示规则的序号 Chain INPUT (policy ACCEPT) num target prot opt source destination 1 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 3 REJECT icmp -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable [root@localhost ~]# iptables -F INPUT 清空INPUT所有规则 [root@localhost ~]# iptables -nL INPUT --line-numbers Chain INPUT (policy ACCEPT) num target prot opt source destination ■设置默认策略●-P:为指定的链设置默认规则 [root@localhost ~]# iptables -t filter -P FORWARD DROP filter表默认 转发数据包 直接丢弃 [root@localhost ~]# iptables -P OUTPUT ACCEPT filter表默认 入站数据包 放通通清空所有默认策略要么是ACCEPT、 要么是DROP表的所有链 ■常用管理选项汇总 规则的匹配条件 ■通用匹配●可直接使用,不依赖于其他条件或扩展 ●包括网络协议、IP地址、 网络接口等条件 ■隐含匹配●要求以特定的协议匹配作为前提 ●包括端口、TCP标记、ICMP类型等条件 ■显式匹配●要求以 “-m扩展模块” 的形式明确指出类型 ●包括多端口、MAC地址、IP范围、数据包状态等条件 ■常见的通用匹配条件●协议匹配: -p 协议名 ●地址匹配 : -s 源地址、 -d 目的地址 ●接口匹配 :-i入站网卡、 -0出站网卡 [root@localhost ~]# iptables -I INPUT -P icmp -j DROP 在filter第一条插入处理入站数据包规则: icmp数据直接丢弃,不给任何会用 [root@localhost ~]# iptables -A FORWARD ! -P icmp -j ACCEPT 在filter最后一行追加一条处理转发数据包规则: 不允许 icmp数据 放通 叹号!表示条件取反 [root@localhost ~]# iptables -A FORWARD -S 192.168.1.11 -j REJECT 在filter最后一行追加一条处理转发数据包规则:拒绝源地址为192.168.1.11的数据通过,必要时会给出提醒 [root@localhost ~]# iptables -I INPUT -S 10.20.30.0/24 -j DROP 在filter第一行插入一条 处理入站数据包规则:直接丢弃源地址为10.20.30.0网段的数据 不给出任何回应 [root@localhost ~]# iptables -A INPUT -i ens33 -S 192.168.0.0/16 -j DROP 在filter表链的最后行追加一条 处理入站数据包规则:入站网卡为ens33 源地址为190.168.0.0网段的数据 直接丢弃,不给任何回应 [root@localhost ~]# iptables -A INPUT -i ens33 -S 10.0.0.0/8 -j DROP 这个留给你们翻译 [root@localhost ~]# iptables -A INPUT -i ens33 -S 172.16.0.0/12 -j DROP 这个留给你们翻译 ens33指的是 外网接口 ■常用的隐含匹配条件●端口匹配: --sport 源端口、–dport 目的端口 ●ICMP类型匹配: --icmp-type ICMP类型 比如:允许网段为192.168.4.0/24 转发DNS查询数据包可执行以下这条: [root@localhost ~]# iptables -A FORWARD -S 192.168.4.0/24 -p udp --dport 53 -j ACCEPT 在filter表链的最后行追加一条 处理转发数据包规则:源地址为192.168.4.0网段,使用的是udp协议,目的端口号为53号的数据 允许放通 [root@localhost ~]# iptables -A INPUT -P tcp --dport 20:21 -j ACCEPT 在filter表链的最后行追加一条tcp默认 处理入站数据包规则:目的端口为20 21的数据全部放通 比如:若要禁止从其他主机ping本机,但是允许本机ping其他主机,可执行以下操作 [root@localhost ~]# iptables -A INPUT -P icmp --icmp-type 8 -j DROP [root@localhost ~]# iptables -A INPUT -p icmp --icmp-type 0 j ACCEPT [root@localhost ~]# iptables -A INPUT -p icmp --icmp-type 3 -j ACCEPT [root@localhost ~]# iptables -A INPUT -p icmp j DROP 8请求,0回显,3不可达 编写iptables规则时,使用“--icmp-type ICMP类型”的形式,针对的协议为ICMP,用来检查ICMP数据包的类型(--icmp-type) ICMP类型使用字符串或数字代码表示,如“echo-request”代码为(8) ,“echo-Reply”代码为(0) “Destination-Unreachable”代码为(3),8请求,0回显,3不可达 ■常用的显式匹配条件●多端口匹配: -m multiport --sports源端口列表 -m multiport --dports目的端口列表 ●IP范围匹配: -m iprange --src-range IP范围 ●MAC地址匹配: -m mac --mac-source MAC地址 ●状态匹配: -m state - -state连接状态 若要允许本机开放25 80 110 143 端口,以便提供电子邮件服务,可执行以下这条 [root@localhost ~]iptables -A INPUT -P tcp -m multiport --dport 25,80,110,143 -j ACCEPT 若要禁止转发源IP地址位于192.168.4.21与192.168.4.28之间的TCP数据包,可执行以下这条 [root@localhost ~]iptables -A FORWARD -P tcp -m iprange --src-range 192.168.4.21 192.168.4.28 -j DROP 若要根据MAC地址封锁主机,禁止其访问本机的任何应用,可以参考以下操作 [root@localhost ~]iptables -A INPUT -m mac --mac-source 00:0C:29:c0:55:3f j DROP ■本章总结■iptables的基本语法 ■iptables常用管理选项 ●A、|、L、n、V、–line-numbers、 D、F、P ■iptables规则匹配条件 ●通用匹配、隐含匹配、显式匹配 |
CopyRight 2018-2019 实验室设备网 版权所有 |