一:iptables安装
1.1:关闭firewalld防火墙
[root@localhost ~]# systemctl stop firewalld.service
//centos 7默认使用firewalld防火墙,要是使用iptables必须先关闭firewalld防火墙
[root@localhost ~]# systemctl disable firewalld.service
1.2:安装iptables防火墙
[root@localhost ~]# yum y install iptables iptables-services
1.3:设置iptables开机启动
[root@localhost ~]# systemctl start iptables.service
[root@localhost ~]# systemctl enable iptables.service
1.4:iptables语法格式与常用参数
iptables语法格式
iptables [-t 表名] 选项 [链名] [条件] [-j 控制类型]
如果不指定表名,则会默认指定filter表
[root@localhost ~]# iptables -t filter -l INPUT -p icmp -j REJECT
-p :协议 阻止ping测试
REJECT:拒绝 或者用DROP
filter:默认表 -t可以不写 其他三个表就要写
注意事项
不指定表名时,默认指filter表
不指定链名时,默认指表内的所有链
除非设置链的默认策略,否则必须指定匹配条件
选项、链名、控制类型使用大写字母,其余均为小写
iptables命令使用总结
所有链名必须大写
INPUT/OUTPUT/FORWARD/PREROUTING/POSTROUTING
所有表名必须小写
filter/nat/mangle
所有动作必须大写
ACCEPT/DROP/SNAT/DNAT/MASQUERADE
所有匹配必须小写
-s/-d/-m <module_name>/-p
1.5:防火墙开启禁止ICMP 阻止ping
/两台主机 IP分别为192.168.158.10 另一台192.168.158.40
通过第一台设备ping第二台
[root@localhost ~]# ping 192.168.158.10
PING 192.168.158.10 (192.168.158.10) 56(84) bytes of data.
64 bytes from 192.168.158.10: icmp_seq=1 ttl=64 time=0.182 ms
64 bytes from 192.168.158.10: icmp_seq=2 ttl=64 time=0.335 ms
64 bytes from 192.168.158.10: icmp_seq=3 ttl=64 time=0.262 ms
//是可以ping通的
[root@localhost ~]# iptables -L -t filter 第二台查看filter信息
[root@localhost ~]# iptables -t filter -F //清空filter表
[root@localhost ~]# iptables -t filter -I INPUT -p icmp -j REJECT
//切换192.168.158.10进行ping测试
[root@localhost ~]# ping 192.168.158.10
PING 192.168.158.10 (192.168.158.10) 56(84) bytes of data.
From 192.168.158.10 icmp_seq=1 Destination Port Unreachable
From 192.168.158.10 icmp_seq=2 Destination Port Unreachable
From 192.168.158.10 icmp_seq=3 Destination Port Unreachable
//测试成功 已经ping不通了
1.6:数据包的常见控制类型
ACCECT:允许通过
DROP:直接丢弃
REJECT:拒绝通过,必要时会给出提示
LOG:记录日志信息,然后传给下一条规则继续匹配
二:iptables的管理选项
2.1:添加新的规则
- -A:在链的末尾追加一条规则
- -l:在链的开头(或指定序号)插入一条规则
[root@localhost ~]# iptables -t filter -A INPUT -p tcp -j ACCEPT
[root@localhost ~]# iptables -I INPUT -p udp -j ACCEPT
[root@localhost ~]# iptables -I INPUT 2 -p icmp -j ACCEPT
2.2:查看规则列表
[root@localhost ~]# iptables -t filter -A INPUT -p tcp -j ACCEPT
[root@localhost ~]# iptables -I INPUT -p udp -j ACCEPT
[root@localhost ~]# iptables -I INPUT 2 -p icmp -j ACCEPT
2.2:查看规则列表
L:列出所有的规则条目
-n: 以数字形式显示地址、端口等信息
-V: 以更详细的方式显示规则信息
-line-numbers:查看规则时,显示规则的序号
2.3:查看规则列表
[root@localhost ~]# iptables -L INPUT --line-numbers
[root@localhost ~]# iptables -n -L INPUT //-n -L可合写
2.4:删除、清空规则
- -D: 删除链内指定序号 (或内容)的一条规则
- -F:清空所有的规则
[root@localhost ~]# iptables -D INPUT 3
[root@localhost ~]# iptables -n -L INPUT
[root@localhost ~]# iptables F //默认是情况filter
[root@localhost ~]# iptables - nat F
[root@localhost ~]# iptables - mangle F
[root@localhost ~]# iptables -t raw F
2.5:设置默认策略
-P:为指定的链设置默认规则
[root@localhost ~]# iptables -t filter P FORWARD DROP
[root@localhost ~]# iptables P OUTPUT ACCEPT
//清空所有默认策略要么是ACCEPT 要么是DROP表的所有链
2.6:常用管理选项汇总
类别 | 选项 | 用途 |
---|---|---|
添加新的规则 | -A | 在链的末尾追加一条规则 |
-l | 在链的开头(或指定序号)插入一条规则 | |
查看规则列表 | -L | 列出所有的规则条目 |
-n | 以数字形式显示地址、端口等信息 | |
-v | 以更详细的方式、显示规则的序号 | |
–line-numbers | 查看规则时,显示规则的序号 | |
删除、清空规则 | -D | 删除链内指定序号(或内容)的一条规则 |
-F | 清空所有规则 | |
设置默认策略 | -P | 为指定的链设置默认规则 |
三:规则的匹配条件
3.1:通用匹配
- 可直接使用,不依赖于其他条件或扩展
- 包括网络协议、IP地址、网络接口等条件
3.2:隐含匹配
- 要求以特定的协议匹配作为前提
- 包括端口、TCP标记、ICMP类型等条件
3.3:显式匹配
- 要求以:-m扩展模块”的形式明确指出类型
- 包括多端口、MAC地址、IP范围、 数据包状态等条件
3.4:常见的通用匹配条件
- 协议匹配: -p 协议名
- 地址匹配: -s 源地址、-d目的地址
- 接口匹配: -i 入站网卡、-o 出站网卡
3.5:常用的隐含匹配条件
- 端口匹配: --sport源端口、 --dport目的端口
- ICMP类型匹配: --imcp-typeICMP类型
//在转发链中源地址为4.0段协议为upd 53端口可以放行通过 【dns】
[root@localhost ~]# iptables A FORWARD -s 192.168.158.0/24 -P udp -dport 53 j ACCEPT
//20:21表示多端口
[root@localhost ~]# iptables -A INPUT -P tcp --dport 20:21 ACCEPT
- TFTP端口号:69 UDP协议
- FTP端口号:TCP 的20 21 速度快的是UDP协议 用于链接的是TCP
[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不可达
3.6:常用的显示匹配条件
- 多端口匹配: -m multiport --sports源端口列表
- -m multiport --dports目的端口列表
- IP范围匹配: -m iprange --sr-range IP范围
- MAC地址匹配: -m mac --mac-source MAC地址
- 状态匹配: -m state --state连接状态
//在INPUT链中tcp协议目标端口25,80,110,143允许
[root@localhost ~]# iptables -A INPUT -P tcp -m multiport --dport 25,80,110,143 j
ACCEPT
//在转发链中TCP的地址段源地址的范围
[root@localhost ~]# iptables -A FORWARD -P tcp -m iprange -rC-range 192.168.158.10-
192.168.158.40 j ACCEPT
//在INPUT链中MAC地址为..做拒绝
[root@localhost ~]# iptables -A INPUT -m mac --mac-source 00:0d:35:c0:45:4f j DROP
3.7:常用管理选项汇总
类别 | 条件类型 | 用法 |
---|---|---|
通用匹配 | 协议匹配 | -P协议名 |
地址匹配 | -s源地址、-d目的地址 | |
接口匹配 | -i入站网卡、-o出站网卡 | |
隐含匹配 | 端口匹配 | –sport源端口、–dport目的端口 |
ICMP类型匹配 | –icmp-type ICMP类型 | |
多端口匹配 | -m multiport --soprts --dpoets 端口列表 | |
显式匹配 | IP范围匹配 | -m iprange --src-range IP范围 |
MAC地址匹配 | -m mac --mac-source MAC地址 | |
状态匹配 | -m state --state 链接状态 |
四:实验
计算机 | ip |
---|---|
PC | 192.168.158.10 |
防火墙 | ens33:192.168.158.20 |
防火墙 | ens37:20.0.0.30 |
WEB | 20.0.0.30 |
4.1:给防火墙添加为双网卡
版权声明:本文为qyf158236原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。