博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux防火墙iptables命令详解
阅读量:2026 次
发布时间:2019-04-28

本文共 4846 字,大约阅读时间需要 16 分钟。

一: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:拒绝  或者用DROPfilter:默认表 -t可以不写  其他三个表就要写

注意事项

不指定表名时,默认指filter表

不指定链名时,默认指表内的所有链

除非设置链的默认策略,否则必须指定匹配条件

选项、链名、控制类型使用大写字母,其余均为小写

iptables命令使用总结

所有链名必须大写INPUT/OUTPUT/FORWARD/PREROUTING/POSTROUTING所有表名必须小写filter/nat/mangle所有动作必须大写ACCEPT/DROP/SNAT/DNAT/MASQUERADE所有匹配必须小写-s/-d/-m 
/-p

1.5:防火墙开启禁止ICMP 阻止ping

/两台主机 IP分别为192.168.158.10 另一台192.168.158.40通过第一台设备ping第二台[root@localhost ~]# ping 192.168.158.10PING 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 ms64 bytes from 192.168.158.10: icmp_seq=2 ttl=64 time=0.335 ms64 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.10PING 192.168.158.10 (192.168.158.10) 56(84) bytes of data.From 192.168.158.10 icmp_seq=1 Destination Port UnreachableFrom 192.168.158.10 icmp_seq=2 Destination Port UnreachableFrom 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 jACCEPT//在转发链中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:给防火墙添加为双网卡

在这里插入图片描述

转载地址:http://qfdaf.baihongyu.com/

你可能感兴趣的文章
【IDEA】【6】Maven打包
查看>>
【Oracle】【6】去掉字符串中的空格/字符
查看>>
【Navicat】【1】解决 导入保存为txt文件的数据 中文乱码问题
查看>>
【HTML&CSS】【1】让DIV中的文字换行显示
查看>>
【MySQL】【4】数据库时间与实际时间相差8小时
查看>>
【Git】【1】简单介绍
查看>>
【记录】【2】各种在线网址
查看>>
【Mybatis】【4】mybatis Example Criteria like 模糊查询
查看>>
【Java】【12】Double类型精确的加减乘除运算
查看>>
【Oracle】【9】取前N条记录——rownum和row_number() over()的使用
查看>>
【Java】【15】判断url对应的图片是否存在
查看>>
【Java】【22】读写properties文件
查看>>
【Spring】【1】mybatis spring的自动扫描配置
查看>>
【Java】【25】去除空格
查看>>
【其他】【PL/SQL Developer】【2】报错Initialization error Could not load ".../oci.dll"解决方法...
查看>>
【Java】【28】提高List的removeAll方法的效率
查看>>
【JS】【28】让输入框只能输入正整数
查看>>
【记录】【4】各种工具
查看>>
【JS】【31】读取json文件
查看>>
Ubuntu Boost 编译
查看>>