Linux防火墙iptables命令详解

一: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
PC192.168.158.10
防火墙ens33:192.168.158.20
防火墙ens37:20.0.0.30
WEB20.0.0.30

4.1:给防火墙添加为双网卡

在这里插入图片描述


版权声明:本文为qyf158236原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。