プロが教える店舗&オフィスのセキュリティ対策術

 サーバーのログに以下のようなものが頻繁に来ます。
Received disconnect:
11: Bye Bye : 98 Time(s)

**Unmatched Entries**
pam_succeed_if(sshd:auth): error retrieving information about user eaguilar
pam_succeed_if(sshd:auth): error retrieving information about user staff
pam_succeed_if(sshd:auth): error retrieving information about user sales
pam_succeed_if(sshd:auth): error retrieving information about user recruit


 sshは使っていないので問題はないのです。が、あまりに大量のログができてしまうので、一応攻撃を拒否しようと思っているのですが、これらのアクセス元のIPはどうやったらわかるでしょうか?(殆ど外国からの攻撃です。)
 IPやホスト名がわかればhostsのdenyに登録してしまおうと思っています。

 OSはLinuxのFC5です。

 また、何か別のよい方法があればおしえて頂けると幸いです。よろしくお願いします。

A 回答 (7件)

もともと「sshは使っていない」だったのに、「sshは外部に解放していない」とか「友人にだけ使えるようポート22は開いている」とか条件がころころ変わるのでわけがわからなくなっているのですが、


「22/TCPはlocalhost, 192.168.1.0/24, グローバルIP1つだけに開放されている」という条件で話を進めます。

> このような設定の場合もデフォルトではログが残るのでしょうか?

自分の環境はFreeBSD + openssh5.0 (--with-tcp-wrappers) なのでメッセージは違うと思いますが、
sshd[47803]: refused connect from mail.hansoll1.com.gt (200.49.167.66)
のように認証以前にconnectionをはじいたログが残ります。Linuxでも認証前にはじけば「user eaguilar」のような情報を受ける前に切るのですから少なくとも今出ているログからは変化するでしょう。
そもそもFirewallがあるのになぜFirewallで「22/TCPはグローバルIP1つだけに開放」という設定をしないのかが非常に疑問です。(また後付け条件が出てきますか?)
そうすれば、ある場合を除いてはSSHが遮断されるので認証失敗のログすら出ないはずなのですが.........

> たぶん私のマシンの今の状態はこのようになっていると思います。(一つだけのホストに開放していますが…)

このことを何らかの手段で確認していますか?
おそらくhosts.allowの設定が効いておらずどこからでもアクセスできるようになっている気がします。逆に、もしちゃんと効いているのであれば、辞書攻撃を仕掛けているのは「あなたの友人」ということになります。
(その友人のマシンがすでに乗っ取られているのかもしれませんが)

> tcpdumpというファイルはありませんでした。

tcpdumpはパケットダンプをするツールです。Wiresharkでもかまいません。
ログにIPアドレスが出ないのであればキャプチャして確認するのが早いでしょう。

・Firewallで22/TCPを1つのIPアドレスに絞る
・hosts.allowの設定が効いているかを確認する

ことをまずすべきかと思います。
あと、鍵の管理がきちんとできるのであればパスワード認証をできないようにして鍵認証のみを行うようにSSHに設定すれば強度は上がると思います。

この回答への補足

IPの取り方がわかりました。
FC5ではsecureを見ればわかるようです。

ちょっと私自身わからないのが、
pam_succeed_if(sshd:auth): error retrieving information about user eaguilar
というログは、もしかしたらアクセス拒否をすでにしている…ということなんてしょうか?
774dangerさんに説明して頂いた内容で気が付いたのですが、hosts.allowは確実に効いています。dneyも効いています。
実際にsecureのログを見てみると、開いていないポートをかなり無作為にアクセスしているんですね。勿論ポートは開いていないのですべて失敗に終わっています。

となると、774dangerさんのサーバーではき出される
sshd[47803]: refused connect from mail.hansoll1.com.gt (200.49.167.66)
このログと、
私の
pam_succeed_if(sshd:auth): error retrieving information about user eaguilar
は、殆ど同じ…ということにはならないでしょうか?つまり、認証以前に弾いている…ということです。

 セキュリティー的に心配というのではないのですが、何せログが多すぎることと、相手のIPがわからない…ということで何かしら手を打とうと考えていたのですが、一応IPの取り方がわかったので、自分でちょっとスクリプトを書いてみようと思います。

**Unmatched Entries**
pam_succeed_if(sshd:auth): error retrieving information about user eaguilar
のログの意味がいまいちわからないのが少しばかり気がかりなのですが、774dangerさんはわかりますでしょうか?
たぶん、これがわかれば、ほぼ解決すると思います。ログの詳しい意味がわかれば…というところまで来た感じです。

 

補足日時:2008/06/03 22:17
    • good
    • 0
この回答へのお礼

話がコロコロ変わってすみません。
しかし、774dangerさんのお陰で沢山のヒントを得ることができました。

やはり今調べてみたら、私のログと774dangerさんが書いてくれたログは同じことを意味していて、認証以前に拒否しているログだそうです。
私のログで調べてみたら日本のサイトでは殆ど何も出てこなくて(このスレッドが検索されました(笑))、英語のサイトで調べてみたら少しばかり出てきて不得意な英語でちょっと読んでみながら、やっとわかったのがこのログの意味です。なんだかいろいろと書いて頂いたことがヒントになりました。
そもそも私が示したログの意味を私自身が勘違いしていたので、とてもわかりにくいことになっていたようです。

※余談ですが、IPから相手を調べてみたところ、やはり中国でした。。。ブルートフォースは中国、韓国、アメリカからが一番多いと聞いておりました。。。

お礼日時:2008/06/03 23:01

> pam_succeed_if(sshd:auth): error retrieving information about user eaguilar


>というログは、もしかしたらアクセス拒否をすでにしている…ということなんてしょうか?

あはは・・・んなわけねー!
どう見ても外部から辞書攻撃受けてますって。

tcpdump を知らないほどの初心者とは思わなかったので失礼しました。
tcpdump は通信中のパケットを見るツールです。
たとえば eth0 の通信を見る場合は、
tcpdump -n -i eth0
で確認できます。ssh だけを見る場合は
tcpdump -n -i eth0 | grep ssh
です。
    • good
    • 0

sshのアタックは、いろんなIPから来ます(bot?)ので、いちいちリスト化するのは厳しいかと思います。



このURLの方がやっているような対策はいかがでしょうか?
http://search.luky.org/linux-users.a/msg04927.html

何回かアタックに失敗した場合、アクセスを切るというスクリプトのようです。
    • good
    • 0
この回答へのお礼

 ありがとうございます。
やはり、IPをとるのは面倒な作業になるんですねぇ。
iptableを使っていないので、AirRock_Fanさんの紹介してくれたシェルスクリプトは私のサーバーに使えないのですが、やはり自分で書かないと駄目な感じですねぇ。。
 サーバーなのでアタックを受けるのは当たり前…とのことで私の仲間もこれらのことは(セキュリティーをちゃんとしておいて…)後は放っておいているようです。なんとかならないものかな…と考えていましたが、自分で書かないと駄目かもしれないですね。
 ありがとうございます。

お礼日時:2008/06/03 16:37

>そのIPを記録しているログなどはないのしょうか?



tcpdump ではどうでしょうか。

この回答への補足

ありがとうございます。
tcpdumpというファイルはありませんでした。

あるいは、tcpdumpに記録する方法はありますか?

補足日時:2008/06/03 15:39
    • good
    • 0

> sshは外部に解放していないという意味です。



Internetとの間にFirewall等があってそこで22/TCPを閉めているということですか?
実は閉めたつもりになっていて外に大開放してるとか........
とりあえずNo.2のかたも書かれているようにlocalhostと使っているプライベートアドレスのみをhosts.allowに登録して様子を見ればいいと思います。
もし外部からなら認証以前に接続が切られるはずでそのログが残りますし、内部からの攻撃であれば状況は変わらないはずですから。

もし外部からのアクセスならFirewallのポリシーを見直したほうがいいと思います。

この回答への補足

 なるほど!詳しい説明ありがとうございます。

 ちょっと詳しい説明が足りない感じでした。現在Internetとの間にはFirewallがあります。外部にsshを解放するのはちょっと感覚的にイヤなのですが、一緒にサーバーを使っている友人にだけ使えるように設定しています。ですのでポート22は開いている状態です。
 hostの設定では、allowにはLAN内のIP(127.0.0.1と192.168.1)と友人の固定IPを一つを設定し、denyの方では、ALLを設定しています。
 この状態ですと、その他の人が入るということはないと思うのですが、このような設定の場合もデフォルトではログが残るのでしょうか?

 度々攻撃を受けますが、(たぶん、ですが…)どこのサーバーでもこの程度の攻撃は受けていると思います。勿論破られたり乗っ取られたり…ということは今までないのですが…。

 質問の趣旨なのですが、
1. 攻撃先のIPを取得したい。
2. それ以外で皆様のやっているセキュリティー対策はどんな感じなのかアドバイスを頂きたい。
ということです。

>とりあえずNo.2のかたも書かれているようにlocalhostと使っているプライベートアドレスのみをhosts.allowに登録して様子を見ればいいと思います。
もし外部からなら認証以前に接続が切られるはずでそのログが残りますし、内部からの攻撃であれば状況は変わらないはずですから。

 たぶん私のマシンの今の状態はこのようになっていると思います。(一つだけのホストに開放していますが…)
 一つだけのホストに開放している状態なので、「認証以前に切られない」ということになっているんでしょうか?

 セキュリティー的には、問題ないと思うのですが、何せ相手がわからないというのがちょっとイヤな感じで、sshが破られることはないと思うのですが、できれば相手のIPを知りたいというところです。
 どこかにそのIPを記録しているログなどはないのしょうか?(まだ立ち上げたばかりのサーバーなので、ログ関係はデフォルトのままです。)

 よろしくお願いします。

補足日時:2008/06/03 13:29
    • good
    • 0

>sshは外部に解放していないという意味です。



???内部から辞書攻撃を受けているんですかねぇ。

それはさておき、hosts.allow で内部IPだけ許可してはどうかと思います。
http://vine-linux.ddo.jp/linux/ssh/allow.php

あまり頻繁にあるようでしたら、iptstate でリアルタイムにアクセス元を確認できますよ。

この回答への補足

これはやっています。
内部からの辞書攻撃は勿論受けません。

補足日時:2008/06/03 13:44
    • good
    • 0

「sshは使っていないので問題はない」の根拠がわかりかねます。


あなたが使っていないだけで、デーモンとしては起動しています。
ssh のデーモンを停止した方が良いのではないでしょうか。

この回答への補足

sshは外部に解放していないという意味です。
内部LAN内では使っています。(127.0.0.1と192.168.1)

補足日時:2008/06/03 11:01
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!