- ベストアンサー
不正アクセスの処理について
- 不正アクセスの処理についてサーバーのログに頻繁に記録されるアクセスの中で、特に問題のあるものを処理する方法をお探しです。
- ログに記録されるsshの接続エラーを解析し、不正なアクセス元のIPやホスト名を特定して攻撃を拒否する方法についてお尋ねしています。
- LinuxのFC5を使用しており、ログに記録される不正アクセスのIPやホスト名を特定する方法に加えて、他の有効な方法についてもアドバイスを求めています。
- みんなの回答 (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に設定すれば強度は上がると思います。
その他の回答 (6)
- junkUser
- ベストアンサー率56% (218/384)
> 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 です。
- AirRock_Fan
- ベストアンサー率48% (42/86)
sshのアタックは、いろんなIPから来ます(bot?)ので、いちいちリスト化するのは厳しいかと思います。 このURLの方がやっているような対策はいかがでしょうか? http://search.luky.org/linux-users.a/msg04927.html 何回かアタックに失敗した場合、アクセスを切るというスクリプトのようです。
お礼
ありがとうございます。 やはり、IPをとるのは面倒な作業になるんですねぇ。 iptableを使っていないので、AirRock_Fanさんの紹介してくれたシェルスクリプトは私のサーバーに使えないのですが、やはり自分で書かないと駄目な感じですねぇ。。 サーバーなのでアタックを受けるのは当たり前…とのことで私の仲間もこれらのことは(セキュリティーをちゃんとしておいて…)後は放っておいているようです。なんとかならないものかな…と考えていましたが、自分で書かないと駄目かもしれないですね。 ありがとうございます。
- junkUser
- ベストアンサー率56% (218/384)
>そのIPを記録しているログなどはないのしょうか? tcpdump ではどうでしょうか。
補足
ありがとうございます。 tcpdumpというファイルはありませんでした。 あるいは、tcpdumpに記録する方法はありますか?
- 774danger
- ベストアンサー率53% (1010/1877)
> 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を記録しているログなどはないのしょうか?(まだ立ち上げたばかりのサーバーなので、ログ関係はデフォルトのままです。) よろしくお願いします。
- junkUser
- ベストアンサー率56% (218/384)
>sshは外部に解放していないという意味です。 ???内部から辞書攻撃を受けているんですかねぇ。 それはさておき、hosts.allow で内部IPだけ許可してはどうかと思います。 http://vine-linux.ddo.jp/linux/ssh/allow.php あまり頻繁にあるようでしたら、iptstate でリアルタイムにアクセス元を確認できますよ。
補足
これはやっています。 内部からの辞書攻撃は勿論受けません。
- junkUser
- ベストアンサー率56% (218/384)
「sshは使っていないので問題はない」の根拠がわかりかねます。 あなたが使っていないだけで、デーモンとしては起動しています。 ssh のデーモンを停止した方が良いのではないでしょうか。
補足
sshは外部に解放していないという意味です。 内部LAN内では使っています。(127.0.0.1と192.168.1)
お礼
話がコロコロ変わってすみません。 しかし、774dangerさんのお陰で沢山のヒントを得ることができました。 やはり今調べてみたら、私のログと774dangerさんが書いてくれたログは同じことを意味していて、認証以前に拒否しているログだそうです。 私のログで調べてみたら日本のサイトでは殆ど何も出てこなくて(このスレッドが検索されました(笑))、英語のサイトで調べてみたら少しばかり出てきて不得意な英語でちょっと読んでみながら、やっとわかったのがこのログの意味です。なんだかいろいろと書いて頂いたことがヒントになりました。 そもそも私が示したログの意味を私自身が勘違いしていたので、とてもわかりにくいことになっていたようです。 ※余談ですが、IPから相手を調べてみたところ、やはり中国でした。。。ブルートフォースは中国、韓国、アメリカからが一番多いと聞いておりました。。。
補足
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さんはわかりますでしょうか? たぶん、これがわかれば、ほぼ解決すると思います。ログの詳しい意味がわかれば…というところまで来た感じです。