彩世界开奖app官网-彩世界平台官方网址(彩票平台)
做最好的网站
来自 彩世界开奖app官网 2019-12-06 22:06 的文章
当前位置: 彩世界开奖app官网 > 彩世界开奖app官网 > 正文

四月16日 linux防火墙 2 彩世界开奖app官网

实验室拟态存储的项目需要通过LVS-NAT模式通过LVS服务器来区隔内外网的服务,所以安全防护的重心则落在了LVS服务器之上。笔者最终选择**通过firewalld放行端口**的方式来实现需求,由于firewall与传统Linux使用的iptable工具有不小的区别,接下来通过博客来记录一下firewalld的配置流程。 ### 1.Firewall服务的简介: > **firewalld**提供了一个 动态管理的防火墙,用以支持不同网络区域的规则,分配对一个网络及其相关链接和界面一定程度的信任。它具备对 IPv4 和 IPv6 防火墙设置的支持。它支持以太网桥,并有分离运行时间和永久性配置选择。它还具备一个通向服务或者应用程序以直接增加防火墙规则的接口。 上述内容是来自[RetHat官方文档]( * **动态防火墙** firewalld 提供的是动态的防火墙服务。配置的改变可以随时随地立刻执行,不再需要保存或者执行这些改变。而iptable的部分,每一个单独更改意味着要清除所有旧有的规则和从 里读取所有新的规则,相对来说firewalld的方式会更加灵活。 * **区域隔离** firewalld 提供了区域隔离的服务,也就是说类似于window之中的公共网络与内部网络的区别,可以通过不同的区域的配置对应的规则来实现不同的网络规则服务。通过区域规则的方式,可以让防火墙的工作更加的灵活。 如图所示,firewalld的防火墙本质上是建立在原生的iptable防火墙之上的抽象层,通过定制规则的方式来利用iptable的功能,所以两个防火墙是上下级并行工作的关系,最终都需要落地到内核之中的netfilter来实现网络包的过滤,来简化防火墙的工作流程。(**传统iptable的“四表五链”实在是有够复杂~~囧rz**) ![iptable与firewalld的逻辑层次]() ### 2.系统环境: 如下图所示,这里需要在LVS的服务器需要部署firewall的防火墙,这里笔者仅简要梳理一下一台LVS服务器的工作: ![系统结构的示意图]() 系统平台:**Centos 7** **LVS服务器**: 双网卡 * 外网地址:219.223.199.154 * 内网地址:192.168.1.17 **对外服务器**: * 服务器A:192.168.1.11 * 服务器B:192.168.1.14 在这里,外网地址之上需要开放的端口为10086端口,通过该端口进行转发。而内网地址之上并不设置限制,我们认为是安全的网络环境。 ### 3.配置流程: Firewalld的配置可通过三种方式: * **firewall-config** 一个图形化的用户接口的配置工具 * **firewall-cmd** 一个命令行的用户接口的配置工具 * **静态xml文件配置** firewalld 的配置设定存储在/etc/firewalld/ 目录下的 xml 文件里。可以通过查看和编辑这些 xml 文件,来实现firewall的配置。 之后笔者的配置流程主要是基于firewall-cmd命令展开,首先启动firewall服务: systemctl start firewalld.service //启动firewalld服务 接下来,开放外网网卡的对应的TCP端口,这里笔者选择public区域,也就是双网卡同时开放端口。 firewall-cmd --zone=public --add-port=10086/tcp --permanent 该命令的配置了public区域添加10086的端口,后续的参数--permannet则代表永久添加。也就是一次写入,后续重启之后依然生效。在firewall之中支持如下不同的区域区隔与过滤规则,之后不同的配置可以参考下面的内容: ######区域 drop: 丢弃所有进入的包,而不给出任何响应 block: 拒绝所有外部发起的连接,允许内部发起的连接 public: 允许指定的进入连接 external: 同上,对伪装的进入连接,一般用于路由转发 dmz: 允许受限制的进入连接 work: 允许受信任的计算机被限制的进入连接,类似 workgroup home: 同上,类似 homegroup internal: 同上,范围针对所有互联网用户 trusted: 信任所有连接 ######过滤规则 source: 根据源地址过滤 interface: 根据网卡过滤 service: 根据服务名过滤 port: 根据端口过滤 icmp-block: icmp 报文过滤,按照 icmp 类型配置 masquerade: ip 地址伪装 forward-port: 端口转发 rule: 自定义规则 之后通过LVS配置好下图是通过ipvsadm配置好的转发机制: ![LVS转发机制]() 通过外网尝试连接外网的ip地址,219.223.199.154:10086,发现并无法联通后端服务器的服务,也就是运行在192.168.1.11与192.168.1.14的服务器。 调用ipvsadm -lcn命令之后,发现内网的转发出现了问题: ![内网转发的问题]() 通过抓包发现LVS服务器在内网网卡192.168.1.17上的通信包被拦截,于是继续通过firewalld-cmd命令开发内网网卡的端口,将内网网卡加入trusted区域: firewall-cmd --zone=trusted --add-interface=enp3s0 接下来可以看到开放了对应内网网卡到trusted,trusted区域允许所有通信包放行,因为内网是相对安全的环境,所以并不存在很大的影响,调用: firewall-cmd --list-all-zones 命令展示firewall的配置结果,public与trusted区域都出于active状态,外网服务能够正常连接内网的端口服务了。 ![]() 可以看到上述public的设置之中涉及到了**对应的ssh服务于dhcpv6-client的服务**,在Firewalld之中是可以直接通过服务来放行对应的内容,也就是上文参数**service**,详细的配置参数需要在目录/usr/lib/firewalld/services之中进行配置,我们尝试打开上文ssh服务的内容: ![SSH服务的配置目录]() 由上文的配置内容可见:**所谓的服务配置防火墙,本身也是通过标注协议与端口的方式进行的,只不过是用服务的逻辑进行包装了。**至于使用哪种形式,各位见仁见智了。 ###小结 梳理了一下在LVS下双网卡Firewalld的配置流程。Debian系列的发行版也是大同小异,只不过Firewalld工具需要自行使用apt-get进行安装。上述内容若有疏漏,望各位指点斧正。

2、网络防火墙

iptables/netfilter网络防火墙:保护某一个网段的局域网的所有主机,而不是只保护本机的一台主机。
(1) 充当网关
(2) 使用filter表的FORWARD链
注意的问题:
(1) 请求-响应报文均会经由FORWARD链,要注意规则的方向性
(2) 如果要启用conntrack机制,建议将双方向的状态为ESTABLISHED的报文直接放行
示例:如何实现下图的要求

彩世界开奖app官网 1

QQ截图20171019203745.png

在a上的操作
ip route add default via 192.168.74.21  在a上只有一个网卡,并将网关指向b的内网ip
在c上的操作
ip route add default via 172.18.21.107 在c上同一只有一个网卡,并将网关指向b的外网ip
在b上操作
echo 1 > /proc/sys/net/ipv4/ip_forward   ---启动路由功能
此时在a上测试
ping 172.18.21.7  ---发现可以ping通
在c上也可以ping通a
ping 192.168.74.100
在b上设置防火墙规则
iptables -A FORWARD -s 192.168.74.0/24 -d 172.18.0.0/16 -p icmp --icmp-type 8 -j ACCEPT ---来自内网的icmp请求包是允许的
iptables -A FORWARD -s 172.18.0.0/16 -d 192.168.74.0/24 -p icmp --icmp-type 0 -j ACCEPT  ---来自外网的icmp回应包是允许的 
iptables -A FORWARD -j REJECT  ---其他都是拒绝的
在a上和c上互相ping对方进行测试
在b上也可以用状态的方式定义防火墙规则
iptables -A  FORWARD  -s 192.168.74.0/24 -d 172.18.0.0/16 -p icmp -m state --state NEW -j ACCEPT ---表示从内网到外网新的icmp请求是允许的
iptables -A FORWARD  -m state --state ESTABLISHED -j ACCEPT ---已经建立的双方向的连接也是被允许的,这样建立icmp连接请求后,从外网回来的包也是被允许的 
iptables -A FORWARD -j REJECT 

在b上如何设置能够实现内网可以访问外部网络的httpd、ssh、ftp服务,而外部网络不可以访问内部网络

iptables -A FORWARD -s 192.168.74.0/24 -p tcp -m multiport --dports 80,22,21 -j ACCEPT  
modprobe nf_conntrack_ftp   ---加载这个模块
iptables -  A FORWARD  -m state --state ESTABLISHED,RELATED -j ACCEPT  --表示已经建立连接的和相关的请求都是被允许的,ftp的数据端口和命令端口是相关联的
iptables -A FORWARD -j REJECT 

总结:icmp的请求包为NEW的连接,回应包属于已经建立的连接,并不是一来一回才算NEW连接,只要请求包能发出去说明已经建立新的连接了,回来的包就属于ESTABLISHED状态。
一个路由表里只能指向一个网关的ip地址,路由器可以充当网关,提供转发功能

4、firewalld服务

  • firewalld是CentOS 7.0新推出的管理netfilter的工具
    firewalld是配置和监控防火墙规则的系统守护进程。可以实现iptables,ip6tables,ebtables的功能
    firewalld服务由firewalld包提供
    firewalld支持划分区域zone,每个zone可以设置独立的防火墙规则
    归入zone顺序:
    先根据数据包中源地址,将其纳为某个zone
    纳为网络接口所属zone
    纳入默认zone,默认为public zone,管理员可以改为其它zone
    网卡默认属于public zone,lo网络接口属于trusted zone
  • firewalld zone分类

彩世界开奖app官网 2

QQ截图20171020102854.png

  • firewalld配置
    firewall-cmd --get-services 查看预定义服务列表
    /usr/lib/firewalld/services/*.xml预定义服务的配置
    三种配置方法
    firewall-config (firewall-config包)图形工具

彩世界开奖app官网 3

QQ截图20171020105238.png

firewall-cmd (firewalld包)命令行工具
/etc/firewalld 配置文件,一般不建议

  • 四月16日 linux防火墙 2 彩世界开奖app官网。firewall-cmd 命令选项
--get-zones列出所有可用区域
--get-default-zone查询默认区域
--set-default-zone=<ZONE>设置默认区域
--get-active-zones列出当前正使用的区域
--add-source=<CIDR>[--zone=<ZONE>]添加源地址的流量到指定区域,如果无--zone= 选项,使用默认区域
--remove-source=<CIDR> [--zone=<ZONE>]从指定区域中删除源地址的流量,如果无--zone= 选项,使用默认区域
--add-interface=<INTERFACE>[--zone=<ZONE>]添加来自于指定接口的流量到特定区域,如果无--zone= 选项,使用默认区域
--change-interface=<INTERFACE>[--zone=<ZONE>]改变指定接口至新的区域,如果无--zone= 选项,使用默认区域
--list-all [--zone=<ZONE>]列出指定区域的所有配置信息,包括接口,源地址,端口,服务等,如果无--zone= 选项,使用默认区域
--add-service=<SERVICE> [--zone=<ZONE>]允许服务的流量通过,如果无--zone= 选项,使用默认区域
--add-port=<PORT/PROTOCOL>[--zone=<ZONE>] 允许指定端口和协议的流量,如果无--zone= 选项,使用默认区域
--remove-service=<SERVICE> [--zone=<ZONE>]从区域中删除指定服务,禁止该服务流量,如果无--zone= 选项,使用默认区域
--remove-port=<PORT/PROTOCOL>[--zone=<ZONE>]从区域中删除指定端口和协议,禁止该端口的流量,如果无--zone= 选项,使用默认区域
--reload删除当前运行时配置,加载存盘的配置

firewall-cmd 命令示例

查看默认zone
firewall-cmd --get-default-zone
将默认zone设为dmz
firewall-cmd --set-default-zone=dmz
在internalzone中增加源地址192.168.0.0/24的永久规则
firewall-cmd--permanent --zone=internal --add-source=192.168.0.0/24
在internalzone中增加协议mysql的永久规则
firewall-cmd--permanent –zone=internal --add-service=mysql
加载新规则以生效
firewall-cmd--reload

实验:配置firewalld

systemctl mask iptables   ---屏蔽iptables,start也启动不起来了,避免管理员误操作
systemctl mask ip6tables  
systemctl status firewalld
systemctl enable firewalld
systemctl start firewalld  --启动firewalld服务
firewall-cmd --get-default-zone
firewall-cmd --set-default-zone public
firewall-cmd --permanent --zone=public --list-all
firewall-cmd --permanent --zone=public --add-port 8080/tcp   ---添加tcp的8080端口到public的zone,把httpd的端口修改为8080,这样别人就可以访问我主机上的httpd服务了
firewall-cmd --reload    ---注意加上 --permanent 选项可以存盘。但不能生效,要输入此条命令才能生效

1、 保存防火墙规则

使用iptables命令定义的规则,手动删除之前,其生效期限为kernel存活期限,也就是关机重启后规则就会消失,保存方法如下

centos 7中的操作
iptables -A INPUT -s 172.18.21.106 -p tcp -m multiport --dports 80,22,21 -j REJECT   ---设置一条防火墙规则
iptables -vnL
iptables-save > /app/iptablerules   ---将规则保存到文件中,
iptables -F   ---清空防火墙规则
iptables -vnL 
iptables-restore < iptablerules  ---重新载入预存规则文件中规则,-n, --noflush:不清除原有规则 -t, --test:仅分析生成规则集,但不提交
iptables -vnL
centos6中的操作
iptables -A INPUT -s 172.18.21.107 -p tcp -m multiport --dports 80,22,21 -j REJECT  ---设置规则
iptables -vnL
service iptables save
cat /etc/sysconfig/iptables   ---执行上面命令的时候实际上是将规则保存到此文件中
iptables -F 
iptables -vnL
service iptables restart   ---重启服务就可以了
iptables -vnL

开机自动重载规则文件中的规则:
(1) 用脚本保存各iptables命令,脚本中有很多iptables命令定义的规则;让此脚本开机后自动运行
/etc/rc.d/rc.local文件中添加脚本路径
/PATH/TO/SOME_SCRIPT_FILE
(2) 用规则文件保存各规则,开机时自动载入此规则文件中的规则
/etc/rc.d/rc.local文件添加
iptables-restore < /PATH/FROM/IPTABLES_RULES_FILE
(3)自定义Unit File,进行iptables-restore
(4)cenots7中/etc/rc.d/rc.local别忘记加执行权限

3、NAT

  • NAT: network address translation
    NAT表中包含的链:PREROUTING,INPUT,OUTPUT,POSTROUTING
    请求报文:修改源/目标IP,由定义如何修改
    响应报文:修改源/目标IP,根据跟踪机制自动实现
    本地网络中的主机一般使用的是私有地址,外部网络使用的是公有地址,私有地址和公有地址是不可以互相通讯的,为了实现通讯,可以将本地网络的主机ip转化为公有地址的外网ip
    SNAT:source NAT POSTROUTING, INPUT
    让本地网络中的主机通过某一特定地址访问外部网络,实现地址伪装
    请求报文:修改源IP
    DNAT:destination NAT PREROUTING, OUTPUT
    把本地网络中的主机上的某服务开放给外部网络访问(发布服务和端口映射),但隐藏真实IP
    请求报文:修改目标IP
    PNAT: port nat,端口和IP都进行修改
    SNAT是修改POSTROUTING链
    DNAT修改的是PREROUTING链

彩世界开奖app官网 4

Paste_Image.png

  • 实现SANT
在a上操作
ip  route add default via 192.168.74.21
在c上的操作
ip route del default via 172.18.21.107   
在b上的操做
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING  -s 192.168.74.0/24 -j SNAT --to-source 172.18.21.107   ---把本地主机的这个网段的私有地址转化为172.18.21.107这个公网地址,这样就可以访问c了
测试
在a上的操作
ping 172.18.21.7
在c上抓包
tcpdump -i ens38 -nn icmp  --可以看到地址是来自172.18.21.107的而不是来自己a,说明根据ip地址判断用户是不准确的,可能通过nat地址转换过了
  • MASQUERADE:动态IP,如拨号网络
    如果NAT和外网连接是拨号网络,那么和外网连接的网卡的公网ip地址是不固定的,可以修改上面的命令实现伪装,转化为任意的公网ip地址
iptables -t nat -R POSTROUTING 1 -s 192.168.74.0/24 -j MASQUERADE  ---将私网地址转化为任意的公网地址
  • 实现DNAT
修改a上的httpd端口为8080
开启httpd服务
在b上的操作,设置DNAT
iptables -t nat -A PREROUTING -d 172.18.21.107 -p tcp --dport 80 -j DNAT --to-destination 192.168.74.100:8080  ---访问目标地址为172.18.21.107的tcp的80端口就将目标地址和端口转换为192.168.74.100的8080端口
在c上测试
curl 172.18.21.107
  • 实现转发REDIRECT
    REDIRECT:
    NAT表
    可用于:PREROUTING OUTPUT 自定义链
    通过改变目标IP和端口,将接受的包转发至不同地址
    --to-ports port[四月16日 linux防火墙 2 彩世界开奖app官网。-port]
    示例:
需要在本机设置iptables -t nat -A PREROUTING -d 192.168.74.100 -p tcp --dport 9527 -j REDIRECT --to-ports 80   ---表示访问本机的tcp的9527端口就把它转发到本机的tcp的80端口

总结:SNAT是源网络地址转换,DNAT是目标网络地址转化,NAT服务器上有两个IP地址,一个是连接内网的,一个是连接外网的,并不一定非得有两个网卡,可以一个网卡绑定多个ip地址,SNAT是内网访问外网时,NAT将内网的ip转化为和外网同网段的ip,这样内网就可以访问外网了,测试时是用curl 172.18.21.7,直接去和外网的某个主机连接,因为是源地址转化,所以在外网的主机上看到的ip地址是经过nat转化后的ip地址;DNAT是外网访问内网的某个服务时,nat将目标地址转化为内网主机上的ip地址和端口号,访问时外网的主机访问的是nat的外网的ip,然后经过nat转换,而不是直接去访问内网的主机,这个和SNAT不同,SNAT是内网直接去访问外网的主机,中间经过nat的转换。DNAT只能转换成为一个内网的主机的ip和端口号,而不能转换为多个,lvs可以根据内部的调度算法实现转换为多个服务器的ip地址和端口。

本文由彩世界开奖app官网发布于彩世界开奖app官网,转载请注明出处:四月16日 linux防火墙 2 彩世界开奖app官网

关键词: