2019独角兽企业重金招聘Python工程师标准>>>
防火墙简介
防火墙,一种高级访问控制设备,置于不同网络安全域之间,它通过相关的安全策略来控制(允许、拒绝、监视、记录)进出网络的访问行为。防火墙主要由服务访问规则、验证工具、包过滤和应用网关4个部分组成。实质上是指由软硬件组合成的一个在内外网之间构造的一种保护屏障,它是一种隔离技术。因此从物理上区分,可以分为软件和硬件防火墙,从逻辑上区分,可以分为主机和网络防火墙,而我们现在要讲到的iptables,是属于防火墙中的软件防火墙的范畴,但它只是一个命令行工具或者说是一种客户端代理,并不是真正的防火墙,用户通过这个代理,把安全设定执行到真正的防火墙框架中,这个框架叫做Netfilter。
防火墙扫描流经它的网络通信,通过这样的做法能够过滤掉一些攻击,以免其在目标计算机上被执行。防火墙还可以关闭不使用的端口,而且还能禁止特定端口的流出通信,封锁特洛伊木马。最后,它可以禁止来自特殊站点的访问,从而防止来自不明入侵者的所有通信。
防火墙原理
防火墙的作用
工作于主机或网络的边缘,对于进出本主机或网络的报文根据定义好的检查规则作匹配检测,对于能够被规则匹配到的报文做出相应处理的组件;
防火墙的种类
主机防火墙
网络防火墙
防火墙的功能
1、网络安全的屏障
2、强化网络安全策略
3、监控审计
4、监控审计
5、数据包过滤
6、网络IP地址转换
7、虚拟专用网络
8、日志记录与事件通知
iptables的优点
最大优点是它可以配置有状态的防火墙,有状态的防火墙能够指定并记住为发送或接收信息包所建立的连接的状态。防火墙可以从信息包的连接跟踪状态获得该信息。在决定新的信息包过滤时,防火墙 所使用的这些状态信息可以增加其效率和速度。这里有4种有效状态,名称分别为ESTABLISHED、INVALID、NEW和RELATED。
防火墙的四表功能
filter :过滤 ,防火墙
nat : network , adress ,translation , 网络地址转换
mangle : 拆解报文, 做出修改 ,封装报文 。
raw : 关闭nat 表上启用的连接追踪机智
注意 : nat : Network Address Translation ,安全性,网络层+传输层;
Proxy : 代理,应用层;
nat :
SNAT : 只修改请求报文的源地址;
DNAT : 只修改请求报文的目标地址;
源地址转换 : iptables -t nat -A POSTROUTING -s LocalNET ! -d LocalNET -j SNAT –to -source ExtIP
iptables -t nat -A POSTROUTING -s LocalNET ! -d LocalNET -j MASQUERADE
目标地址转换 : iptables -t nat -A POSTROUTING -d ExtIP –p tcp|udp –dport PORT -j DNAT –to-destination InterServerIP[:PORT]
数据包过滤匹配流程
键 (内置) :
PREROUTTING
INPUT
FORWARD
OUTPUT
POSTROUTING
报文流向
流入 : PREROUTING –>INPUT
流出 : OUTPUT –> POSTROUTING
转发 :PREROUTING –> FORWARD –>POSTROUTING
各功能的分别实现 的位置:
filter : INPUT , FORWARD ,OUTPUT
nat : PREROUTING( DNAT ), OUTPUT ,POSTROUTING ( SNAT )
mangle : PREROUTING , INPUT ,FORWARD , OUTPUT ,POSTROUTING
raw : PREROUTING , OUTPUT
路由发生的时刻 :
报文进入本机后:
判断目标主机 :
报文发出之前 :
判断经由哪个接口送出下一跳 :
iptables : 四表五链
添加规则时的考虑点 :
(1) 要实现哪种功能 : 判断添加在哪张表上;
(2) 报文流经的路径 : 判断添加在哪张链上;
链 : 链上规则的次序,即为检查的次序 :因此隐含一定的法则
(1) 同类规则(访问同一应用),匹配范围小的放上面;
(2)不同类规则(访问不同应用),匹配到报文频率较大的放上面;
(3)将那些可由一条规则描述的多个规则合并为一个;
(4)设置默认策略;
功能优先级次序 : raw > mangle > nat c >filter
规则 :
组成部分 : 报文的匹配条件,匹配到之后处理动作
匹配条件 : 根据协议报文特征指定
基本匹配条件 :
扩展匹配条件 :
处理动作:
内建处理机制
自定义处理机制
注意 : 报文不会经过自定义链, 只能在内置链上通过规则经行引用后生效。
iptables : 规则管理工具
添加、修改、删除、显示等;
规则和链有计数器:
pkgs : 由规则或链所匹配到报文的个数;
bytes : 由规则或链匹配到的所有报文大小之和;
目标 :
-j TARGET : jump 指定的TARGET
ACCEPT : 接收
DROP : 丢弃
REJECT : 拒绝
RETURN : 返回调用链
REDIRECT : 端口重定向
LOG : 记录日志
MARK : 做防火墙标记
DNAT : 目标地址转换
SNAT : 源地址转换
MASQUERADE : 地址
核心转发 : /proc/sys/net/ipv4/ip_forward
/etc/sysct.conf
net.ipv4.ip_forward = 1
扩展匹配 :-m(指定扩展名)
隐式扩展 :对-p protocol指明的协议进行的扩展,可省略-m选项;
显式扩展 : 必须显式指明使用的扩展模块(rpm -ql iptables | grep "\.so")
multiport 扩展 :以离散方式定义多端口匹配,最多指定15个端口;
# iptables -I INPUT -s 172.168.122.1/16 -d 172.168.120 -p tcp -m multiport -dports 22.80 -j ACCEPT
# iptables -I INPUT -d 172.168.122.1/16 -s 172.168.120 -p tcp -m multiport -dports 22.80 -j ACCEPT
iprange扩展
指明连续的(但一般是不能扩展为整个网络)IP地址范围时使用:
conlimit 扩展
根据每客户端IP(也可以是地址块)做并发连接数数量匹配
–connlimit-above n :连接的数量大于n
–connlimit-upto n :连接的数量小于等于n
limit扩展
基于收发报文的速率做检查
令牌桶过滤器
–limit rate [/second|/minute|/hour|/day]
–limit-burst number
state扩展
根据连接追踪机制检查连接的状态
调整连接追踪功能所能够容纳的最大连接数量
/proc/sys/net/nf_conntrack_max
已经追踪到并记录下的连接
/proc/net/nf_conntrack
可追踪的连接状态
NEW : 新发出的请求:连接追踪模板中不存此连接相关的信息条目,因此,将其识别为第一次发出的请求。
ESTABLISHED :NEW 状态之后,连接追踪模板中为其建立的条目失效之前期间内所进行的通信的状态;
INVALIED : 无法识别的连接
扩展
查看iptables使用说明
CentOS 6 : man iptables
CentOS 7 : man iptables-extensions
防火墙【原理】
Netfilter是Linux中的一个子项目,它的主要功能是进行数据包过滤、连接跟踪、地址转换等,而iptables则是netfilter提供的对用户数据包进行过滤、修改等操作的一种命令行工具,当数据包通过网卡进入进入内核时,它得先经过iptables的五条链,这些链都有相应的处理数据包的规则,而我们正是通过在这些链上设置规则来控制管理数据包,从而达到防火墙的功能。每当数据包到达一个链时,iptables就会从链中的所有规则逐一开始校验该数据包是否符合规则中限定的条件。若满足,系统就会根据每个规则定义的方法来处理该数据包;若不满足,iptables则继续检查下一条规则,如果该数据包不符合链中的任意规则,iptables则会该链的默认策略去处理该数据包。
防火墙4种类型:特殊设计的硬件防火墙、数据包过滤型、电路层网关和应用级网关。安全性能高的防火墙系统都是组合运用多种类型防火墙,构筑多道防火墙“防御工事”。
常见的防火墙品牌 : 华为、天融信、深信服、H3C、网域、思科、山石网科、中科网威、飞塔、Juniper、绿盟科技、锐捷网络、启明星辰、佑友、网康、网御星云、NETGEAR、中新金盾、梭子鱼、清信安、D-Link、网神、SonicWALL、迪普科技、东软、博达、paloalto、交大捷普、Check Point、利谱、汉柏。
注意 : 服务器对DDoS攻击流量进行拦截主要是依靠硬件防火墙完成的,
服务器机房常用的防火墙介绍
1、金盾抗DDOS防火墙
金盾抗DDOS防火墙是一款针对ISP接入商、IDC服务商开发的专业性比较强的专业防火墙。测试的效果表明,目前的防御算法对所有已知的拒绝服务攻击是免疫的,也就是说,是完全可以抵抗已知DoS/DDoS攻击的。(下图金盾硬件防火墙价格大约88W一台)
2、深信服防火墙
深信服防火墙可以彻底解决所有dos/ddos攻击(synflood、ackflood、udpflood、icmpflood、igmpflood、arpflood、全连接等),针对CC攻击,已推出DosNipe V8.0版本,此核心极其高效安全,在以往抵御一切拒绝服务攻击的基础上,新增加了抵挡CC攻击,新算法可以高效的抵御所有CC攻击及其变种,识别准确率为100%,没有任何误判的可能性。(深信服防火墙)
3、绿盟黑洞抗DDoS防火墙
绿盟黑洞抗DDoS防火墙是国内高防服务器机房中应用比较广泛的一款抗DoS、DDoS攻击产品,其技术比较成熟,而且防护效果显著,已经得到各大IDC机构的共同认可。黑洞目前分百兆、千兆两款产品,分别可以在相应网络环境下实现对高强度攻击的有效防护,性能远远超过同类防护产品。(下图绿盟防火墙)
绿盟黑洞抗DDoS防火墙所带来的防护:
·自身安全:无IP地址,网络隐身。
·能够对SYN Flood、UDP Flood、ICMP Flood和(M)Stream Flood等各类DoS攻击进行防护。
·可以有效防止连接耗尽,主动清除服务器上的残余连接,提高网络服务的品质、抑制网络蠕虫扩散。
·可以防护DNS Query Flood,保护DNS服务器正常运行。
·可以给各种端口扫描软件反馈迷惑性信息,因此也可以对其它类型的攻击起到防护作用
4、Dosnipe防火墙:
Dosnipe防火墙硬件架构部分主体采取工业计算机(工控机),可以承受恶劣的运行环境,保障设备稳定运行;软件平台是FreeBSD,核心部分算法是自主研发的单向一次性非法数据包识别方法,所有的Filter机制都是在挂在驱动级。可以彻底解决所有dos/ddos攻击(synflood、ackflood、udpflood、icmpflood、igmpflood、arpflood、全连接等),针对CC攻击,已推出DosNipe V8.0版本,此核心极其高效安全,在以往抵御一切拒绝服务攻击的基础上,新增加了抵挡CC攻击,新算法可以高效的抵御所有CC攻击及其变种,识别准确率为100%,没有任何误判的可能性。
Dosnipe防火墙升级之后,具备更多的新特性:
·彻底解决最新的M2攻击。
·支持多线路,多路由接入功能。
·支持流量控制功能。
·更强大的过滤功能。
·最新升级,彻底高效的解决所有DDOS攻击,cc攻击的识别率为100%
主要类型:
网络层防火墙 :网络层防火墙可视为一种 IP 封包过滤器
应用层防火墙 :应用层防火墙可以拦截进出某应用程序的所有封包,并且封锁其他的封包(通常是直接将封包丢弃)可分为:包过滤型防火墙、应用层网关型防火墙、服务器型防火墙。
**数据库防火墙 : **是一款基于数据库协议分析与控制技术的数据库安全防护系统。基于主动防御机制,实现数据库的访问行为控制、危险操作阻断、可疑行为审计。
防火墙的核心技术 :1、 包过滤(工作在网络层) 2、 应用代理(工作在应用层) 3、 状态检测(工作在2-4层) 4、 完全内容检测()
包过滤防火墙技术原理
1、 简单包过滤防火墙不检查数据区
2、 简单包过滤防火墙不建立连接状态表
3、 前后报文无关
4、 应用层控制很弱
应用代理防火墙技术原理
1、 不检查IP\TCP报头
2、 不建立连接状态表
3、 网络层保护比较弱
防火墙分为网络防火墙和应用层防火墙
1、网络防火墙
网络防火墙就是一个位于计算机和它所连接的网络之间的防火墙。该计算机流入流出的所有网络通信均要经过此防火墙。防火墙对流经它的网络通信进行扫描,这样能够过滤掉一些攻击以免其在目标计算机上被执行。防火墙还可以关闭不使用的端口。而且它还能禁止特定端口的流出通信,封锁特洛伊木马。最后,它可以禁止来自特殊站点的访问,从而防止来自不明入侵者的所有通信。
2、应用层防火墙
应用层防火墙是在 TCP/IP 堆栈的“应用层”上运作,您使用浏览器时所产生的数据流或是使用 FTP 时的数据流都是属于这一层。应用层防火墙可以拦截进出某应用程序的所有封包,并且封锁其他的封包(通常是直接将封包丢弃)。理论上,这一类的防火墙可以完全阻绝外部的数据流进到受保护的机器里。
因为应用层防火墙的算法会更复杂,过虑更为严格,所以在部署防火墙的时候,要把应用层防火墙部署到网络防火墙的里边。
Linux防火墙体系主要工作在网络层,针对TCP/IP数据包实施过滤和限制,属于典型的包过滤防火墙(网络层防火墙)。
二、iptables的表链结构
1、iptables简介
平时说iptables是防火墙,其实iptables是iptables/netfilter组合中的一个,只有iptables/netfilter才应该叫做防火墙,它是基于软件方式工作的网络防火墙。iptables工作于用户空间,是防火墙的规则编写工具,使用iptables编写规则并且发送到netfilter;防火墙的规则刚放到netfilter中,它是一个能够让规则生效的网络架构,工作于内核空间。
【四个表】
iptables的结构是由tables组成,而tables是由链组成,链又是由具体的规则组成。因此我们在编写iptables的规则时,通过要先指定表,再指定链。tables的作用是区分不同功能的规则,并且存储这些规则。
tables的类型分别有:
2、iptables的表、链结构
iptables是由四表五链组成的,想要配置iptables必须先了解这四表五链
优先级:raw表 > mangle表 > nat表 > filter表
①、raw表
RAW表只使用在PREROUTING链和OUTPUT链上,因为优先级最高,从而可以对收到的数据包在连接跟踪前进行处理。一但用户使用了RAW表,在某个链上,RAW表处理完后,将跳过NAT表和ip_conntrack处理,即不再做地址转换和数据包的链接跟踪处理了。
RAW表可以应用在那些不需要做nat的情况下,以提高性能。如大量访问的web服务器,可以让80端口不再让iptables做数据包的链接跟踪处理,以提高用户的访问速度。
raw内含有两个链:PREROUTING和OUTPUT
②、mangle表
mangle表一般是对数据包进行修改用的
比如在网络的转发过程中,数据包要从X到Z,中间夹了一个Y,当数据从X到Y的时候,Y要运行拆包,看是不是自己的,如果是就收下了,如果不就是重新封装,把源IP改为自己的,而不再是X的了,再进行转发。
mangle表中含五个链:PREROUTING、INPUT、FORWARD、OUTPUT、POSTROUTING
③、nat表
用于nat功能(端口映射,地址映射等)
主要用来处理一些将要到达本机路由和将要离开本机路由的数据包,修改数据包中的源、目标IP地址或端口;其对应的模块为iptable_nat。
nat表内含三个链:PREROUTING、POSTROUTING、OUTPUT
④、filter表
一看名字就知道是用来做过滤用的。filter表是iptables的默认表,如果在设置规则时,不指定表,则默认就是在filter表上操作
filter表内含三个链:INPUT、FORWARD、OUTPUT
2)五链
这五条链其实就是针对防火墙策略的规则
①、PREROUTING
路由前,数据包在经过防火墙前应做如何处理
②、INPUT
在数据包进行进入本机前就做何处理,目标是本机,不是网络内的主机
③、OUTPUT
在数据包离开本机时做何处理,源是本机,目标是其它主机
④、FORWARD
对于转发数据包做如何处理,因为本机可能是一台代理服务器,网络内的其它主机在与互联网通信时都需要经过这台服务器的转发
⑤、POSTROUTING
在数据包离开防火墙时做如何处理
INPUT、OUTPUT链主要用在“主机型防火墙”中,即主要针对服务器本机进行保护的防火墙;而FORWARD、PREROUTING、POSTROUTING链多用在“网络型防火墙”中,
简化版【五条链】
链,也称为钩子函数,它是一系列规则的一个组合,当数据包经过这些狗子函数时,她必须完全匹配每一个钩子函数中的所有规则,方能进入下一个钩子函数。
【语法规则】
语法:iptables [-t 表名] 命令选项 [链名] [条件匹配] [-j 目标动作或跳转]
1)常用的命令选项:
-t:指定要操纵的表(四个表);
-A:向规则链中添加条目;
-D:从规则链中删除条目;
-i:向规则链中插入条目;
-R:替换规则链中的条目;
-L:显示规则链中已有的条目;
-F:清楚规则链中已有的条目;
-Z:清空规则链中的数据包计算器和字节计数器;
-N:创建新的用户自定义规则链;
-P:定义规则链中的默认目标;
-h:显示帮助信息;
-p:指定要匹配的数据包协议类型;
-s:指定要匹配的数据包源
2)常用的处理动作:
ACCEPT:允许数据包通过
DROP:直接丢弃数据包,不给任何回应信息
REJECT: 拒绝数据包通过,必要时会给数据发送端一个响应的信息。
LOG:在/var/log/messages文件中记录日志然后将数据包传递给下一条规则
REDIRECT: 端口映射。
SNAT :源地址转换,修改包来源IP为某IP或IP范围,做内网和公网之间的转换。
DNAT::目标地址转换。 修改数据包目的地IP为某 Ip 或 IP 范围。
3)常用的条件匹配:
1、状态匹配:-m state –state 连接状态
NEW:与任何连接无关的
ESTABLISHED:响应请求或已建立连接的
RELATED:与已有连接有相关性的,如FTP数据连接
2、MAC地址匹配:-m mac –mac-source MAC地址
eg:iptables -A INPUT -m mac –mac-source f0:1b:12:12:22:4f -j DROP
3、IP范围匹配:-m iprange –src-range IP范围
eg:iptables -A FORWARD -p tcp -m iprange –src-range 192.168.0.1-192.168.0.10 -j ACCEPT
4、多端口匹配:-m multiport –sports 源端口列表 和 -m multiport –sports 目的端口列表
eg:iptables -A INPUT -p tcp -m multiport –dport 11,29,116,121 -j ACCEPT
4)常用的一些iptables策略:
1、拒绝转发来自192.168.2.33主机的数据
iptables -A FORWARD -s 192.168.2.33 -j REJECT
2、允许转发来自192.168.2.1/99网段的数据
iptables -A FORWARD -s 192.168.2.1/99 -j ACCEPT
3、允许本机开放从TCP端口20-1024提供的应用服务。
iptables -A INPUT -p tcp –dport 20:1024 -j ACCEPT
iptables -A OUTPUT -p tcp –sport 20:1024 -j ACCEPT
4、只允许管理员从202.13.0.0/16网段使用SSH远程登录防火墙主机。
iptables -A INPUT -p tcp –dport 22 -s 202.13.0.0/16 -j ACCEPT
iptables -A INPUT -p tcp –dport 22 -j DROP
5、 允许转发来自192.168.0.0/24局域网段的DNS解析请求数据包。
iptables -A FORWARD -s 192.168.0.0/24 -p udp –dport 53 -j ACCEPT
iptables -A FORWARD -d 192.168.0.0/24 -p udp –sport 53 -j ACCEPT
6、屏蔽ip 110.1.1.1的访问
iptables -I INPUT -s 110.1.1.1 -j DROP
7、屏蔽从123.0.0.1到123.255.255.254 : iptables -I INPUT -s 123.0.0.0/8 -j DROP
8、屏蔽从从123.45.0.1到123.45.255.254 : iptables -I INPUT -s 124.45.0.0/16 -j DROP
9、屏蔽从从123.45.6.1到123.45.6.254 : iptables -I INPUT -s 123.45.6.0/24 -j DROP
10、允许所有本机向外的访问 : iptables -A OUTPUT -j ACCEPT
11、允许访问22端口 : iptables -A INPUT -p tcp –dport 22 -j ACCEPT
12、打开3306端口
firewall-cmd –add-port=3306/tcp –permanent
firewall-cmd –zone=public –add-port=80/tcp –permanent #开启3306端口
5)常用的iptables命令:
1、查看当前 IPTABLES 规则
service iptables status
2、 将所有iptables以序号标记显示
iptables -L -n –line-numbers
3、 比如要删除INPUT里序号为22的规则
iptables -D INPUT 22
iptables数据包的过滤流程
为了更直观的表现数据包的过滤流程,请参考第二步及下图
更多介绍 : http://blog.51cto.com/linuxgentoo/1542782
注意 :
在centos6上,我们用的是iptables服务,iptables: 包过滤型的防火墙
在centos7上,我们用的是firewalld服务。
同样的,centos6上安装的是iptables包,而centos7上安装的是firewalld包。
centos6还是centos7,核心其实都是netfilter,netfilter是linux的一个内核模块,iptables命令是linux内核自带的。
防火墙的类型
1. 从软、硬件形式上分为 软件防火墙和硬件防火墙以及芯片级防火墙。 2.从防火墙技术分为 “包过滤型”和“应用代理型”两大类。 3.从防火墙结构分为 < 单一主机防火墙、路由器集成式防火墙和分布式防火墙三种。 4. 按防火墙的应用部署位置分为 边界防火墙、个人防火墙和混合防火墙三大类。 5. 按防火墙性能分为 百兆级防火墙和千兆级防火墙两类。
CentOS6.5 防火墙
| [linux@localhost ~]$service iptable status 查看防火墙的状态
[linux@localhost ~]$servcie iptables stop –临时关闭防火墙
[linux@localhost ~]$servcie iptables off –永久关闭防火墙
|
(1)查看iptables开机状态:
[root@localhost ~]# chkconfig –list | grep iptables iptables 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭
(2)关闭selinux
[root@localhost ~]# vim /etc/selinux/config
#SELINUX=enforcingSELINUX=disabled # 修改为disabled# SELINUXTYPE= can take one of these
LINUX开启允许对外访问的网络端口命令 :
LINUX通过下面的命令可以开启允许对外访问的网络端口:
/sbin/iptables -I INPUT -p tcp –dport 8000 -j ACCEPT #开启8000端口
/etc/rc.d/init.d/iptables save #保存配置
/etc/rc.d/init.d/iptables restart #重启服务
查看端口是否已经开放
/etc/init.d/iptables status
要开放22,80,8080 端口,输入以下命令即可
/sbin/iptables -I INPUT -p tcp –dport 80 -j ACCEPT
/sbin/iptables -I INPUT -p tcp –dport 22 -j ACCEPT
/sbin/iptables -I INPUT -p tcp –dport 8080 -j ACCEPT
2. 修改文件
vim /etc/rc.d/init.d/iptables
添加上述文本
3. 保存:
/etc/rc.d/init.d/iptables save
4. 查看打开的端口:
/etc/init.d/iptables status
5. 重启
5.1 /etc/init.d/iptables restart (临时有效)
5.2 chkconfig iptables off/on (永久有效)
当服务器成为肉鸡时候,采取的措施 :
临时采取的防范措施就是:利用iptables阻止服务器向外发送udp数据包。然后再查找应用,查找漏洞清除木马文件。
iptables -A OUTPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p tcp -j ACCEPT
iptables -A OUTPUT -p udp –dport 53 -j ACCEPT
iptables -P OUTPUT DROP
这个规则就是阻止了除了DNS要用到的53端口的其他一切udp端口,因为在此之前做了只是封掉7000端口,等会儿发现攻击改变了端口。
在服务器流量很大的时候分析本地新增哪些udp端口
netstat -lpnut|grep udp
查找出了是1833端口,然后根据1833端口查找相关的进程
ps -ef|grep 1833
得出的进程为freebsd
然后根据进程查找所对应的应用的位置
lsof | grep -i freebsd
iptables更多介绍:http://www.cnblogs.com/MYue/p/7000821.html
CentOS 7 防火墙
firewalld有图形界面和工具界面,由于我在服务器上使用,图形界面请参照官方文档,本文以字符界面做介绍
firewalld的字符界面管理工具是 firewall-cmd
firewall-cmd –state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running);
firewalld默认配置文件有两个:/usr/lib/firewalld/ (系统配置,尽量不要修改)和 /etc/firewalld/ (用户配置地址)
安装firewalld
# yum install firewalld firewall-config
# systemctl enable firewalld
# systemctl start firewalld
关闭防火墙:
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
服务
启动一个服务:systemctl start firewalld.service
关闭一个服务:systemctl stop firewalld.service
重启一个服务:systemctl restart firewalld.service
显示一个服务的状态:systemctl status firewalld.service
在开机时启用一个服务:systemctl enable firewalld.service
在开机时禁用一个服务:systemctl disable firewalld.service
查看服务是否开机启动:systemctl is-enabled firewalld.service;echo $?
查看已启动的服务列表:systemctl list-unit-files|grep enabled
Centos 7 firewall 命令:
firewall-cmd –list-ports #查看已经开放的端口
# firewall-cmd –zone=public –list-ports # 查看所有开放的端口
#firewall-cmd –zone=public –add-port=9000-9999/tcp –permanent #开启一个范围的端口
#firewall-cmd –zone=public –remove-port=80/tcp –permanent #删除一个端口
#firewall-cmd –reload #更新防火墙规则
firewall-cmd –zone=public –add-port=80/tcp –permanent #开启端口
命令含义:
–zone #作用域
–add-port=80/tcp #添加端口,格式为:端口/通讯协议
–permanent #永久生效,没有此参数重启后失效
运行、停止、禁用firewalld
systemctl start firewalld #启动firewall
firewall-cmd –reload #重启firewall
#关闭状态
systemctl stop firewalld.service #停止/禁用firewall
systemctl disable firewalld.service #禁止firewall开机启动
firewall-cmd –state = systemctl status firewalld #查看默认防火墙状态(关闭后显示notrunning,开启后显示running;关闭状态(disabled ))
zone 增删查改设
查看全部的zone
# firewall-cmd –get-zones
block dmz drop external home internal public trusted work
查看Firewalld的当前运行状态,输入如下命令:
$ firewall-cmd –state
罗列出预定义的区域:
$ firewall-cmd –get-zones
获取任何特定区域的所有相关信息:
$ firewall-cmd –zone= –list-all
你也能列出所有支持的服务:
$ firewall-cmd –get-services
更新firwalld:
$ firewall-cmd –set-default-zone=
添加或删除额外的服务。
$ firewall-cmd–zone=–add-service= $ firewall-cmd–zone=–remove-service=
你能通过如下命令列出任何特定区域中所有开放的端口:
$ firewall-cmd –zone= –list-ports
你可用如下方式管理TCP/UDP端口的增加与删除:
$ firewall-cmd–zone=–add-port= $ firewall-cmd–zone=–remove-port=
你可以如下命令添加或删除端口的转发:
$ firewall-cmd–zone=–add-forward-port= $ firewall-cmd–zone=–remove-forward-port=
查看默认的zone
# firewall-cmd –get-default-zone
public
修改默认的zone
# firewall-cmd –set-default-zone=work
success
指定网卡查询zone
# firewall-cmd –get-zone-of-interface=ens33
work
# firewall-cmd –get-zone-of-interface=ens37
no zone
给指定网卡设置zone
# firewall-cmd –zone=public –add-interface=ens37
success
给指定网卡修改zone
# firewall-cmd –zone=dmz –change-interface=lo
success
给指定网卡删除zone
# firewall-cmd –zone=dmz –remove-interface=lo
success
# firewall-cmd –get-zone-of-interface=lo
no zone
查看所有网卡所在的zone
# firewall-cmd –get-active-zones
dmz
interfaces: ens37
work
interfaces: ens33
service 增删查改设
查看所有的service,(其实都是一些服务的名字)
# firewall-cmd –get-services
查看当前zone的service
# firewall-cmd –list-services
ssh dhcpv6-client
查看指定zone下的service
# firewall-cmd –zone=public –list-service
ssh dhcpv6-client
把http服务添加指定zone里面
# firewall-cmd –zone=public –add-service=http
success
# firewall-cmd –zone=public –list-service
ssh dhcpv6-client http
把http服务添加指定zone里面,并写入配置文件
# firewall-cmd –zone=public –add-service=http –permanent
success
# cat /etc/firewalld/zones/public.xml
<service name="http"/>
删掉指定zone的http服务
# firewall-cmd –zone=public –remove-service=http
success
firewalld 文件
/etc/firewalld/zones/ 是zone类型开头.xml格式文件。还有前面文件.old结尾的文件的备份。例如:
public.xml public.xml.old。分别保存了现在的文件,和修改之前的备份,用于恢复。
/etc/firewalld/services/ 是service类型的文件。
/usr/lib/firewalld/ 里面的 zones 和 services 目录里,分别保存了模板文件。用于手动添加firewalld规则。
实例
需求:ftpd服务端口21修改为1121。在 work zone下放行。
新增service文件
# cp /usr/lib/firewalld/services/ftp.xml /etc/firewalld/services/
# vim /etc/firewalld/services/ftp.xml
<port protocol="tcp" port="21"/> 修改为 <port protocol="tcp" port="1121"/>
新增work文件
# cp /usr/lib/firewalld/zones/work.xml /etc/firewalld/zones/
# vim /etc/firewalld/zones/work.xml
新增一行 <service name="ftp"/>
重载firewalld
# firewall-cmd –reload
查看work zone
# firewall-cmd –zone=work –list-services
ssh dhcpv6-client ftp
CentOS 7 以下版本 iptables 命令
如要开放80,22,8080 端口,输入以下命令即可
/sbin/iptables -I INPUT -p tcp –dport 80 -j ACCEPT
/sbin/iptables -I INPUT -p tcp –dport 22 -j ACCEPT
/sbin/iptables -I INPUT -p tcp –dport 8080 -j ACCEPT
然后保存:
/etc/rc.d/init.d/iptables save
查看打开的端口:
/etc/init.d/iptables status
关闭防火墙
1) 永久性生效,重启后不会复原
开启: chkconfig iptables on
关闭: chkconfig iptables off
2) 即时生效,重启后复原
开启: service iptables start
关闭: service iptables stop
查看防火墙状态: service iptables status
CentOS7和6的默认防火墙的区别
CentOS 7默认使用的是firewall作为防火墙,使用iptables必须重新设置一下
1、直接关闭防火墙
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
2、设置 iptables service
yum -y install iptables-services
如果要修改防火墙配置,如增加防火墙端口3306
vi /etc/sysconfig/iptables
增加规则
-A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT
保存退出后
systemctl restart iptables.service #重启防火墙使配置生效
systemctl enable iptables.service #设置防火墙开机启动
最后重启系统使设置生效即可。
systemctl start iptables.service # 打开防火墙
systemctl stop iptables.service #关闭防火墙
iptables将本机80端口转发到本地8080端口
# iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
解决主机不能访问虚拟机CentOS中的站点
前阵子在虚拟机上装好了CentOS6.2,并配好了apache+php+mysql,但是本机就是无法访问。一直就没去折腾了。
具体情况如下
1. 本机能ping通虚拟机
2. 虚拟机也能ping通本机
3.虚拟机能访问自己的web
4.本机无法访问虚拟机的web
后来发现是防火墙将80端口屏蔽了的缘故。
检查是不是服务器的80端口被防火墙堵了,可以通过命令:telnet server_ip 80 来测试。
解决方法如下:
/sbin/iptables -I INPUT -p tcp –dport 80 -j ACCEPT
然后保存:
/etc/rc.d/init.d/iptables save
重启防火墙
/etc/init.d/iptables restart
CentOS防火墙的关闭,关闭其服务即可:
查看CentOS防火墙信息:/etc/init.d/iptables status
关闭CentOS防火墙服务:/etc/init.d/iptables stop
本篇文章来源于 Linux公社网站(www.linuxidc.com) 原文链接:https://www.linuxidc.com/Linux/2016-12/138979.htm
iptables规则持久化
设定防火墙规则
iptables -A INPUT -s 1.1.1.1/32 -p tcp -m tcp --dport 22 -j DROPiptables -A INPUT -s 2.2.2.2/32 -p tcp -m tcp --dport 22 -j DROPiptables -A INPUT -s 3.3.3.3/32 -p tcp -m tcp --dport 22 -j DROPiptables -A INPUT -s 4.4.4.4/32 -p tcp -m tcp --dport 22 -j DROP
保存防火墙规则
iptables-save > /etc/sysconfig/iptables
设定开机自动恢复iptables规则
vim /etc/rc.d/rc.localiptables-restore < /etc/sysconfig/iptables
iptables关机自动保存
先清空防火墙规则
iptables -F
保存iptables规则,也就是说将/etc/sysconfig/iptables文件清空
iptables-save > /etc/sysconfig/iptables
手动生成一些iptables规则
iptables -A INPUT -s 1.1.1.1/32 -p tcp -m tcp --dport 22 -j DROPiptables -A INPUT -s 2.2.2.2/32 -p tcp -m tcp --dport 22 -j DROPiptables -A INPUT -s 3.3.3.3/32 -p tcp -m tcp --dport 22 -j DROPiptables -A INPUT -s 4.4.4.4/32 -p tcp -m tcp --dport 22 -j DROP
查看iptables规则是否生效
[root@ecs-7740 init.d]# iptables -nvLChain INPUT (policy ACCEPT 27 packets, 1978 bytes)pkts bytes target prot opt in out source destination0 0 DROP tcp -- * * 1.1.1.1 0.0.0.0/0 tcp dpt:220 0 DROP tcp -- * * 2.2.2.2 0.0.0.0/0 tcp dpt:220 0 DROP tcp -- * * 3.3.3.3 0.0.0.0/0 tcp dpt:220 0 DROP tcp -- * * 4.4.4.4 0.0.0.0/0 tcp dpt:22
设定关机时自动保存iptables规则
创建关机时要执行的脚本,并且确保其有执行权限
vim /etc/init.d/shutdownsh iptables-save > /etc/sysconfig/iptableschmod +x /etc/sysconfig/shutdownshls /etc/sysconfig/shutdownsh-rwxr-xr-x 1 root root 40 Jan 16 22:05 shutdownsh
创建软连接文件至rcN.d路径下,N为运行等级
查看linux的防火墙是否阻止80端口
iptables -vnL | grep ":80 "
常见问题 :
1、Linux中,提供TCP/IP包过滤功能的软件叫什么?
答案 :iptables
2.使用iptables 写一条规则:把来源IP为192.168.1.101访问本机80端口的包直接拒绝
iptables -I INPUT -s 192.168.1.101 -p tcp –dport 80 -j REJECT
3.要想把iptable的规则保存到一个文件中如何做?如何恢复?
使用iptables-save重定向到文件中:iptables-save > 1.ipt
使用iptables-restore反重定向回来:iptables-restore < 1.ipt
4.如何将本地80端口的请求转发到8080端口,当前主机IP为192.168.16.1,其中本地网卡eth0:
-
#iptables-tnat -A PREROUTING -d 192.168.16.1 -p tcp –dport 80 -j DNAT –to192.168.16.1:8080
-
或 者:
-
#iptables-t nat -A PREROUTING -i eth0 -d 192.168.16.1 -p tcp -m tcp –dport 80 -j REDIRECT –to-ports 8080
5.包过滤防火墙与代理应用防火墙有什么区别,能列举几种相应的产品吗?
包过滤防火墙是根据包头进行的过滤,并且是处于网络层的,根据包的源ip地址,目标ip地址,协议类型,端口号,进行过滤;代理应用防火墙工作在应用层,他使用代理服务器技术,将内网对外网的访问,变为防火墙对外网的访问,可以对包的内容进行分辨,从而过滤。
代理应用防火墙:天融信GFW4000
包过滤防火墙:华为NE 16E
6.iptables是否支持time时间控制用户行为,如有请写出具体操作步骤。
支持。需要增加相关支持的内核补丁,并且要重新编译内核。
或者使用crontab配合iptables,首先:vi /deny.bat 输入/sbin/iptables -A OUTPUT -p tcp -s 192.168.1.0/24 –dport 80 -j DROP保存退出
打开crontab-e
输入:00 21* * * /bin/sh /deny.bat
7.如何将本地 80 端口的请求转发到 8080 端口,当前主机 IP 为 192.168.2.1
Iptables -A PREROUTING -d 124.42.60.109 -p tcp -m tcp –dport 80 -j DNAT
–to-destination 10.0.0.18:9000
8.如何将本地 80 端口的请求转发到 8080 端口,当前主机 IP 为 192.168.16.1,其中本地
网卡 eth0:
答:
#iptables -t nat -A PREROUTING -d 192.168.16.1 -p tcp –dport 80 -j DNAT –to
192.168.16.1:8080
或者:
#iptables -t nat -A PREROUTING -i eth0 -d 192.168.16.1 -p tcp -m tcp –dport
80 -j REDIRECT –to-ports 8080
9、iptables 是否支持 time 时间控制用户行为,如有请写出具体
10、用 iptables 添加一个规则允许 192.168.0.123 访问本机 3306 端口
iptables -I INPUT 1 -p tcp -m tcp –dport 3306 -s 192.168.0.123 -j ACCE
11、
12、
参考链接 :
http://blog.51cto.com/linuxgentoo/1542782
防火墙技术原理学习笔记
https://blog.csdn.net/sdgihshdv/article/details/78163591
高防服务器中防火墙的功能在哪里? :https://mp.weixin.qq.com/s/y0A8qKePVG0NWXlPFX3gTg
链接:
CentOS 7开放端口和关闭防火墙 : http://www.voidcn.com/code/p-gxqovbjl-p.html
CentOS 7 上的防火墙设置简明教程 | 以阿里云为例 (实战): https://mp.weixin.qq.com/s?__biz=MzA3OTgyMDcwNg==&mid=2650635171&idx=1&sn=376e5c3f1e3f4e58e3f080b90bb896f5&chksm=87a4796eb0d3f0784c082223886fb00efb36ccd3b04d2cec614c9cbbbf982b03fda23b99d1fb#rd
iptables基础 : https://blog.csdn.net/XiaoXiao__cc/article/details/81000397
配置使用rsyslog+loganalyzer收集防火墙及交换机日志 : http://blog.51cto.com/11555417/2046796
linux学习-iptabls简单使用 : http://blog.51cto.com/11555417/2146095
基础运维:iptables防火墙入门到掌握 : http://blog.51cto.com/leoheng/2162158
远程连接配置LINUX iptables : http://blog.chinaunix.net/uid-25266990-id-96064.html
常用iptables脚本 : http://blog.chinaunix.net/uid-25266990-id-3182792.html
Linux上iptables基础应用 :http://blog.51cto.com/xiaogongju/2060940
屏蔽端口 iptables 规则 :http://blog.51cto.com/xiaogongju/2060962
| 更多iptables相关教程见以下内容:
CentOS 7.0关闭默认防火墙启用iptables防火墙 http://www.linuxidc.com/Linux/2015-05/117473.htm
iptables使用范例详解 http://www.linuxidc.com/Linux/2014-03/99159.htm
Linux防火墙iptables详细教程 http://www.linuxidc.com/Linux/2013-07/87045.htm
iptables的备份、恢复及防火墙脚本的基本使用 http://www.linuxidc.com/Linux/2013-08/88535.htm
Linux下防火墙iptables用法规则详解 http://www.linuxidc.com/Linux/2012-08/67952.htm
Linux下iptables防火墙设置 http://www.linuxidc.com/Linux/2015-10/123843.htm
|
业务访问加速实战 | 借助Iptables实现全NAT高速转发:https://mp.weixin.qq.com/s/aVkHpPah1NxUeJ1Y9HwTiw
Iptables与Firewalld防火墙 : https://www.linuxprobe.com/chapter-08.html
Linux iptables防火墙原理详解 : https://blog.csdn.net/liupeifeng3514/article/details/79054442
Linux iptables/netfilter命令参数详解中文手册 :https://blog.csdn.net/liupeifeng3514/article/details/79054425
Linux防火墙详解(一) : http://blog.51cto.com/hmtk520/2046884
Linux防火墙详解(二) : http://blog.51cto.com/hmtk520/2046938
CentOS下iptables封IP的命令讲解 : https://www.jb51.net/os/RedHat/545204.html
CentOS下iptables详解 : https://www.jb51.net/os/RedHat/545198.html
centos 6.6默认iptable规则详解 : https://www.jb51.net/os/RedHat/528120.html
CentOS Linux防火墙配置及关闭方法 : https://www.jb51.net/os/RedHat/86187.html
Redhat(CentOS)下配置iptables防火墙的方法 : https://www.jb51.net/os/RedHat/86191.html
CentOS Linux防火墙配置及关闭方法 : https://www.jb51.net/os/RedHat/86187.html
centOS防火墙iptables的设置教程 : https://www.jb51.net/os/RedHat/68744.html
CentOS 5.4 防火墙配置80端口的方法(适用于centos5.3以上版本) : https://www.jb51.net/os/RedHat/32186.html
LINUX下防火墙iptables的日志管理 : https://www.jb51.net/os/RedHat/1181.html
完全免费自建Linux防火墙的方法 : https://www.jb51.net/os/RedHat/list92_57.html
Linux系统防火墙防止DOS和CC攻击的方法 : https://www.jb51.net/os/RedHat/1064.html
防火墙基础知识 : https://www.jianshu.com/p/47baebc39923
转 Iptables的增删改查 : https://blog.csdn.net/u012402276/article/details/78655808
iptables学习笔记 : https://www.jianshu.com/p/d4211c947ebf
iptables总结 : https://www.jianshu.com/p/f5efb649b1c6
Linux下设置防火墙白名单(RHEL 6和CentOS 7)的步骤 :https://www.jb51.net/article/98622.htm
iptables/netfilter基于layer7实现应用层过滤 : http://blog.51cto.com/scholar/1638149
iptables原理知识 荐 : http://blog.51cto.com/guoting/1543295
Linux防火墙基础知识及应用;设置SNAT策略,局域网共享上网;DNAT策略,发布内部服务器 荐 置顶 : http://blog.51cto.com/13728740/2153394
CentOS 下利用Iptables配置IP地址白名单 : http://blog.51cto.com/nanchunle/1647311
转 出口网关双链路接入不同运营商举例(负载分担) : https://blog.csdn.net/u012402276/article/details/50834984
原 IATF信息保障技术框架的核心思想–纵深防护 : https://blog.csdn.net/u012402276/article/details/50067783
原 HuaWei-USG6000系列防火墙清除Console登录密码 : https://blog.csdn.net/u012402276/article/details/49305605
Centos7—–firewalld详解 : http://blog.51cto.com/11638832/2092203
【原】WAF 防火墙 部署 : https://www.jianshu.com/p/2027ac4333f2
解决CentOS 7安装mysql后3306端口不通 : https://www.cnblogs.com/love-wife/p/10903876.html
转载于:https://my.oschina.net/u/3803405/blog/1821325