サーバ運用のネタ帳(アプリ編)

[top]

今時のsshサーバのお約束

パスワード認証は廃止する

インターネットにオープンになっているsshサーバは,ブルートフォース攻撃に晒されるため,パスワード認証は禁止するべき.また,sshguard(ports/security/sshguard)による防御策により,攻撃することにコストがかかるサーバに仕上げることが重要です.

パスワード認証は, sshd_config (FreeBSDなら,/etc/ssh/sshd_config) 内の

PasswordAuthentication no

で解決です.もちろん,ユーザーに公開鍵設定,sudo や, su (root権限をだせるアプリケーション)出来るように,許可するユーザーには,パスワードも設定しなければなりません.逆に言えば,sudo させないなら,vipwで,passwordは,*としておくべきです.

しかし,一部ユーザーや,一部ネットワークからは,PasswordAuthしたいとか,緩和したいとかあると思います.この時は,Match キーワードをsshd_configに書き,設定を上書きしたいオプションを指定します.例えば,特定ユーザー takenoko さんを PasswordAuthentication Yesとしたいなら,

Match User takenoko
    PasswordAuthentication yes

とします.Matchキーワードの引数には, User , Group, Host, Address つまり,ユーザ名,グループ,ホスト,ネットワークが指定でき,*によるワイルドカード表記や,コンマによる複数指定,複数の引数の連続記載による同時評価もできます.

複数のMatchを組み合わせれば,次のような設定もできます.ユーザ名 kimuraと,tanaka が, 192.168/16からの接続であるならば,PasswordAuthentication を Yesとする例は,以下のような感じになります.

Match User kimura,tanaka Address 192.168.*.*
    PasswordAuthentication Yes

となります.

sshguardを入れておく

sshの脆弱性は,ユーザーが設定する「脆弱な」パスワードです.そして,敵は,辞書やよく使われるアカウント名,アプリケーションが設定するアカウント名などを組み合わせて,何度も何度もトライして,破ろうとします.いわゆるブルートフォース攻撃です.

sshguardは,sshデーモンを監視し,ブルートフォース攻撃を行うホストを検出したら,種々にフィルタリングやアクセス制限により,そのホストからの接続を一定時間拒否する仕組みです.

アクセス制限やフィルタリングは, /etc/hosts.allowや,ipfw,ipfilter (FreeBSDなど),pf(BSD群), netfilter/iptables等に対応しています.いれておいて損はありません.

 

[top]