Linuxホームサーバーのセキュリティを確保する方法

ホームサーバーを設定する理由はたくさんあります。メディアサーバー、ファイルサーバー、あるいはローカルバックアップサーバーとして使用することができます。基本的に、オンラインである必要のないあなたのファイルは、ホームサーバーの良い候補です。Linuxを搭載したホームサーバーの設定は、特に最近では比較的簡単です。しかし、そのサーバーを安全に保つことはまったく別の話です。セキュリティは重要であると同時に、扱いが難しい場合もあります。
関連記事: Log4Shellとは何か、そしてLinuxシステムをそれから守る方法
必要最低限のものだけをインストールする
ホームサーバーを安全に保つ最も簡単な方法の1つは、最初からセキュリティを考慮することです。これはインストールから始まります。アプリケーションやサービスが本当に必要かどうかわからない場合は、インストールしないでください。後でインストールすることも可能です。
Linuxを何回かインストールしたことがあるなら、これはさらに簡単です。デフォルトの設定を利用する代わりに、インストールに最もコントロールを与えるモードを使いましょう。これらは時々「エキスパートモード」などと呼ばれています。
インストールオプションを慎重に追跡することで、後でセキュリティ上の理由からサービスを無効にするのにかかる時間を節約できます。
sudoを設定する
次のステップに進む前に、sudoを設定する必要があります。なぜなら、ここが終わったら、SSH経由でサーバーにログインし、ルートアカウントとしてログインすることができなくなるからです。システムにさらなる変更を加えるには、sudoを使用する必要があります。
まず、すでにsudoを使用できるかどうかを確認します。あなたのユーザーアカウントから、以下のコマンドをUSERNAMEの代わりに自分のユーザー名を使って実行します。
sudo -lU USERNAME「(ALL) ALL」を実行できるというメッセージが表示される場合、次に進んでください。
次に、サーバーのルートアカウントとして、以下のコマンドを実行して「/etc/sudoers」ファイルを編集します。nanoの代わりに別のエディタを使いたい場合はそれを使ってください。
EDITOR=nano visudoファイルを編集して、以下の内容を含めます。USERNAMEの部分は自分のユーザー名に置き換えてください。
USERNAME ALL=(ALL) ALL関連記事: LinuxでNessus脆弱性スキャナーを使用する方法
SSHを設定する

すでにホームサーバーでSSHが有効になっている可能性があります。実際、この手段は通常サーバーと対話する方法です。
まず、OpenSSHがインストールされていることを確認します。別のディストリビューションを使用している場合、コマンドは異なる場合がありますが、パッケージ名は比較的一貫しています。Ubuntuを使用している場合、次のコマンドを実行します。
sudo apt install openssh-serverキーに基づく認証はパスワード認証よりもはるかに安全なので、この方法でSSHを設定します。そのためには、サーバーそのものではなく、サーバーに接続する予定のクライアントで作業していることを確認してください。まず、すでにSSHキーを持っていないか確認します。
ls ~/.ssh/もし「id_rsa」と「id_rsa.pub」というファイル名が表示されている場合、すでにSSHキーを持っています。この次のステップをスキップしてください。
ssh-keygen -t rsa -b 4096 -C "[email protected]"次に、SSHキーをサーバーにコピーします。
ssh-copy-id USERNAME@SERVERホームサーバーの場合、サーバーには名前の代わりにIPアドレスを使用している可能性があります。サーバー名がわからない場合は、上記のSERVERの部分をIPアドレスに置き換えてください。
次に、SSHの設定をさらに安全にするために編集します。キーを作成したクライアントからサーバーにログインします。これにより、このステップの後でも再度ログインできるようになります。以下を実行します。選択したエディタに従ってnanoを置き換えてください。
sudo nano /etc/ssh/sshd_configファイルを編集し、次の設定を追加します。これらはファイル内のさまざまな場所にあります。重複がないことを確認してください。設定の最初の экземпляр のみが適用されます。
ChallengeResponseAuthentication no
PasswordAuthentication no
UsePAM no
PermitRootLogin no次に、次のいずれかのコマンドでSSHサーバーを再起動する必要があります。
Ubuntuでは、次のコマンドを実行します。
sudo systemctl restart ssh関連記事: SELinuxとAppArmor: 違いは何か、どちらを使うべきか?
ファイアウォールを設定する
実行しているサービスやサーバーがインターネットに接続する頻度によっては、ファイアウォールを実行したい場合もあります。これに対する選択肢はいくつかありますが、Linuxでの確実な方法はiptablesです。
iptablesの設定についてはこの記事の範囲を超えるため、心配しないでください。あなたのマシンでiptablesを設定するための完全なガイドを用意しています。
ファイアウォールを設定する別の簡単な方法は、ufwを使用することです。次のコマンドでインストールできます。
sudo apt install ufwデフォルトでは、全てのポートをブロックします。オンラインとSSHのアクセスを有効にするために、次のufwコマンドを実行してポート80、443、22を開きます。
sudo ufw allow 80
sudo ufw allow 443
sudo ufw allow 22最後に、ufwサービスを有効にします。
sudo ufw enable最新の状態を保つ

サーバーは単に機能している場合、簡単に見落とされがちですが、これは危険です。ソフトウェアを常に最新の状態に保つようにしてください。アンマネージドアップグレードを使用することもできますが、これには予測できないことがあります。最も安全な方法は、すべてが十分であることを確認するために、定期的な週次または月次のサーバーメンテナンスの予定を立てることです。
関連記事: Linuxサーバーのセキュリティを確保するためのベストオープンソースツール
ここから先はどうするか
これで、外部の脅威からサーバーを保護するための良いスタートができました。しかし、家からサーバーにアクセスする必要がある場合はどうでしょうか? 開けたすべてのドアは攻撃者に利用される可能性があり、開いているすべてのポートはあなたの脆弱性を増幅させます。
外部から自宅ネットワークにアクセスする最も簡単な方法の1つは、VPNを使用することですが、これはこの記事の範囲外ですのでご安心を。あなたの選択肢を理解するために、最高の安全なVPNサービスのリストを確認してください。