一、linux防火墙基础

防火墙分为硬件防火墙和软件防火墙。
1.概述
linux 防火墙体系主要工作在网络层,针对TCP/IP数据包实施过滤和限制,属于典型的包过滤防火墙。
包过滤机制:netfilter
管理防火墙规则命令工具:iptables
netfilter 指linux内核中实现包过滤防火墙的内部结构,不依程序或文件的形式存在,属于“内核态”的防火墙功能体系
iptables 指管理linux防火墙的命令工具,属于“用户态”的防火墙管理体系
2.iptables的规则表、链结构
iptables的作用在于为包过滤机制的实现提供规则,通过不同的规则作出不同的反应.
iptables管理4个表、以及他们的规则链
filter,用于路由网络数据包。
INPUT 网络数据包流向服务器
OUTPUT 网络数据包从服务器流出
FORWARD 网络数据包经服务器路由
nat,用于NAT表.NAT(Net Address Translation )是一种IP地址转换方法。
PREROUTING 网络数据包到达服务器时可以被修改
POSTROUTING 网络数据包在即将从服务器发出时可以被修改
OUTPUT 网络数据包流出服务器
mangle,用于修改网络数据包的表,如TOS(Type Of Service),TTL(Time To Live),等
INPUT 网络数据包流向服务器
OUTPUT 网络数据包流出服务器
FORWARD 网络数据包经由服务器转发
PREROUTING 网络数据包到达服务器时可以被修改
POSTROUTING 网络数据包在即将从服务器发出时可以被修改
raw, 用于决定数据包是否被跟踪机制处理
OUTPUT 网络数据包流出服务器
PREROUTING 网络数据包到达服务器时可以被修改
3.数据包过滤匹配流程
1>.规则表之间的优先顺序
依次应用:raw、mangle、nat、filter表
2>.规则链之间的优先顺序
入站数据流向
转发数据流向
出站数据流向
3>.规则链内部各条防火墙规则之间的优先顺序
二、管理和配置Iptables规则
1.iptables的基本语法格式
iptables [-t 表名] 命令选项 [链名] [条件匹配] [-] 目标动作或跳转
表名链名用于指定iptables命令所做对象,未指定默认filter表,命令选项指于管理iptables规则的方式(插入、删除··);条件匹配指定对条件的符合而处理;目标动作或跳转指定数据包的处理方式。
2.管理iptables规则
控制选项
  -A 在链尾添加一条规则
 -D 从链中删除一条规则
  -I 在链中插入一条规则
  -R 修改、替换某链的某规则
  -L 列出某个链上的规则
  -F 清空链,删除链上的所有规则
  -N 创建一个新链
  -X 删除某个规则链
  -P 定义某个链的默认策略
  -n 数字形式显示结果
  -v 查看规则列表详细信息
  -V 查看iptables命令工具版本
  -h 查看命令帮助信息
  -line-numbers 查看规则列表,显示顺序号
增加、插入、删除和替换规则
相关规则定义的格式为:
iptables  [-t表名]  <-A | I | D | R> 链名 [规则编号] [-i | o 网卡名称] [-p 协议类型] [-s 源IP地址 | 源子网] [--sport 源端口号] [-d目标IP地址 | 目标子网] [--dport目标端口号] <-j动作>
参数说明如下。
[-t表名]:定义默认策略将应用于哪个表,可以使用filter、nat和mangle,如果没有指定使用哪个表,iptables就默认使用filter表。
-A:新增加一条规则,该规则将会增加到规则列表的最后一行,该参数不能使用规则编号。
-I:插入一条规则,原本该位置上的规则将会往后顺序移动,如果没有指定规则编号,则在第一条规则前插入。
-D:从规则列表中删除一条规则,可以输入完整规则,或直接指定规则编号加以删除。
-R:替换某条规则,规则被替换并不会改变顺序,必须要指定替换的规则编号。
<链名>:指定查看指定表中哪个链的规则列表,可以使用INPUT、OUTPUT、FORWARD、PREROUTING、OUTPUT和POSTROUTING。
[规则编号]:规则编号用于插入、删除和替换规则时用,编号是按照规则列表的顺序排列,规则列表中第一条规则的编号为1。
[-i | o 网卡名称]:i是指定数据包从哪块网卡进入,o是指定数据包从哪块网卡输出。网卡名称可以使用ppp0、eth0和eth1等。
[-p 协议类型]:可以指定规则应用的协议,包含TCP、UDP和ICMP等。
[-s 源IP地址 | 源子网]:源主机的IP地址或子网地址。
[--sport 源端口号]:数据包的IP的源端口号。
[-d目标IP地址 | 目标子网]:目标主机的IP地址或子网地址。
[--dport目标端口号]:数据包的IP的目标端口号。 
<-j动作>:处理数据包的动作,各个动作的详细说明可以参考表10-3。 
1>.添加及插入规则
在Filter表的INPUT链的末尾添加一条防护墙规则
[root@s2 ~]# iptables -t filter -A INPUT -p tcp -j ACCEPT
在Filter表的INPUT链中插入一条防护墙规则
[root@s2 ~]# iptables -I INPUT -p udp -j ACCEPT
在在Filter表的INPUT链中插入一条防护墙规则(为链中第二条规则)
[root@s2 ~]# iptables -I INPUT 2 -p icmp -j ACCEPT
2>.查看规则表
查看Filter表的INPUT链中的所有规则,同时显示顺序号
[root@s2 ~]# iptables -L INPUT --line-numbers
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  
查看filter表各链中所有规则的详细信息,以数字形式显示地址和端口信息
[root@s2 ~]# iptables -vnL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
 1189  154K ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0           
    0     0 ACCEPT     icmp --  *      *       0.0.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 
 2449  221K ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0           
3>.删除、清空规则
删除Filter表的INPUT链中的第2条规则
[root@s2 ~]# iptables -D INPUT 2
清空filter表、nat表、mangle表各链中的所有规则
[root@s2 ~]# iptables -F
[root@s2 ~]# iptables -t nat -F
[root@s2 ~]# iptables -t mangle -F
4>.设置规则链的默认策略
最基本的两种策略为ACCEPT(允许)、DROP(丢弃)
将filter表中的FORWARD规则链的默认策略设为 DROP
[root@s2 ~]# iptables -t filter -P FORWARD DROP
将filter表中的 OUTPUT规则链的默认策略设为 ACCEPT
[root@s2 ~]# iptables -P OUTPUT ACCEPT
5>.获得iptables相关选项用法的帮助信息
查看iptables命令中关于icmp协议的信息
[root@s2 ~]# iptables -p icmp -h
6>.新增、删除自定义规则链
清空raw表中自定义的所有规则链
[root@s2 ~]# iptables -t raw -X
3.条件匹配
1>.通用条件匹配
一般直接使用,而不依赖于其他的条件匹配及其扩展。常见匹配方式如下:
协议匹配:用于检查数据包的网络协议
拒绝进入防火墙的所有icmp协议数据包
[root@s2 ~]# iptables -I INPUT -p icmp -j REJECT
允许防火墙转发除icmp协议以外的所有数据包(“!”反取)
[root@s2 ~]# iptables -A FORWARD -p ! icmp -j ACCEPT
[root@s2 ~]# iptables -L FORWARD
Chain FORWARD (policy DROP)
target     prot opt source               destination         
ACCEPT    !icmp --  anywhere             anywhere    
地址匹配:用于检查数据包的IP地址、网络地址。
拒绝转发来自192.168.1.11主机的数据,允许来自192.168.0.0/24网段数据
[root@s2 ~]# iptables -A FORWARD -s 192.168.1.11 -j REJECT
[root@s2 ~]# iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT
网络接口匹配:用于检查数据包从防火墙的哪个接口进入或离开
丢弃从外网接口(eth1)进入防火墙本机的源地址为私网地址的数据包
[root@s2 ~]# iptables -A INPUT -i eth1 -s 192.168.0.0/16 -j DROP
[root@s2 ~]# iptables -A INPUT -i eth1 -s 172.16.0.0/12 -j DROP
[root@s2 ~]# iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP
封堵IP地址段!并2小时后解锁
[root@s2 ~]# iptables -I INPUT -s 10.20.30.0/24 -j DROP
[root@s2 ~]# iptables -I FORWARD -s 10.20.30.0/24 -j DROP
[root@s2 ~]# at now +2 hours
at> iptables -D INPUT 1
at> iptables -D FORWARD 1
at> <EOT>
job 1 at 2010-04-25 17:43
2>.隐含条件匹配
通常需要以指定的协议匹配为前提,对应功能由iptables自动装载内核。常见的隐含匹配方式如下:
端口匹配:用于检查数据包的TCP或UDP端口号
仅允许系统管理员从202.13.0.0/16网段使用SSH方式远程登录防火墙主机
[root@s2 ~]# iptables -A INPUT -p tcp --dport 22 -s 202.13.0.0/16 -j ACCEPT
[root@s2 ~]# iptables -A INPUT -p tcp --dport 22 -j DROP
允许本机开放TCP端口的 20 ~ 1024 提供的应用服务
[root@s2 ~]# iptables -A INPUT -p tcp --dport 20:1024 -j ACCEPT
[root@s2 ~]# iptables -A OUTPUT -p tcp --sport 20:1024 -j ACCEPT
允许转发来自192.168.0.0/24局域网段的DNS解析请求数据包
[root@s2 ~]# iptables -A FORWARD -s 192.168.0.0/24 -p udp --dport 53 -j ACCEPT
[root@s2 ~]# iptables -A FORWARD -d 192.168.0.0/24 -p udp --sport 53 -j ACCEPT
TCP标记匹配:用于检查数据包的TCP标记位
拒绝从外网接口(eth1)直接访问防火墙本机的数据包,但允许响应防火墙TCP请求的数据包进入
[root@s2 ~]# iptables -P INPUT DROP
[root@s2 ~]# iptables -I INPUT -i eth1 -p tcp --tcp-flags SYN, RST, ACK SYN -j REJECT
[root@s2 ~]# iptables -I INPUT -i eth1 -p tcp --tcp-flags ! --syn -j ACCEPT
ICMP类型匹配:用于检查ICMP数据包
禁止其他主机ping防火墙主机,但是允许防火墙能ping其他主机
[root@s2 ~]# iptables -A INPUT -p icmp --icmp-type Echo-Request -j DROP
[root@s2 ~]# iptables -A INPUT -p icmp --icmp-type Echo-Reply -j ACCEPT
[root@s2 ~]# iptables -A INPUT -p icmp --icmp-type destination-Unreachable -j ACCEPT
显示条件匹配:需要额外的内核模块提供,因此需要手工指定匹配方式
MAC地址匹配:主要检查数据包的源MAC地址
[root@s2 ~]# iptables -A FORWARD -m mac --mac-source 00:0c:29:27:55:3F -j DROP
多端口匹配:检查数据包的源端口、目标端口时,用于匹配多个不连续的端口号。
[root@s2 ~]# iptables -A INPUT -p tcp -m multiport --dport 20.21.24.11.1250:1280 -j ACCEPT
多IP地址匹配:检查数据包的源地址、目标地址时,用于匹配一段范围内的IP地址
[root@s2 ~]# iptables -A FORWARD -p tcp -m iprange --src-range 192.168.1.20-192.168.1.99 -j DROP
状态匹配:基于iptables的状态跟踪机制,检查数据包的连接状态
禁止转发与正常TCP连接无关的非--syn请求数据包
[root@s2 ~]# iptables -A FORWARD -m state --state NEW -p tcp ! --syn -j DROP
4.数据包控制
最常见处理方式;
ACCEPT:允许数据包通过
DROP:直接丢弃数据包,不给任何回应信息
REJECT:拒绝数据包通过,必要时发个响应信息
LOG: 记录日志信息,将数据包递给下一条规则
对于尝试通过SSH方式登录防火墙主机的访问数据,记录日志信息并禁止访问
[root@s2 ~]# iptables -I INPUT -p tcp --dport 22 -j DROP
[root@s2 ~]# iptables -I INPUT -p tcp --dport 22 -j LOG
用户自定义链:将数据传给用户自定义的链进行处理
自定义一个链MYLAN 转发至192.168.1.0/24 网段数据包交给该链中的规则处理。
[root@s2 ~]# iptables -t filter -N MYLAN
[root@s2 ~]# iptables -A FORWARD -s 192.168.1.0/24 -j MYLAN
[root@s2 ~]# iptables -A FORWARD -d 192.168.1.0/24 -j MYLAN
[root@s2 ~]# iptables -A MYLAN -p icmp -j DROP
SNAT:(源地址转换)修改数据包的源IP地址
DNAT:(目标地址转换)修改数据包的目标IP地址

linux防火墙过滤规则相关推荐

  1. iptables防火墙过滤规则

    iptables  包过滤 防火墙 firewall  防火墙工作在网络边缘(主机边缘)对于进出的网络数据包进行规则排查,并在匹配某规则时由规则定义的处理进行处理的功能组件 防火墙类型 根据工作区域不 ...

  2. linux防火墙富规则,Firewalld防火墙富规则策略-实践案例下

    FirewallD 提供了支持网络/防火墙区域定义网络链接以及接口安全等级的动态防火墙管理工具. Firewalld支持服务.端口.转发一键配置生效.同时还支持不同网络接口绑定不同区域,不同区域配置不 ...

  3. linux 防火墙配置规则

    基础知识 Linux系统内核内建了netfilter防火墙机制.Netfilter(数据包过滤机制),所谓的数据包过滤,就是分析进入主机的网络数据包,将数据包的头部数据提取出来进行分析,以决该连接为放 ...

  4. linux防火墙富规则,[Linux]Redhat7防火墙配置汇总

    Redhat7防火墙常用配置 重启防火墙服务 systemctl restart firewalld.service 查看防火墙服务状态 systemctl status firewalld.serv ...

  5. linux 防火墙过滤mac地址,OpenWrt设置mac地址过滤和使用Iptables防火墙禁止mac地址上网...

    本文介绍使用OpenWrt限制特定mac地址的方法,一种是使用无线网络的mac地址过滤,一种是使用Iptables防火墙阻止策略. 一.使用mac-filter功能限制mac地址上网 方法1.web界 ...

  6. Linux防火墙白名单设置

    在linux系统中安装yum install iptables-services 然后 vi /etc/sysconfig/iptables # Generated by iptables-save ...

  7. 常用DOS命令、Windows下安装IIS服务器、DNS服务器和DHCP服务器以及Windows和Linux防火墙的基本配置(Windows一)

    目录 一.常用DOS命令 (1)DOS概述 (2)常用的DOS命令 a. ipconfig(查询本机IP地址) b. net user(查看本机账号情况) c. net localgroup(查看本地 ...

  8. Linux完全清除防火墙策略,linux下的软件防火墙iptables——规则的查看与清除、定义默认策略,...

    linux下的软件防火墙iptables--规则的查看与清除.定义默认策略软件防火墙IPTABLES --规则在Linux下查看和清除,定义默认策略,防火墙意味着用户限制某些ip或用户对其主机的访问. ...

  9. Linux tcpdump命令详解,BPF过滤规则参考

    简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具. tcpdump可以将网络中传送的数据包的 ...

最新文章

  1. MySql 高可用架构Atlas
  2. 【PowerBi】Power Query 对数据进行合并查询
  3. HTML页面显示缩略所有空格为一格的方法
  4. Java中的StringBuilder类功能详解
  5. 模拟键盘 键盘虚拟代码
  6. 计算机itunes无法安装,手把手给你细说win7系统电脑无法安装itunes的解决方案
  7. python采用那种编程模式_使用Mixin设计模式进行Python编程的方法讲解
  8. 微信公众号sae服务器搭建,SAE 搭建微信公众平台
  9. Vue生命周期---vue工作笔记0013
  10. Svn、Git、GitHub、GitLab、码云 区别
  11. 使用php函数对变量进行比较,PHP:将变量传递给函数,对变量进行处理,然后将其返回...
  12. linux的raid级别,RAID各种级别及特性
  13. php保存pdf旋转90度,如何将PDF图片旋转90度,盘点这个小方法
  14. 怎么修改PDF文件内容,PDF怎么删除其中一页
  15. 计算平均指令时间_上海原油期货将推出TAS指令
  16. CSS常用的选择器学习
  17. P1629 邮递员送信-dijkstra+反向建边
  18. Android RxJava与Retrofit与RecyclerView与Fresco结合网络请求
  19. torch.addcdiv 和 torch.tensor.addcdiv_
  20. A7139 无线通信驱动(STM32) 添加FIFO扩展模式,能够发送超大数据包

热门文章

  1. LCD驱动源码分析(s3cfb.c)
  2. 数字电路技术基础(三)
  3. IDEA中如何将一个JavaWeb项目打包成war包
  4. Source Insight是一个面向项目开发的程序编辑器和代码浏览器丨产品简介
  5. Python:实现GrabCut算法(附完整源码)
  6. JDBC-API详解-Statement接口
  7. python实现四种出行路线规划(公交、步行、驾车、骑行)
  8. Unity 实现人工智能语音
  9. 3.DesignForVias\1.CreateAutoVia(ShieldGnd)
  10. 计算机软件和应用审稿可以加急吗,计算机类期刊审稿周期