ex1-lab

Linux, CentOS, Mac OS X, Windows, 仮想化, Apache等のLinux中心に気になることをメモがわりに・・・

321.1 ホストベースのアクセス制御

      2017/02/03 この記事は約7分で読むことができます。

321.1 ホストベースのアクセス制御

重要度 2
説明 nsswitch構成、PAM、パスワードクラッキングなどの基本的なホストベースアクセス制御に精通していること。

主要な知識範囲

  • PAM 及び PAMの設定ファイル
  • パスワードクラッキング
  • nsswitchについて

重要なファイル、用語、ユーティリティ

  • nsswitch.conf
  • john

nsswitch.conf

/etc/nsswitch.confは、各種サービスの名前解決順序を指定するファイル。
古いライブラリでは、/etc/host.confファイルで参照順を設定しますが、現在において/etc/nsswitch.confファイルを編集することがほとんどです。

1番目にローカルの /etc/hosts
2番目に NIS+ を探す
最後にネームサービスを利用する

John the Ripper

John the Ripperとは古くからあるパスワードクラッカーです。主にDES、MD5などの暗号化アルゴリズムに対応しています。
passwdファイル・shadowファイルもDESやMD5で暗号化されています

install (CentOS 6.x)方法

書式
john [オプション] パスワードファイル
[]は省略可能。但し、全アルゴリズムで全ユーザで実施するので時間がかかる

オプション

使用例test01 ユーザー作成、パスワードは「test0123」

test02 ユーザー作成、パスワードは「dgr@sda84LL」test02は複雑なパスワード

/etc/passwd, /etc/shadowファイルから、JOHNで解析可能な形式に変換したファイル(passwd_shadow)を生成する

test01のパスワード解析 数秒で解析可能

test02のパスワード解析 解析不能

オプション無しでtest02を解析 解析に時間がかかるので途中で停止しました

解析したパスワードを表示

PAMとは?PAM(Pluggable Authentication Module)とは、 ユーザー認証に使用するモジュール群と、 それを利用するための標準的なAPI備えたライブラリからなるユーザー認証システム
PAM には以下のようなメリットがあります。

  • アプリケーションから認証処理を独立させることができる。アプリケーションはPAMのAPIを利用するだけで認証を行える。
  • PAMはアプリケーションから見たインタフェースが標準化されているため、システム(Linuxのディストリビューション)が異なってもソースの互換性が保たれる。
  • PAMモジュールを入れ替えることで、アプリケーションに手を加えずに認証方式を動的に変更できる

/etc/pam.d/
PAM認証に利用するアプリケーション・コマンドの設定ファイルは /etc/pam.d/ ディレクトリに格納されています/etc/pam.d/ディレクトリに格納されている主なファイル書式
PAMの設定ファイルの書式
ライブラリタイプ コントロール モジュール [引数]
[]は省略可能ライブラリタイプコントロール主なモジュール
「/lib64/security(32bitの場合は/lib/security)」にあるモジュールがあります引数・パスワード入力なしでも、suコマンドでユーザー変更できるようにする設定
1. /etc/pam.d/su を以下に設定

2. パスワード無しでsuコマンドを許可させるユーザー(test01)を、wheelグループに追加する

・root以外のユーザーをログインを禁止する
1. /etc/nologin ファイルを存在する事を確認する

2. /etc/pam.d/login ファイルに以下を追加する

・root以外のユーザーをログインを禁止する
1. loginの制限
認証を失敗したユーザーは接続拒否するので、 [required] or [requisite] を指定
ログインを制限するので itemはuser 拒否するユーザーを指定するので sense=deny
fileは/etc/security/listfile onerr=succeedを指定

2. gdmの制限(グラフィカルログイン)の制限
認証を失敗したユーザーは接続拒否するので、 required or requisite を指定
ログインを制限するので itemはuser 拒否するユーザーを指定するので sense=deny
fileは/etc/security/listfile onerr=succeedを指定

3. /etc/security/listfile でログインを拒否するユーザーを追加

--single シングルモード。「ユーザ名」からパスワードを解析する。
--wordlist=’dictionary_list’ 辞書解析モード。辞書ファイル「discionary_list」を指定してそいつを照らしあわせていく。
--incremental ブルートフォールス方式。
--show 解析した元のパスワードを表示
/etc/pam.d/login loginコマンドの使用制限に関する設定ファイル
/etc/pam.d/sshd sshコマンドの使用制限に関する設定ファイル
/etc/pam.d/su suコマンドの使用制限に関する設定ファイル
/etc/pam.d/system-auth 各アプリケーションで共通する認証設定ファイル
auth ユーザー認証の許可
account アカウント有効期間や有効性をチェック
password パスワード関連の設定
session ユーザーセッション・接続時の動作設定
optional ステータスを無視
required 失敗時はログインに失敗するが処理を進める。requiredエラーになる。
requisite 失敗時は処理終了
sufficient 成功時はアクセス許可
pam_access.so /etc/security/access.conf ファイルの設定に従ってアクセスを許可
pam_deny.so 常にアクセスを拒否
pam_listfile.so fileの引数とitem引数で指定したファイルの内容によって特定のユーザーのサービスの利用を制限
pam_nologin.so /etc/nologinファイルがあればrootユーザー以外のログインを拒否。ファイルの中身は空でもOK
pam_permit.so 全ユーザーのアクセスを許可
pam_rootok.so uidのチェックをおこない、現ユーザーがrootかどうか確認する。ゼロの場合は許可
pam_securetty.so /etc/securityファイルの設定に従ってttyからのログインを制限
file=[値] ACL設定情報として参照する設定ファイル
item=[値] ACL設定する項目を指定。rhost, userなどの値を指定可
rhost リモートユーザーからの接続を設定
user ユーザーのログインを設定
onerr=[値] listfileモジュールにエラーが発生した場合の処理を設定。succeed, failのいずれかの選択
succeed 処理を続ける
fail 処理を終了する
sense=[値] ACLファイルがどのように解釈されるかを設定。allow, denyのいずれかの選択
allow ファイルに設定項目が存在する場合は接続許可
deny ファイルに設定項目が存在する場合は接続拒否



 - LPIC 30x