セキュリティ

Contents

SSH

 

クライアント設定


/etc/ssh/ssh_configファイルはSSHクライアントの各種設定を行える。

StrictHostKeyChecking


SSHで接続時に接続先ホストの情報をチェックし、初接続であれば接続確認を行う。
この確認を行うかどうかの設定を変更できる。
ただし、接続済みホストの情報は記録されるので、同じホスト名でサーバが変わった場合はエラーとなる。
これはUserKnownHostsFile設定を変更する必要がある。

 

UserKnownHostsFile


各ユーザ用の接続ホスト情報のデータベースファイルのパスを指定する。
デフォルトでは ~/.ssh/known_hosts である。
/dev/nullに指定することで、情報が保存されなくなるがホストのチェックもできなくなるので、
StrictHostKeyChecking設定を変更するか、グローバルのホストデータベースファイルにホストを登録する必要がある。

 

LogLevel


SSH使用時に表示されるメッセージのレベルを設定できる。
QUIET、FATAL、ERROR、INFO、VERBOSE、DEBUG(DEBUG1)、DEBUG2、DEBUG3が設定可能で、デフォルトはINFO。


サーバ設定


/etc/ssh/sshd_configファイルはSSHデーモンの各種設定を行える。

 

Port


待ち受けるポート番号を指定する。
インターネットからアクセスできるサーバの場合、ポート番号を排ポートに変えておいた方が無難である。
設定変更する場合、ファイアウォールの設定も忘れずに変えること。

 

 

 

PermitRootLogin


RootがSSHログイン可能かどうかを設定する。
通常rootユーザはSSHで直接ログイン不可にしたほうが良いので、ログインできないよう設定したほうがよい。


forced-commands-onlyで実行されるコマンドを登録するには以下を実施する。

vi /root/.ssh/authorized_keys
# ssh-rsa XXXXXX の前に以下のように記述する
# command="実行内容" ssh-rsa XXXXX

例えば、メッセージを表示する場合は以下のように書けばよい

command="echo 'Don't login by root user.';echo;sleep 5" ssh-rsa XXXXX

 

MaxSessions


SSHでは1つの接続上に複数のセッションを作成することができる。
このパラメータではその上限数を設定する。

 

 

MaxStartups


新たにSSH接続を受ける際の接続上限数を指定する。

 

 

PasswordAuthentication


パスワードによる認証を許可するかどうかを指定する。
許可しない場合、キーペアによる認証が必須となる。

 

 

UseDNS


接続元のIPアドレスを逆引きし、再度正引きすることで得たIPアドレスが接続元のIPアドレスと一致するかを検査するかどうか。

 

 

Tips

 

ログイン用鍵ペアを作成する

 

ssh-keygen
# Enter file in which to save the key (/root/.ssh/id_rsa):  に出力パスを入力してエンター
# Enter passphrase (empty for no passphrase): に何も入力せずにエンター
# Enter same passphrase again: に何も入力せずにエンター
mv <出力パス>/id_rsa.pub <出力パス>/authorized_keys
chmod 400 <出力パス>/id_rsa
chmod 400 <出力パス>/authorized_keys

 

SFTP専用ユーザを作成する

ホームディレクトリは作成されるので、そこにファイルが作成される。suコマンドも含めてターミナルログインはできない。

useradd -s /usr/libexec/openssh/sftp-server <ユーザ名>

鍵認証を行う場合は鍵を発行する

cd /home/<ユーザ名>
ssh-keygen
# Enter file in which to save the key (/root/.ssh/id_rsa):  に"/home/<ユーザ名>/.ssh/id_rsa"を入力してエンター
# Enter passphrase (empty for no passphrase): に何も入力せずにエンター
# Enter same passphrase again: に何も入力せずにエンター
mv .ssh/id_rsa.pub .ssh/authorized_keys
chmod 400 .ssh/id_rsa .ssh/authorized_keys

 

POSIX ACL




PAM


Red Hat系で採用されているユーザ認証モジュール。
単独で動作し、SSHなど各サービスに対して認証サービスを提供するので、
個々のサービスで具体的な認証作業を行う必要がない。

設定ファイル


設定ファイルは以下のディレクトリの以下に保存されている。

/etc/pam.d/

 

文法


設定ファイルは以下の書式で記述される。

認証モジュール   制御方式   モジュールファイル

 

認証モジュール

 

 

制御方式

 

 

モジュールファイル

 






SELinux


参考
第一人者がやさしく教える新SELinux入門

SELinuxとは


Linuxサーバに侵入された場合、root権限を奪取されるとその後は攻撃者の完全に自由に操作ができてしまう。
そこでSELinuxでは、root権限においてもその操作に制限を加えることで、侵入されたとしても被害を抑えることができる。
SELinuxはhttpdやmysqld等の特定デーモンプロセスの権限をポリシー化することで、それに強制的に従わせる。
これはOSレベルで行われるので、rootユーザであっても回避することはできない。
なお、httpd等以外の全てのデーモンプロセスでSELinuxを有効にするよう変更することもできる。


設定

 

有効/無効化

 

 

 

 

 


SELINUXの値をenforcingにすることで、有効にできる。

SELINUX値

 

enforcing SELinuxの有効化
permissive SELinuxは無効だが、警告表示を行う(デバッグ、トラブルシュートなど用)
disabled SELinuxの無効化


なお、setenforceコマンドで一時的に値を変更できる。ただし、「Enforcing」か「Permissive」にしかできない。

 

対象の設定


SELINUXTYPE値を変更することで、SELinuxを有効にする対象を変更できる。

 

 

ポリシー設定


管理ツールとして以下のコマンドが用意されている。

 

 

 

OpenSSL

 

 

サブコマンド



s_client

 

 

s_server

 

 

x509

 

 

genrsa

 

 

rsa

 



verify

 

 

req

 

 

crl

 



Tips

 

RSA鍵ペアの生成


※SSHログイン用には使用できない

 

 

 

公開されている証明書の取得


Webサーバなどの公開されているサーバの証明書を取得し、その情報を表示する

openssl s_client -connect <FQDN>:<ポート番号> < /dev/null | openssl x509 -text

HTTPSサーバの場合は、curlでも確認できる。

curl -s -v https://<FQDN>/

 

CA証明書の取得


対象サーバだけでなく、CAの証明書情報も表示する場合は次のように行う

openssl s_client -connect <FQDN>:<ポート番号> -showcerts < /dev/null

 

検証


取得した証明書を検証する

openssl s_client -connect <FQDN>:<ポート番号> < /dev/null | openssl verify

 

X509情報の表示


取得した証明書のX509情報を表示する

openssl s_client -connect <FQDN>:<ポート番号> < /dev/null | openssl x509 -text



証明書の検証


取得したSSL証明書が信頼できるか(信頼できる証明機関から署名されているか)検証する。

openssl verify <証明書ファイル>

 

証明書と秘密鍵の対応確認


モジュール情報を表示し、一致していれば対応している

 

PEM形式の変換

 

PEM形式か確認する

 

openssl x509 -inform PEM -text -noout -in <証明書ファイル>
# unable to load certificateと表示されるとPEM形式ではない

 

CER形式から変換する

 

openssl x509 -in <CER証明書ファイル> -inform DER -out <PEM証明書ファイル> -outform PEM

 

Windowsで変換する


証明書ファイルをWindows上でダブルクリックして開き、任意の形式に変換して保存できる

自己署名証明書の作成

 

  1. 秘密鍵作成
    openssl genrsa 2048 > private.key
  2. 証明書署名要求
    openssl req -new -key private.key > server.csr
    証明書情報を対話形式で入力する
  3. 自己署名する
    openssl x509 -days 3650 -req -signkey private.key < server.csr > server.crt



Tips

 

ハッシュ関数コマンド


ファイルを指定してmd5によるハッシュ値計算を行うことができる。

md5 <ファイルパス>

 

/etc/passwdファイル

 

形式

 

<ユーザ名>:<パスワードフィールド(現在は"x")>:<UID>:<GID>:<コメント>:<ホームディレクトリ>:<ログインシェル>

 

shadowファイルの利用

 

pwconv
pwunconv
<ユーザ名>:<ハッシュ化されたパスワード>:<パスワード最終更新日(1970/01/01からの日数)>:<変更できるまでの日数>:<有効日数>:<変更を促すメッセージを表示する日数>

Notice: Trying to get property 'queue' of non-object in /usr/local/wordpress/wp-includes/script-loader.php on line 2876

Warning: Invalid argument supplied for foreach() in /usr/local/wordpress/wp-includes/script-loader.php on line 2876