Centos 6、7、8 で SSH ポートを変更する方法。

このチュートリアルでは、Centos 6、7、および 8 で SSH ポートを変更する方法の手順を説明します。

PDFをダウンロード

投稿日: 20 年 9 月 23 日 更新日: 23 年 4 月 6 日 投稿者: Susith Nonis 14 分

チュートリアル

Centos 6、7、8 で SSH ポートを変更する方法。

この記事で読む内容のリスト:

あなたがリモート Linux サーバーまたは VPS の所有者であることを誇りに思っている場合は、インターネット経由でそれにアクセスするには SSH を使用する必要があることをおそらくご存知でしょう。強力で安全なパスワードを設定することが大多数のリモート サーバー ユーザーが行う唯一のサイバー セキュリティ対策ですが、追加のセキュリティ層を常に推奨します。実装することをお勧めする重要なセキュリティ対策の 1 つは、SSH ポートを変更することです。今日は、CentOS でそれを行う方法についての詳細なステップバイステップのチュートリアルを提供します。

SSHとは何ですか?

SSH の完全な形式は Secure Shell デーモンです。これは、堅牢な暗号化を利用して、安全でないネットワークからの安全なチャネルを使用して、Linux システムに対して安全なリモート ログインを実行するために使用されるネットワーク プロトコルです。デフォルトでは、SSH はポート 22 でリッスンするため、セキュリティを強化して自動攻撃のリスクを軽減するには、デフォルトの SSH ポートを変更することをお勧めします。

CentOS 6 で SSH ポートを変更する方法

デフォルトのポート番号は TCP ポート #22 ですが、要件に応じてサーバーのポート番号を設定できます。CentOS 6 でこれを行う方法に関する詳細なチュートリアルは次のとおりです。

ステップ 1: まず、SSH 設定ファイルを開いてポートを変更する必要があります。したがって、ターミナルで次のコマンドを実行します。

/etc/ssh/sshd_config

ステップ 2: 前述のコマンドを実行した後、次のコマンドのいずれかを実行します。 

Port PortNumberHere

または

ListenAddress IPv4Address:Port

ListenAddress IPv6Address:Port

ListenAddress Hostname:Port

デフォルトでポート (SSHD) を指定していない場合は、以前に指定したアドレスとポート オプションで動作します。sshd_config で複数の listen アドレスとオプションを許可することもできます。

ステップ 3:  [ポート] オプションを使用して非標準ポート # 2022 で SSH を実行するには、次のコマンドを使用します。

# vi /etc/ssh/sshd_config

ステップ 4: 次に、編集してポートを 2022 に設定し、ファイルを保存して変更を正常に行います。 

Port 2022

port オプションを使用して非標準ポート #2022 で SSH を実行する場合は、次のように ListenAddress を試してください。

## bind sshd to two IP address on a non-standard port ##

ListenAddress 192.168.1.5:2022

ListenAddress 203.1.2.3:2022

コマンドが正常に使用できたら、ファイルを保存して閉じます。 

システムを再起動して変更を適用する前に、次の項目を更新する必要があることに注意してください。

  1. SELinuxの設定
  2. ファイアウォールの設定
  3. フェイル2バン設定

SELinux 構成を更新する

SELinux を使用している場合は、TCP ポート # 2022 を OpenSSH サーバーのポート コンテキストに追加します。

# semanage port -a -t ssh_port_t -p tcp 2022

ファイアウォール設定を更新する

ステップ 1: ユーザーが TCP # 2022 を使用してログインできるようにファイアウォール設定を更新します。これを行うには、次のコマンドを使用して /etc/sysconfig/iptables を編集し、SSHD ポート 2022 を開きます。

# vi /etc/sysconfig/iptables

ステップ 2: その後、次のように値を編集します。

## delete or comment out port 22 line ##

## -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

## open port 2022

-A INPUT -m state --state NEW -m tcp -p tcp --dport 2022 -j ACCEPT

値を編​​集したら、ファイルを保存して閉じます。

ステップ 3:  IPv6 ユーザーの場合は、/etc/sysconfig/ip6tables ファイルも編集して、次のように入力してファイアウォールを一時的に停止します。

# service iptables stop

# service ip6tables stop

Fail2ban 設定

Fail2ban はすべてのログ ファイルをスキャンし、悪意のあるアクション、パスワードの失敗、SSH ログイン、悪用などのある IP を禁止し、ルールを更新するために使用します。

ステップ 1: 次のコマンドを入力して SSHD サービスを再起動します。 

# service sshd reload

ステップ 2: 次の netstat コマンドを使用して、新しいポート設定を確認します。

# netstat -tulpn | grep sshd

ステップ 3: 次に、次のコマンドを使用して CentOS のファイアウォールを再起動します。

# service iptables start

IPv6の場合:

# service ip6tables start

ステップ 4:  SSH コマンドを使用して、ポート #2022 で SSH サーバーに接続します。

ssh -p PortNumberHere user@server-name-here

ssh -p PortNumberHere user@server-name-here commandNameHere

ssh -p 2022 [email protected]

ssh -p 2022 [email protected] df

scp コマンドを使用してポート # 2022 で SSH サーバーに接続するには、次のように入力します。

scp -P PortNumberHere source user@server-name-here:/path/to/dest

scp -P 2022 resume.pdf XYZ@nas01:/backups/personal/XYZ/files/

sftp コマンドを使用してポート #2022 で SSH サーバーに接続するには、次のように入力します。

sftp -P PortNumberHere user@server-name-here

sftp -P 2022 [email protected]

rsync コマンドを使用してポート #2022 で SSH サーバーに接続するには、次のように入力します。

rsync コマンドで SSH ポート番号を変更します。

sync -av -e 'ssh -p PORT-NUMBER-HERE' source user@server-name

したがって、/home/XYZ をポート番号 2022 のserver1.XYZ.net.in にバックアップするには、次のように入力します。

rsync -av -e 'ssh -p 2022' /home/XYZ/ [email protected]

CentOS 7でSSHポートを変更する方法

このセクションでは、CentOS 7 で SSH ポートを変更する方法についての簡単なガイドを説明します。それは簡単です。ただし、エラーが発生する可能性を排除するには、すべての手順に従う必要があります。 

ステップ 1: まず、/etc/ssh/sshd_config を開いて次のポート 229 を検索し、未使用またはよく知られていないポート (少なくとも >1023) を選択します。 

ステップ 2:  firewallD でポートを開くには、次のコマンドを使用します。 

firewall-cmd --add-port YOUR_PORT_HERE/tcp

SELinux の構成

次のコマンドを入力して、新しいポートで動作するように SELinux を構成します。

semanage port -a -t ssh_port_t -p tcp YOUR_PORT_HERE

Fail2Ban 設定

ステップ 1:  /etc/fail2ban/jail.conf を開き、次のセクションを検索して Fail2Ban を構成します。

[sshd]

# より積極的な sshd フィルター (sshd-ddos failedregex を含む) を使用するには:

#filter = sshd アグレッシブ

port = ssh

logpath = %(sshd_log)s

backend = %(sshd_backend)s

ステップ 2: 次に、次のコマンドを使用して、ポートの値を実際のポートに変更します。この例はポート 7222 を示しています。

[sshd]

# より積極的な sshd フィルター (sshd-ddos failedregex を含む) を使用するには:

#filter = sshd アグレッシブ

port = 7222

logpath = %(sshd_log)s

backend = %(sshd_backend)s

これらのコマンドを実行すると、Fail2Ban は適切なポートを閉じることができなくなります。

ステップ 3: 次のコマンドを入力して、新しい構成をテストします。 

systemctl restart sshd

systemctl restart fail2ban

新しいポートを使用して SSH 経由でサーバーに接続してみることもできます。

ssh USERNAME@YOUR_IP/HOSTNAME -p YOUR_NEW_PORT

前述の手順を正常に完了したら、設定を完了して修正します。つまり、以前のポートではなく新しいポートを使用します。

ステップ 4:  SSH デーモンを設定し、/etc/ssh/sshd_config を開き、その中のポート 22 を削除/コメントアウトします。 

これで、デフォルトのポートであるポート 22 をリッスンしないように SSHD に指示しました。

ステップ 5: ファイアウォール構成を最終決定します。

firewall-cmd --add-port YOUR_PORT_HERE/tcp --permanent

firewall-cmd --reload

ステップ 6: その後、次のコマンドを入力します。

systemctl restart sshd.service

firewall-cmd --remove-service ssh --permanent

firewall-cmd --reload

SSHD の再起動時に次のエラーが発生した場合: 

制御プロセスがエラー コードで終了したため、sshd.service のジョブが失敗しました。詳細については、「systemctl status sshd.service」および「journalctl -xe」を参照してください。

次のコマンドでjournalctl –xeを実行します。

 journalctl –xe

コマンドを実行すると、次のような出力が得られます。 

server1 カーネル: type=1400 Audit(1537086072.510:4): avc: pid=1074 comm="sshd" の { name_bind } が拒否されました src=6378 scontext=system_u:system_r:sshd_t:s0-s0:c0.c1023 tcontext=system_u: object_r:unres

server1 sshd[1074]: エラー: 0.0.0.0 のポート 6378 へのバインドに失敗しました: アクセス許可が拒否されました。

server1 sshd[1074]: エラー: ポート 6378 へのバインド:: 失敗: アクセス許可が拒否されました。

server1 カーネル: type=1400 Audit(1537086072.515:5): avc: pid=1074 comm="sshd" の { name_bind } が拒否されました src=6378 scontext=system_u:system_r:sshd_t:s0-s0:c0.c1023 tcontext=system_u: object_r:unres

server1 sshd[1074]: 致命的: どのアドレスもバインドできません。

server1 systemd[1]: sshd.service: メインプロセスが終了しました、コード = 終了しました、ステータス = 255/n/a

server1 systemd[1]: OpenSSH サーバーデーモンの起動に失敗しました。

ステップ 6: システムに変更を設定するには、次のコマンドを実行する必要があります。 

semanage port -a -t ssh_port_t -p tcp 3456

ステップ 7: これで、SELinux が SSHD に 2 つのポートでのリッスンを許可していることを確認できます。

semanage port -l | grep ssh

ssh_port_t  tcp     3456, 22

ステップ 8: 次に、次のコマンドを入力します。 

yum whatprovides semanage

出力は次のようになります。

Policycoreutils-python-2.5-22.el7.x86_64 : SELinux ポリシー コア Python ユーティリティ

リポジトリ: ベース

以下から一致しました:

ファイル名 : /usr/sbin/semanage

ステップ 9: 次に、policycoreutils をインストールします。

yum install -y policycoreutils-python

ステップ 10: 最後に、次のコマンドを使用して、新しい SSH ポートを介してサーバーにログインできることを確認します。

ssh -p 3456 root@server1

CentOS 8 で SSH ポートを変更する方法

ステップ 1: まず、systemctl コマンドを使用して CentOS 8 の SSH サービスのステータスを確認する必要があります。

systemctl status sshd.service

前述のコマンドを実行すると、次のようなメッセージが表示されます。 

sshd.service - OpenSSHサーバーデーモン

   ロード済み: ロード済み (/usr/lib/systemd/system/sshd.service; 有効; ベンダープリセット: 有効)

   アクティブ: 2020-08-08 土 17:59:18 PKT 以降アクティブ (実行中)。2秒前

     ドキュメント: man:sshd(8)

          男:sshd_config(5)

 メイン PID: 1564 (sshd)

     タスク: 1 (制限: 5916)

   メモリ: 1.2M

   CGroup: /system.slice/sshd.service

          â1564 /usr/sbin/sshd -D [email protected],[email protected],aes256-ctr,aes256-cbc,> 

8月08日 17:59:18 centos-8.centlinux.com systemd[1]: OpenSSHサーバーデーモンを開始しています...

8 月 08 日 17:59:18 centos-8.centlinux.com sshd[1564]: サーバーは 0.0.0.0 ポート 22 でリッスンしています。

8 月 08 日 17:59:18 centos-8.centlinux.com sshd[1564]: サーバーは :: ポート 22 をリッスンしています。

8月08日 17:59:18 centos-8.centlinux.com systemd[1]: OpenSSHサーバーデーモンを開始しました。

/etc/ssh/sshd_config ファイルを調整して、要件に応じて SSH サービスをカスタマイズできます。このファイルには Port ディレクティブがなく、SSH サービスはデフォルトの ssh ポート番号 22 を使用します。

ステップ 2:  echo コマンドを使用して、sshd_config ファイルに Port ディレクティブを追加します。

echo "Port 50" >> /etc/ssh/sshd_config

ステップ 3:  SELinux 構成では、デフォルト以外のポートでサービスを実行することはできません。SSH がポート 50/tcp を使用できるように SElinux を構成します。

ステップ 4:  semanage コマンドを使用して、ポート 50/tcp を ssh_port_t と入力して追加します。

semanage port -a -t ssh_port_t -p tcp 50

ファイアウォールの設定 

ステップ 1: 次に、ファイアウォールで許可されたポートまたはサービスをリストする必要があります。

firewall-cmd --list-all

上記のコマンドを実行すると、次のように表示されます。 

パブリック(アクティブ)

  ターゲット: デフォルト

  icmp-ブロック反転: いいえ

  インターフェイス:ens33

  情報源:

  サービス: コックピット dhcpv6-client ssh

  ポート:

  プロトコル:

  マスカレード:いいえ

  フォワードポート:

  送信元ポート:

  icmp ブロック:

  豊富なルール:

systemctl firewalld 上記で実行したコマンドの代わりに次のコマンドを入力することもできます 。

ステップ 2: 次に、この SSH サービスをブロックし、ファイアウォールで新しい SSH ポートを許可します。

firewall-cmd --permanent --remove-service=ssh

成功

firewall-cmd --permanent --add-port=50/tcp

成功

firewall-cmd --reload

成功

ステップ 3: その後、次のコマンドを入力してサービスを再起動します。

systemctl restart sshd

ステップ 4: 次のように入力して、SSH サービスのステータスを確認する必要もあります。

systemctl status sshd.service

コマンドを実行すると、次のようなメッセージが表示されます。 

sshd.service - OpenSSHサーバーデーモン

   ロード済み: ロード済み (/usr/lib/systemd/system/sshd.service; 有効; ベンダープリセット: 有効)

   アクティブ: 2020-08-08 土 18:13:37 PKT 以降アクティブ (実行中)。14秒前

     ドキュメント: man:sshd(8)

          男:sshd_config(5)

 メイン PID: 10376 (sshd)

     タスク: 1 (制限: 5916)

   メモリ: 1.2M

   CGroup: /system.slice/sshd.service

          â10376 /usr/sbin/sshd -D [email protected],[email protected],aes256-ctr,aes256-cbc>

8 月 8 日 18:13:37 centos-8.centlinux.com systemd[1]: OpenSSH サーバー デーモンを停止しました。

8 月 8 日 18:13:37 centos-8.centlinux.com systemd[1]: OpenSSH サーバー デーモンを開始しています...

8 月 8 日 18:13:37 centos-8.centlinux.com sshd[10376]: サーバーは 0.0.0.0 ポート 50 で待機しています。

8 月 08 日 18:13:37 centos-8.centlinux.com sshd[10376]: サーバーは :: ポート 50 をリッスンしています。

8月08日 18:13:37 centos-8.centlinux.com systemd[1]: OpenSSHサーバーデーモンを開始しました。

ステップ 5: 次に、次のコマンドを入力して、デフォルトの ssh ポートから ssh および sftp コマンドを使用して SSH サービスにアクセスします。

ssh [email protected]

前述のコマンドを実行すると、次のような出力が得られます。この出力は、ファイアウォールがポート 22 を通過するトラフィックを許可していないことを示しています。

ssh: ホスト centos-8.centlinux.com ポート 22 に接続: 接続が拒否されました

sftp [email protected]

ssh: ホスト centos-8.centlinux.com ポート 22 に接続: 接続が拒否されました

接続が閉じられました

接続が閉じられました

ステップ 6: これで、ssh コマンドを使用して SSH サービスにアクセスできるようになります。

ssh [email protected] -p 50

出力:

ホスト「[centos-8.centlinux.com]:50 ([192.168.116.206]:50)」の信頼性を確立できません。

ECDSA キーのフィンガープリントは SHA256:skGj4xg0w+jIQtrfF8AOdfItgcXUQQu+bWUFfvws1Hk です。

接続を続行してもよろしいですか (はい/いいえ/[指紋])? はい

警告: '[centos-8.centlinux.com]:50,[192.168.116.206]:50' (ECDSA) が既知のホストのリストに永続的に追加されました。

[email protected] のパスワード:

最終ログイン: 2020 年 8 月 8 日(土) 17:59:01

[root@centos-8 ~]#

同様に、sftp に対して次のコマンドを実行します。

sftp -P 50 [email protected]

[email protected] のパスワード:

[email protected] に接続されています。

SFTP>

結論

おめでとうございます。最後までやり遂げました。独自の SSD ベースの CentOS VPSをセットアップしたい場合は、Monovm を使用して簡単にセットアップできます。前述したように、サーバーの SSH ポートを変更すると、システムのセキュリティが強化されるため、変更することをお勧めします。CentOS の 3 つの最新バージョンでそれを正確に実行するための段階的な手順が含まれています。

おすすめ

転載: blog.csdn.net/allway2/article/details/133033843