root権限で行う操作、コマンドを実行するだけならsuでrootになっても可能だが、sudoを介して実施する事によって監査ログを取得できる。
※目次をクリックすると目次の下部にコンテンツが表示されます。
- 1.sudoの特徴
- 2.sudo実行時のデフォルトのログ
- 3.sudoを許可する設定
- 4.sudoの新たなログを記録
- 5.sudoのパスワードタイムアウト
- 6.sudoを使って管理権限のある新たなシェルを開く
sudoの特徴
・sudoを使ってシステム権限が必要なコマンドを実行する事によって、実行状況を監査ログ(/var/log/secure)に記録する事が出来る。
・sudoは、どのユーザーが他のユーザーアカウントの権限でコマンドを実行できるか、細かくコントロールする事が出来る。
・sudoの設定ファイル”/etc/sudoers”を直接エディタで編集すると構文エラーがあった場合にリモートからrootアカウントでアクセスできなくなる恐れがある。
”visudo”を使って編集すると、保存前に文法チェックを行ってくれるので危険が軽減される。
・sudoを使うとrootアカウントのパスワードを入力せず、そのユーザーのパスワードでrootアカウントとしてコマンドを実行できてしまう。セキュリティ面ではデメリットとなるので監査ログを取得できるメリットとどちらを優先させるか検討する必要がある。
・sudoは、どのユーザーが他のユーザーアカウントの権限でコマンドを実行できるか、細かくコントロールする事が出来る。
・sudoの設定ファイル”/etc/sudoers”を直接エディタで編集すると構文エラーがあった場合にリモートからrootアカウントでアクセスできなくなる恐れがある。
”visudo”を使って編集すると、保存前に文法チェックを行ってくれるので危険が軽減される。
・sudoを使うとrootアカウントのパスワードを入力せず、そのユーザーのパスワードでrootアカウントとしてコマンドを実行できてしまう。セキュリティ面ではデメリットとなるので監査ログを取得できるメリットとどちらを優先させるか検討する必要がある。
sudo実行時のデフォルトのログ
・sudoを使った正常な認証
/var/log/messages
・この発行者のユーザー名で発行されたコマンド
/var/log/secure
/var/log/messages
・この発行者のユーザー名で発行されたコマンド
/var/log/secure
sudoを許可する設定
“wheel”グループのユーザーがroot権限のコマンドを実行できるように設定する手順を示す。
①wheelグループが存在することを確認
# grep ^wheel /etc/group
②sudoの設定
# visudo
下記設定を有効にする、または追加する。
%wheel ALL=(ALL) ALL
①wheelグループが存在することを確認
# grep ^wheel /etc/group
②sudoの設定
# visudo
下記設定を有効にする、または追加する。
%wheel ALL=(ALL) ALL
sudoの新たなログを記録
・pam_tty_auditモジュールで特定ユーザーのTTY監査を有効にする。
※pam_tty_auditモジュール
・/etc/pam.d/system-authに下記設定を追加する。
session required pam_tty_audit.so disable=パターン enable=パターン
上記の”パターン”と記述した部分にユーザーを指定する。
例)rootユーザーのTTY監査を有効にし、その他のユーザーについては無効
session required pam_tty_audit.so disable=* enable=root
※pam_tty_auditモジュール
・/etc/pam.d/system-authに下記設定を追加する。
session required pam_tty_audit.so disable=パターン enable=パターン
上記の”パターン”と記述した部分にユーザーを指定する。
例)rootユーザーのTTY監査を有効にし、その他のユーザーについては無効
session required pam_tty_audit.so disable=* enable=root
sudoのパスワードタイムアウト
・デフォルトでは、sudoコマンド使用者のパスワードのタイムアウトは5分間で、この間にコマンドを続けて使うとユーザーはパスワードを要求されない。
このため、ユーザーがログイン状態のままワークステーションを離れたりロックしない状態にしておくと、攻撃者に悪用されかねない。
・デフォルトのタイムアウト時間を変更するには/etc/sudoersに以下設定を追加する。
Defaults timestamp_timeout=値(分)
0にするとsudoは毎回パスワードを要求する。
このため、ユーザーがログイン状態のままワークステーションを離れたりロックしない状態にしておくと、攻撃者に悪用されかねない。
・デフォルトのタイムアウト時間を変更するには/etc/sudoersに以下設定を追加する。
Defaults timestamp_timeout=値(分)
0にするとsudoは毎回パスワードを要求する。
sudoを使って管理権限のある新たなシェルを開く
・wheelグループに対するデフォルト設定のようにすべてのコマンドが許可されていると下記を実行すると管理権限のある新たなシェルを開くことができる。
sudo /bin/bash
この方法や同様の方法でrootとして新たなシェルを開くと、/etc/sudoersファイルでタイムアウト時間を指定していても無視され、新たに開かれたセッションが閉じられるまでsudoパスワード入力を要求することがなく、管理者権限でシェルを実行できてしまうので注意。
sudo /bin/bash
この方法や同様の方法でrootとして新たなシェルを開くと、/etc/sudoersファイルでタイムアウト時間を指定していても無視され、新たに開かれたセッションが閉じられるまでsudoパスワード入力を要求することがなく、管理者権限でシェルを実行できてしまうので注意。
-
OpenSSH
- レンタルサーバー(VPS)にSSHでログイン
- VPS(レンタル)サーバー上のssh初期設定確認
- SSH接続の仕組み
- OpenSSHの設定ファイル
- OpenSSHの設定をよりセキュアに
- CentOS Stream9のSSH設定(OpenSSH)
- WinSCPを使ってファイル転送
ネットワーク、ポート番号
rpmパッケージ、サービス
パーミッション
ログイン、認証、パスワード、アカウント制御
auditdでシステム監査
ツール
トラブルシューティング
-
ネットワーク、ポート番号
- iptablesを使ってCentOSのファイアウォール設定
- CentOS6のTCPラッパーの概要と設定方法
- nmapでオープンしているポート番号とバージョンを確認
- yumコマンドで最新のパッケージにアップデート
- 更新可能なRPMパッケージのリストをメールで送信する
- CentOSで不要なサービスは起動しないようにする
- RPMパッケージのインテグリティチェック
- cronで使用するファイルのパーミッション設定
- CentOSのumaskの設定
- ユーザーホームディレクトリ内の権限設定をセキュアにする
- CentOSのパスワードファイルのパーミッション設定
- findコマンドでファイル書込権限をいっせいにチェック
- findコマンドでセットユーザ(グループ)IDが不要にセットされていないかチェック
- findコマンドで所有者、グループが存在しないファイルを抽出
- ログイン時などに表示されるシステムバナーを変更するには?
- CentOSのユーザーアカウントのパスワードポリシーを設定
- pam_cracklibモジュールでパスワードポリシーを設定
- pam_unix.soモジュールを使って過去のパスワード再使用を制限する
- システムコンソールでのrootログインを制限する方法
- suコマンドによるrootへのスイッチを制限する
- root権限でのコマンド実行、sudoだと監査ログが取得できる
- デーモン用アカウントなどに対しシェルを使用を無効にする
- パスワード認証を失敗時にアカウントをロックアウトする設定
- rootアカウントのPATH環境変数のセキュリティについて
- NTPのセキュリティを考慮した設定
- セキュリティを考慮してX Windowsを設定または削除する方法
- ファイルの改ざん対策用にTripwireを導入
- CentOSにホスト型侵入検知ソフトAIDE(Advanced Intrusion Detection Environment)を導入
- アイドルのシェルを自動で強制終了させるには?
- CentOSでコアダンプを無効にする方法
- Linuxのbash脆弱性CVE-2014-6271、Shellshockを修整
- CentOSでバッファーオーバーフロー脆弱性に対する防御機能が有効になっているか確認する
yum、rpmパッケージ、サービス
パーミッション
ログイン、認証、パスワード、アカウント制御
ツール
トラブルシューティング