Centos 7.4 でリモート アクセス制御を実装する方法

Centos 7.4 でリモート アクセス制御を実装する方法

1. SSHリモート管理

SSH はセキュア チャネル プロトコルであり、主にリモート ログイン、リモート コピー、およびキャラクタ インターフェイスのその他の機能を実装するために使用されます。 SSH プロトコルは、ユーザーがログインするときに入力したユーザー パスワードを含む、通信する 2 つの当事者間で送信されるデータを暗号化します。 Telent、RSH、RCP などの以前のアプリケーションと比較すると、SSH プロトコルはより優れたセキュリティを提供します。

1. OpenSSHサーバーを設定する

Centos 7.4 システムでは、OpenSSH サーバーは openssh や openssh-server (デフォルトでインストール) などのソフトウェア パッケージによって提供され、sshd が標準のシステム サービスとして追加されています。 「systemctl start sshd」コマンドを実行して、sshd サービスを開始します。root を含むほとんどのユーザーは、システムにリモートでログインできます。 sshd サービスの設定ファイルは、デフォルトでは /etc/ssh/sshd_config ディレクトリにあります。関連する設定項目を適切に調整すると、sshd リモート ログインのセキュリティをさらに向上できます。

1) サービス監視オプション

sshd サービスが使用するデフォルトのポート番号は 22 です。必要に応じて、このポート番号を変更し、リスニング サービスの特定の IP アドレスを指定して、ネットワーク内での隠蔽性を高めることをお勧めします。バージョン V2 はバージョン V1 よりも安全です。DNS 逆解決を無効にすると、サーバーの応答速度が向上します。

[root@centos01 ~]# vim /etc/ssh/sshd_config <!--sshdのメイン設定ファイルを編集します-->
17 ポート 22 <!-- リスニング ポートは 22 です -->
19 ListenAddress 192.168.100.10 <!-- リスニング アドレスは 192.168.100.10 です -->
21 プロトコル 2 <!--SSH V2 プロトコルを使用する-->
118 UseDNS no <!--DNS 逆引き解決を無効にする-->
...... <!--ここでは一部内容を省略しています-->
[root@centos01 ~]# systemctl restart sshd <!--sshd サービスを再起動します-->

2) ユーザーログイン制御

sshd サービスでは、デフォルトで root ユーザーがログインできますが、インターネット経由で使用すると非常に危険です。 sshd サービスのユーザー ログイン制御に関しては、通常、root ユーザーまたはパスワードが空のユーザーのログインは禁止される必要があります。また、ログイン認証時間(デフォルトは2分)と最大再試行回数を制限することができます。制限を超えてもログインできない場合は、接続が切断されます。

[root@centos01 ~]# vim /etc/ssh/sshd_config <!--sshdのメイン設定ファイルを編集します-->
 37 LoginGraceTime 2m <!--ログイン認証時間は2分です-->
 38 PermitRootLogin yes <!--root ユーザーのログインを禁止します-->
 40 MaxAuthTries 6 <!--再試行の最大回数は 6 回です-->
 67 PermitEmptyPasswords no <!--空のパスワードを持つユーザーのログインを禁止します-->
 ...... <!--ここでは一部内容を省略しています-->
[root@centos01 ~]# systemctl restart sshd <!--sshd サービスを再起動します-->

2. ログイン認証方法

サーバーのリモート管理では、ユーザー アカウントのセキュリティ制御に加えて、ログインの検証方法も非常に重要です。 sshd サービスは、パスワード認証とキーペア認証の 2 つの認証方法をサポートしています。どちらか一方だけを使用するように設定することも、両方を有効にするように設定することもできます。

パスワード検証: サーバーのローカル システム ユーザーのログイン名とパスワードを確認します。この方法は最も使いやすいですが、クライアント側から見ると接続先のサーバーが偽装されている可能性があり、サーバー側から見るとパスワードを使い果たしている第三者に遭遇した場合の防御力が比較的弱くなります。

キーペアの検証: 検証に合格するには、一致するキー情報が必要です。通常、最初にクライアント上にキー ファイルのペア (公開キーと秘密キー) が作成され、次に公開キー ファイルがサーバー上の指定された場所に配置されます。リモートでログインする場合、システムは暗号化/復号化の関連付けの検証に公開キーと秘密キーを使用するため、リモート管理のセキュリティが大幅に強化されます。この方法は簡単には偽装できず、対話型ログインなしでログインできます。シェルで広く使用されています。

パスワード認証とキーペア認証の両方が有効になっている場合、サーバーはキーペア認証を優先します。セキュリティ要件が高いサーバーの場合は、パスワード認証方式を無効にし、キーペア認証方式のみを有効にすることをお勧めします。特別な要件がない場合は、両方の方式を有効にできます。

[root@centos01 ~]# vim /etc/ssh/sshd_config <!--sshdのメイン設定ファイルを編集します-->
 43 PubkeyAuthentication yes <!--キーペア認証を有効にする-->
 47 AuthorizedKeysFile .ssh/authorized_keys <!--公開鍵ライブラリファイルを指定します-->
 66 PasswordAuthentication yes <!--パスワード認証を有効にする-->
...... <!--ここでは一部内容を省略しています-->
[root@centos01 ~]# systemctl restart sshd <!--sshd サービスを再起動します-->

公開鍵ファイルは、複数のクライアントによってアップロードされた公開鍵テキストを保存し、クライアントのローカル秘密鍵ファイルと一致させるために使用されます。

2. SSHクライアントプログラムの使用

Centos 7.4 システムでは、OpenSSH クライアントは openssh-clients パッケージ (デフォルトでインストール) によって提供され、ssh リモート ログイン コマンドのほか、scp、sftp リモート コピー、ファイル転送コマンドも含まれています。

1. コマンドプログラム ssh リモートログイン

ssh コマンドを使用すると、sshd サービスにリモートでログインして、ユーザーにサーバーの管理と保守を行うための安全なシェル環境を提供できます。使用する場合、ログインユーザーとターゲットホストアドレスをパラメータとして指定する必要があります。次に例を示します。

[root@centos02 ~]# ssh [email protected]
[email protected]のパスワード: 
最終ログイン: 2019年11月11日月曜日 19:02:50 192.168.100.254から
[root@centos01 ~]# 
[root@centos01 ~]# 
[root@centos01 ~]# ssh [email protected]
ホスト '192.168.100.10 (192.168.100.10)' の信頼性を確立できません。
ECDSA キーのフィンガープリントは SHA256:PUueT9fU9QbsyNB5NC5hbSXzaWxxQavBxXmfoknXl4I です。
ECDSA キーのフィンガープリントは MD5:6d:f7:95:0e:51:1a:d8:9e:7b:b6:3f:58:51:51:4b:3b です。
本当に接続を続行しますか (はい/いいえ)? はい <!--キーを受け入れます-->
警告: '192.168.100.10' (ECDSA) が既知のホストのリストに永続的に追加されました。
[email protected] のパスワード: <!-- パスワードを入力 -->
最終ログイン: 2019年11月11日月曜日 19:03:08 192.168.100.20から
[root@centos01 ~]# who <!--現在のユーザーを確認します-->
ルート pts/1 2019-11-11 19:03 (192.168.100.20)
ルートpts/2 2019-11-11 19:04 (192.168.100.10)

sshd サーバーがデフォルト以外のポート (2222 など) を使用する場合は、ログイン時に "-p" オプションを使用してポート番号を指定する必要があります。次に例を示します。

[root@centos01 ~]# vim /etc/ssh/sshd_config<!--sshのメイン設定ファイルを変更します-->
ポート 2222 <!-- リスニング ポート番号を 2222 に変更します -->
[root@centos01 ~]# systemctl restart sshd <!--sshd サービスを再起動します-->
[root@centos02 ~]# ssh -p 2222 [email protected] <!--クライアントログインssh-->
[email protected] のパスワード: <!-- パスワードを入力 -->
最終ログイン: 2019年11月11日月曜日 19:20:28 192.168.100.10から
[root@centos01 ~]# <!--ログイン成功-->

2. SCPリモートコピー

scp コマンドは、SSH セキュア接続を使用してリモート ホスト間でファイルをコピーするために使用できます。scp コマンドを使用する場合は、コピー元とコピー先の指定に加えて、コピー先ホストのアドレスとログイン ユーザーも指定する必要があります。実行後、プロンプトに従って確認パスワードを入力します。次に例を示します。

[root@centos02 ~]# scp
ルート@192.168.100.10:/etc/ssh/sshd_config ./ 
     <!-- リモート ホストのデータをローカル データにコピーし、現在の場所に保存します -->
[email protected] のパスワード: <!-- パスワードを入力 -->
sshd_config 100% 3910 3.6MB/秒 00:00  
[root@centos02 ~]# scp -r ./sshd_config
ルート@192.168.100.10:/opt   
     <!-- リモート ホスト ディレクトリにローカル データをアップロードします -->
[email protected] のパスワード: <!-- パスワードを入力 -->
sshd_config 100% 3910 1.2MB/秒 00:00  

3. sftpはFTPをインストールします

sftp コマンドを使用すると、SSH セキュア接続を使用してリモート ホストにファイルをアップロードおよびダウンロードできます。FTP に似たログイン プロセスと対話型環境を使用するため、ディレクトリ リソースの管理が容易になります。次に例を示します。

[root@centos01 ~]# cd /opt/ <!--opt ディレクトリに入る-->
[root@centos01 opt]# sftp [email protected] <!--sftpにログイン-->
[email protected] のパスワード: <!-- パスワードを入力 -->
192.168.100.20 に接続しました。
sftp> pwd <!-- クライアントが sftp にログインする場所を表示します。デフォルトの場所はホスト ディレクトリです -->
リモート作業ディレクトリ: /root
sftp> put sshd_config <!--リモートホストにデータをアップロード-->
sshd_config を /root/sshd_config にアップロードしています
sshd_config 100% 3910 6.4MB/秒 00:00  
sftp> get sshd_config <!-- データをローカルにダウンロード -->
/root/sshd_config を sshd_config に取得しています
/root/sshd_config 100% 3910 3.6MB/秒 00:00  
sftp> exit <!--ログアウト-->

3. キーペア検証SSHシステムの構築

キーペア認証により、リモート ログインのセキュリティを強化できます。 Linux サーバーおよびクライアントで SSH システムを認証するためのキー ペアを構築する基本的なプロセス。下の図に示すように、プロセス全体には 4 つのステップがあります。まず、SSH クライアントでユーザー zhangsan としてキー ペアを作成し、作成した公開鍵ファイルを SSH サーバーにアップロードする必要があります。次に、公開鍵情報をサーバー上のターゲット ユーザー lisi の公開鍵データベースにインポートする必要があります。最後に、サーバー上でユーザー lisi としてログインして検証します。

1. クライアントでキーペアを作成する

クライアントで、ssh-keygen ツールを使用して、現在のユーザーのキー ペア ファイルを作成します。使用可能な暗号化アルゴリズムは ECDSA または DSA です (アルゴリズムの種類を指定するには、ssh-keygen コマンドの "-t" オプションを使用します)。次に例を示します。

[root@centos02 ~]# ssh-keygen -t dsa <!--キーペアを作成-->
公開/秘密 DSA キー ペアを生成しています。
キーを保存するファイル (/root/.ssh/id_dsa) を入力してください: <!-- 秘密キーの場所を指定します -->
ディレクトリ '/root/.ssh' を作成しました。
パスフレーズを入力してください (パスフレーズがない場合は空白): <!-- 秘密キーフレーズを設定 -->
同じパスフレーズをもう一度入力してください: <!-- 設定したフレーズを確認してください -->
あなたの識別情報は /root/.ssh/id_dsa に保存されました。
公開鍵は /root/.ssh/id_dsa.pub に保存されました。
キーのフィンガープリントは次のとおりです。
SHA256:zv0EdqIuOfwSovN2Dkij08y9wZ0f1+IyhY7LFNKKzkk ルート@centos02
キーのランダムアート画像は次のとおりです。
+---[DSA 1024]----+
| |
| |
| |
| . |
| o . o S.+ . |
| * *.+.=.+.= |
|o E.*o+==.+ o |
| =o..*Oo++ + |
| ++oo++o. . |
+----[SHA256]-----+
[root@centos02 ~]# ls -lh ~/.ssh/id_dsa* <!--生成されたキーファイルを確認します-->
-rw------ 1 ルート ルート 668 11月12日 16:11 /root/.ssh/id_dsa
-rw-r--r-- 1 ルート ルート 603 11月12日 16:11 /root/.ssh/id_dsa.pub

新しく生成されたキー ペア ファイルでは、id_das は秘密キー ファイルであり、デフォルトの権限は 600 です。秘密キー ファイルは適切に保管する必要があり、他者に公開することはできません。id_dsa.pub は、ssh サーバーに提供するために使用される公開キー ファイルです。

2. 公開鍵ファイルをサーバーにアップロードする

前の手順で生成された公開鍵ファイルをサーバーにアップロードし、サーバー側ユーザーの公開鍵データベースに展開します。公開鍵ファイルをアップロードするときは、SCP、FTP、HTTP などの任意の方法を選択したり、電子メールで送信したりすることもできます。

root@centos02 ~]# ssh-copy-id -i ./.ssh/id_dsa.pub 
[email protected] <!--公開鍵ファイルをサーバーにアップロードし、公開鍵テキストをインポートします-->
/usr/bin/ssh-copy-id: INFO: インストールされるキーのソース: "./.ssh/id_dsa.pub"
ホスト '192.168.100.10 (192.168.100.10)' の信頼性を確立できません。
ECDSA キーのフィンガープリントは SHA256:PUueT9fU9QbsyNB5NC5hbSXzaWxxQavBxXmfoknXl4I です。
ECDSA キーのフィンガープリントは MD5:6d:f7:95:0e:51:1a:d8:9e:7b:b6:3f:58:51:51:4b:3b です。
接続を続行しますか (はい/いいえ)? はい <!--はいを入力-->
/usr/bin/ssh-copy-id: INFO: すでにインストールされているキーを除外するために、新しいキーでログインしようとしています
/usr/bin/ssh-copy-id: INFO: インストールするキーが 1 つ残っています -- ここでプロンプトが表示された場合は、新しいキーをインストールしてください
[email protected] のパスワード: <!-- パスワードを入力 -->

追加されたキーの数: 1

ここで、「ssh '[email protected]'」を使用してマシンにログインしてみます。
必要なキーだけが追加されたことを確認します。

3. クライアントでキーペア認証を使用する

秘密鍵ファイル (クライアント) と公開鍵ファイル (サーバー) がデプロイされると、クライアントでテストできます。まず、クライアント上の現在のユーザーが root であることを確認してから、ssh コマンドを使用してサーバー ユーザー root としてリモートでログインします。キー ペア認証方法が正常に構成されている場合、クライアントは秘密キー フレーズの入力を求められます。これにより、秘密キー ファイルが呼び出され、照合できるようになります (秘密キー フレーズが設定されていない場合は、ターゲット サーバーに直接ログインします)。

[root@centos02 ~]# ssh [email protected] <!--sshサーバーにログイン-->
最終ログイン: 2019年11月12日火曜日 16:03:56 192.168.100.254から
[root@centos01 ~]# who <!--サーバーに正常にログインし、どのユーザーがいるかを確認します-->
ルート pts/0 2019-11-12 17:35 (192.168.100.20)
ルートpts/2 2019-11-12 16:03 (192.168.100.254)

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • CentOS に MySQL をインストールしてリモート アクセスを設定する方法
  • CentOS で MySQL をインストールし、MySQL へのリモート アクセスを有効にする方法

<<:  MySQLデータベースのスケジュールバックアップを実装する方法

>>:  JavaScript で外部変数にアクセスするサブ関数の 3 つのソリューション

推薦する

CentOS 7.3 で Nginx 仮想ホストを設定する方法

実験環境最小限にインストールされた CentOS 7.3 仮想マシン基本環境を構成する1. ngin...

Linux サーバーの状態を監視する方法

私たち、特に Linux エンジニアは毎日 Linux サーバーを扱っています。サーバーのセキュリテ...

imgタグ間のスペースの問題の詳細な説明

IMG タグの基本分析 HTML5 では、img タグには 4 つの要素があります。 (1) src...

CentOS7 は rpm を使用して MySQL 5.7 をインストールするチュートリアル図

1. 4つのrpmパッケージをダウンロードする mysql-コミュニティクライアント-5.7.26-...

mysql 起動時の ERROR 2003 (HY000) の問題を解決する方法

1. 問題の説明MYSQL を起動すると、図に示すように、「ERROR 2003 (HY000): ...

Vue3.0はドロップダウンメニューのカプセル化を実装します

Vue3.0 がリリースされてからしばらく経ちましたが、勉強を始める必要があります。まず、達成したい...

Webデザインチュートリアル(6):デザインへの情熱を持ち続ける

<br />前の記事:Webデザインチュートリアル(5):Webビジュアルデザイン。 1...

Dockerコンテナのホスト間マルチネットワークセグメント通信ソリューションの詳細説明

1. マックヴラン前回のブログ投稿で紹介した Docker コンテナのホスト間通信を実現するための ...

CentOS 7.x に ZSH ターミナルをインストールする方法

1. 基本コンポーネントをインストールするまず、 yumコマンドを実行して、コードpullために必要...

音楽プレーヤーアプリ(アプリケーションソフトウェア)の分析と再設計 美しい音楽プレーヤーインターフェースの設計方法

無線インタラクションにずっと興味があったので、今回は実践してみようと思います〜この分析と評価は iO...

Reactの3つの主要属性における状態の使用の詳細な説明

目次クラスコンポーネント機能コンポーネントsetStateの落とし穴React では多くの場所でデー...

MySQL複合インデックスの概要

目次1. 背景2. 複合インデックスを理解する3. 左端一致原則4. フィールド順序の影響5. 単一...

MySQLクエリ構文の概要

序文:この記事では主に、MySQL の where、group by、order by、limit、...

美しい FLASH ウェブサイト デザイン例 50 選

Flashにより、デザイナーや開発者はブラウザ上でリッチなコンテンツを提供し、動き、インタラクティブ...

Dockerリポジトリの一般的なコマンドの詳細な説明

ログイン dockerログインdocker login コマンドを実行し、ユーザー名、パスワード、メ...