RHEL 7でのサーバーの初期設定と構成


このチュートリアルでは、ベアメタルサーバーまたはバーチャルプライベートサーバーに Red Hat Enterprise Linux 7 を新規インストールした後に注意が必要な最初の設定手順について説明します。

  1. RHEL 7 Minimal Installation

<強いスタイル=色:赤

RHEL 7システムを更新する

最初のステップでは、root権限を持つアカウントで、または直接rootとして RHEL サーバーコンソールにログインし、以下のコマンドを実行してインストール済みパッケージなどのシステムコンポーネントを完全にアップデートします。または他のセキュリティパッチを適用する。

# yum check-update
# yum update

ローカルにダウンロードされたすべてのパッケージと他の関連するYUMキャッシュを削除するために、以下のコマンドを実行してください。

# yum clean all

RHEL 7にシステムユーティリティをインストールする

以下のユーティリティは日々のシステム管理に役立つことが証明できます: nano (viエディタに代わるテキストエディタ)、wget、 curl (パッケージのダウンロードに使用されるユーティリティ)ほとんどネットワーク経由で) net-tools 、lsof(ローカルネットワークを管理するためのユーティリティ)、bash-completion(コマンドラインオートコンプリート)。

下記のコマンドを実行して、それらをまとめてインストールします。

# yum install nano wget curl net-tools lsof bash-completion

RHEL 7でのセットアップネットワーク

RHEL 7 には、ネットワーク設定ファイルの手動編集からip、ifconfig、 nmtui などのコマンドの使用まで、ネットワークの設定と管理に使用できるさまざまなツールがあります。 nmcliまたはルート

初心者がネットワーク設定の管理や変更に使用できる最も簡単なユーティリティは、 nmtui グラフィカルコマンドラインです。

nmtui ユーティリティでシステムのホスト名を変更するには、 nmtui-hostname コマンドを実行してマシンのホスト名を設定し、 OK を押して終了します(図を参照)。下のスクリーンショットで。

# nmtui-hostname

ネットワークインターフェースを操作するには、 nmtui-edit コマンドを実行し、編集するインターフェースを選択して、右のメニューから[edit]を選択します(下のスクリーンショットを参照)。

nmtui ユーティリティによって提供されるグラフィカルインターフェイスに入ったら、下のスクリーンショットに示すようにネットワークインターフェイスのIP設定を設定できます。終了したら、 [tab] キーを使用して OK に移動し、設定を保存して終了します。

ネットワークインターフェースの新しい設定を適用するには、 nmtui-connect コマンドを実行し、管理するインターフェースを選択して[無効にする/有効にする]オプションをクリックして無効にして立ち上がります。以下のスクリーンショットに示すように、IP設定とのインターフェース。

# nmtui-connect

ネットワークインターフェース設定を表示するには、インターフェースファイルの内容を調べるか、または以下のコマンドを発行します。

# ifconfig enp0s3
# ip a
# ping -c2 google.com

速度の管理、状態のリンク付け、またはマシンのネットワークインターフェースに関する情報の取得に使用できるその他の便利なユーティリティには、 ethtool および mii-tool があります。

# ethtool enp0s3
# mii-tool enp0s3

新しいユーザーアカウントを作成する

次のステップで、サーバーにrootとしてログインしながら、下記のコマンドで新しいユーザーを作成します。このユーザーは、後でシステムにログインして管理タスクを実行するために使用されます。

# adduser tecmint_user

上記のコマンドを使用してユーザーを追加した後、下記のコマンドを発行してこのユーザーの強力なパスワードを設定します。

# passwd tecmint_user

初回ログイン時にこの新しいユーザーにパスワードの変更を強制する場合は、次のコマンドを実行してください。

# chage -d0 tecmint_user

この新しいユーザーアカウントは今のところ通常のアカウント特権を持っており、sudoコマンドで管理タスクを実行することはできません。

管理者権限の実行にrootアカウントを使用しないようにするには、この新しいユーザーに「 wheel 」システムグループに追加して管理者権限を付与します。

wheel 」グループに属するユーザーは、デフォルトでRHELでは、実行に必要なコマンドを書く前に sudo ユーティリティを使用してroot権限でコマンドを実行することができます。

たとえば、ユーザー " tecmint_user "を " wheel "グループに追加するには、以下のコマンドを実行します。

# usermod -aG wheel tecmint_user

その後、新しいユーザーでシステムにログインし、「 sudo yum update 」コマンドでシステムを更新して、ユーザーにroot権限が付与されているかどうかをテストします。

# su - tecmint_user
$ sudo yum update

RHEL 7でSSH公開鍵認証を設定する

次のステップで、RHELサーバーのセキュリティを強化するために、新しいユーザー用にSSH公開鍵認証を設定します。公開鍵と秘密鍵であるSSH鍵ペアを生成するには、サーバーコンソールで次のコマンドを実行します。 SSHキーを設定しているユーザーでシステムにログインしていることを確認してください。

# su - tecmint_user
$ ssh-keygen -t RSA

鍵が生成されている間、鍵を保護するためにパスフレーズを追加するように求められます。 SSHサーバー経由でタスクを自動化する場合は、強力なパスフレーズを入力するか、パスフレーズを空白のままにすることを選択できます。

SSH鍵が生成されたら、下記のコマンドを実行して公開鍵ペアをリモートサーバーにコピーします。公開鍵をリモートSSHサーバーにインストールするには、そのサーバーにログインするための資格情報を持つユーザーアカウントが必要になります。

$ ssh-copy-id [email protected]

認証方法として秘密鍵を使用してSSH経由でリモートサーバーにログインしてみてください。 SSHサーバーがパスワードを要求せずに自動的にログインできるはずです。

$ ssh [email protected]

手動で公開SSH鍵を遠隔のSSHサーバーにインストールしたい場合は、次のコマンドを発行してください。

$ cat ~/.ssh/id_rsa

RHEL 7でのセキュアSSH

SSHデーモンを保護し、パスワードまたはキーを介したrootアカウントへのリモートSSHアクセスを許可しないようにするには、SSHサーバーのメイン設定ファイルを開き、以下の変更を加えます。

$ sudo vi /etc/ssh/sshd_config

#PermitRootLogin yes という行を検索し、行の先頭から記号(ハッシュタグ)を削除してその行のコメントを外し、次のように変更します抜粋。

PermitRootLogin no

その後、SSHサーバを再起動して新しい設定を適用し、rootアカウントでこのサーバにログインして設定をテストします。 SSH経由でのrootアカウントへのアクセスは今のところ制限されるべきです。

$ sudo systemctl restart sshd

一定時間操作しないと、サーバーへのすべてのリモートSSH接続を自動的に切断したい場合があります。

この機能をシステム全体で有効にするには、次のコマンドを実行します。 TMOUT bash変数がメインの bashrc ファイルに追加され、すべてのSSH接続が切断または削除されます 5 分間何も操作しないと消えます。

$ su -c 'echo "TMOUT=300" >> /etc/bashrc'

/etc/bashrc ファイルの最後に変数が正しく追加されているかどうかを確認するには、tailコマンドを実行します。それ以降のすべてのSSH接続は、 5 分間操作がないと自動的に閉じられます。

$ tail /etc/bashrc

以下のスクリーンショットでは、drupalマシンからRHELサーバーへのリモートSSHセッションは5分後に自動ログアウトされています。

RHEL 7でファイアウォールを設定する

次のステップでは、ネットワークレベルでシステムをさらに保護するためにファイアウォールを設定します。 RHEL 7には、サーバー上のiptablesルールを管理するためのFirewalldアプリケーションが付属しています。

まず、下記のコマンドを発行して、ファイアウォールがシステム内で動作していることを確認してください。 Firewalldデーモンが停止している場合は、次のコマンドで起動する必要があります。

$ sudo systemctl status firewalld
$ sudo systemctl start firewalld
$ sudo systemctl enable firewalld

ファイアウォールを有効にしてシステムで実行したら、 firewall-cmd コマンドラインユーティリティを使用してファイアウォールポリシー情報を設定し、SSHデーモンなどの特定のネットワークポートへのトラフィックを許可することができます。内部Webサーバーまたは他の関連ネットワークサービスへ。

今はサーバーでSSHデーモンを実行しているだけなので、次のコマンドを発行して、SSHサービスポートのトラフィックを許可するようにファイアウォールポリシーを調整できます。

$ sudo firewall-cmd --add-service=ssh --permanent
$ sudo firewall-cmd --reload

次回のサーバー起動時にルールを適用せずに、ファイアウォールルールをオンザフライで追加するには、次のコマンド構文を使用します。

$ sudo firewall-cmd --add-service=sshd

HTTPサーバー、メールサーバー、その他のネットワークサービスなど、サーバーに他のネットワークサービスをインストールする場合は、次のように特定の接続を許可するためのルールを追加できます。

$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https
$ sudo firewall-cmd --permanent --add-service=smtp

すべてのファイアウォールルールを一覧表示するには、下記のコマンドを実行します。

$ sudo firewall-cmd --permanent --list-all

RHEL 7で不要なサービスを削除する

デフォルトでRHELサーバーで実行されているすべてのネットワークサービス(TCPおよびUDP)のリストを取得するには、以下のサンプルに示すように ss コマンドを発行します。

$ sudo ss -tulpn

ss コマンドを使用すると、 Postfix マスターサービスやNTPプロトコルを担当するサーバーなど、システムでデフォルトで起動および実行されている興味深いサービスがいくつか表示されます。

このサーバーをメールサーバーとして設定する予定がない場合は、以下のコマンドを発行してPostfixデーモンを停止、無効化、削除してください。

$ sudo systemctl stop postfix.service 
$ sudo yum remove postfix

最近、NTPプロトコル上でいくつかの厄介なDDOS攻撃が報告されています。内部クライアントがこのサーバーと時刻を同期するためにRHELサーバーをNTPサーバーとして実行するように設定する予定がない場合は、以下のコマンドを発行してChronyデーモンを完全に無効にして削除する必要があります。

$ sudo systemctl stop chronyd.service 
$ sudo yum remove chrony

もう一度、 ss コマンドを実行して、他のネットワークサービスがシステムで実行されているかどうかを確認し、それらを無効にして削除します。

$ sudo ss -tulpn

サーバーに正確な時刻を提供し、上位ピアサーバーと時刻を同期させるには、次のコマンドを実行して ntpdate ユーティリティをインストールし、パブリックNTPサーバーと時刻を同期させることができます。

$ sudo yum install ntpdate
$ sudo ntpdate 0.uk.pool.ntp.org

ユーザーの操作なしで ntpdate 時刻同期コマンドを毎日実行するように自動化するには、以下の内容で新しいcrontabジョブを真夜中に実行するようにスケジュールします。

$ sudo crontab -e

Crontabファイルの抜粋:

@daily /usr/sbin/ntpdate 0.uk.pool.ntp.org

それで全部です!これで、RHELサーバーは、Webサーバー、データベースサーバー、ファイル共有サービス、その他の特定のアプリケーションのインストールや設定など、カスタムネットワークサービスまたはアプリケーションに必要な追加ソフトウェアをインストールする準備が整いました。

RHEL 7サーバーをさらに安全にし、強化するために、以下の記事をチェックしてください。

  1. The Mega Guide To Harden and Secure RHEL 7 – Part 1
  2. The Mega Guide To Harden and Secure RHEL 7 – Part 2

このRHEL 7システムにWebサイトを展開する予定の場合は、LAMPスタックまたはLEMPスタックを設定および構成する方法を学びます。