原文地址:http://www.excelib.com/article/293/show

提到ICMP大家应该都很熟悉,可能有人会说:不就是ping吗?但是说到ICMP攻击以及相关防御措施可能就有的人不是非常清楚了。

ICMP的概念
要想理解ICMP攻击以及防范我们还得从ICMP的概念说起,ICMP是“Internet Control Message Protocol”的缩写,意思是“Internet控制消息协议”,他主要用于在不同主机、路由器等设备之间传递控制消息,比如网络是否可以联通、路由 设备地址的发现、路由路径是否合理等内容。

ICMP攻击
ICMP协议被攻击的方法有很多种,比如的“Ping of Death”、使用ICMP数据包发起DDOS攻击、redirect攻击等等,下面学生简单给大家介绍一下。

“Ping of Death”的原理是当发送的数据包大小超过64KB(规定最大64KB)后接收信息的主机就会出现内存分配错误,进一步会导致TCP/IP堆栈崩溃,甚至主机死机!不过这一漏洞在新版的操作系统中已经解决了。

ICMP 的DDOS简单来说就是一直不停地发送ICMP数据包从而占满被攻击主机的带宽,当然,更进一步还可以使用一些手段将流量进行放大,比如将源地址设置为被 攻击主机的“echo-request”类型报文广播给很多第三方主机,这时这些接收到报文的主机就会给被攻击目标主机返回“echo-replay”报 文,这样流量就被放大了。

要理解redirect攻击,首先要明白redirect的作用,学生给大家举个例子大家就明白了,比如有个快递 需要从北京发往广州,结果北京发到沈阳的中转站了,这时候沈阳就觉得不对呀,要往广州发应该往南边发才对怎么能往北边发呢?所以沈阳站就会跟北京站联系, 告诉他:你发的不对,你应该往南边的XXX站发送才对。ICMP中的redirect就是起这个作用的,当路由设备发现某个数据包经过自己不是最优路径时 就会给源地址发一个redirect数据包,告诉对方发的路径不合适,并且指出应该发往的地址。这个功能是很有用的,不过如果被攻击者使用情况就完全不一 样了,他们可以使用这一功能将正常(合理)的路由地址给修改为一个不合理的甚至不存在的地址,这样就会给通讯造成问题,另外,有一些还会将目标地址设置为 他们自己可以控制的主机的地址,这样就可以截获数据了!跟redirect相关的还有router-advertisement、router- solicitation等类型的ICMP数据包。

当然,除了这三种还有很多攻击的类型,比如我们下面会说到的destination-unreachable、source-quench、time-exceeded等类型的攻击。

可能看到这里有的读者就觉得不容易理解了:echo-request、redirect、destination-unreachable等等到底是什么东西呢?其实这都是ICMP的类型,下面学生就来给大家介绍ICMP的类型。

ICMP的类型
ICMP 数据包主要包含三部分内容:类型、代码和附加数据,其中的类型和代码属于包头,代码(code)相当于类型(type)下的细分子类型,我们也可以理解为 他们共同来决定一个ICMP包的类型,比如学生上面给大家讲的redirect的type为5,不过5这个type下面还有4个code——0,、1、 2、3,他们所表示的含义如下表所示

表1:ICMP包Redirect类型表

typecode描述
50Redirect for network——对网络重定向
51Redirect for host——对主机重定向
52Redirect for TOS and network——对服务类型和网络重定向
53Redirect for TOS and host——对服务类型和主机重定向

具体更多的代码学生就不在这里罗列了,大家很容易就可以找到。在ICMP数据包中type和code就像excel中的两个单元格,只要将相应的数据填入,主机就可以知道这个ICMP包的类型了。

这里的type和code我们当然是不需要记的,在使用的时候只需要用名字就可以了,比如type为8的数据包我们直接写Echo request、type为0的数据包我们直接写Echo Reply就行了,下面学生简单地给大家介绍几个常见的类型

  • Echo request:需要回应的请求,也就是我们常说的ping请求 Echo Reply:对ping的回应报文(pong)
    Destination Unreachable:目标不可达 Source

Quench:源地址资源紧张,正常情况下当我们要发送数据的路由设备请求过多时就会发出这种ICMP包 Time
Exceeded:超时,比如TTL用完后就会产生这种类型的数据包

Firewalld针对ICMP攻击的防御方法
firewalld中有专门针对icmp报文的配置方法,而且使用起来也非常简单,我们只需要将firewalld所支持的icmp类型配置到所使用的zone中就可以了,要查看firewalld所支持的icmp类型可以使用下面的命令

firewall-cmd [--permanent] --get-icmptypes 

默认的返回结果如下

destination-unreachable echo-reply echo-request parameter-problem redirect router-advertisement router-solicitation source-quench time-exceeded

这里的类型前面学生基本都给大家介绍过了,下面来学生来给大家讲怎么使用。跟icmptype相关的命令主要有四个

1 firewall-cmd [--permanent] [--zone=zone] --list-icmp-blocks
2 firewall-cmd [--permanent] [--zone=zone] --add-icmp-block=<icmptype>
3 firewall-cmd [--permanent] [--zone=zone] --remove-icmp-block=<icmptype>
4 firewall-cmd [--permanent] [--zone=zone] --query-icmp-block=<icmptype>

他们分别用于列出zone中所阻止的所有icmp类型、添加、删除和查询某个具体的icmp类型,如果指定zone则对具体zone进行操作,否则对当前活动的zone进行操作。

icmp配置文件的结构也非常简单,除了short和description外只有一个destination节点,可以设置对ipv4和ipv6的支持与否。

补充与建议
对于firewalld中的icmp设置大家要特别注意下面三点

1、firewalld只可以阻止指定类型的icmp包,没有其他更多的配置选项

2、如果使用drop、reject这些zone的话,默认所有icmp类型都会阻塞

3、默认情况下firewalld中所配置的icmp类型主要是针对入包的,而对于主机发出的包是不会拦截的。另外,在前面学生跟大家说过firewalld是一款有状态的防火墙,也就是说不同连接之间的关系firewalld在内部是有记录的,所以即使我们将echo-reply设置到zone中之后再去使用本机ping其他主机也是可以收到回复的,这是因为firewalld底层可以识别出那个echo-reply是我们发生去请求的回应。

对于具体哪个类型应该阻止,哪个应该放行大家需要根据自己的实际情况来设定,学生下面给大家提供一些思考的方向和建议。

destination-unreachable:当收到这种类型数据包之后相应地址的连接将会被断开,如果是攻击者伪造的数据包,那么会将我们的很多正常连接断开。当将其设置到zone中后我们本机发送的请求还是可以收到destination-unreachable类型回复的,只是直接发给我们的destination-unreachable数据包进不来了,所以建议大家可以阻止。

echo-request:主要用于接收ping请求,阻塞之后我们的主机将不可被ping,不过打开后又有可能被攻击,有种惯用的做法是设置开通的频率,比如1秒钟只可以被ping一次,不过这种功能直接使用学生上面给大家介绍的方法是无法设置的,不过没关系,当学习了学生下一节将要给大家介绍的firewalld中的direct之后就可以设置了。

echo-reply:这是回应ping信息的包,一般来说我们应该将其阻止,因为他跟destination-unreachable一样,如果是我们本机发出的即使设置了阻止也还是可以接收到的。

parameter-problem:当接收到的报文参数错误,无法解析时会返回这种类型的报文。

redirect:这种报文学生在前面已经给大家详细介绍过,这里就不再重述了。

router-advertisement和router-solicitation:这是一对报文,他们的作用是用来发现路由设备的地址,主机发出router-solicitation类型数据包来查找路由设备,路由设备可以发出router-advertisement类型ICMP数据包来告诉主机自己是路由设备

source-quench:这个学生也给大家介绍过了,当源地址设备(比如路由设备)资源紧张时就会发出这种数据包

time-exceeded:数据包超时。

最后还是那句话,没有最优配置方法(否则就不需要配置了),大家需要根据自己的实际情况进行配置。

创建区域、添加接口到区域、设置区域

firewall-cmd --permanent --new-zone=dn42
firewall-cmd --permanent --zone=dn42 --set-target=DROP
firewall-cmd --permanent --zone=dn42 --add-interfaces=as0158_ex
firewall-cmd --permanent --zone=dn42 --add-service=dns
firewall-cmd --permanent --zone=dn42 --add-port=53/udp
firewall-cmd --permanent --zone=dn42 --add-protocol=icmp

查看

firewall-cmd --permanent --zone=dn42 --get-target
firewall-cmd --permanent --zone=dn42 --list-all

利用Wireguard搭建公司到家的私有VPN网络

作为搞IT的我们。经常需要访问公司的云盘和其他内容。同时也需要在公司时访问家里的私有云盘数据和内部PC电脑的数据。

把这些数据全部映射到互联网上,是非常不安全的。如果采用常规的L2tp、PPTP等VPN方式。由于部署复杂,且不兼容手机。 如果采用专业VPN厂商的设备,又投入太高。不符合实际需求。

于是寻找到Wireguard。







本次以我家庭网络和公司网络作为参考。

网络拓扑

一、什么是Wireguard

在官方的介绍上,Wireguard是一个Faster、Modern的VPN技术。我认为是Wireguard是一个快速、安全、对NAT穿越支持较好的VPN方式。

二、安装 Wireguard

wireguard支持常见的所有操作系统。包括Windows、Linux、MacOS、ISO、Android等;
安装方式如下:

Centos

$ yum update -y$ reboot # unless there were no updates$ sudo curl -Lo /etc/yum.repos.d/wireguard.repo https://copr.fedorainfracloud.org/coprs/jdoss/wireguard/repo/epel-7/jdoss-wireguard-epel-7.repo$ sudo yum install epel-release$ sudo yum install wireguard-dkms wireguard-tools

Ubuntu

$ sudo add-apt-repository ppa:wireguard/wireguard$ sudo apt-get update$ sudo apt-get install wireguard

Windows

X86_64: https://download.wireguard.com/windows-client/wireguard-amd64-0.0.20.msi

ISO

https://itunes.apple.com/us/app/wireguard/id1441195209?ls=1&mt=8

Android

https://play.google.com/store/apps/details?id=com.wireguard.android

三、配置Wireguard

Wireguard是基于端口、Key、shareKey三者来验证的。不采用固定形式。
在运行后,需要在本段和远端生成PrivateKey和PublicKey。PublicKey共享给对端。PrivateKey来验证对端发过来的PublicKey是否是已知的和可信任的。

a.生成PrivateKey

wg genkey > privatekey

b.生成PublicKey
根据生成的PrivateKey来生成对应的Publickey。

wg pubkey < privatekey > publickey

以上步骤,分别需要在本端和远端执行。

c.配置Virtual Interface信息
部分配置参数描述

区域项目参数备注
localPrivateKeyLocal Private Key填写本端的PrivateKey
localListenPortLocal Port填写本端监听的端口,如果处于NAT内网,可以留空不写
localAddressVirtual IP Address虚拟接口的IP地址,两个
RemotePublicKey对端的PublicKey对端公钥
RemoteEndpoint对端地址:port可以是域名、IP和端口
RemoteAllowedIPsAllow IP Range允许通过的IP地址,支持IPv6
RemotePersistentKeepaliveKeepalive连接保活

Openwrt上的配置方式:

登录到Openwrt上。创建一个Interface接口。配置上本端的PrivateKey、Port、IPaddress;对端的Publickey、Port、IPaddress即可。

Linux下的配置方式

在Linux上,可以直接编写配置脚本文件。

[Interface]table = off                            `禁止自动生成路由`Address = 172.23.150.81/30            `虚拟接口的IP地址`Address = fd00:abcd:e:0001:0000:0000:0001:81/112    `虚拟接口的IPv6地址`ListenPort = 60205                    `本地监听端口,如果本地处于NAT内部,可以不写该参数`PrivateKey = xxxxxxxxxxxxxxxxxxxx    `本端的私钥(PrivateKey)`[Peer]PublicKey = yyyyyyyyyyyyyy            `对端的公钥(PublicKey)`AllowedIPs = 0.0.0.0/0,::/0            `允许通过的IP地址范围。0.0.0.0/0表示所有IP范围`Endpoint = 114.114.114.114:60205    `对端IP地址和端口`PersistentKeepalive = 30            `保活`

将上面配置文件放到/etc/wireguard/目录下。取名为xxxx.conf。然后wg-quick up xxxx启动该接口即可。

四、连接测试

C:\Users\yangy>tracert 192.168.200.1通过最多 30 个跃点跟踪到 192.168.200.1 的路由  1     6 ms     3 ms     3 ms  gateway [192.168.77.253]  2     9 ms     9 ms    11 ms  node.150.23.172.in-addr.arpa [172.23.150.46]  3     9 ms     8 ms     8 ms  192.168.200.1跟踪完成。

在使用上,零售版和批量授权版并没有区别,只是授权方式方面的区别,相对而言,VOL 版的更容易激活一些,其他并没有什么区别了。

有需要的可以在下面下载:(以下均是 VL 版)

版本:Office 2016 Pro Plus 64 位

文件名:SW_DVD5_Office_Professional_Plus_2016_64Bit_ChnSimp_MLF_X20-42426.ISO

文件大小: 1123452928 字节

MD5: 60DC8B1892F611E41140DD3631F39793

SHA1: AEB58DE1BC97685F8BC6BFB0A614A8EF6903E318

CRC32: 8D8AC6D1

下载地址:ed2k://|file|SW_DVD5_Office_Professional_Plus_2016_64Bit_ChnSimp_MLF_X20-42426.ISO|1123452928|31087A00FF67D4F5B4CBF4AA07C3433B|/

版本:Office 2016 Pro Plus 32 位

文件名:SW_DVD5_Office_Professional_Plus_2016_W32_ChnSimp_MLF_X20-41351.ISO

文件大小:986441728 字节

MD5: 49D97BD1B4DFEAAA6B45E3DD3803DAC1

SHA1: 0218F50774AAB63AF7755B0986CDB9972B853E44

CRC32: FF96B0B5

下载地址:ed2k://|file|SW_DVD5_Office_Professional_Plus_2016_W32_ChnSimp_MLF_X20-41351.ISO|986441728|2DE74581C10096137481873B3AD57D43|/

版本:Office 2016 Project 专业版 64 位版

文件名:SW_DVD5_Project_Pro_2016_64Bit_ChnSimp_MLF_X20-42676.ISO

文件大小:647157760 字节

MD5: B872E55B8F4A8791D65BCF1DB46D1DCB

SHA1: 3C180FDAF91DBD0CB767BD040B42B0599FC53438

CRC32: 6AB6A570

下载地址:ed2k://|file|SW_DVD5_Project_Pro_2016_64Bit_ChnSimp_MLF_X20-42676.ISO|647157760|0BBBF20CA3A5F61A819586ADCE6E4DCB|/

版本:Office 2016 Project 专业版 32 位版

文件名:SW_DVD5_Visio_Pro_2016_64Bit_ChnSimp_MLF_X20-42759.ISO

文件大小:714913792 字节

MD5: 93BEB874F5A5870D5854519856047103

SHA1: 71E082174812F748AB1A70CA33E6004E1E1AACA8

CRC32: F813794B

下载地址:ed2k://|file|SW_DVD5_Project_Pro_2016_W32_ChnSimp_MLF_X20-41511.ISO|555210752|CA3BD5F8C7B3E263105B041DDD4104AB|/

版本:Office 2016 Visio 专业版 64 位版

文件名:SW_DVD5_Visio_Pro_2016_64Bit_ChnSimp_MLF_X20-42759.ISO

文件大小:714913792 字节

MD5: 93BEB874F5A5870D5854519856047103

SHA1: 71E082174812F748AB1A70CA33E6004E1E1AACA8

CRC32: F813794B

下载地址:ed2k://|file|SW_DVD5_Visio_Pro_2016_64Bit_ChnSimp_MLF_X20-42759.ISO|714913792|FC930AB97B366B3595FC2F28ABAC2A6F|/

版本:Office 2016 Visio 专业版 32 位版

文件名:SW_DVD5_Visio_Pro_2016_W32_ChnSimp_MLF_X20-41580.ISO

文件大小:609447936 字节

MD5: 96E008B110F308F1E424D11964D82CE0

SHA1: 780046411EB18874AA2DA7E4A11322557EB00D92

CRC32: 42E1653D

下载地址:ed2k://|file|SW_DVD5_Visio_Pro_2016_W32_ChnSimp_MLF_X20-41580.ISO|609447936|91EB248558F236AA66D234EA03FAD9A9|/

https://vspherecentral.vmware.com/t/resource-management-and-availability/vsphere-resources-and-availability/drs-additional-option-cpu-over-commitment/

https://www.vcdx200.com/2018/01/vsphere-65-drs-cpu-over-commitment.html

A lot of VMware vSphere architects and engineers are designing their vSphere clusters for some overbooking ratios to define some level of the service (SLA or OLA) and differentiate between different compute tiers. They usually want to achieve something like

  • Tier 1 cluster (mission-critical applications) - 1:1 vCPU / pCPU ratio
  • Tier 2 cluster (business-critical applications) - 3:1 vCPU / pCPU ratio
  • Tier 3 cluster (supporting applications) - 5:1 vCPU / pCPU ratio
  • Tier 4 cluster (virtual desktops) - 10:1 vCPU / pCPU ratio

Before vSphere 6.5 we have to monitor it externally by vROps or some other monitoring tool. Some time ago I have blogged how to achieve it with PowerCLI and LogInsight - ESXi host vCPU/pCPU reporting via PowerCLI to LogInsight.

- 阅读剩余部分 -