この入門書では、基本的なLinuxサーバーのセキュリティについて説明します。 Debian / Ubuntuに焦点を当てていますが、ここに示されているすべてのものを他のLinuxディストリビューションに適用できます。また、この資料を調査し、該当する場合は拡張することをお勧めします。
1。サーバーを更新する
サーバーを保護するために最初にすべきことは、ローカルリポジトリを更新し、最新のパッチを適用してオペレーティングシステムとインストール済みアプリケーションをアップグレードすることです。
UbuntuとDebianの場合:
$ sudo apt update && sudo apt upgrade -y
Fedora、CentOS、またはRHELの場合:
$ sudo dnf upgrade
2。新しい特権ユーザーアカウントを作成する
次に、新しいユーザーアカウントを作成します。 rootとしてサーバーにログインしないでください 。代わりに、独自のアカウントを作成してください( "
新しいユーザーを作成することから始めます:
$ adduser <username>
新しいユーザーアカウントをsudoにします 追加による権利( -a ) sudo グループ( -G )ユーザーのグループメンバーシップへ:
$ usermod -a -G sudo <username>
3。 SSHキーをアップロードする
SSHキーを使用して新しいサーバーにログインすることをお勧めします。 ssh-copy-id を使用して、事前に生成されたSSHキーを新しいサーバーにアップロードできます。 コマンド:
$ ssh-copy-id <username>@ip_address
これで、パスワードを入力しなくても新しいサーバーにログインできます。
4。安全なSSH
次に、次の3つの変更を行います。
- SSHパスワード認証を無効にする
- ルートを制限する リモートログインから
- IPv4またはIPv6へのアクセスを制限する
/ etc / ssh / sshd_configを開きます 選択したテキストエディタを使用して、次の行を確認します。
PasswordAuthentication yes
PermitRootLogin yes
次のようになります:
PasswordAuthentication no
PermitRootLogin no
次に、 AddressFamily を変更して、SSHサービスをIPv4またはIPv6に制限します。 オプション。 IPv4のみを使用するように変更するには(ほとんどの人にとっては問題ないはずです)、次のように変更します。
AddressFamily inet
SSHサービスを再起動して、変更を有効にします。 SSHサーバーを再起動する前に、サーバーへの2つのアクティブな接続を確立することをお勧めします。その余分な接続があると、再起動がうまくいかなかった場合に何かを修正できます。
Ubuntuの場合:
$ sudo service sshd restart
FedoraまたはCentOS、またはSystemdを使用するもの:
$ sudo systemctl restart sshd
5。ファイアウォールを有効にする
次に、ファイアウォールをインストールして有効にし、指定したネットワークトラフィックのみを許可するように構成する必要があります。 Uncomplicated Firewall(UFW)は、 iptablesへの使いやすいインターフェースです。 これにより、ファイアウォールの構成プロセスが大幅に簡素化されます。
UFWは次のコマンドでインストールできます:
$ sudo apt install ufw
デフォルトでは、UFWはすべての着信接続を拒否し、すべての発信接続を許可します。つまり、サーバー上のすべてのアプリケーションはインターネットにアクセスできますが、サーバーにアクセスしようとするものは接続できません。
まず、SSH、HTTP、HTTPSへのアクセスを有効にしてログインできることを確認します。
$ sudo ufw allow ssh
$ sudo ufw allow http
$ sudo ufw allow https
次に、UFWを有効にします:
$ sudo ufw enable
次の方法で許可および拒否されるサービスを確認できます:
$ sudo ufw status
UFWを無効にしたい場合は、次のように入力してください。
$ sudo ufw disable
すでにインストールされ、一部のディストリビューションに統合されているfirewall-cmdを使用することもできます。
6。 Fail2banをインストールする
Fail2banは、サーバーログを調べて、繰り返される攻撃または自動化された攻撃を探すアプリケーションです。見つかった場合は、ファイアウォールを変更して、攻撃者のIPアドレスを永続的にまたは指定された時間ブロックします。
次のように入力して、Fail2banをインストールできます。
$ sudo apt install fail2ban -y
次に、含まれている構成ファイルをコピーします。
$ sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
そして、Fail2banを再起動します:
$ sudo service fail2ban restart
これですべてです。ソフトウェアは、攻撃を探すためにログファイルを継続的に調べます。しばらくすると、アプリは禁止されているIPアドレスのかなりのリストを作成します。このリストを表示するには、SSHサービスの現在のステータスを次のコマンドでリクエストします。
$ sudo fail2ban-client status ssh
7。未使用のネットワーク向けサービスを削除する
ほとんどすべてのLinuxサーバーオペレーティングシステムでは、いくつかのネットワーク向けサービスが有効になっています。あなたはそれらのほとんどを保持したいと思うでしょう。ただし、削除したいものがいくつかあります。 ss を使用すると、実行中のすべてのネットワークサービスを確認できます。 コマンド:
$ sudo ss -atpu
ssからの出力 オペレーティングシステムによって異なります。これはあなたが見るかもしれないものの例です。 SSH(sshd)およびNgnix(nginx)サービスがリッスンしており、接続の準備ができていることを示しています。
tcp LISTEN 0 128 *:http *:* users:(("nginx",pid=22563,fd=7))
tcp LISTEN 0 128 *:ssh *:* users:(("sshd",pid=685,fd=3))
未使用のサービスを削除する方法( "
Debian / Ubuntuで未使用のサービスを削除するには:
$ sudo apt purge <service_name>
Red Hat / CentOSで未使用のサービスを削除するには:
$ sudo yum remove <service_name>
その他のLinuxリソース
- Linuxコマンドのチートシート
- 高度なLinuxコマンドのチートシート
- 無料のオンラインコース:RHELの技術概要
- Linuxネットワーキングのチートシート
- SELinuxチートシート
- Linuxの一般的なコマンドのチートシート
- Linuxコンテナとは何ですか?
- 最新のLinux記事
ss -atupを実行します 未使用のサービスがインストールおよび実行されていないことを再度確認します。
このチュートリアルでは、Linuxサーバーを強化するために最低限必要なものを紹介します。サーバーの使用方法に応じて、追加のセキュリティレイヤーを有効にすることができます。これらのレイヤーには、個々のアプリケーション構成、侵入検知ソフトウェア、2要素認証などのアクセス制御の有効化などが含まれます。