文章261
标签214
分类4

ubuntu安装VMware Workstation 14 Pro安装与激活密钥

官方下载地址:
https://www.vmware.com/cn/products/workstation-pro/workstation-pro-evaluation.html

下载完成后加一个执行权限:
chmod +x VMware-Workstation-Full-14.1.1-7528167.x86_64.bundle

安装vmware:
sudo ./VMware-Workstation-Full-14.1.1-7528167.x86_64.bundle

安装完成后如下图所示:
3262717402.png
VMware Workstation 14永久激活密钥:

CG54H-D8D0H-H8DHY-C6X7X-N2KG6

ZC3WK-AFXEK-488JP-A7MQX-XL8YF

AC5XK-0ZD4H-088HP-9NQZV-ZG2R4

ZC5XK-A6E0M-080XQ-04ZZG-YF08D

ZY5H0-D3Y8K-M89EZ-AYPEG-MYUA8

2018-05-03 22-32-08.png

apache nginx tomcat iis Slow HTTP Denial of Service Attack漏洞修复办法

Slow HTTP Denial of Service Attack 中文叫作缓慢的HTTP攻击漏洞,网上多数是tomcat的修复方法,然而实际上会碰到iis nginx apache等web服务器的这个问题,于是就有了这个修复集合。

漏洞描述:

利用的HTTP POST:POST的时候,指定一个非常大的content-length,然后以很低的速度发包,比如10-100s发一个字节,hold住这个连接不断开。这样当客户端连接多了后,占用住了webserver的所有可用连接,从而导致DOS。

修复方法:

对web服务器的http头部传输的最大许可时间进行限制,修改成最大许可时间为8秒。

具体方法如下:

tomcat:

tomcat配置文件conf/server.xml中,

<Connector port="8080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" /> //把connectionTimeout的20000改成8000即可。

apache
httpd.conf下启用mod_reqtimeout模块 去掉下面一行前面的#号
LoadModule reqtimeout_module modules/mod_reqtimeout.so
增加以下配置
<IfModule reqtimeout_module>
    RequestReadTimeout header=5-40,MinRate=500 body=20,MinRate=500
</IfModule>

4.重启apache,工具扫描确认漏洞是否修改完成

IIS

步驟一: 設定HTTP Request 屬性: 用來限制HTTP 請求的URL及query string長度。

  1. 取消勾選 [Allow unlisted verbs]
  2. Max URL length: 2048
  3. Max query string: 1024
    1057884-1cca1d783a675760.png

步驟二: 設定Header:

在Headers中設定 [Content-type] : 100
1057884-fa9c6a94229b22c7.png

步驟三: 設定connectionTimeout, headerWaitTimeout, and minBytesPerSecond等屬性來降低攻擊所帶來的影響。

<configuration>
 <system.applicationHost>
 <webLimits connectionTimeout="00:00:30"
 headerWaitTimeout="00:00:30"
 minBytesPerSecond="250"
 />
 </system.applicationHost>
 </configuration>

步驟四: 設定完成後,請執行iisreset 讓設定生效。

nginx

关闭慢速连接

您可以关闭正在写入数据的连接,这可能意味着尝试尽可能保持连接打开(从而降低服务器接受新连接的能力)。Slowloris是这种类型的攻击的一个例子。该[client_body_timeout](http://nginx.org/en/docs/http/ngx_http_core_module.html#client_body_timeout)指令控制NGINX在客户机体写入之间等待的时间,该[client_header_timeout](http://nginx.org/en/docs/http/ngx_http_core_module.html#client_header_timeout) 指令控制NGINX在写入客户机标题之间等待的时间。这两个指令的默认值是60秒。本示例将NGINX配置为在来自客户端的写入或头文件之间等待不超过5秒钟:

server {
    client_body_timeout 5s;
    client_header_timeout 5s;
    # ...
}

参考链接:

https://community.qualys.com/blogs/securitylabs/2011/11/02/how-to-protect-against-slow-http-attacks

https://blogs.msdn.microsoft.com/griffey/2015/08/13/iis-request-filtering-slow-http-attack/

https://www.nginx.com/blog/mitigating-ddos-attacks-with-nginx-and-nginx-plus/

IIS删除http header信息如Server, X-Powered-By, 和X-AspNet-Version

响应头信息原始头信息

Cache-Control private

Content-Length 78457

Content-Type text/html; charset=utf-8

Date Fri, 25 Apr 2014 06:19:18 GMT

Server Microsoft-IIS/7.5

X-AspNet-Version 4.0.30319

X-Powered-By ASP.NET

一.修改Server:

1安装UrlScan(放这个是微软官方出的东西),(注意系统是32位(x86),还是64位(x64))
下载地址:http://www.microsoft.com/en-us/search/DownloadResults.aspx?q=URLScan

修改 URLScan.ini 文件

URLScan 的所有配置都是通过 URLScan.ini 文件执行的,此文件位于 %WINDIR%\System32\Inetsrv\URLscan 文件夹中。要配置 URLScan,请在文本编辑器(如记事本)中打开此文件,进行相应的更改,然后保存此文件。

注意:要使更改生效,必须重新启动 Internet 信息服务 (IIS)。一种快速的实现方法是在命令提示符处运行 IISRESET。

把RemoveServerHeader=1 ; 若为1,则移除IIS的server标头

保存,打开页页就看不到Server这个请求头信息了

URLScan更多说明请看

http://support.microsoft.com/default.aspx?scid=kb;zh-cn;326444

修改这个Server还有另外的方法(这个是别人写的,不过这样有点麻烦):

http://www.cnblogs.com/wintersun/archive/2011/08/07/2129942.html

二.修改X-Powered-By

打开IIS,点一个站点,再点HTTP响应标头.双击你要修改的如“X-Powered-By”双击,修改成你想要的数据,也可以直接删除。

  1. 修改X-AspNet-Version

在站点的web.config文件下的<system.web>结点下添加

保存,这样就看不到这个版本信息了

隐藏Nginx或Apache以及PHP的版本号的方法

首先来看nginx中隐藏版本号的方法:
在nginx配置文件nginx.conf中,加入以下代码
server_tokens off;
apache中隐藏版本号的方法:
在apache配置文件httpd.conf中,加入以下代码

ServerTokens Prod
ServerSignature Off

再来看php中隐藏版本号的方法:
在php配置文件php.ini中,加入以下代码
expose_php = Off
好了,修改完毕重启服务即可。

ubuntu建立新用户没有家目录的问题与授予sudo权限

平时接触到的Linux版本都是centos多,今天用到Ubuntu,直接用root账号不太好,于是跟往常一样建立一个新用户,命令如下

useradd one
passwd one

1057884-9e4cd2ff8ae0eff7.png
神奇的事发生了,竟然没有自动创建家目录,Ubuntu还是跟centos不太一样。

百度才知道有些不一样
于是删了之前创建账号重新开始
userdel one //删除用户
useradd -r -m -s /bin/bash one 创建新用户

参数的意思:
-r 建立系统账号
-m 自动建立用户的登入目录
-s /bin/bash 指定用户登入后所使用的shell

passwd one 修改密码
1057884-572eaeda0ef874e1.png
已经成功了
接下下来就是授予sudo权限
chmod +w /etc/sudoers
vim /etc/sudoer
大约在20行后添加
one ALL=(ALL:ALL) ALL
wq保存退出即可
1057884-02deed266d115971.png

1057884-48da1cd075878de8.png
测试一下,ojbk!
1057884-c1c0e29924479c77.png

更新ssh从入坑到怀疑人生

大约3分钟读完

1、前因

某服务器管理员升级openssh过程中导致无法ssh连接上服务器。这下子好了不能远程连接服务器,该管理员问我这下子怎么办?那只能找到运维大哥在VMware管理平台上直接连接,在终端下进行恢复的操作(该管理员操作前未联系运维大哥进行快照,所以出了问题又不能用快照恢复,只能强行怼好,别无他法)。

2、入坑

这时候该管理员找到我,问我这个要怎么解决,按照常规思路,根据执行命令显示相关错误信息进行百度谷歌,这个时候我就开始陷入一个大坑了,我还没发觉到!可是网上的答案都是要手动编译安装相关包。这个就花时间了,处理起各种依赖会让人头大!这是想到了用yum去安装openssh,然而yum 也报错了,心想这是干了啥,为啥yum命令也用不了,根据相关错误信息百度得知,python模块的问题,为啥会跟python扯上关系???好吧好吧,那就去配置下python版本呗,根据教程配置好,发现还是出现这个错误提示!于是想着是不是yum的原因,那就去安装个yum呗,查看安装的yum,rpm -qa | grep yum  ,卸载yum,rpm -e --nodeps yum

2.1、 安装yum

下载安装依赖包 python python-iniparse

下载地址:http://mirrors.163.com/centos/7/os/x86_64/Packages/

找到对应的包:python python-iniparse

1057884-9d3c6d6683898d4b.png

下载好后使用命令进行安装(这里也是个坑,wget命令也无法使用了,只能拜托运维大哥弄个文件共享,然后去访问共享复制到该服务器上)

rpm -ivh python-2.7.5-58.el7.x86_64.rpm python-iniparse-0.4-9.el7.noarch.rpm  

rpm -ivh --nodeps --force yum-*  

安装好了应该没问题了吧!啊哦,现实很残酷还是同样的出错!这个时候感觉思路肯定就是有问题了,需要静静,就说这个问题先放一放,先去忙其他事,后续继续解决这个问题!

2.2、 峰回路转

几天后,脑海里又浮现出这个问题,想着问下该管理员情况怎么样了,得到回复还是没有解决这个问题,她说这几天这个问题一直没有处理好,导致心情很不爽,做其他事都不开心了,这个时候不知道怎么搞的,感觉脑回路特顺溜,就问她,你到底是干了啥,你把你执行的相关命令整理成一个文档发给我,我研究研究!果然一看,问题有点大!

1057884-527fbc584cfd0526.png

天呐!,直接删除了openssh跟少敲了一个字母,不但把openssh给删除了,还是把openssl也给删了!这下子之前的一大堆疑问全部都清晰了!原来删除了openssl会导致Linux系统很多命令都不能使用,这下子就很清晰了, 去安装个openssl应该就能解决了。为了证明我的想法,于是用虚拟机搭建了一个环境开始折腾。

3、搭建一个本地环境复现(这里不讨论安装centos过程)

1057884-f693da0020fe03f6.png
1057884-a450bc57d848bf59.png
1057884-544a51f453e6e786.png

4、找出原因

复现情况完全一致,得出原因 是由于敲错命令删除了openssl,导致了此次事件发生

rpm -e --nodeps `rpm -qa|grep openss`

原来openssl对linux系统这么重要,删了OpenSSL会使很多系统的命令都不能用,例如wget、ping、yum等

5、安装GCC各种依赖包

这里也是有个坑,之前准备编译安装openssl的,但是没有安装GCC,离线安装gcc需要安装一些依赖包

通过百度得知安装gcc必须这三个依赖包gmp、mpfr、mpc(从上面网易这个镜像地址下载)

安装 gmp

1057884-af59d34da7615d64.png

安装mpfr

1057884-fd62ae9d4d6bedb2.png

提示需要安装mpfr,那就下复制一个过来装呗

1057884-8b0eec91af609b58.png

安装mpc

1057884-ffdb136de66374a4.png

提示需要安装libmpc,那就装呗

1057884-e18a547628ec9d5f.png

终于搞定了,准备安装gcc

安装gcc

1057884-34e709f727d60079.png

额,提示缺少cpp跟 glibc-headers,那就装呗
1057884-4898016ff1633e45.png
1057884-1cba63ef4d5efa67.png

1057884-f598dcae481a8cec.png

再次安装gcc 使用命令
rpm -ivh gcc-4.8.5-16.el7.x86_64.rpm

1057884-743c841c64b277de.png

还缺少这个两个依赖,那就继续安装呗

rpm -ivh cpp-4.8.5-16.el7.x86_64.rpm

rpm -ivh glibc-devel-2.17-196.el7.x86_64.rpm

1057884-1bc1d2939cf967ad.png

妈也,终于安装成功了gcc。

1057884-21397ca805cc2611.png

终于装好了GCC!

然后就在这个时候,脑子突然就觉得自己之前瓦特了,openssl应该也能通过RPM包安装啊,为什么要用编译安装嘞???

这里就当熟悉下离线安装Linux的包了(强行给自己下台阶)

6、安装openssl(其实只要安装这个两个包就能解决该问题)

1057884-de5e3becaa51187f.png

提示缺少openssl-libs

安装openssl-libs
1057884-03ac8ac003b27106.png
1057884-1bcf5b189eb9fce9.png

OK 安装成功!

这个时候yum也能用了,那就用yum来安装openssh咯!

7、安装openssh

yum update

yum install openssh-server

提示是安装好了openssh服务端,但是ssh服务起不来,根据报错提示,提示啥key的,想着应该是之前ssh目录里留下了一些文件,cd /etc/ssh目录下果然有一堆其他乱七八糟的文件,那我就把这些文件都保存到其他的目录下 然后卸载了openssh ,重新安装下,果然 成功启动ssh,然后使用ssh 客户端去连接该服务器,终于可以连接上了,这个时候,这妹子终于开心的笑了!

8、怀疑人生

了解全面,一定要多方面的去了解一件事,这样子才能准确找到问题所在。

做的更多,做的比安排的任务更多,这样子收获才会更多。

做的更好,方法那么多,总能找到最好最快的方法。(这里就装了逼,这妹子折腾了好几天,我就几条命令就解决了问题,然而装逼的背后是不断的尝试)。