Fedora22サーバーの初期セットアップ
序章
新しいFedora22に初めてログインしたときは、実動システムとして使用する準備ができていません。 ファイアウォールを有効にするなど、カスタマイズして保護するために実行する必要のある推奨手順がいくつかあります。
このチュートリアルでは、Fedora 22サーバーの新規インストールにより、より優れたセキュリティプロファイルを提供し、使用できるようにする方法を示します。
前提条件
このチュートリアルに従うには、次のものが必要です。
- ルートSSHキーを備えたFedora22ドロップレット。
SSHキーチュートリアルのこのセクションに従って、キーがない場合はキーを作成できます。同じチュートリアルのこのセクションに従って、SSHキーをサーバーのルートに自動的に埋め込むことができます。ドロップレットを作成するときにアカウントを作成します。
ステップ1—標準ユーザーアカウントを作成する
まず、rootとしてサーバーにログインします。
ssh root@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—ルートログインとパスワード認証を禁止する
このステップでは、ルートログインとパスワード認証を無効にすることで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サーバーが構成され、適度に安全になり、使用できるようになります。