- PR -

認証に失敗したアクセス元をリジェクト

投稿者投稿内容
h2
ベテラン
会議室デビュー日: 2004/12/23
投稿数: 58
投稿日時: 2005-12-06 18:33
こんばんわ.
現在sshdを動かしているのですが,存在しないユーザ名を用いた辞書アタックが多くて,/var/log/secure がすぐに膨れてしまいます.
今までは,アクセス元のIPを手動でiptablesに入れて拒否していたのですが,とても対応できない量になってきたのと,リモートからのiptables操作はリスクがあるので避けたいと思っています.
一定回数そのホストから認証が失敗すると,次からは自動的にアクセスを拒否するといった設定はできないでしょうか?
NeXT
大ベテラン
会議室デビュー日: 2004/04/06
投稿数: 215
お住まい・勤務地: 江戸
投稿日時: 2005-12-06 19:06
alt.sources に投稿されたsshmonitor は如何でしょうか。

これは tcp_wrapper を利用して hosts.deny にアクセス拒
否させたいホストを追加してくれるものです。

私自身は Solaris10 で利用しようと考えたのですが perl
にも不慣れなためまだ動かしてないのですが。

ざっと見ただけなので自信はないですが Redhat/Fedora
ならログファイル等の変更点も少なさそうです。
はゆる
ぬし
会議室デビュー日: 2004/02/16
投稿数: 1008
お住まい・勤務地: 首都圏をウロウロと
投稿日時: 2005-12-06 19:16
こんばんは。

「ssh 攻撃 iptables」 あたりでググってみると、
様々な対策方法を見つけることができますよ。

# iptables の recent モジュールを使う、という方法があるんですね
# (kernel のバージョンに注意とのことですが)
zume
ベテラン
会議室デビュー日: 2003/06/05
投稿数: 93
投稿日時: 2005-12-06 20:24
ご質問の内容へのお答えではなくて申し訳ありませんが、ちょっと違う観点から。

正規ユーザだけ接続を許可という事であれば、sshd_configに”AllowUsers”を
定義するのが最もお手軽だと思いますよ。
($ man sshd_config で興味があれば確認を)

注意点は複数ユーザを列挙するときはスペースで区切る事ですかね。
h2
ベテラン
会議室デビュー日: 2004/12/23
投稿数: 58
投稿日時: 2005-12-06 20:55
みなさま,ご返答有難う御座います.
こちらの環境をもう少し詳しくお伝えします.
OSは,Red Hat Enterprise Linux ES 4.0 を使用しております.
iptablesのバージョンを調べたところ,1.2.11でした.

問題のサーバですが,複数のユーザが,sshを用いてリモートから接続しています.
このため,"AllowUsers"の指定はかなり厳しい状況です.
"AllowUsers"は,一部のアカウントだけ接続できるようにしたい時に使用するもので,ローカルログインを許可している全ユーザがsshでログインするなら,設定しても意味のないものなのでしょうか?

使用しているのは,sshd と httpd だけなので xinetd を停止させてあります.
sshdはスタンドアローンで動いているので,hosts.deny を有効にするためには tcp_wrapper を経由するように設定しなければいけないのでしょうか?

自分でググった時は,キーワードが悪かったみたいで,うまく見つけられませんでしたが,「ssh 攻撃 iptables」 でググって見ると,はゆるさんのコメント通り対策方法をみつけることができました.
ログから攻撃を検知する方法と,iptablesの機能を用いて検知する方法に分けられるようです.たくさんの手法があって大変勉強になるのですが,難しくて分からないところもたくさんありました.
recent モジュールを使用する際には,カーネルのバージョンに注意とのことですが,現在のカーネルで正しく動作させられたとしても,カーネルをバージョンアップした際などに不具合が発生することも考えられると言うことでしょうか?

質問ばかりで申し訳ありませんが,ご教授頂けると幸いです.
zume
ベテラン
会議室デビュー日: 2003/06/05
投稿数: 93
投稿日時: 2005-12-06 21:46
自分が答えられる部分だけ。。

”AllowUsers”ですが、該当のサーバにsshで接続するユーザ全員を設定しても
全然問題ありません。(接続を許可するユーザを定義するものなので)

またhosts.denyの件ですが、定義すれば即有効になります。
RHEL4ESのsshdはTCP_Wrapper経由で動作しますので、もし、接続元が
社内からだけとか限定できるのであればiptablesを利用するより簡単に設定
できると思います。
kaz
ぬし
会議室デビュー日: 2003/11/06
投稿数: 5403
投稿日時: 2005-12-06 21:51
こんばんわ.
引用:

h2さんの書き込み (2005-12-06 20:55) より:

OSは,Red Hat Enterprise Linux ES 4.0 を使用しております.
iptablesのバージョンを調べたところ,1.2.11でした.


iptables が 1.2.8 以前だと recent option が対応していないらしいです.
引用:

使用しているのは,sshd と httpd だけなので xinetd を停止させてあります.
sshdはスタンドアローンで動いているので,hosts.deny を有効にするためには tcp_wrapper を経由するように設定しなければいけないのでしょうか?


RHEL の OpenSSH なら TCP wrapper の library を取り込んでいますので,
standalone でも hosts.allow/deny で接続を制御できます.
ですから NeXT 様のご指摘に繋がるわけです.
引用:

recent モジュールを使用する際には,カーネルのバージョンに注意とのことですが,現在のカーネルで正しく動作させられたとしても,カーネルをバージョンアップした際などに不具合が発生することも考えられると言うことでしょうか?


前述どおりなので「古い kernel を使ったりしていると NG」な話では?
違います? -> はゆる様
h2
ベテラン
会議室デビュー日: 2004/12/23
投稿数: 58
投稿日時: 2005-12-06 22:20
みなさんご返答有難う御座います.

引用:

kazさんの書き込み (2005-12-06 21:51) より:
RHEL の OpenSSH なら TCP wrapper の library を取り込んでいますので,
standalone でも hosts.allow/deny で接続を制御できます.
ですから NeXT 様のご指摘に繋がるわけです.


引用:

zumeさんの書き込み (2005-12-06 21:46) より:

またhosts.denyの件ですが、定義すれば即有効になります。
RHEL4ESのsshdはTCP_Wrapper経由で動作しますので、もし、接続元が
社内からだけとか限定できるのであればiptablesを利用するより簡単に設定
できると思います。


zumeさん,kazさんのご指摘の通り,sshd を hosts.allow/deny で制御できました.
iptables で recent も使用できるようですが,zumeさんのご指摘のように簡単に設定できそうなので,とりあえずログを解析して hosts.deny に拒否リストを追加するものを利用しようと思います.

引用:

kazさんの書き込み (2005-12-06 21:51) より:
前述どおりなので「古い kernel を使ったりしていると NG」な話では?
違います? -> はゆる様


ということは,新しいカーネルではrecentは必ずサポートされていると考えて良いとのことでしょうか?

引用:

zumeさんの書き込み (2005-12-06 21:46) より:
”AllowUsers”ですが、該当のサーバにsshで接続するユーザ全員を設定しても
全然問題ありません。(接続を許可するユーザを定義するものなので)


なるほど,全ユーザに許可するときは設定しても問題ないのですね.

色々と教えて頂くことができて,大変勉強になりました.
有難う御座いました.

スキルアップ/キャリアアップ(JOB@IT)