web-dev-qa-db-ja.com

VPSが危険にさらされていますか?設定が間違っていますか?

私はVPSを半年(教育目的で)レンタルしていて、それを安全に保つことについて可能な限り学ぼうとしています。

最近、侵害されており、気付く前の1週間ほど誰かのプロキシとして使用されていたのではないかと思います。 SSH経由でログインおよびログアウトするユーザー「anonymous」および「nobody」からのログがあり、CPU使用率は文字通りチャートから外れていました。

いずれにせよ、私はそれを再インストールし、それが再び起こるかどうかをテストするために私が知っているすべてを再適用しました、そして再インストール後の短い24時間以内に、私はそれがしたと思います。

/var/log/auth.logからのそれぞれのログは、私を妄想的に感じさせます。

Oct 31 06:30:21 vultr su[24157]: Successful su for nobody by root
Oct 31 06:30:21 vultr su[24157]: + ??? root:nobody
Oct 31 06:30:21 vultr su[24157]: pam_unix(su:session): session opened for user nobody by (uid=0)
Oct 31 06:30:21 vultr systemd: pam_unix(systemd-user:session): session opened for user nobody by (uid=0)
Oct 31 06:30:21 vultr systemd-logind[503]: New session 40 of user nobody.
Oct 31 06:30:24 vultr su[24157]: pam_unix(su:session): session closed for user nobody
Oct 31 06:30:24 vultr systemd-logind[503]: Removed session 40.

朝の6時半に認証をするのは私ではなかったので、当然どこかでまためちゃくちゃになるのではないかと心配です...

(注:root.bash_historyは疑わしいことを何も示していません。私が知る限り、ユーザーnobodyには.bash_historyがありません-間違っている場合は訂正してください)

SSHではパスワード認証が無効になっています。SSHキー認証のみが可能です。そのため、誰かがまだアクセスを取得できているため、次に何を試すかについて本当に混乱しています(私は思います)。

攻撃者が「nobody」ユーザーへのアクセスを取得したphpMyAdminエクスプロイトについて この記事 を読みました。ただし、Apacheログによると、phpMyAdminページにアクセスする試みは行われておらず、記事の日付は2010年であり、現在phpMyAdminページにもアクセスできないため、私の場合には当てはまらないと思います。 。

ただし、Apacheが受信するリクエストの種類は、少し心配です。例を次に示します(/var/log/Apache2/access.logから)。

192.99.144.140 - - [31/Oct/2015:03:43:48 +0000] "PROPFIND /webdav/ HTTP/1.1" 405 569 "-" "WEBDAV Client"
185.25.151.159 - - [31/Oct/2015:03:59:35 +0000] "GET http://testp2.czar.bielawa.pl/testproxy.php HTTP/1.1" 404 460 "-" "Mozilla/5.0 (Windows NT 5.1; rv:32.0) Gecko/20100101 Firefox/31.0"
61.228.95.69 - - [31/Oct/2015:09:07:39 +0000] "CONNECT 126mx00.mxmail.netease.com:25 HTTP/1.0" 405 536 "-" "-"
185.25.151.159 - - [31/Oct/2015:09:15:13 +0000] "GET http://testp4.pospr.waw.pl/testproxy.php HTTP/1.1" 404 457 "-" "Mozilla/5.0 (Windows NT 5.1; rv:32.0) Gecko/20100101 Firefox/31.0"

一方、私はこのようなものを期待しています:

my ip - - [31/Oct/2015:14:47:58 +0000] "GET / HTTP/1.1" 200 589 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.130 Safari/537.36"

しようとして何が達成されるのかわかりません

"GET http://testp4.pospr.waw.pl/testproxy.php"

私のサーバーから。 /var/www/htmlにはそのようなファイルやディレクトリはありません

再インストール後に安全を確保するために行ったすべてのことをリストします。私が何か間違ったことをしたと思うか、まったく何もしていないかを指摘してください。

私がしたこと:

  1. Ubuntu15.04の新規インストール
  2. 公開鍵と秘密鍵のペアを生成する
  3. サーバー上のauthorized_keysファイルに公開鍵を追加します
  4. /etc/ssh/sshd_configでこれらの設定を変更して、パスワード認証を無効にし、SSHキー認証のみを許可します

    PermitRootLogin without-password
    RSAAuthentication yes
    PubkeyAuthentication yes
    PasswordAuthentication no
    
  5. リブート

  6. 必要なものを次の順序でインストールします。

    Zip 
    unzip 
    Apache2
    mysql-server
    php5 libapache2-mod-php5
    openjdk-7-jdk
    gcc
    g++
    screen
    vsftpd
    auditd
    
  7. デフォルトの/var/www/html/index.htmlを削除します

  8. Vsftpdが機能するように構成します(FtpUserの強力なパスワードを持っています)。私はフォローしました DigitalOceanからのこのチュートリアル

    mkdir /home/proj
    groupadd ftp-users
    chown root:ftp-users /home/proj
    chown root:ftp-users /var/www
    useradd -g ftp-users -d /home/proj FtpUser
    chown FtpUser /home/proj
    passwd FtpUser    (add strong password)
    

    これらの設定を/etc/vsftpd.confで変更しました

    anonymous_enable=NO
    local_enable=YES
    write_enable=YES
    chroot_local_user=NO
    pam_service_name=ftp
    
  9. リブート

私が言及しなかった他のすべてはデフォルトであり、インストールされているすべてのソフトウェアは最新です。

以前に表示したログが気になる場合はお知らせください。また、設定が正しくないかどうか、セキュリティをさらに向上させるために何ができるかを教えていただければ幸いです。さらに、あなたが長期的に非常に役立つであろう問題に関する良い記事を知っているなら。

8
electricity256

Webサーバーの前で hiawatha webserverreverse proxyとして実行します。ログで次のようなエクスプロイトをブロックします(「garbage」としてブロックされます)。

91.196.50.33|Sat 19 Mar 2016 21:12:15 +0000|GET http://testp3.pospr.waw.pl/testproxy.php HTTP/1.1
Host: testp3.pospr.waw.pl
Proxy-Connection: Keep-Alive
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:32.0) Gecko/20100101 Firefox/31.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: pl,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate

別々のlxcコンテナ内でウェブサーバーとプロキシを実行して、プロセスをさらに分離します。

php-fpmに組み込まれているchroot機能を使用します。

Shell内でchrootを使用可能にしないでください

sshポートをステルス

/var/www/public_htmlnoexec nosuid nodevとしてマウントします。

1
Stuart Cardall