Linux防火墙--IPtables企业级配置策略思路
一、防火墙简介
防火墙定义:是通过有机结合各类用于安全管理与筛选的软件和硬件设备,帮助计算机网络于其内、外网之间构建一道相对隔绝的保护屏障,以保护用户资料与信息安全性的一种技术。
防火墙发展应用:最早是ipfwadm和ipchains(Redhat7.0), 其次是iptables,Centos7开始后friewalld迅速发展,对iptables进行了 改良,目前还是iptables用的比较多。
防火墙的布防位置:
- 前提:架构部署在web与企业服务相连的部分(网站最前端上联口交换机前)。
- 串联部署:最佳 的存放部署,防护性强,但如果防火墙出问题后,整个企业服务就会受影响。
- 旁路部署:综合最好的存放部署方式 ,不会因防火墙出问题而导致整个企业服务受影响,但防护相对串联部署较薄弱。
二、IPtables介绍
IPtables是什么
官网解释:iptables是用户空间命令行程序,用于配置 Linux 2.4.x 及更高版本的包过滤规则集。它面向系统管理员,由于网络地址转换也是从包过滤规则集配置的,iptables的包装还包括ip6tables。ip6tables用于配置 IPv6 包过滤器。
个人理解:是Linux下自带(C7以前)的开源的一款免费的基于包过滤的防火墙工具,可以对流入、流出、流经服务器的数据包进行精细的控制。目前Iptables主要工作在OSI七层的二、三四层(不编译的情况下),如果重新编译内核,Iptables也可以支持7层控制(squid代理+iptables)进行7层过滤。
三、iptables包过滤流程
iptables是采用【数据包】过滤机制工作的,所以它会对请求的数据包的【包头数据】进行分析,并根据我们预先设定的规则进行匹配来决定是否可以进入主机。
【数据包的包头】是传输数据流经OSI七层模型中,经过各个层时,各个层根据遵循的协议给数据进行层层打包,如下图所示:
iptables工作流程
- 防火墙是一层层过滤的。实际是按照配置规则的顺序从上到下,从前到后进行过滤的。
- 防火墙如果根据设置的规则匹配上了规则,即明确表明是阻止还是通过,此时数据包就不在向下匹配新规则了。
- 如果数据包在所有规则中没有匹配到明确的规则是阻止还是通过,从而会向下进行匹配直到匹配默认规则后,得到明确的默认规则,从而得出确认是阻止还是通过。
- 防火墙的默认规则是对应链里的所有规则执行完以后才会执行的(最后执行的规则)。
如图所示:
四、iptables的4表5链作用关系及工作原理
根据 IPtables的内部结构可以细化分为以功能为做区分的称呼为表,以IPtables动作为区分的称呼为链;其中包含关系为:IPtables(用户空间)-->netfilter (内和空间)-->tables(4表) -->chains(5链)--> 规则policy。
注:可以通过man IPtables 命令查看系统中具体的表和链的说明
1.tables四表的作用
- filter(主机防火墙):对主机的数据包进出进行控制,主要是IPtables默认的表; 表中包含的对应的链:INPUT(进入),OUTPUT(出去),FORWARD(流经,转发)
- nat :用于端口或者IP映射或共享上网; 表中包含的链:POSTROUTING(流出主机后路由),PREROUTING(进入主机前路由),OUTPUT(流出主机)
- mangle:用于配置路由标记 ttl \ tos \ mark(拆解报文,做出修改,并重新封装起来); 表中包含的链: INPUT,OUTPUT,FORWARD,POSTROUTING,PREROUTING
- raw:关闭nat表上启用的连接追踪机制;表中包含的链: OUTPUT,PREROUTING
2.chains链的作用
- INPUT:进入主机的数据包。主机防火墙最关键的链(filter表的INPUT链)
- OUTPUT:流出主机的数据包
- FORWARD:流经主机的数据包
- PREROUTING:进入服务器最先经过的链,NAT端口或IP映射(导向)。(nat表的PREROUTING链)
- POSTROUTIN:在流出服务器最后经过的链,NAT共享上网。局域网共享上网(nat表的POSTROUTING链)
五、iptables安装
1.关闭selinux
不关闭selinux ,iptables不读取配置文件
临时关闭命令:getenforce 0
永久关闭命令:
sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config #修改完成后需要重启才能生效
2.关闭firewalld,并且关闭开机自启
关闭防火墙
systemctl stop firewalld
关闭开机自启
systemctl disable firewalld
查看防火墙状态
systemctl status firewalld
3.查看IPtables是否安装
命令:systemctl status iptables
4.安装iptables
安装命令: yum install iptables-services -y
启动和查看iptables状态
systemctl start iptables
systemctl enable iptables
查看配置文件信息
查看配置文件命令:cat /etc/sysconfig/iptables
1 filter <==表table
2 :INPUT ACCEPT [0:0] 进入控制 chains
3
4 :FORWARD ACCEPT [0:0] 流经控制
5
6 :OUTPUT ACCEPT [0:0]流出控制
7 -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT #<==规则rule
8 -A INPUT -p icmp -j ACCEPT
9 -A INPUT -i lo -j ACCEPT
10 -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
11 -A INPUT -j REJECT --reject-with icmp-host-prohibited
12 -A FORWARD -j REJECT --reject-with icmp-host-prohibited
5.查看启动状态
- 查看启动状态命令:iptables -nL --line-number
-n #<==以数字的形式显示规则
-L #<==列表链里的所有规则
--line-number #<==打印规则序号
-t 指定表(default: `filter')
- 检查iptables内核模块 lsmod |egrep "nat|filter
六、iptables常用命令参数
- iptables -h 查看iptables目录
- 用法解析
1 iptables -[A] chain rule-specification [options] #添加规则到链
2 iptables -I chain [rulenum] rule-specification [options] #插入规则到链
3 iptables -D chain rulenum [options] #根据规则号删除规则
4 iptables -[FZ] [chain] [options] #清除规则清除计数器
5 iptables -[X] chain #删除用户自定义的链。
6 iptables -P chain target [options] #针对链设置默认规则
7 iptables -h #帮助
- 常用语法参数:
1 --append -A chain #添加规则到链
2 --delete -D chain #删除规则从链里
3 --delete -D chain rulenum #根据规则号删除
4 --insert -I chain [rulenum] #插入规则默认到第一条
5 --list -L [chain [rulenum]] #列表规则
6 --flush -F [chain] #清空所有规则
7 --zero -Z [chain [rulenum]] #计数器
8 --policy -P chain target #改默认规则
9 --protocol -p proto #针对协议过滤,例如`tcp'
10 --source -s address[/mask][...] #基于源地址
11 --destination -d address[/mask][...] #基于目的地址
12 --in-interface -i input name[+] #指定进入接口
13 --jump -j target #跳转
14 --numeric -n #数字输出地址和端口
15 --out-interface -o output name[+] # 指定出去接口
16 --table -t table #指定表(default: `filter')
17 --line-numbers #显示规则号 - 根据规则iptables的处理动作
1 *ACCEPT:允许数据包通过。
2 *DROP:直接丢弃数据包,不给任何回应信息,这时候客户端会感觉自己的请求泥牛入海了,过了超时时间才会有反应。
3 *REJECT:拒绝数据包通过,必要时会给数据发送端一个响应的信息,客户端刚请求就会收到拒绝的信息。
4 *SNAT:源地址转换,解决内网用户用同一个公网地址上网的问题。
5 *MASQUERADE:是SNAT的一种特殊形式,适用于动态的、临时会变的ip上。
6 *DNAT:目标地址转换。
7 *REDIRECT:在本机做端口映射。
8 *LOG:在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则,也就是说除了记录以外不对数据包做任何其他操作,仍然让下一条规则去匹配。
- 常用命令示例:
1 iptables -I INPUT -p tcp --dport 23:8809 -j DROP #过滤从23端口到8809端口
2 iptables -I INPUT -p tcp -s 192.168.56.1 -j DROP #封单个IP
3 iptables -I INPUT -p tcp --dport 23:8809 -j DROP #同时封多个端口:从23端口到8809端口
4 iptables -A INPUT -P TCP --dport 80 -j ACCEPT #开发80端口
5 iptables -I OUTPUT -p tcp --dport 80 -j DROP #不允许80端口流出
6 iptables -I INPUT -p tcp -m multiport --dport 21,23,24,80,3306 -j DROP #匹配端口范围
7 iptables -A INPUT -p icmp -s 192.168.56.0/24 --icmp-type 8 -j ACCEPT #设置同网段内可以访问(公司内部可以访问,其他人员不能访问)
8 iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT #允许关联的状态包(ftp协议,21连接端口,20数据传输端口)
七、部署主机防火墙
1、IPtables企业防火墙应用场景
- 场景1:做主机防火墙功能(filter表的INPUT链)。
- 场景2:局域网共享上网,做网关(nat表的POSTROUTING链)。
- 场景3:端口及IP映射(nat表的PREROUTING链),硬防的NAT功能。
- 场景4:实现IP一对一映射(DMZ)。
- ·
2.防火墙部署思路
- 部署主机防火墙默认禁止模式
- 部署企业网关,默认是允许状态
3.实战部署
- 删除策略:各种清零
1 iptables -F
2 iptables -X
3 iptables -Z
4 iptables -F -t nat
5 iptables -X -t nat
6 iptables -Z -t nat - 允许自己 的网段及22端口通过
1 iptables -A INPUT -s 10.0.0.0/24 -j ACCEPT
2 iptables -A INPUT -s 203.81.18.0/24 -j ACCEPT
3 iptables -A INPUT -p tcp --dport 22 -j ACCEPT ##工作中根据自己情况,一般不用 - 设置默认规则策略
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT - 设置其他允许
1 iptables -A INPUT -i lo -j ACCEPT #允许回环地址
2 iptables -A INPUT -p tcp -m multiport --dport 80,443 -j ACCEPT #设置80端口转发
3 iptables -A INPUT -s 172.16.1.0/24 -j ACCEPT
4 iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT#连接状态设置4.生产场景维护----封掉一个IP,封掉端口
- 日常改/etc/sysconfig/iptables配置,添加到对应的位置永久生效
-A INPUT -p tcp -m tcp --dport 3306 -j DROP
#封掉规则,要放在里面其他允许规则的上面才能生效。
#允许规则,要放在里面其他允许规则上面才能生效。 重新加载生效:systemctl reload iptables
2.临时封Ip(-I):针对特殊ip重启后规则消失
iptables -I INPUT -s 203.71.78.10 -j DROP
3、常用的规则放在前面生效
八、布置防火墙的最终思路:
- 尽可能不给服务器配置外网IP。可以通过代理转发或者通过防火墙映射。
- 并发不是特别大情况再外网IP的环境,要开启iptables防火墙。如果并发量很大,不能开iptables,影响性能,买硬件防火墙。
Linux防火墙--IPtables企业级配置策略思路的更多相关文章
- Linux防火墙iptables安装配置--使用远程工具Xmanager和ftp服务安装配置
一.linux关闭防火墙: a.用户直接在终端输入:service iptables stop 查看防火墙状况:service iptables status b.root用户在终端输 ...
- Linux防火墙iptables学习
http://blog.chinaunix.net/uid-9950859-id-98277.html 要在网上传输的数据会被分成许多小的数据包,我们一旦接通了网络,会有很多数据包进入,离开,或者经过 ...
- Linux防火墙iptables学习笔记(三)iptables命令详解和举例[转载]
Linux防火墙iptables学习笔记(三)iptables命令详解和举例 2008-10-16 23:45:46 转载 网上看到这个配置讲解得还比较易懂,就转过来了,大家一起看下,希望对您工作能 ...
- 10.Linux防火墙iptables之SNAT与DNAT
Linux防火墙iptables之SNAT与DNAT 目录 Linux防火墙iptables之SNAT与DNAT SNAT策略及应用 SNAT策略概述 SNAT策略典型应用环境 SNAT策略原理 SN ...
- CentOS防火墙iptables的配置方法详解
CentOS系统也是基于linux中的它的防火墙其实就是iptables了,下面我来介绍在CentOS防火墙iptables的配置教程,希望此教程对各位朋友会有所帮助. iptables是与Linux ...
- Linux防火墙(Iptables)的开启与关闭
Linux防火墙(iptables)的开启与关闭 Linux中的防火墙主要是对iptables的设置和管理. 1. Linux防火墙(Iptables)重启系统生效 开启: chkconfig ipt ...
- linux 防火墙iptables简明教程
前几天微魔部落再次遭受到个别别有用心的攻击者的攻击,顺便给自己充个电,复习了一下linux下常见的防火墙iptables的一些内容,但是无奈网上的很多教程都较为繁琐,本着简明化学习的目的,微魔为大家剔 ...
- Linux防火墙iptables简明教程
前几天微魔部落再次遭受到个别别有用心的攻击者的攻击,顺便给自己充个电,复习了一下linux下常见的防火墙iptables的一些内容,但是无奈网上的很多教程都较为繁琐,本着简明化学习的目的,微魔为大家剔 ...
- linux 防火墙 iptables实例讲解
端口为例): 显示现有规则: iptables –L -n 清空现有规则表: iptables -F 黑名单:先允许所有数据包通过,后逐条添加黑名单规则. iptables –A INPUT–p tc ...
随机推荐
- Tableau如何绘制双柱折线组合图
一.数据准备如下所示 二.将日期拖拽至列,销售额拖拽至行,结果如下所示 三.右键日期排序-选择手动排序 四.将指标拖拽至标记卡上 五.创建计算字段增长率 SUM(IF YEAR(日期)=2017 th ...
- WinFrm中多线程操作窗体属性
首先声明一个委托. delegate void SetTextCallback(string text); 然后再写一个事件. private void SetInfo(string text) { ...
- Swagger请求报错:TypeError: Failed to execute 'fetch' on 'Window': Request with GET/HEAD method cannot have body.
TypeError: Failed to execute 'fetch' on 'Window': Request with GET/HEAD method cannot have body. 如下图 ...
- 交通运输类文档下载——JT/T 808-2019、JT/T 809-2019文档分享
JT/T 808-2019.JT/T 809-2019文档分享 网盘:https://pan.baidu.com/s/1vfgenani8WR3in2lua3qWQ提取码:fktd 官网下载808协议 ...
- Linux c++编译总结(持续更新)
1. 没有定义的符号 这类的错误, 解决办法:A. 添加对应的头文件(源文件), B.前置声明 1.1 错误描述: error: variable has incomplete type 'class ...
- 【LeetCode】219. Contains Duplicate II 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 使用set 使用字典 日期 题目地址:https:/ ...
- 【LeetCode】394. Decode String 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 栈 日期 题目地址:https://leetcode ...
- 第二十九个知识点:什么是UF-CMA数字签名的定义?
第二十九个知识点:什么是UF-CMA数字签名的定义? 第16篇博客给出了DSA,Schnoor和RSA-FDH签名方案的细节,但是签名方案是什么?它应该保证什么样的安全性? 一个签名方案\(S\)是一 ...
- Chapter 14 G-estimation of Structural Nested Models
目录 14.1 The causal question revisited 14.2 Exchangeability revisited 14.3 Structural nested mean mod ...
- The Limitations of Deep Learning in Adversarial Settings
目录 概 主要内容 alg2, alg3 一些有趣的实验指标 Hardness measure Adversarial distance Nicolas Papernot, Patrick McDan ...