このチュートリアルでは、Centos 6、7、および 8 で SSH ポートを変更する方法の手順を説明します。
PDFをダウンロード
投稿日: 20 年 9 月 23 日 更新日: 23 年 4 月 6 日 投稿者: Susith Nonis 14 分
この記事で読む内容のリスト:
- 1.SSHとは何ですか?
- 2. CentOS 6 で SSH ポートを変更する方法
- 3. CentOS 7でSSHポートを変更する方法
- 4. CentOS 8 で SSH ポートを変更する方法
- 5。結論
あなたがリモート 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
コマンドが正常に使用できたら、ファイルを保存して閉じます。
システムを再起動して変更を適用する前に、次の項目を更新する必要があることに注意してください。
- SELinuxの設定
- ファイアウォールの設定
- フェイル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 サービスにアクセスします。
前述のコマンドを実行すると、次のような出力が得られます。この出力は、ファイアウォールがポート 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 つの最新バージョンでそれを正確に実行するための段階的な手順が含まれています。