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

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

Linuxを使用している数百万人のビジネス・オーナーの1人であれば、Linuxサーバーがそのオープンソースの性質上、費用対効果が高く、汎用的で、最高に柔軟であることをは既にご存知でしょう。Linuxはコミュニティの協力と共有リソースを提供し、特に中小企業のオーナーにとって、進取の気性に富んだ起業家の主要な人気選択肢となっています。

しかし、Linuxがオープンソースであるということは、セキュリティ・リスクや脆弱性があるということです。Linuxはオープンソースであるため、セキュリティ上のリスクや脆弱性が存在します。ここでは、Linuxサーバーのセキュリティについて、様々な角度から詳しく見ていきましょう。

Linuxサーバーのアップデート

何よりもまず、Linuxサーバーが最新の状態であることを確認する必要があります。Linuxサーバを定期的にアップデートすることは、優れたデジタル防御と強力なサーバセキュリティを維持するための鍵です。このTIPSは、ファイアウォールやアンチウイルスソフトウェアなど、あらゆるサイバーセキュリティ要素にも当てはまります。

Linuxサーバは自動的にアップデートされるかもしれませんが、そうであるかどうかわからない場合、またはLinuxサーバを手動でアップデートしたい場合、以下の2つの選択肢があります。

  • LinuxのUpdate Managerを使用する。これはアップデートを検索し、利用可能なものがあれば自動的に通知してくれます。すべてのLinuxディストリビューターやディストロには、Linuxサーバーを迅速かつ容易にアップデートできるGUI(グラフィカル・ユーザー・インターフェイス)があります。
  • Linux ターミナルを使用する。これはコマンドを入力し、手動でシステムを更新することができるメインターミナルです。

2番目の方法を取りたい場合は、ローカルリポジトリでLinuxサーバにアクセスし、最新のパッチを適用することで行うことができます。

  • DebianとUbuntuでは、コマンドラインで次のパッチを使用します。 $ sudo apt update && sudo apt upgrade -y
  • RHEL、CentOS、Fedoraの場合、以下のパッチを使用します: $ sudo dnf upgrade

Linuxサーバをアップデートすると、最新のサイバーセキュリティ技術やツールに対応できるようになります。また、マルウェアの侵入や「バックドア」のような、発見されたセキュリティ上の脅威に対しても、本質的に少しばかり安全性が高まります。

WindowsやMac用パソコンの中には、ハードウェア構成が古いため、新しいLinuxディストリビューションやアップデートの機能を許可しないものもあることに注意してください。そのため、新しいLinuxシステムをインストールする際は、比較的新しいパソコンにのみインストールするようにしてください。

修正用の特権ユーザー・アカウントの作成

多くの企業経営者や管理者は、Linux サーバーにログインする際、root アクセス端末を使用することを避けています。それは、root ログイン端末は強力である反面、何をやっているか分からないと危険だからです。1 つの間違ったコマンドやタイプミスを入力するだけで、サーバーとそのデータを破壊したり壊したりすることができます。したがって、rootユーザーは、自分が何をしているのか、ポートを開くなどの方法を知っておく必要があるのです。

そのため、Sudo 権限を持つユーザアカウントを作る方がはるかに賢明で一般的です。このような特権アカウントは、あなたのようなユーザーが、実際にルートターミナルにコマンドを実装することなく、ルートコマンドを使用できるようにし、それによって、上記のリスクを減らすことができるのです。

より高い Linux サーバーセキュリティのための新しい特権付きユーザーアカウントの作成は、かなり簡単です。

  • まず、次のように入力して、新しいユーザを作成します –  $ adduser <username>
  • 次に、次のコードを入力して、そのユーザーにsudo権限を与えます –  $ usermod -a -G sudo <username>

これで、Linuxサーバーに新しいユーザー・プロファイルが作成されましたが、このプロファイルにはシステム管理者の権限と特権が与えられます。このプロファイルを使用して、他のすべてのデジタルアップグレードや、実装したいコマンドやコントロールを進めることができます。これは、デジタル王国への鍵を自分自身に与えていると考えてください。

パスワードやSSHキーの導入

パスワードとSSHキーもLinuxサーバーを保護するための一般的な方法です。これは、特権と管理アクセスを持つ新しいアカウントを設定した後の重要なステップです。そうしないと、誰でもそのプロファイルにアクセスし、あなたの同意なしにサーバーに変更を加えることができます。

パスワードは、Linuxサーバだけでなく、ファイアウォールやデータベースなど、他のすべてのデジタルプラットフォームにとっても強力なセキュリティ手段です。幸いなことに、Linuxではターミナルを使って簡単にシステムパスワードを設定したり編集したりすることができます。好きなパスワードを選んで、入力するだけです。

アドバイスとしては、Linuxのパスワードは、簡単に推測されないような強いものを作るようにしましょう。大文字と小文字を最低1つずつ、数字と記号を最低1つずつ、文字数を12文字以上にするのが良い方法です。そうすれば、総当たり攻撃でもパスワードの防御を突破するのは難しく、あなたのことを何か知っている人でも、パスワードを推測することはできません。

パスワードを覚えておくのが苦手ですか?パスワードマネージャーを使うか、物理的な金庫の中など自分だけがアクセスできる安全な場所にパスワードを書き留めるだけでよいでしょう。

SSHキーの確保

パスワードの設定に加え、SSH鍵の設定も必要です。SSHサーバーキーは、パスワードを入力することなく、安全かつ確実にサーバーにアクセスできるようにするものです。そのため、パスワードを覚えるのが苦手な方や、パスワードマネージャーをお持ちでない方におすすめです。

SSHキーを一から考え出す必要はありません。そのかわり、Linuxのターミナルを使って新しいSSHキーを生成し、このコマンドを使ってキーをサーバーにアップロードすることができます。

  • $ ssh-copy-id <ユーザー名>@ip_address

次に進む前に、以下の方法で SSH 鍵を保護する必要があります。

  • SSHパスワード認証を無効にする
  • リモートログインによる root アクセスを制限する。これにより、遠くからLinuxサーバー(および管理者プロファイル)にログインすることを防止します。
  • IPv4 と IPv6 の両方へのアクセスを制限する。

複雑そうにみえますが、そんなことはありません。Microsoft Notepadなどのテキストエディタで/etc /ssh /sshd_configを開き、以下の行を見てみてください。

  • PasswordAuthentication yes
  • PermitRootLogin yes(ルートログインを許可する

この2つの行の隣にある「yes」を見てください。これらは「nos」である必要があります。そこで、テキストエディタで次のような行に変更してください。

  • PasswordAuthentication no
  • PermitRootLogin no(ルートログインを許可しない

次のステップは、SSHサービスをIPv4またはIPv6に制限することです。これは、AddressFamilyの行を変更することで行えます。IPv6は利用を制限し、IPv4を使用するように切り替えることをお勧めします。行が次のように表示されていることを確認します。

  • AddressFamily inet

変更が有効になるように、SSHサービスを再起動することを確認してください。そうでなければ、もう一度戻って変更を行う必要があります。これを行うには、使用しているLinuxサーバーの種類に応じた手順に従います。

  • Ubuntu – $ sudo service sshd restart
  • Fedora、CentOS、またはSystemdを使用している全てのタイプ – $ sudo systemctl restart sshd

これで、SSH鍵がLinuxサーバーにアップロードされ、パスワードを入力することなく、常にLinuxサーバーにログインできるようになります。それでも、念のため両方のセキュリティ対策を活用するのは良いことです。少し専門的な話になりますが、Linuxサーバーのデジタル防御を全面的にアピールするための方法です。

Linuxファイアウォールの導入

ファイアウォールは、データベースやサーバーをマルウェアなどのあらゆるサイバー攻撃から守るために、試行錯誤を重ねた方法です。従って、Linuxサーバーには必ずファイアウォールをインストールする必要があります。幸いなことに、オープンソースのファイアウォールがたくさんあり、好みに応じてインストール、実装することができます。

ただし、ファイアウォールによって多少の違いがあることに注意してください。例えば、あるファイアウォールは、送信トラフィックは許可するが、受信トラフィックはサーバーに一切影響を与えないようにする。この場合、アプリがサーバーに到達することはできませんが、インターネットにアクセスすることは可能です。他のファイアウォールは、限定的なアクセスを許可したり、特定の個人からのサーバーの使用を許可する場合があります。

多くの場合、最適なのはUFWまたはComplicated Firewallです。このファイアウォールは、あなたが個人的に承認したネットワーク・トラフィックのみを取り込むように設定することができます。以下のコードでUFWをインストールします。

  • sudo apt install ufw

インストールが完了すると、UFWは受信ネットワーク接続を拒否しますが、送信ネットワークトラフィックは許可します。したがって、次のステップは、SSH、HTTP、およびHTTPSへのアクセスをそれぞれ有効にすることによってログインできるようにすることです。

  • sudo ufw allow ssh
  • sudo ufw allow http
  • sudo ufw allow https

これらの設定を行った後は、必ず「$ sudo ufw enable」でUFW自体を有効にしてください。何らかの理由でファイアウォールを無効にしたい場合は、「$ sudo ufw disable」コマンドを使用すればよい。

また、ファイアウォールは新しいセキュリティアップデートのために定期的に更新することをお勧めします。ファイアウォールがウェブサーバーにアクセスできることを確認し、これを実現します。

ディストリビューションによっては、既に firewall-cmd がインストールされ、統合されているかもしれないことに注意してください。それでも、UFWは追加保護のために利用するのに良いファイアウォールです。

不要なLinux向けサービスを制限する

どのLinuxサーバにも、少なくともいくつかのネットワークに面したサービスが付属しています。これらのほとんどは維持されるべきですが、ネットワークの脆弱性を最小にするために、いくつかは削除したほうがいいかもしれません。これは、不要なアプリやパッケージにも言えることで、サービスを有効にしていても、ほとんど使用されていなければ、意欲的な脅威者からサーバに侵入される可能性があることを意味しているに過ぎません。

まず、このコマンドでLinuxサーバーが実行しているネットワークサービスを調べてみましょう。「sudo ss -atpu 」です。オペレーティング・システムによって、出力は異なる場合があります。しかし、使用していないため削除したいサービスがある場合、サーバーの種類に応じて以下のコマンドを使用します。

  • Ubuntu/Debian – $ sudo apt purge <service_name>
  • CentOS/Red Hat – $ sudo yum remove <service_name>

この後、再度ss -atupコマンドを実行して、Linuxサーバー上で使用されていないサービスが実行されていないことを確認します。

必要かつ信頼のおけるサードパーティパッケージのみをインストールする

Linuxはオープンソースであるため、サードパーティ製のパッケージや追加機能をインストールできる数に制限はありません。しかし、中にはセキュリティ上の問題があるものもあり、企業にとって深刻な問題となることもあります。

このことを念頭に置き、万が一のためのインストールは避け、定期的に使用することが確実かつセキュリティに定評のあるサーバー・パッケージのみをインストールするように心がけてください。また、サーバーパッケージを導入する前に、そのパッケージが原因で違反や脆弱性が過去発生したことがないか、また、その他の懸念がないかなど、さまざまなサーバーパッケージを調査しておきましょう。

Fail2banを利用する

Fail2banは、自動化されたデジタル攻撃や繰り返されるデジタル攻撃をチェックするサーバー・ログ・アプリケーションです。このアプリケーションの有用性は明らかです。特に、あなたのビジネスが何らかの理由で悪意のある行為者に狙われているかもしれないと考えているのであれば、このアプリケーションの有用性は明らかです。

Fail2banは、繰り返される攻撃や自動化された攻撃を発見した場合、攻撃者のIPアドレスをブロックするために、自動的にファイアウォールを変更します。Fail2banは、攻撃者のIPアドレスを永久に、または一定時間ブロックします。

便利そうに感じられた方は、Fail2banをインストールしてみてください。インストールには次のコマンドコードを入力してください。

  • $ sudo apt install fail2ban -y

次に、この設定ファイルをコピーしたいと思います。

  • $ sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

次に、Fail2banを再起動して、Linuxサーバー上で正しく設定されていることを確認します。

  • sudo service fail2ban restart

このコマンドを入力すると、Fail2banはすぐに設定され、実行されるはずです。Fail2banは、侵入検知サービスの一環として、リモートサーバーからのログイン試行を警告し、さらにアクセス制御を許可するので、必要に応じて設定ファイルやサーバーを調整することができます。Fail2banが稼働することで、不正アクセスの可能性が格段に低くなります。

Fail2banは継続的に実行され、ログファイルを調査して攻撃を探します。Fail2banが数週間稼働すると、禁止されたIPアドレスのリストが蓄積され、Fail2banの有効性が示されます。

不正にアクセス禁止にされたIPアドレスを削除する必要がある場合はどうすればよいのでしょうか。以下のコマンドで、Fail2banのSSHサービスの現在の状態を確認してください。

  • $ sudo fail2ban-client status ssh

二要素認証の利用

二要素認証(2FA)もまた、安定したサイバーセキュリティ戦略の一つです。簡単に言うと、二要素認証とは、サーバー、データ、またはコントロールセットへのアクセスを許可する前に、誰かの身元を確認するための複数の手段を使用することを意味します。

例えば、銀行口座にオンラインアクセスする際、銀行はパスワードと本人しか知らないセキュリティ質問に対する答えの両方を求めることで、二要素認証を使用することがあります。二要素認証は、ハッカーが機密性の高いシステムにアクセスするのを困難にするため、セキュリティアクセスに有効です。

Linuxサーバでは、認証パッケージをインストールするだけで、二要素認証を設定することができます。これは間違いなく、上記の必要なパッケージの1つです 適切なパッケージをセットアップすると、Linuxサーバーにアクセスしようとする人は、パスワードに加えて、追加の認証や身元の証明を提供する必要があります。もし、あなたがすでに強力なパスワードを持っているならば、誰かが両方の情報を持っている可能性は低いでしょう。

選択したパッケージによっては、追加認証のレイヤーは、秘密コード、QRコード、または他の識別データポイントかもしれない。認証コードは、認証ソフトウェアを使用して、電話やタブレットなどのデバイスに表示することができます。

すべてのサードパーティ製パッケージと同様に、さまざまな2FAパッケージを調査して、自分のニーズに最適なものをインストールし、最高のセキュリティを実現するために最高の評判を得ているものを選ぶようにしましょう。

まとめ

結局のところ、Linux サーバのセキュリティ確保は継続的なプロセスです。上記のステップを踏んだ上で、進化するセキュリティ脅威やチュートリアルに後れを取らないようにし、新しいデジタル防御が開発されたら、それを実装し続けることが必要です。

原文:How to Secure Your Linux Server: A Detailed Guide (Nick Buikema)

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る