序章

新しいFedora22に初めてログインしたときは、実動システムとして使用する準備ができていません。 ファイアウォールを有効にするなど、カスタマイズして保護するために実行する必要のある推奨手順がいくつかあります。

このチュートリアルでは、Fedora 22サーバーの新規インストールにより、より優れたセキュリティプロファイルを提供し、使用できるようにする方法を示します。

前提条件

このチュートリアルに従うには、次のものが必要です。

  • ルートSSHキーを備えたFedora22ドロップレット。

SSHキーチュートリアルのこのセクションに従って、キーがない場合はキーを作成できます。同じチュートリアルのこのセクションに従って、SSHキーをサーバーのルートに自動的に埋め込むことができます。ドロップレットを作成するときにアカウントを作成します。

ステップ1—標準ユーザーアカウントを作成する

まず、rootとしてサーバーにログインします。

ssh [email protected]your_server_ip

rootとして操作することはセキュリティリスクであるため、このステップでは、システムおよびその他のコンピューティングタスクに使用するsudo非rootユーザーアカウントを設定します。 このチュートリアルで使用されるユーザー名はsammyですが、任意の名前を使用できます。

ユーザーを追加するには、次のように入力します。

adduser sammy

以下のコマンドを使用して、ユーザーの強力なパスワードを指定します。 パスワードを2回入力するように求められます。

passwd sammy

次に、ユーザーをwheelグループに追加します。これにより、sudo権限が付与されます。

gpasswd -a sammy wheel

サーバーからログアウトし、ローカルマシンで次のコマンドを実行して、SSHキーを新しいユーザーアカウントに追加します。

ssh-copy-id sammy@your_server_ip

SSHキーをローカルマシンからサーバーにコピーする方法の詳細については、SSHチュートリアルのこのセクションを参照してください。

最後に、新しいsudonon-rootユーザーとして再度ログインします。 このアカウントにはSSHキーが含まれているため、パスワードの入力を求められることはありません。

ssh sammy@your_server_ip

ステップ2—ルートログインとパスワード認証を禁止する

このステップでは、rootログインとパスワード認証を無効にすることでSSHログインをより安全にします。

構成ファイルを編集するには、テキストエディタをインストールする必要があります。 nanoを使用しますが、お好きな方を使用できます。

まず、以下を使用して利用可能な更新を適用します。

sudo dnf update

次に、nanoをインストールするには、次のように入力します。

sudo dnf install -y nano

次に、SSHデーモンの構成ファイルを開いて編集します。

sudo nano /etc/ssh/sshd_config

そのファイル内で、PermitRootLoginディレクティブを探します。 コメントを外し(つまり、開始#文字を削除します)、noに設定します。

PermitRootLogin no

同様に、PasswordAuthenticationディレクティブを探し、noにも設定します。

PasswordAuthentication no

ファイルを保存して終了し、構成を再ロードして変更を適用します。

sudo systemctl reload sshd

誰かが今rootとしてログインしようとすると、応答はPermission denied (publickey,gssapi-keyex,gssapi-with-mic)になります。

ステップ3—タイムゾーンの設定

このステップでは、システムクロックをローカルタイムゾーンに変更する方法を説明します。 デフォルトのクロックはUTCに設定されています。

既知のタイムゾーンはすべて/usr/share/zoneinfo/ディレクトリの下にあります。 /usr/share/zoneinfo/のファイルとディレクトリを見てください。

ls /usr/share/zoneinfo/

ローカルタイムゾーンを使用するように時計を設定するには、そのディレクトリで国または地理的領域を見つけ、その下のゾーンファイルを見つけて、そこから/etc/localtimeディレクトリへのシンボリックソフトリンクを作成します。 たとえば、タイムゾーンがCentralまたはCSTである米国中部にいる場合、ゾーンファイルは/usr/share/zoneinfo/US/Centralになります。

ゾーンファイルから/etc/localtimeへのシンボリックソフトリンクを作成します。

sudo ln -sf /usr/share/zoneinfo/your_zone_file /etc/localtime

dateコマンドの出力を表示して、時計が現地時間に設定されていることを確認します。

date

出力は次のようになります。

Wed Mar 25 14:41:20 CST 2015

その出力のCSTは、中部標準時であることを確認します。

ステップ4—ファイアウォールを有効にする

新しいFedora22サーバーには、アクティブなファイアウォールアプリケーションがありません。 このステップでは、IPTablesファイアウォールアプリケーションを有効にする方法と、再起動後もランタイムルールが持続することを確認する方法を学習します。

IPTablesパッケージはすでにインストールされていますが、有効にするには、iptables-servicesパッケージをインストールする必要があります。

sudo dnf install -y iptables-services

次に、IPTablesを有効にして、起動時に自動的に起動するようにします。

sudo systemctl enable iptables

次に、IPTablesを起動します。

sudo systemctl start iptables

Fedora 22のIPTablesには、デフォルトのルールセットが付属しています。 それらのルールの1つは、SSHトラフィックを許可します。 デフォルトのルールを表示するには、次のように入力します。

sudo iptables -L

出力は次のようになります。

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
ACCEPT     icmp --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
ACCEPT     tcp  --  anywhere             anywhere             state NEW tcp dpt:ssh
REJECT     all  --  anywhere             anywhere             reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
REJECT     all  --  anywhere             anywhere             reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

これらのルールはランタイムルールであり、システムを再起動すると失われます。 現在のランタイムルールをファイルに保存して、再起動後も保持されるようにするには、次のように入力します。

sudo /usr/libexec/iptables/iptables.init save

これで、ルールが/etc/sysconfigディレクトリのiptablesというファイルに保存されます。

ステップ5(オプション)—HTTPおよびHTTPSトラフィックを許可する

このセクションでは、ファイアウォールルールを編集して、ポート80(HTTP)および443(HTTPS)のサービスを許可する方法について説明します。

デフォルトのIPTablesルールはデフォルトでSSHトラフィックを許可しますが、HTTPとその比較的安全ないとこであるHTTPSは多くのアプリケーションが使用するサービスであるため、これらもファイアウォールを通過できるようにすることができます。

続行するには、次のように入力してファイアウォールルールファイルを開きます。

sudo nano /etc/sysconfig/iptables

SSH(ポート22)トラフィックのルールの後に、ポート80用とポート443用の2つのルールを追加するだけです。 以下の赤い線は、追加する線です。 新しいルールを追加する場所を見つけるのに役立つコンテキストとして、前後の行が含まれています。

-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited

新しいルールセットをアクティブ化するには、IPTablesを再起動します。

sudo systemctl restart iptables

ステップ6(オプション)-Mlocateのインストール

locateコマンドは、システム内のファイルの場所を検索するための非常に便利なユーティリティです。 たとえば、 example というファイルを見つけるには、次のように入力します。

locate example

これにより、ファイルシステムがスキャンされ、画面上の1つまたは複数のファイルの場所が印刷されます。 locateを使用するより高度な方法もあります。

サーバーでコマンドを使用できるようにするには、最初にmlocateパッケージをインストールする必要があります。

sudo dnf install -y mlocate

次に、updatedbコマンドを実行して、検索データベースを更新します。

sudo updatedb

その後、locateを使用して名前で任意のファイルを検索できるようになります。

結論

最後のステップを完了すると、Fedora 22サーバーが構成され、適度に安全になり、使用できるようになります。