2 セキュリティのガイドライン
この章では、Oracle Linuxシステムの保護に役立つガイドラインを提供します。
OpenSCAPの使用によりシステムをスキャンして脆弱性を見つける方法の詳細は、「OpenSCAPを使用した脆弱性のスキャン」を参照してください。
ソフトウェアのフットプリントの最小化
Oracle Linuxがインストールされているシステムでは、不要なRPMを削除してソフトウェアのフットプリントを最小限に抑えてください。たとえば、サーバー・システムでX Windowsパッケージ(xorg-x11-server-Xorg
)が不要な場合は、アンインストールできます。
特定のコマンドまたはファイルがどのパッケージにあるかを確認するには、次の例に示すようにyum providesコマンドを使用します。
yum provides /usr/sbin/sestatus
... policycoreutils-2.0.83-19.24.0.1.el6.x86_64 : SELinux policy core utilities Repo : installed Matched from: Other : Provides-match: /usr/sbin/sestatus
yum-utils
パッケージに含まれるrepoqueryユーティリティを使用します。たとえば、次のコマンドでは、btrfs-progs
パッケージに含まれるファイルがリストされます。
repoquery -l btrfs-progs
/sbin/btrfs /sbin/btrfs-convert /sbin/btrfs-debug-tree . . .
パッケージをアンインストールするには、次の例に示すようにyum removeコマンドを使用します。
sudo yum remove xinetd
Loaded plugins: refresh-packagekit, security Setting up Remove Process Resolving Dependencies --> Running transaction check ---> Package xinetd.x86_64 2:2.3.14-35.el6_3 will be erased --> Finished Dependency Resolution Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Removing: xinetd x86_64 2:2.3.14-35.el6_3 @ol6_latest 259 k Transaction Summary ================================================================================ Remove 1 Package(s) Installed size: 259 k Is this ok [y/N]: y Downloading Packages: Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Erasing : 2:xinetd-2.3.14-35.el6_3.x86_64 1/1 Verifying : 2:xinetd-2.3.14-35.el6_3.x86_64 1/1 Removed: xinetd.x86_64 2:2.3.14-35.el6_3 Complete!
次のリストに、インストールしない方がよいパッケージ、またはすでにインストールされている場合はyum removeコマンドを使用して削除する必要があるパッケージを示します。
-
krb5-appl-clients
ftp、rcp、rlogin、rshおよびtelnetのKerberosバージョン。可能な場合は、かわりにSSHを使用してください。
-
rsh
、rsh-server
rcp、rloginおよびrshでは、傍受可能な暗号化されていない通信が使用されます。かわりにSSHを使用してください。
-
samba
Sambaで使用されるネットワーク・サービス。システムがActive Directoryサーバー、ドメイン・コントローラまたはドメイン・メンバーとして機能していない場合、およびMicrosoft Windowsのファイルとプリンタ共有機能を提供していない場合は、このパッケージを削除します。
-
talk
、talk-server
talkは不要と見なされます。
-
telnet
、telnet-server
telnet
では、傍受可能な暗号化されていない通信が使用されます。かわりにSSHを使用してください。 -
tftp
、tftp-server
TFTPでは、傍受可能な暗号化されていない通信が使用されます。レガシー・ハードウェアのサポートに必要な場合のみ使用してください。可能な場合は、かわりにSSHなどのセキュリティ・プロトコルを使用してください。
-
xinetd
インターネット・リスナー・デーモンで使用されるセキュリティ・モデルは推奨されません。
-
ypbind
、ypserv
NISで使用されるセキュリティ・モデルは、本質的に欠陥があります。かわりに、LDAPやKerberosなどを使用してください。
システム・ロギングの構成
次のように、rsyslog
ロギング・サービスが実行されていることを確認します。
sudo systemctl is-active rsyslog
active
rsyslogd
サービスが実行されていない場合は、それを起動および有効化して、システムの再起動時に起動されるようにします。
sudo systemctl start rsyslog sudo systemctl enable rsyslog
/etc/rsyslog.conf
で参照される各ログ・ファイルが存在し、root
によって所有され、rootのみが読取り可能であることを確認します。
touch logfile sudo chown root:root logfile sudo chmod 0600 logfile
また、集中ログ・サーバーを使用し、このサーバー上でLogwatchを構成することをお薦めします。「システム・ロギングの構成および使用」を参照してください。
コア・ダンプの無効化
コア・ダンプには、攻撃者が悪用できる情報が含まれることがあります。また、コア・ダンプは大容量のディスク領域を占有します。セグメント違反または他の予期しないエラーのためにオペレーティング・システムでプログラムが終了される際、システムでコア・ダンプが作成されないようにするには、次の行を/etc/security/limits.conf
に追加します。
* hard core 0
limits.conf(5)
マニュアル・ページの説明に従って、コア・ダンプへのアクセスを特定のユーザーまたはグループに制限できます。
デフォルトでは、setuid
およびsetgid
プログラム、資格証明が変更されたプログラム、およびバイナリがコア・ダンプからの読取り権限を持たないプログラムは阻止されます。設定が永続的に記録されるようにするには、次の行を/etc/sysctl.conf
に追加します。
# Disallow core dumping by setuid and setgid programs fs.suid_dumpable = 0
その後、sysctl -pコマンドを実行します。
ノート:
値1は、ダンプ・プロセスの所有者から読取り可能なコア・ダンプを許可します。値2は、デバッグ目的でroot
からのみ読取り可能なコア・ダンプを許可します。
アクティブ・サービスの最小化
サービスを、サーバーで必要なサービスに制限します。Oracle Linuxサーバーのデフォルト・インストールでは、次の最小サービス・セットが構成されます。
-
cupsd
およびlpd
(印刷サービス) -
sendmail
(電子メール配信サービス) -
sshd
(openSSHサービス)
可能な場合は、各物理マシン、仮想マシンまたはLinuxコンテナに1つのサービス・タイプを構成します。この手法により、システムが危険にさらされた場合に、漏えいを限度内にとどめることができます。
サービスが使用されていない場合は、そのサービスに関連付けられているソフトウェア・パッケージを削除します。ソフトウェアの依存関係によりサービスを削除できない場合は、chkconfigおよびserviceコマンドを使用してサービスを無効化します。
使用中のサービスには、最新のOracleサポート・パッチおよびセキュリティ・パッチを適用して、ソフトウェア・パッケージを最新の状態に保ちます。不正な変更を防止するには、/etc/services
ファイルがroot
によって所有され、root
によってのみ書込み可能であることを確認します。
ls -Z /etc/services
-rw-r--r--. root root system_u:object_r:etc_t:SystemLow /etc/services
特に指定されていないかぎり、次のリストで示すサービスを無効化することを検討してください(それらがシステムで使用されていない場合)。
-
anacron
- コマンドを定期的に実行します。主に、常時稼働ではないラップトップやユーザー・デスクトップ・マシンで使用されます。
-
automount
- 自動ファイルシステム・マウンタのマウント・ポイントを管理します。自動マウンタ機能が不要なサーバーでは、このサービスを無効にします。
-
bluetooth
- Bluetoothデバイスの接続をサポートします。主に、ラップトップおよびユーザー・デスクトップ・マシンで使用されます。Bluetoothを使用すると、攻撃対象領域が追加されます。Bluetooth機能が不要なサーバーでは、このサービスを無効にします。
-
gpm
- (汎用マウス)テキスト・コンソールでマウス・ポインタをサポートします。
-
hidd
- (Bluetooth Human Interface Deviceデーモン)キーボードやマウスなどのBluetooth入力デバイスをサポートします。主に、ラップトップおよびユーザー・デスクトップ・マシンで使用されます。Bluetoothを使用すると、攻撃対象領域が追加されます。Bluetooth機能が不要なサーバーでは、このサービスを無効にします。
-
irqbalance
- マルチプロセッサ・システム上のプロセッサ間でハードウェア割込みを分散します。この機能が不要なサーバーでは、このサービスを無効にします。
-
iscsi
- iSCSIターゲットへのログインおよびiSCSIデバイスのスキャンを制御します。iSCSIデバイスにアクセスしないサーバーでは、このサービスを無効にします。
-
iscsid
- iSCSIプロトコルの制御および管理を実装します。iSCSIデバイスにアクセスしないサーバーでは、このサービスを無効にします。
-
kdump
- ブート時に
kdump
カーネルをメモリーにロードしたり、システムのパニックが発生した場合にカーネル・ダンプを保存できます。デバッグまたはテストに使用しないサーバーでは、このサービスを無効にします。 -
mcstrans
- SELinux Context Translation Systemサービスを制御します。
-
mdmonitor
- システム上のすべてのソフトウェアRAIDアレイのステータスを確認します。ソフトウェアRAIDを使用しないサーバーでは、このサービスを無効にします。
-
pcscd
- (PC/SCスマート・カード・デーモン)スマートカード・リーダーとの通信をサポートします。主に、ラップトップおよびユーザー・デスクトップ・マシンでスマートカード認証をサポートするために使用されます。スマートカード認証を使用しないサーバーでは、このサービスを無効にします。
-
sandbox
/tmp
、/var/tmp
およびpam_namespace、sandboxおよびxguestアプリケーション制約ユーティリティで使用するホーム・ディレクトリを設定します。これらのプログラムを使用しない場合は、このサービスを無効にします。-
setroubleshoot
- sealertツールへのSELinux Access Vector Cache (AVC)拒否についての情報を提供するSELinuxトラブルシューティング・サービスを制御します。
-
smartd
- ATA-3以降の多くのSCSI-3ディスク・デバイスに統合されている、Self-Monitoring, Analysis and Reporting Technology (SMART)システムと通信します。SMARTシステムはディスク・ドライブを監視して、信頼性を測定し、ディスクの劣化および障害を予測して、ドライブ・テストを実行します。
-
xfs
- メモリーにフォントをキャッシュして、X Window Systemアプリケーションのパフォーマンスを向上させます。
次の表で示すネットワーク・サービスを無効化することを検討してください(それらがシステムで使用されていない場合)。
-
avahi-daemon
- Appleのゼロ構成ネットワーキング(RendezvousまたはBonjourとも呼ばれます)を実装します。主に、ラップトップおよびユーザー・デスクトップ・マシンで音楽およびファイルの共有をサポートするために使用されます。この機能が不要なサーバーでは、このサービスを無効にします。
-
cups
- 一般的なUNIX印刷システムを実装します。この機能を提供する必要がないサーバーでは、このサービスを無効にします。
-
hplip
- HPのインクジェット・プリンタおよびレーザー・プリンタでFAX、印刷、スキャン操作をサポートする、HP Linux Imaging and Printingを実装します。この機能が不要なサーバーでは、このサービスを無効にします。
-
isdn
- (Integrated Services Digital Network) ISDNデバイス経由のネットワーク接続をサポートします。ISDNデバイスを直接制御しないサーバーでは、このサービスを無効にします。
-
netfs
- NCP、NFSおよびSMBなどのネットワーク・ファイル・システムをマウントおよびアンマウントします。この機能が不要なサーバーでは、このサービスを無効にします。
-
network
- ブート時に起動するよう構成されている、すべてのネットワーク・インタフェースをアクティブ化します。
-
NetworkManager
- 利用可能な最適な接続を使用するように、ネットワーク接続を自動的に切り替えます。
-
nfslock
- NFSで使用されるNetwork Status Monitor (NSM)を実装します。この機能が不要なサーバーでは、このサービスを無効にします。
-
nmb
- Sambaで使用されるNetBIOS名サービスを提供します。システムがActive Directoryサーバー、ドメイン・コントローラまたはドメイン・メンバーとして機能していない場合、およびMicrosoft Windowsのファイルとプリンタ共有機能を提供していない場合は、このサービスを無効化して
samba
パッケージを削除します。 -
portmap
- NFSに対するリモート・プロシージャ・コール(RPC)サポートを実装します。この機能が不要なサーバーでは、このサービスを無効にします。
-
rhnsd
- Unbreakable Linuxネットワーク(ULN)に更新および情報を問い合せます。
-
rpcgssd
- NFSで使用されます。この機能が不要なサーバーでは、このサービスを無効にします。
-
rpcidmapd
- NFSで使用されます。この機能が不要なサーバーでは、このサービスを無効にします。
-
smb
- Sambaで使用されるSMBネットワーク・サービスを提供します。システムがActive Directoryサーバー、ドメイン・コントローラまたはドメイン・メンバーとして機能していない場合、およびMicrosoft Windowsのファイルとプリンタ共有機能を提供していない場合は、このサービスを無効化して
samba
パッケージを削除します。
サービスを停止し、システムのリブート時に起動しないようにするには、次のコマンドを使用します。
sudo systemctl stop service_name sudo systemctl disable service_name
ネットワーク・サービスのロック・ダウン
ノート:
xinetd
インターネット・リスナー・デーモンはインストールしないことをお薦めします。このサービスが不要な場合は、yum remove xinetdコマンドを使用してパッケージ全体を削除してください。
システムでxinetd
を有効にしなければならない場合は、/etc/xinetd.d
の構成ファイルで定義されたサービスのうち不要なものを無効にして、xinetd
が起動できるネットワーク・サービスを最小限に抑えます。
DoS攻撃に対処するために、/etc/xinetd.conf
および関連する構成ファイルを編集して、これらのサービスに対するリソース制限を構成できます。たとえば、接続レート、サービスへの接続インスタンス数、IPアドレスからの接続数の限度を設定できます。
# Maximum number of connections per second and # number of seconds for which a service is disabled # if the maximum number of connections is exceeded cps = 50 10 # Maximum number of connections to a service instances = 50 # Maximum number of connections from an IP address per_source = 10
詳細は、xinetd(8)
およびxinetd.conf(5)
の各マニュアル・ページを参照してください。
パケットフィルタリング・ファイアウォールの構成
ルールを使用してネットワーク・パッケージを受け入れるか、削除するか、転送するかを決定するパケットフィルタリング・ファイアウォールとして機能するように、Netfilter機能を構成できます。
パケットフィルタ・ルールを構成するための主要インタフェースは、firewall-cmdコマンド、ファイアウォール構成GUI (firewall-config)、またはiptablesおよびip6tablesユーティリティです。デフォルトでは、サーバーがホストするサービス宛てでないパケットまたはアクセスを許可するネットワーク以外から送信されたパケットはすべて、ルールによって削除する必要があります。
また、パブリックIPアドレスの内側にあるIPアドレスを非表示にするネットワーク・アドレス変換(NAT)、ルーティングされたパケットのIPヘッダー情報を変更するIPマスカレードを使用できます。ルールベースのパケット・ロギングを設定し、/etc/syslog.conf
で専用ログ・ファイルを定義することもできます。
詳細は、「パケットフィルタリング・ファイアウォールの構成」を参照してください。
TCPラッパーの構成
TCPラッパー機能は、クライアントからサービスへのリクエストを仲介し、/etc/hosts.deny
および/etc/hosts.allow
ファイルで定義したルールに基づいてアクセスを制御します。特定のホストまたはネットワーク全体へのサービス・アクセスを、制限または許可できます。TCPラッパーは一般に、侵入の検出に使用します。たとえば、悪意のある既知のホストまたはネットワークがサービスにアクセスしようとした場合、アクセスを拒否して、イベントに関する警告メッセージをログ・ファイルまたはシステム・コンソールに送信できます。
詳細は、「TCPラッパーの構成」を参照してください。
カーネル・パラメータの構成
いくつかのカーネル・パラメータを使用して、様々な種類の攻撃を防止できます。
-
kernel.randomize_va_space
: 特定のタイプのバッファ・オーバーフロー攻撃を撃退するのに役立つ、アドレス空間配置のランダム化(ASLR)を制御します。値0はASLRを無効化し、1はスタック、仮想動的共有オブジェクト(VDSO)ページ、共有メモリー領域の位置をランダム化し、2はスタック、VDSOページ、共有メモリー領域およびデータ・セグメントの位置をランダム化します。デフォルト設定である2を使用することをお薦めします。 -
net.ipv4.conf.all.accept_source_route
: ローカル・ネットワーク外で生成された可能性のあるソースルーティング・パケットの処理を制御します。値0はこのようなパケットを拒否し、値1は受け入れます。デフォルト設定である0を使用することをお薦めします。 -
net.ipv4.conf.all.rp_filter
: IPアドレス・スプーフィングを撃退するための受信パケットのリバース・パス・フィルタリングを制御します。値0ではソースの検証が無効化され、値1ではソース・アドレスのルーティング表エントリが到着するネットワーク・インターフェイスと一致しない場合はパケットが削除され、値2ではリバース・パスによるソースの検証に失敗した場合はパケットが削除されます(RFC 1812を参照)。デフォルト設定は0です。値2ではその他に、ローカル・ネットワーク・トポロジが複雑でRIPまたは静的ルートが使用されている場合、有効なパケットが削除される可能性があります。 -
net.ipv4.icmp_echo_ignore_broadcasts
: Smurf DoS攻撃を防ぐためにICMPブロードキャストを無視するかどうかを制御します。値1はこのようなブロードキャストを無視し、値0は承認します。デフォルト設定である1を使用することをお薦めします。 -
net.ipv4.icmp_ignore_bogus_error_message
: ICMP偽装エラー・メッセージ・レスポンスを無視するかどうかを制御します。値1はこのようなメッセージを無視し、値0は承認します。デフォルト設定である1を使用することをお薦めします。
カーネル・パラメータの値を変更するには、設定を/etc/sysctl.conf
に追加します。たとえば:
kernel.randomize_va_space = 1
その後、sysctl -pコマンドを実行します。
カーネルのその他のセキュリティ構成については、「カーネル・セキュリティ・メカニズムの構成および使用」を参照してください。
SSH接続へのアクセスの制限
セキュア・シェル(SSH)を使用すると、他のシステムとの保護された暗号化通信が可能になります。SSHはシステムへのエントリ・ポイントであるため、必要ない場合は無効化するか、/etc/ssh/sshd_config
ファイルを編集してその使用を制限します。
たとえば、次の設定では、SSHを使用したroot
でのログインを禁止しています。
PermitRootLogin no
AllowUsers
、AllowGroups
、DenyUsers
およびDenyGroups
設定を指定して、特定のユーザーおよびグループへのリモート・アクセスを制限できます。たとえば:
DenyUsers carol dan AllowUsers alice bob
ClientAliveInterval
およびClientAliveCountMax
設定により、SSHクライアントは一定の非アクティブな期間後に自動的にタイムアウトします。
# Disconnect client after 300 seconds of inactivity ClientAliveCountMax 0 ClientAliveInterval 300
構成ファイルに変更を加えた後は、sshd
サービスを再起動して変更内容を有効にします。
詳細は、sshd_config(5)
マニュアル・ページを参照してください。
ファイル・システムのマウント、ファイル権限およびファイル所有権の構成
オペレーティング・システムとユーザー・データに別個のディスク・パーティションを使用して、ファイル・システム・フルの問題がサーバーの操作に影響を与えるのを防ぎます。たとえば、/home
、/tmp
、/oracle
などに別個のパーティションを作成できます。
ディスク割当てを作成することで、ユーザーが誤ってまたは意図的にファイル・システムをすべて使用し、他のユーザーへのアクセスを拒否するのを防ぎます。
オペレーティング・システム・ファイルおよびユーティリティが攻撃時に変更されるのを防ぐには、/usr
ファイル・システムを読取り専用でマウントします。ファイル・システム上のRPMを更新する必要がある場合は、-o remount,rwオプションを指定してmountコマンドを使用し、読取りおよび書込みアクセスの両方で/usr
を再マウントします。更新の実行後、-o remount,roオプションを使用して/usr
ファイル・システムを読取り専用モードに戻します。
/tmp
などの非root
ローカル・ファイル・システムまたはリムーバル・ストレージ・パーティションへのユーザー・アクセスを制限するには、mountに-o noexec、nosuid, nodevオプションを指定します。これらのオプションは、バイナリ(スクリプトではなく)の実行を防ぎ、setuid
ビットがなんらかの影響を及ぼすのを防ぎ、デバイス・ファイルの使用を防ぎます。
findコマンドを使用して、各ファイル・システム上の所有されていないファイルおよびディレクトリをチェックします。たとえば:
find mount_point -mount -type f -nouser -o -nogroup -exec ls -l {} \; find mount_point -mount -type d -nouser -o -nogroup -exec ls -l {} \;
所有されていないファイルおよびディレクトリは、削除されたユーザー・アカウントに関連付けられている可能性があるため、ソフトウェアのインストール・エラーまたは削除エラー、あるいはシステムへの侵入を示している可能性があります。見つかったファイルおよびディレクトリの権限と所有権を修正するか、これらを削除します。可能な場合は、これが作成される原因となった問題を調査して修正してください。
findコマンドを使用して、各ファイル・システム上のあらゆるユーザーが書込み可能なディレクトリをチェックします。たとえば:
find mount_point -mount -type d -perm /o+w -exec ls -l {} \;
システム・ユーザー以外のユーザーによって所有される、あらゆるユーザーが書込み可能なディレクトリを調査します。ユーザーは、他のユーザーがこのディレクトリに書き込んだファイルを削除または変更できます。見つかったディレクトリの権限と所有権を修正するか、これらを削除します。
findを使用してsetuid
およびsetgid
実行可能ファイルをチェックすることもできます。
find path -type f \( -perm -4000 -o -perm -2000 \) -exec ls -l {} \;
setuid
およびsetgid
ビットが設定されている場合、root
権限などの権限を必要とするタスクを実行可能ファイルで実行できます。ただし、バッファ・オーバーラン攻撃によってこれらの実行可能ファイルが悪用され、利用されたプロセスの権限を使用して不正コードが実行される可能性があります。
setuid
およびsetgid
実行可能ファイルが非root
ユーザーに使用されるのを阻止するには、次のコマンドを使用してsetuid
またはsetgid
ビットを設定解除します。
sudo chmod u-s file sudo chmod g-s file
次の表に、setuid
およびsetgid
の設定解除を検討できるプログラムを示します。
ノート:
setuid
およびsetgid
プログラムは多くのオプション・パッケージに含まれるため、このリストは完全ではありません。
プログラム・ファイル | 設定ビット | 使用方法の説明 |
---|---|---|
|
|
パスワード・エージング情報を(-lオプションを使用して)見つけます。 |
|
|
|
|
|
ログイン・シェルを変更します。 |
|
|
|
|
|
システム全体にメッセージを送信します。 |
|
|
他のユーザーにメッセージを送信します。 |
|
|
X Windowsサーバーを起動します。 |
|
|
ホストベースの認証のためのSSHヘルパー・プログラムを実行します。 |
|
|
NFSファイルシステムをマウントします。 ノート:
|
|
|
ネットワーク・インタフェースに対する変更の通知をリクエストします。 |
|
|
ネットワーク・インタフェースを制御します。ユーザーがネットワーク・インタフェースの状態を変更する権限で、インタフェース・ファイルで |
ユーザーのアカウントおよび権限の確認
次のようなコマンドを使用して、ロック解除されたユーザー・アカウントがあるかどうか定期的にシステムを確認します。
for u in `cat /etc/passwd | cut -d: -f1 | sort`; do passwd -S $u; done
abrt LK 2012-06-28 0 99999 7 -1 (Password locked.) adm LK 2011-10-13 0 99999 7 -1 (Alternate authentication scheme in use.) apache LK 2012-06-28 0 99999 7 -1 (Password locked.) avahi LK 2012-06-28 0 99999 7 -1 (Password locked.) avahi-autoipd LK 2012-06-28 0 99999 7 -1 (Password locked.) bin LK 2011-10-13 0 99999 7 -1 (Alternate authentication scheme in use.) ...
この例に示す出力では、2番目のフィールドに、ユーザー・アカウントがロックされているかどうか(LK
)、パスワードがないかどうか(NP
)、または有効なパスワードがあるかどうか(PS
)が示されます。3番目のフィールドには、ユーザーがパスワードを最後に変更した日付が示されます。残りのフィールドには、パスワードの最小経過期間、最大経過期間、警告期間、パスワードの非アクティブ期間およびパスワードのステータスに関するその他の情報が示されます。期間の単位は日数です。
保護されていないアカウントにパスワードを設定するには、passwdコマンドを使用します。
未使用のアカウントをロックするには、passwd -lコマンドを使用します。userdelを使用して、アカウントを完全に削除することもできます。
詳細は、passwd(1)
およびuserdel(8)
の各マニュアル・ページを参照してください。
ユーザー・パスワードのエージング方法を指定するには、/etc/login.defs
ファイルでその設定を編集します。これらの設定を、次のリストに示します。
-
PASS_MAX_DAYS
: パスワードを変更するまでに使用できる最大日数。デフォルト値は99,999日です。 -
PASS_MIN_DAYS
: パスワードを変更する間隔として許容される最大日数。デフォルト値は0日です。 -
PASS_WARN_AGE
: パスワードの期限が切れる前に警告が表示される日数。デフォルト値は7日です。
詳細は、login.defs(5)
マニュアル・ページを参照してください。
ユーザー・アカウントが非アクティブになってからロックされるまでの期間を変更するには、usermodコマンドを使用します。たとえば、非アクティブ期間を30日に設定します。
sudo usermod -f 30 username
新規ユーザー・アカウントのデフォルトの非アクティブ期間を変更するには、useraddコマンドを使用します。
sudo useradd -D -f 30
値-1
を指定すると、ユーザー・アカウントは非アクティブであってもロックされません。
詳細は、useradd(8)
およびusermod(8)
の各マニュアル・ページを参照してください。
root
以外のユーザー・アカウントのユーザーIDが0でないことを確認します。
awk -F":" '$3 == 0 { print $1 }' /etc/passwd
root
デフォルトのユーザー・アカウントとパスワードを作成するソフトウェアをインストールする場合は、ベンダーのデフォルト・パスワードをただちに変更します。OpenLDAPなどのLDAP実装を使用する集中ユーザー認証は、ユーザー認証および管理タスクを簡易化するのに役立ちます。また、未使用のアカウントまたパスワードなしのアカウントから発生するリスクを減らすことができます。
デフォルトでは、Oracle Linuxシステムはroot
として直接ログインできないように構成されています。事前に指定ユーザーとしてログインしてから、suまたはsudoを使用してroot
としてタスクを実行します。この構成により、システム・アカウンティングで特権管理アクションを実行するユーザーの元のログイン名を追跡できます。特定ユーザーにsudoを使用して特定の管理タスクを実行できる権限を付与するには、visudoコマンドを使用して/etc/sudoers
ファイルを変更します。たとえば、次のエントリでは、ユーザーerin
には、sudo使用時のroot
と同じ権限が付与されていますが、frank
には、rpmやyumなどのコマンドを実行できる限定された権限セットが定義されています。
erin ALL=(ALL) ALL frank ALL=SOFTWARE
Oracle LinuxはPluggable Authentication Module (PAM)機能をサポートしているため、強力なユーザー認証およびパスワードの複雑さ、長さ、経過期間、有効期限、前のパスワードの再利用を規定するルールを含むパスワード・ポリシーを容易に実施することができます。ログイン試行に何回も失敗した後、通常の勤務時間後、または同時セッションが多数開かれている場合に、ユーザー・アクセスをブロックするようPAMを構成できます。
PAMは様々なモジュールおよびカスタマイズ可能なパラメータが使用されているため、高度にカスタマイズできます。たとえば、デフォルトのパスワード整合性チェック・モジュールpam_pwquality.so
はパスワードの強度をテストします。PAM構成ファイル(/etc/pam.d/system-auth
)には、パスワードの強度をテストするための次のデフォルト・エントリが含まれます。
password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok password required pam_deny.so
pam_pwquality.so
の行では、適切なパスワードを選択するために3回試行できることが定義されています。モジュールのデフォルト設定では、パスワード長は最小6文字で、そのうち3文字は前のパスワードと異なる必要があることが定義されています。このモジュールは、/etc/passwd
で定義されているユーザーのパスワードの品質のみをテストします。
pam_unix.so
の行は、パスワードの入力を求める前に、モジュールが必要に応じてスタックに事前に定義されたパスワードをテストし(pam_pwquality
では/etc/passwd
で定義されたユーザーについてこのチェックを実行済)、SHA-512パスワードのハッシュと/etc/shadow
ファイルを使用し、既存のパスワードがNullであればアクセスを許可することを指定します。
制御フラグとモジュール・パラメータを変更して、ユーザーがパスワードを変更するときに実行されるチェックを変更できます。たとえば:
password required pam_pwquality.so retry=3 minlen=8 difok=5 minclass=-1 password required pam_unix.so use_authtok sha512 shadow remember=5 password required pam_deny.so
pam_pwquality.so
の行では、ユーザーは適切なパスワードの選択を3回試行できます。パスワード長は最小8文字で、そのうち5文字は前のパスワードと異なる必要があり、大文字、小文字、数字、英数字以外の文字をそれぞれ少なくとも1つずつ使用する必要があることを指定しています。
pam_unix.so
の行では、モジュールではパスワード・チェックを実行せず、SHA-512パスワード・ハッシュと/etc/shadow
ファイルを使用し、各ユーザーの過去5つのパスワードに関する情報を/etc/security/opasswd
ファイルに保存することを指定しています。nullok
が指定されていないため、既存のパスワードがnullの場合、ユーザーはパスワードを変更できません。
try_first_pass
キーワードが省略されているため、同じモジュールまたはスタックの前のモジュールで入力した場合でも、ユーザーは常に既存のパスワードを尋ねられます。
詳細は、「Pluggable Authentication Moduleの構成および使用」と、pam_deny(8)
、pam_pwquality(8)
およびpam_unix(8)
マニュアル・ページを参照してください。