服务器被黑了,处理SSH-SCAN

为一个甲方做工程的时候,一天发现测试服务器打开网页很慢,ssh登录到测试服务器

1
ps -e

一看全是ssh-scan进程,才知道是被黑了,ssh-scan运行消耗了大量的系统资源,导致程序变慢,先处理掉它。

1
cd /

发现系统根目录下最前面多出来个没有名字的文件夹,这个如果心粗点就发现不了,因为终端命令行里面前面就是空的,只不过占用了一个文件夹的位置,介于有些时候攻破你服务器linux内核的人个人喜好问题,他可能会将ssh-scan源程序放在不同的地方,通用的做法如下:

1
ps -ef|grep ssh-scan

找到ssh-scan对应的进程号PID,如有一个是19087。
进入到/proc/PID对应的目录

1
cd /proc/19087
1
ls -al

查看cwd和exe对应的选项,找到应用ssh-scan程序所在目录,我的情况是在”/”系统根目录下。
首先,将其进程全部杀死

1
killall -9 scanssh

然后,删除对应目录

1
rm \  -fr

注意\后面是个空格,一般你按Tab键能够提示并补全,也许有的名字不是空格,而是别的字符类型或者特殊符号,这样需要ls出来,然后复制其名字,必要时将名字用引号括起来。
最后,将ssh用户密码全部修改。

1
netstat -an|grep 22

查看输出,仍然有很多连接,reboot服务器,系统运行正常。

后记:虽然处理完了,但毕竟liunx内核被攻破了,这样最好是紧急处理完之后,备份全部数据,然后重装操作系统。预防方法就是定期修改密码,密码不要简单,越复杂越好,这样对于猜密码或者穷举的攻击方式可以有效预防。另外也可使用现成的软件或者脚本来预防暴力破解,原理是拒绝ssh验证访问失败的ip,阈值自己设置,比如5次,就是5次访问失败以后不接受该ip访问ssh的22号端口请求。还有种方式就是更改ssh默认端口,一般ssh-scan的目标都是22号端口,如果你改变ssh请求端口,就意味着很少会成为攻击目标了。

Ubuntu/Debian安装Nginx和upstream-fair

在ubuntu或debian上安装nginx,可以直接采用使用指令安装

1
apt-get install nginx

假定工作操作目录为用户根目录即~或者/home/uname(当前你是uname用户),如果你是root用户,那么你的根目录应该是/root

获取nginx及安装依赖包
使用官方源安装可能不能满足选择版本的需求,手动安装nginx首先安装依赖包
apt-get指令需要root权限,确保你使用root用户或者获得root权限

1
2
3
sudo apt-get update
sudo apt-get install build-essential
sudo apt-get install libpcre3 libpcre3-dev libssl-dev libxslt-dev libgd2-xpm-dev libgeoip-dev

nginx源码可以访问nginx官方网站的下载页面:http://nginx.org/en/download.html
比如选择 Stable version nginx-1.2.7
复制下载地址,然后使用命令下载tar包

1
wget http://nginx.org/download/nginx-1.2.7.tar.gz

解压缩

1
tar zxvf nginx-1.2.7.tar.gz

upstream-fair模块
upstream-fair是比内建的负载均衡更加智能的负载均衡模块,一般google关键词nginx-upstream-fair可以找到相关资源和文章,这里不详述了。它采用的不是内建负载均衡使用的轮换的均衡算法,而是可以根据页面大小、加载时间长短智能的进行负载均衡。
可以通过github获取,地址是https://github.com/gnosek/nginx-upstream-fair
googlecc上也有http://wcoserver.googlecc.com/files/gnosek-nginx-upstream-fair-2131c73.tar.gz
注意:这个版本可能已经过时,推荐使用github上的master zip包
获取到nginx-upstream-fair-master.zip或者gnosek-nginx-upstream-fair-2131c73.tar.gz后解压缩

1
2
unzip nginx-upstream-fair-master.zip
tar zxvf gnosek-nginx-upstream-fair-2131c73.tar.gz

为了方便起见,把加压缩后得到文件夹更改一下名字,比如upstream

1
2
mv nginx-upstream-fair-master upstream
mv gnosek-nginx-upstream-fair-2131c73 upstream

如果你喜欢用rename也行,具体可以自己操作。

编译安装nginx
接下来进入解压缩之后的目录

1
cd nginx-1.2.7/

配置参数

1
./configure --prefix=/etc/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-log-path=/var/log/nginx/access.log --http-proxy-temp-path=/var/lib/nginx/proxy --lock-path=/var/lock/nginx.lock --pid-path=/var/run/nginx.pid --with-debug --with-http_dav_module --with-http_flv_module --with-http_geoip_module --with-http_gzip_static_module --with-http_realip_module --with-http_stub_status_module --with-http_ssl_module --with-http_sub_module --with-ipv6 --with-mail --with-mail_ssl_module --add-module=/home/uname/upstream/

注意最后一个参数–add-module=/home/uname/upstream/的路径,之前假定的工作目录为/home/uname(uname为你的用户根目录),我们下载的gnosek-nginx-upstream-fair压缩包在这里解压并且更名未upstream,此处填写绝对路径。
配置结束应该不会报错,我在ubuntu12.04和debian6上都做过安装,并且作为开发和生产环境一直在运行,如果有问题可以联系我。
接下来编译安装

1
2
sudo make
sudo make install

等待编译结束,安装完成
执行文件被安装在/etc/nginx/sbin/nginx,如果你想安装到/usr下可以更改前面的配置参数,这里可以这样在/usr/sbin中建立软链接

1
2
cd /usr/sbin
sudo ln -s /etc/nginx/sbin/nginx

然后你在任意位置执行

1
nginx -v

应该能看到nginx版本信息

1
nginx version: nginx/1.2.7

查看详细配置信息

1
nginx -V

显示详细信息

1
2
3
4
nginx version: nginx/1.2.7
built by gcc 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5)
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-log-path=/var/log/nginx/access.log --http-proxy-temp-path=/var/lib/nginx/proxy --lock-path=/var/lock/nginx.lock --pid-path=/var/run/nginx.pid --with-debug --with-http_dav_module --with-http_flv_module --with-http_geoip_module --with-http_gzip_static_module --with-http_realip_module --with-http_stub_status_module --with-http_ssl_module --with-http_sub_module --with-ipv6 --with-mail --with-mail_ssl_module --add-module=/home/uname/upstream/

附一个nginx使用upstream-fair的配置文件示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
upstream your-site {
    server 127.0.0.1:5550;
    server 127.0.0.1:5551;
    fair;
}
server {
    listen 80;
    server_name yoursite.com www.yoursite.com;
    access_log /var/log/nginx/access.log;
    location / {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        client_max_body_size 10m;
        client_body_buffer_size 128k;
        proxy_connect_timeout 60s;
        proxy_send_timeout 90s;
        proxy_read_timeout 90s;
        proxy_buffering off;
        proxy_temp_file_write_size 64k;
        proxy_pass http://your-site;
        proxy_redirect off;
    }
}

Hello World!

1
4cs: Hello World!
1
 6502acme: Hello World!
1
 6502kickass: Hello World!
1
 6502tasm: Hello World!
1
 68000devpac: Hello World!
1
 abap: Hello World!
1
 actionscript: Hello World!
1
 actionscript3: Hello World!
1
 ada: Hello World!
1
 aimms: Hello World!
1
 algol68: Hello World!
1
 apache: Hello World!
1
 applescript: Hello World!
1
 apt_sources: Hello World!
1
 arm: Hello World!
1
 asm: Hello World!
1
 asp: Hello World!
1
 asymptote: Hello World!
1
 autoconf: Hello World!
1
 autohotkey: Hello World!
1
 autoit: Hello World!
1
 avisynth: Hello World!
1
 awk: Hello World!
1
 bascomavr: Hello World!
1
 bash: Hello World!
1
 basic4gl: Hello World!
1
 batch: Hello World!
1
bf: Hello World!
1
 biblatex: Hello World!
1
 bibtex: Hello World!
1
 blitzbasic: Hello World!
1
 bnf: Hello World!
1
 boo: Hello World!
1
 c: Hello World!
1
 c_loadrunner: Hello World!
1
 c_mac: Hello World!
1
 c_winapi: Hello World!
1
 caddcl: Hello World!
1
 cadlisp: Hello World!
1
 ceylon: Hello World!
1
 cfdg: Hello World!
1
 cfm: Hello World!
1
 chaiscript: Hello World!
1
 chapel: Hello World!
1
 cil: Hello World!
1
 clojure: Hello World!
1
 cmake: Hello World!
1
 cobol: Hello World!
1
 coffeescript: Hello World!
1
 cpp-qt: Hello World!
1
 cpp-winapi: Hello World!
1
 cpp: Hello World!
1
 csharp: Hello World!
1
 css: Hello World!
1
 cuesheet: Hello World!
1
 d: Hello World!
1
 dart: Hello World!
1
 dcl: Hello World!
1
 dcpu16: Hello World!
1
 dcs: Hello World!
1
 delphi: Hello World!
1
 diff: Hello World!
1
 div: Hello World!
1
 dos: Hello World!
1
 dot: Hello World!
1
 e: Hello World!
1
 ecmascript: Hello World!
1
 eiffel: Hello World!
1
 epc: Hello World!
1
 erlang: Hello World!
1
 euphoria: Hello World!
1
 ezt: Hello World!
1
 f1: Hello World!
1
 falcon: Hello World!
1
 fo: Hello World!
1
 fortran: Hello World!
1
 freebasic: Hello World!
1
 freeswitch: Hello World!
1
 fsharp: Hello World!
1
 gambas: Hello World!
1
 gdb: Hello World!
1
 genero: Hello World!
1
 genie: Hello World!
1
 gettext: Hello World!
1
 glsl: Hello World!
1
 gml: Hello World!
1
 gnuplot: Hello World!
1
 go: Hello World!
1
 groovy: Hello World!
1
 gwbasic: Hello World!
1
 haskell: Hello World!
1
 haxe: Hello World!
1
 hicest: Hello World!
1
 hq9plus: Hello World!
1
 html4strict: Hello World!
1
 html5: Hello World!
1
 icon: Hello World!
1
 idl: Hello World!
1
 ini: Hello World!
1
 inno: Hello World!
1
 intercal: Hello World!
1
 io: Hello World!
1
 ispfpanel: Hello World!
1
 j: Hello World!
1
 java: Hello World!
1
 java5: Hello World!
1
 javascript: Hello World!
1
 jcl: Hello World!
1
 jquery: Hello World!
1
 julia: Hello World!
1
 kixtart: Hello World!
1
 klonec: Hello World!
1
 klonecpp: Hello World!
1
 kotlin: Hello World!
1
 latex: Hello World!
1
 lb: Hello World!
1
 ldif: Hello World!
1
 lisp: Hello World!
1
 llvm: Hello World!
1
 locobasic: Hello World!
1
 logtalk: Hello World!
1
 lolcode: Hello World!
1
 lotusformulas: Hello World!
1
 lotusscript: Hello World!
1
 lscript: Hello World!
1
 lsl2: Hello World!
1
 lua: Hello World!
1
 m68k: Hello World!
1
 magiksf: Hello World!
1
 make: Hello World!
1
 mapbasic: Hello World!
1
 mathematica: Hello World!
1
 matlab: Hello World!
1
 mercury: Hello World!
1
 metapost: Hello World!
1
 mirc: Hello World!
1
 mk-61: Hello World!
1
 mmix: Hello World!
1
 modula2: Hello World!
1
 modula3: Hello World!
1
 mpasm: Hello World!
1
 mxml: Hello World!
1
 mysql: Hello World!
1
 nagios: Hello World!
1
 netrexx: Hello World!
1
 newlisp: Hello World!
1
 nginx: Hello World!
1
 nimrod: Hello World!
1
 nsis: Hello World!
1
 oberon2: Hello World!
1
 objc: Hello World!
1
 objeck: Hello World!
1
 ocaml-brief: Hello World!
1
 ocaml: Hello World!
1
 octave: Hello World!
1
 oobas: Hello World!
1
 oorexx: Hello World!
1
 oracle11: Hello World!
1
 oracle8: Hello World!
1
 oxygene: Hello World!
1
 oz: Hello World!
1
 parasail: Hello World!
1
 parigp: Hello World!
1
 pascal: Hello World!
1
 pcre: Hello World!
1
 per: Hello World!
1
 perl: Hello World!
1
 perl6: Hello World!
1
 pf: Hello World!
1
 phix: Hello World!
1
 php-brief: Hello World!
1
 php: Hello World!
1
 pic16: Hello World!
1
 pike: Hello World!
1
 pixelbender: Hello World!
1
 pli: Hello World!
1
 plsql: Hello World!
1
 postgresql: Hello World!
1
 postscript: Hello World!
1
 povray: Hello World!
1
 powerbuilder: Hello World!
1
 powershell: Hello World!
1
 proftpd: Hello World!
1
 PROGRESS: Hello World!
1
 prolog: Hello World!
1
 properties: Hello World!
1
 providex: Hello World!
1
 purebasic: Hello World!
1
 pycon: Hello World!
1
 pys60: Hello World!
1
 python: Hello World!
1
 q: Hello World!
1
 qbasic: Hello World!
1
 qml: Hello World!
1
 racket: Hello World!
1
 rails: Hello World!
1
 rbs: Hello World!
1
 rebol: Hello World!
1
 reg: Hello World!
1
 rexx: Hello World!
1
 robots: Hello World!
1
 rpmspec: Hello World!
1
 rsplus: Hello World!
1
 ruby: Hello World!
1
 rust: Hello World!
1
 sas: Hello World!
1
 sass: Hello World!
1
 scala: Hello World!
1
 scheme: Hello World!
1
 scilab: Hello World!
1
 scl: Hello World!
1
 sdlbasic: Hello World!
1
 smalltalk: Hello World!
1
 smarty: Hello World!
1
 spark: Hello World!
1
 sparql: Hello World!
1
 SQL: Hello World!
1
 standardml: Hello World!
1
 stonescript: Hello World!
1
 swift: Hello World!
1
 systemverilog: Hello World!
1
 tcl: Hello World!
1
 tclegg: Hello World!
1
 teraterm: Hello World!
1
 texgraph: Hello World!
1
 text: Hello World!
1
 thinbasic: Hello World!
1
 tsql: Hello World!
1
 twig: Hello World!
1
 typoscript: Hello World!
1
 unicon: Hello World!
1
 upc: Hello World!
1
 urbi: Hello World!
1
 uscript: Hello World!
1
 vala: Hello World!
1
 vb: Hello World!
1
 vbnet: Hello World!
1
 vbscript: Hello World!
1
 vedit: Hello World!
1
 verilog: Hello World!
1
 vhdl: Hello World!
1
 vim: Hello World!
1
 visualfoxpro: Hello World!
1
 visualprolog: Hello World!
1
whitespace: Hello World!
1
 whois: Hello World!
1
 winbatch: Hello World!
1
 xbasic: Hello World!
1
 xml: Hello World!
1
 xojo: Hello World!
1
 xorg_conf: Hello World!
1
 xpp: Hello World!
1
 xyscript: Hello World!
1
yaml: Hello World!
1
 z80: Hello World!
1
 zxbasic: Hello World!