Debian / Ubuntuサーバーが正常にインストールされたら、サーバーのセキュリティと機能を強化するためにいくつかの構成手順が不可欠です。このガイドでは、Debian 9 /Ubuntu18.04サーバーの初期サーバーセットアップの基本的な手順を説明します。これらの基本的な手順により、サーバーが強化され、後続の操作をシームレスに実行できるようになります。
rootユーザーとしてログイン
サーバーをセットアップする最初のステップは、rootユーザーとしてログインすることです。ただし、最初に、サーバーのIPアドレスとパスワードまたは認証用の秘密鍵が必要です。ログインするには、Linuxターミナルを開き、以下のコマンドを実行します。サーバーのIPアドレスを必ずIPアドレスに置き換えてください。
ssh user@ip-address
このガイドでは、パブリックIPアドレスが38.76.11.180
のUbuntu18.04サーバーを使用しています。 。
ターミナル経由でsshを使用してログインするには、コマンドは次のとおりです
ssh [email protected]
初めてログインする場合は、サーバーの信頼性を確認する必要があります。
「はい」と入力してEnterキーを押します。次に、サーバーのパスワードの入力を求められます。正しいパスワードを入力してEnterキーを押します。
これにより、以下に示すようにサーバーのシェルプロンプトが表示されます
すごい!サーバーへのログインに成功したので、2番目のステップに進みましょう
新しいユーザーを作成する
セキュリティのベストプラクティスとして、管理タスクにrootアカウントを使用することは強くお勧めしません。なぜそうなのですか?サーバーをrootとして実行すると、サーバーに悪影響を与える可能性のある、意図しないコストのかかるミスを犯しやすくなります。システムに不可逆的な損傷を与える可能性のある、システムに有害な何かを簡単に行うことができます。
このため、root以外の新しいユーザーを作成し、後で管理者権限を付与します。このように、ルートレベルのタスクを実行しようとするたびに、パスワードの入力を求められます。これにより、一時停止してコマンドの実行の結果について考え、コマンドの実行でコストのかかる間違いに気付いた場合にトラックで停止することができます。
新しいユーザーを作成するには実行
adduser user_name
新しいユーザーを追加します「james」
adduser james
ユーザーのパスワードといくつかの追加の質問の入力を求められます。必要な情報を提供する
完全!ユーザービューの作成を確認するには、/etc/passwd
ユーザーの存在を確認します。
cat /etc/passwd
サンプル出力
上の最後の行には、新しく作成されたユーザーの情報が表示されます。
新しいユーザーに管理者権限を付与する
これまでのところ、新しいユーザーには通常のアカウント権限があります。 sudo
を追加して管理タスクを実行できるように、新しく作成したユーザーにroot権限を設定する必要があります。 操作の前に。
これを実現するには、ユーザーを sudoに追加する必要があります 管理タスクを実行するたびにrootとしてログアウトおよびログインしないようにグループ化します。
これを実現するための構文は次のとおりです
usermod -aG sudo user_name
この場合、ユーザー「james」にsudo権限を付与するためのコマンドは次のようになります
usermod -aG sudo james
これで、前に示したコマンドを使用して、新しいユーザーでログアウトおよびログインできます
ssh [email protected]
サーバーの信頼性を確認し、正しいパスワードを入力してログインに成功したら、コマンドの前にsudo
を付けることで、スーパーユーザータスクを実行できるようになります。
たとえば、アカウントを使用してシステムを更新するには、以下のコマンドを実行します
sudo apt update
パスワードの入力を求められ、パスワードを入力すると、操作が開始されます。
基本的なファイアウォールを構成する
DebianおよびUbuntuサーバーは、UFWファイアウォールを使用して、サーバーに出入りするトラフィックを許可または拒否します。
ファイアウォールで既存の接続を表示するには、実行します
sudo ufw app list
予想どおり、現在サーバーへの接続にsshを使用しているため、OpenSSHが表示されます
出力
ファイアウォールを介した接続を許可するには、次のコマンドを実行します。
ufw allow service_name
たとえば、新しいサーバーのSSH接続を許可するには、次のコマンドを実行します。
sudo ufw allow OpenSSH
出力
ファイアウォールで特定のポートを開くには、構文を使用します
sudo ufw allow port/protocol
例
sudo ufw allow 80/tcp
出力
ファイアウォールの実行ステータスを確認するには
sudo ufw status
出力
ファイアウォールを有効にするには、次のコマンドを実行します。
sudo ufw enable
プロンプトが表示されたら、yes
と入力します [Enter]キーを押してファイアウォールを有効にし、変更を有効にします
ファイアウォールのステータスと既存の接続/開いているポートを再度表示するには、コマンドを実行します
新しいユーザーに対してパスワードなしの認証を有効にする
現在、パスワード認証を使用したSSHプロトコルを使用してサーバーに接続しています。セキュリティのベストプラクティスとして、パスワード認証なしでSSHキーを設定することを強くお勧めします。 SSHキーは、公開キーと秘密キーのペアで提供されます。
秘密キーはクライアントマシンにあり、公開キーは接続先のサーバーにあります。 SSHキー認証を設定したら、パスワード認証を無効にする必要があります。これにより、秘密鍵を持つユーザーのみが公開鍵が存在するサーバーに接続できるようになります。
ステップ1.公開鍵を生成します
キーペアを生成するには、クライアントマシンで以下のコマンドを実行します
ssh-keygen
図のような出力が得られます
Enterキーを押して、キーペアが.ssh/
であることを保存します。 ホームディレクトリのサブディレクトリ。または、独自のパスを指定することもできます。
次に、保護層を追加することを強くお勧めする安全なパスフレーズの入力を求められます。パスフレーズなしでやりたい場合は、Enterキーを押してください。
最後に、次の出力が得られます
この時点で、秘密鍵と公開鍵の両方があります。それらは .ssh
に保存されています ホームディレクトリのディレクトリ。この場合、パスは/root.ssh
です。
cat /root/.ssh
出力
id_rsa
秘密鍵です
id_rsa_pub
公開鍵です
ステップ2.公開鍵をコピーする
公開鍵をサーバーにコピーするには、ssh-copy-id
を使用します。 コマンド。
構文は
になりますssh-copy-id user@remote-server
この場合、実行します
ssh-copy-id [email protected]
以下のような出力が得られます
id_rsa.pub
公開鍵である鍵がサーバーにコピーされました。
ここで、構文ssh user@server-ip
を使用してログインしようとすると 、パスワードの入力を求められることはありません!
パスワード認証を無効にする
パスワードを入手した場合でも、誰かがサーバーにログインできます。このリスクを排除するには、SSHパスワード認証を無効にする必要があります。
これを実現するために、SSHの構成ファイルを開きます
sudo vim /etc/ssh/sshd_config
PasswordAuthentication
として示されているセクションを検索します 。
行をコメントアウトし、値を noに設定します
保存して終了します。
変更を実装するには、SSHデーモンを再起動します
sudo systemctl restart ssh
これで、新しい端末を起動し、パスワードを使用してログインして、パスワード認証が無効になっているかどうかを確認できます。
最後の言葉
この時点で、SSHパスワードを使用せずに、リモートサーバーで構成されたSSHキーベースの認証を使用してサーバーにアクセスできるはずです。
これでサーバーは完全にセットアップされ、強固なセキュリティ基盤が確立されました。公開鍵を安全に保管してください。詮索好きな目から離れて😀