ミドルウェアのセキュリティ対策の設定手順(sshとhttpd)

※本サイトはアフィリエイト広告を利用しています。
広告

本記事の概要

ミドルウェアをデフォルトの設定の状態で攻撃者に不要な情報を公開してしまう等脆弱性が残っている可能性があります。
そのため、セキュリティを考慮した設定にする必要があります。
本記事では、sshとapacheのセキュリティ設定の手順を記載します。

sshのセキュリティ設定

sshをデフォルトの設定の状態で使用すると、rootユーザで直接ログインできたり、総当たり攻撃でユーザ名とパスワードの認証が成功される可能性があります。
そのため、以下の設定をするための手順を記載します。
  ・SSH接続時のポート番号変更
  ・rootユーザで直接ログインすることを禁止
  ・秘密鍵を用いてログインすることを必須

(1) rootユーザでログインします。

(2) 以下のコマンドを実行して、一般ユーザーを作成します。

# useradd ユーザー名
  ⇒例 : useradd user01
# passwd ユーザー名
  ⇒例 : passwd user01
   その後、ログイン時のパスワードを設定します。


(2) Tera Termを用いて、先ほど作成した一般ユーザーでログインします。Tera Termをインストールしていない場合は、「ターミナルソフトのTera Term (テラターム)インストール」に従ってインストールしてください。

(3) 「設定」-「SSH鍵生成」をクリックします。
SSHのアクセスキー作成(1)

(4) 「生成」をクリックします。
SSHのアクセスキー作成(2)

(5) 「鍵のパスフレーズ」を入力します。その後、「公開鍵の保存」と「秘密鍵の保存」をクリックして、鍵を保存します。
SSHのアクセスキー作成(3)

(6) 公開鍵をサーバ側に保存するために、公開鍵(id_rsa.pub)をドラッグ&ドロップでTera Termに移動します。

(7) 送信先をホームディレクトリ(~/)を入力して、「OK」をクリックします。
SSHのアクセスキー作成(4)

(8) 以下のコマンドを実行して、公開鍵を指定のディレクトリに移動および権限付与をします。

$ mkdir .ssh
$ chmod 700 .ssh
$ cat id_rsa.pub > .ssh/authorized_keys
$ chmod 600 .ssh/authorized_keys
$ rm -f id_rsa.pub

(9) 以下のコマンドを実行して、SSH接続時のポート番号変更(22/tcpから221/tcpに変更)、rootユーザで直接ログイン禁止、ユーザ名とパスワードのみでのログイン禁止の設定をします。

$ su -
  →rootユーザのパスワードを入力して、[ENTER]を押します。
# cp /etc/ssh/sshd_config /etc/ssh/sshd_config_org
# vi /etc/ssh/sshd_config
  以下の内容を矢印(⇒)のように変更します。
    #Port 22
    ⇒変更後 Port 221
    PermitRootLogin yes
    ⇒変更後 PermitRootLogin no
    #PasswordAuthentication yes
    ⇒変更後 PasswordAuthentication no
# systemctl restart sshd


Apache(httpd)とPHPのセキュリティ設定

Apache(httpd)とPHPのバージョンが攻撃者に漏洩してしまうと、そのバージョンの脆弱性があった場合に、脆弱性を悪用されて攻撃される可能性があります。
そのため、ミドルウェアの設定などでバージョンを非表示にすることを推奨します。
本手順では、以下のバージョンを想定して記載しています。
  ・Apacheのバージョン : 2.4.37
  ・PHPのバージョン : 7.2.24

(1) 以下のコマンドを実行して、OSの情報の非表示およびWebページのインデックスを無効化します。

# cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf_org
# vi /etc/httpd/conf/httpd.conf
  以下の内容を矢印(⇒)のように変更します。
    追記 ServerTokens Prod
    Options Indexes FollowSymLinks
    ⇒変更後 Options FollowSymLinks


(2) 以下のコマンドを実行して、PHPのバージョンを非表示にします。

# cp /etc/php.ini /etc/php.ini_org
# vi /etc/php.ini
  以下の内容を矢印(⇒)のように変更します。
    expose_php = On
    ⇒変更後 expose_php = Off


(3) 以下のコマンドを実行して、不要なコンテンツ(/usr/share/httpd/icons)を非表示にします。

# cp /etc/httpd/conf.d/autoindex.conf /etc/httpd/conf.d/autoindex.conf_org
# vi /etc/httpd/conf.d/autoindex.conf
  以下の内容を全てコメントアウトします。
    Alias /icons/ "/usr/share/httpd/icons/"

    <Directory "/usr/share/httpd/icons">
        Options Indexes MultiViews FollowSymlinks
        AllowOverride None
        Require all granted
    </Directory>


(4) 以下のコマンドを実行して、不要なコンテンツをコメントアウトします。

# cp /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.conf_org
# vi /etc/httpd/conf.d/welcome.conf
  以下の内容を全てコメントアウトします。
    <LocationMatch "^/+$">
        Options -Indexes
        ErrorDocument 403 /.noindex.html
    </LocationMatch>

    <Directory /usr/share/httpd/noindex>
        AllowOverride None
        Require all granted
    </Directory>

    Alias /.noindex.html /usr/share/httpd/noindex/index.html
    Alias /poweredby.png /usr/share/httpd/icons/apache_pb3.png


(5) 以下のコマンドを実行して、設定ファイルが正しいことを確認して、サービスを再起動します。

# apachectl configtest
   ⇒「Syntax OK」が出力されることを確認します。エラーが出力された修正します。
# systemctl restart httpd
# systemctl status httpd
   ⇒「active (running)」と出力されることを確認します。