Linux防火墙--IPtables配置策略思路

本文涉及的产品
公网NAT网关,每月750个小时 15CU
云防火墙,500元 1000GB
简介: Linux防火墙--IPtables配置策略思路防火墙定义:是通过有机结合各类用于安全管理与筛选的软件和硬件设备,帮助计算机网络于其内、外网之间构建一道相对隔绝的保护屏障,以保护用户资料与信息安全性的一种技术。防火墙发展应用:最早是ipfwadm和ipchains(Redhat7.0), 其次是iptables,Centos7开始后friewalld迅速发展,对iptables进行了 改良,目前还是iptables用的比较多。

Linux防火墙--IPtables配置策略思路

Linuxyouhuiquan.jpg

阅读目录

  • 一、防火墙简介
  • 二、IPtables介绍
  • 三、iptables包过滤流程
  •         iptables工作流程
  • 四、iptables的4表5链作用关系及工作原理
  •   1.tables四表的作用
  •   2.chains链的作用
  • 五、iptables安装
  •   1.关闭selinux
  •    2.关闭firewalld,并且关闭开机自启
  •  
  •   3.查看IPtables是否安装
  •    4.安装iptables
  •   5.查看启动状态
  • 六、iptables常用命令参数
  • 七、部署主机防火墙
  • 1、IPtables企业防火墙应用场景
  •   2.防火墙部署思路
  •   3.实战部署
  • 八、布置防火墙的最终思路:

 


回到顶部

一、防火墙简介

防火墙定义:是通过有机结合各类用于安全管理与筛选的软件和硬件设备,帮助计算机网络于其内、外网之间构建一道相对隔绝的保护屏障,以保护用户资料与信息安全性的一种技术。

防火墙发展应用:最早是ipfwadm和ipchains(Redhat7.0), 其次是iptables,Centos7开始后friewalld迅速发展,对iptables进行了 改良,目前还是iptables用的比较多。

防火墙的布防位置:

  • 前提:架构部署在web与企业服务相连的部分(网站最前端上联口交换机前)。
  • 串联部署:最佳 的存放部署,防护性强,但如果防火墙出问题后,整个企业服务就会受影响。
  • 旁路部署:综合最好的存放部署方式 ,不会因防火墙出问题而导致整个企业服务受影响,但防护相对串联部署较薄弱。

回到顶部

二、IPtables介绍

  1. 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

永久关闭命令:

1

sed -'s#SELINUX=enforcing#SELINUX=disabled#g'/etc/selinux/config  #修改完成后需要重启才能生效

 

   2.关闭firewalld,并且关闭开机自启

关闭防火墙

1

systemctl stop firewalld

关闭开机自启

1

systemctl disable firewalld

查看防火墙状态

1

systemctl status firewalld

 

 

  3.查看IPtables是否安装

命令:systemctl status iptables

 

   4.安装iptables

安装命令: yum install iptables-services -y

启动和查看iptables状态

1

2

systemctl start iptables

systemctl enable iptables

查看配置文件信息

1

查看配置文件命令: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常用命令参数

  1. 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,封掉端口
  1. 日常改/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、常用的规则放在前面生效

回到顶部

八、布置防火墙的最终思路:

  1. 尽可能不给服务器配置外网IP。可以通过代理转发或者通过防火墙映射。
  2. 并发不是特别大情况再外网IP的环境,要开启iptables防火墙。如果并发量很大,不能开iptables,影响性能,买硬件防火墙

转载地址https://www.cnblogs.com/lixin012007/p/15769078.html

相关文章
|
9天前
|
缓存 资源调度 安全
深入探索Linux操作系统的心脏——内核配置与优化####
本文作为一篇技术性深度解析文章,旨在引领读者踏上一场揭秘Linux内核配置与优化的奇妙之旅。不同于传统的摘要概述,本文将以实战为导向,直接跳入核心内容,探讨如何通过精细调整内核参数来提升系统性能、增强安全性及实现资源高效利用。从基础概念到高级技巧,逐步揭示那些隐藏在命令行背后的强大功能,为系统管理员和高级用户打开一扇通往极致性能与定制化体验的大门。 --- ###
31 9
|
11天前
|
存储 安全 数据管理
如何在 Rocky Linux 8 上安装和配置 Elasticsearch
本文详细介绍了在 Rocky Linux 8 上安装和配置 Elasticsearch 的步骤,包括添加仓库、安装 Elasticsearch、配置文件修改、设置内存和文件描述符、启动和验证 Elasticsearch,以及常见问题的解决方法。通过这些步骤,你可以快速搭建起这个强大的分布式搜索和分析引擎。
28 5
|
12天前
|
机器学习/深度学习 负载均衡 算法
深入探索Linux内核调度机制的优化策略###
本文旨在为读者揭开Linux操作系统中至关重要的一环——CPU调度机制的神秘面纱。通过深入浅出地解析其工作原理,并探讨一系列创新优化策略,本文不仅增强了技术爱好者的理论知识,更为系统管理员和软件开发者提供了实用的性能调优指南,旨在促进系统的高效运行与资源利用最大化。 ###
|
11天前
|
监控 关系型数据库 MySQL
Linux环境下MySQL数据库自动定时备份策略
在Linux环境下,MySQL数据库的自动定时备份是确保数据安全和可靠性的重要措施。通过设置定时任务,我们可以每天自动执行数据库备份,从而减少人为错误和提高数据恢复的效率。本文将详细介绍如何在Linux下实现MySQL数据库的自动定时备份。
25 3
|
11天前
|
监控 网络协议 算法
Linux内核优化:提升系统性能与稳定性的策略####
本文深入探讨了Linux操作系统内核的优化策略,旨在通过一系列技术手段和最佳实践,显著提升系统的性能、响应速度及稳定性。文章首先概述了Linux内核的核心组件及其在系统中的作用,随后详细阐述了内存管理、进程调度、文件系统优化、网络栈调整及并发控制等关键领域的优化方法。通过实际案例分析,展示了这些优化措施如何有效减少延迟、提高吞吐量,并增强系统的整体健壮性。最终,文章强调了持续监控、定期更新及合理配置对于维持Linux系统长期高效运行的重要性。 ####
|
11天前
|
安全 网络协议 Linux
Linux操作系统的内核升级与优化策略####
【10月更文挑战第29天】 本文深入探讨了Linux操作系统内核升级的重要性,并详细阐述了一系列优化策略,旨在帮助系统管理员和高级用户提升系统的稳定性、安全性和性能。通过实际案例分析,我们展示了如何安全有效地进行内核升级,以及如何利用调优技术充分发挥Linux系统的潜力。 ####
32 1
|
1月前
|
网络协议 Ubuntu 网络安全
|
25天前
|
Java Linux 网络安全
NIFI在Linux服务区上的部署配置过程是什么?
【10月更文挑战第21天】NIFI在Linux服务区上的部署配置过程是什么?
40 2
|
7天前
|
存储 运维 Linux
Linux防火墙firewall的使用
CentOS 7 中的 firewalld 是基于 Netfilter 的防火墙服务,支持动态配置,无需重启服务即可生效。它通过区域管理网络流量,每个区域可以设置不同的防火墙规则。默认区域为 public,可以通过命令行工具 firewall-cmd 进行管理和配置。firewalld 提供了丰富的预定义服务和区域,方便用户根据需求进行灵活配置。
20 0
|
1月前
|
Ubuntu Linux 编译器
Linux/Ubuntu下使用VS Code配置C/C++项目环境调用OpenCV
通过以上步骤,您已经成功在Ubuntu系统下的VS Code中配置了C/C++项目环境,并能够调用OpenCV库进行开发。请确保每一步都按照您的系统实际情况进行适当调整。
281 3