タグ: OpenSSH

22番ポート狙いのボットを完全遮断する、SSHポート変更(36878番)手順書

ようやく、セキュリティでの効果的な一歩である「SSHポート変更」を行いましたので、そのメモです。

例によって前置きは長いです。

変えようとしたきっかけ:怪しいログ

かなり怪しいログを見つけたというのがきっかけ。

不審に思ったログ

198.51.100.120 - - [09/Jun/2026:08:10:12 +0900] "GET /projects/zettel/knowledgebase/categories?tag=Linux%2CAnsible%2Cnginx HTTP/1.1" 200 41768 "https://example.com" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.0.0 Safari/537.36"
203.0.113.185 - - [09/Jun/2026:08:10:15 +0900] "GET /projects/zettel/knowledgebase/categories?tag=cron%E8%A8%AD%E5%AE%9A%2CUbuntu HTTP/1.1" 200 41212 "https://example.com" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.0.0 Safari/537.36"

なぜこれが怪しいと思ったのかを述べる前に、普通のログを示します。

通常のアクセスログ

203.0.113.50 - - [09/Jun/2026:08:05:43 +0900] "GET /issues/96 HTTP/1.1" 200 50538 "https://example.com/" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Mobile Safari/537.36"
203.0.113.50 - - [09/Jun/2026:08:05:44 +0900] "GET /plugin_assets/theme/style.css?1754 HTTP/1.1" 200 22610 "https://example.com/issues/96" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Mobile Safari/537.36"
203.0.113.50 - - [09/Jun/2026:08:05:44 +0900] "GET /images/logo.png HTTP/1.1" 200 18871 "https://example.com/issues/96" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Mobile Safari/537.36"
  • 普通のアクセスログ:
    • HTML(1行目)を読み込んだ直後の1秒以内に、ページに必要なCSSやロゴ画像(2〜3行目)を自動で一斉にロードしています。
  • 美しいリファラ・チェーン:
    • 2行目以降の画像などのリファラ(リンク元)に、直前に開いたページログにあります。

それに対して、怪しいログは以下の通りです。

  • 数秒ごとに「IPアドレスが変わる」: 1行目は 198.51.100.120、その3秒後の2行目は 203.0.113.185 です。
    • プロキシのプールから「一般人のIP」を次々に切り替えながらリクエストを送っているため、多くのWAFが取り入れているIP制限をすり抜けてきます。
  • アセットの完全無視:
    • HTML(カテゴリページ)だけにアクセスし、付随する画像やCSS、JavaScriptなどは1文字もダウンロードしません(プログラムにとって不要だからです)。
  • リファラ(リンク元)の不自然さ:
    • どちらのリファラもトップページになっています。何もないトップ画面から、いきなり長大な検索クエリ(?tag=…)へ直接ジャンプする人間はいません。ヘッダーを「それっぽく偽装」した結果、逆にガタ(不自然さ)が出ています。

そして、問題は、この怪しいアクセスログはAbusedIPDB(筆者解説記事) でも普通の一般のISPしか出てきません。

この理由を調べたところ、Residential Proxyの存在が浮かび上がりました。

Residential Proxy(住宅用プロキシ)とは?

一言で言うと、「一般家庭のインターネット回線(光回線やスマホのキャリア回線など)のIPアドレスを借りて、そこを経由してWebにアクセスする仕組み」です。

通常、ハッカーやスクレイピング(自動データ収集)ボットは、データセンター(AWSやGCP、あるいは筆者が用いているようなVPSなど)のIPアドレスから攻撃を仕掛けます。しかし、データセンターのIPは「ボットっぽい」として一発でブロックされやすいという弱点があります。(事実、筆者もこれを利用してブロックしています)

そこで、「一般家庭のPCやスマホ、ルーターなどを踏み台にすれば、普通の人が家からアクセスしているように偽装できるのでは?」という発想で生まれたのがResidential Proxyです。

なぜ一般人の回線が使われてしまうのか?

一般家庭の回線をが利用されるのか。主に以下の2つのパターンがあります。

合法的な報酬・同意(ユーザーが知ってて提供)

「このアプリを入れると、あなたの余った帯域(通信量)をお金やギフト券に換えます」というお小遣い稼ぎアプリ(Pawn.streamやHoneygainなど)を一般人が自らインストールしているケース。

マルウェアや不適切なアプリ(ユーザーが知らずに加担)

無料のVPNアプリや、海賊版ソフト、スマート家電の脆弱性を突くマルウェアなどに「プロキシの中継プログラム」が仕込まれており、本人が気づかないうちに「攻撃の踏み台(中継サーバー)」に仕立て上げられているケース。

私は過日、ASNとは何か?インターネットの“住所録”を支える番号と「盗人宿」の把握

という記事で、

なぜなら、多くの攻撃者は海外の規制が緩いプロバイダ/組織を隠れ蓑にしています。

という見解を述べました。Residential Proxyはこれの超・拡大解釈版です。

どうやって対策していくか? SSHのアクセスポートの変更

規制が緩いVPSはその大本のアクセス元を断ってしまえば対策は可能。しかし、一般人向けのISPとなると話は違います。

  • IPアドレスが極めて多く
  • そのISPからのアクセスを断ってしまうと他の善良なアクセス者が利用できない

という、利用者を人質に取った隠れ蓑です。(尤も、筆者は不正アクセスがあった瞬間、そのIPは二度目のアクセスをさせないのですが)

なので、手っ取り早く「SSHのアクセスポート(22番)」の変更から始めることになりました。

いくらFail2banにより不審なアクセスを弾き、鍵交換形式でセキュリティは担保されると言ったところで:

「攻撃者のアクセス元が数千倍に膨れ上がってきた」のでは話は別です。

Linuxのデフォルトである「22番ポート」を開放し続けることは、要塞の本丸の門の前に、毎日数百万人のゾンビ(ボット)が群がってドアノブをガチャガチャ回し続けているのと同じ状態です。

これがサーバーに与える実害は、単に「ハッキングのリスク」だけではありません。物理的なリソース(パフォーマンス)を極悪なまでに食いつぶします。

  • 暗号計算によるCPUの無駄遣い
    • SSHの接続要求が来ると、OSは律儀に重たい暗号処理や鍵の検証、認証チェックを走らせます。ボットが何重にも同時アタックしてくるだけで、CPU・メモリ・ディスクI/Oを継続的に消費します。
  • メモリの圧迫 SSHは接続が来るたびに、個別の sshd 子プロセスをメモリ上に生成します。
    • ボットの同時訪問により、メモリ空間がジワジワと侵食されていきます。
  • ストレージ(I/O)のボトルネック化 ボットが認証に失敗するたび、システムは「認証失敗(Failed password…)」のログをディスクに猛烈な勢いで書き込み続けます。
    • この連続的な書き込み処理(ディスクI/O)のせいで、本来のWebサーバーのためのディスクの読み書き速度が奪われます。
  • セキュリティを高める
  • パフォーマンスを上げる

の一挙両得を狙っていきます。

作業の前の注意点:

  • これはSSHのポートを変更する作業です。
  • そして、SSHのサービスを再起動します。

つまり、心臓に悪い作業です。下手したら自分自身がアクセスできなくなる事態も十分発生します。

  • 実サーバの場合は実機で作業する
  • VPSの場合はシリアルコンソールで接続する

が必須です。この環境が用意できない方はここから先は作業をしないでください。

※筆者が上手くいったという手順です。参考にする方は必ず裏取りを取ってください※

環境

  • XServer VPSを利用
  • Ubuntu 24.04
  • UFW導入済み
  • Fail2ban導入済み

サクッとはしているけど心臓に悪い手順

  1. UFWが開放するポートを別に変えます。(ここでは22→36878)
  2. XServer側のパケットフィルターを変更します。
  3. Fail2banの設定を変更します。
  4. SSHの待ち受けを変更します。
  5. systemd SSHソケットアクティベーションの書き換えを行います。
  6. 設定を反映して別ポートに変更します。
  7. サーバそのものを再起動して再確認を行います。

Step 0. 推奨:ディスクイメージのバックアップ

何かあったときのために、ディスクそのもののバックアップ(スナップショット)を取っておくことを強く推奨します。

Step 1. OS内ファイアウォール(UFW)の解放

※ここからは実機/シリアルコンソールで作業を行います※
※平行して自分の端末とSSHセッションを張っておきます※

まずはOSの内部で、新ポート(36878)を通すようにルールを追加しました。

他のポートとバッティングしないものを選んでください。

  • 36878番ポート(TCP)へのアクセスを許可
sudo ufw allow 36878/tcp comment 'SSH新ポート'
  • 古い22番ポートの許可ルールを削除
sudo ufw delete allow 22/tcp
  • 設定を反映
sudo ufw reload
  • 設定反映確認
sudo ufw verbose

22/tcpが消えていることと、以下のようなメッセージがあることを確認します。

36878/tcp                  ALLOW       Anywhere SSH新ポート

自端末から新しいSSHセッションを立ち上げ、端末とSSH通信ができないことを確認します。

この段階では既存SSHセッションを絶対に閉じないでください

Step 2. インフラ(XServer)側パケットフィルターの変更

OSにボットのパケットが届く前に、XServerのインフラレベルで遮断するための設定です。

  1. XServer VPSパネル > パケットフィルター設定 を開く。
  2. [ +パケットフィルター設定を追加する ] をクリック。
  3. 以下の内容で追加:
  • フィルター: 手動で設定
  • プロトコル: TCP
  • ポート番号: 単一ポート / 36878
  • 許可する送信元IPアドレス: 全て許可
  • メモ: SSHのポート変更 等を付与。
  1. [ 追加する ] を押して確定。
  2. 既存のルール一覧から、古い SSH TCP 22 の横にある [ 削除 ] ボタンを押し、不要なポートを完全に塞ぐ。

Step 3. Fail2ban(検知ツール)の設定変更

ポートが変わっても、Fail2banが正しく不正アクセスを監視・検知できるように設定を追従させました。

  • バックアップ取得
sudo cp /etc/fail2ban/jail.local /path/to/backup/directory/jail.local.$(date +%Y%m%d)

→ 自分の環境に合わせます。

  • バックアップ取得確認
diff -u /path/to/backup/directory/jail.local.$(date +%Y%m%d) /etc/fail2ban/jail.local 

→ エラーがないことを確認します。

  • /etc/fail2ban/jail.local を編集し、[sshd] セクションのポートを書き換え:
[sshd]
enabled=true
filter=sshd
mode=normal
#port=22                     
#Port変更 
port=36878                   
protocol=tcp
  • 編集後確認
diff -u /path/to/backup/directory/jail.local.$(date +%Y%m%d) /etc/fail2ban/jail.local 
- port=22                     
+ #port=22                     
+ #Port変更 
+ port=36878     

Step4. SSHコンフィグの変更

  • バックアップ
sudo cp -pi /etc/ssh/sshd_config /path/to/backup/sshd_config.$(date +%Y%m%d)
  • バックアップ取得確認
diff -u /path/to/backup/sshd_config.$(date +%Y%m%d) /etc/ssh/sshd_config 

→ エラーがないことを確認します。

  • ファイル編集(筆者例)
#Port 22
Port 36878

編集後に保存。

  • 差分確認
diff -u /path/to/backup/sshd_config.$(date +%Y%m%d) /etc/ssh/sshd_config 
- Port 22
+ #Port 22
+ Port 36878

Step 5. systemd SSHソケットアクティベーションの書き換え

筆者が一番詰まったところです。

これをやらなかったためにSSH接続できませんでした。

Ubuntuには1/init が22番ポートを掴んでしまう仕様があります。

それを回避し、IPv4/IPv6の両方で新しく設定したポート(36878番)を待ち受けさせるための確実な設定です。

  • 設定上書き用のディレクトリを作成:
sudo mkdir -p /etc/systemd/system/ssh.socket.d
  • 設定ファイル /etc/systemd/system/ssh.socket.d/listen.conf を新規作成し、以下の 4行 を記述:
[Socket]
ListenStream=
ListenStream=36878
ListenStream=0.0.0.0:36878

※ ポート番号は自分が設定したものです。

ListenStream=(右側空欄)で、デフォルトの22番の待ち受けを一度綺麗にクリアするのがポイントです。

Step 6. 設定の反映と確認

  • systemdの設定をリロード
sudo systemctl daemon-reload
  • ssh再起動
sudo systemctl stop ssh.service
  • 新しい設定でソケットとFail2banを再起動
sudo systemctl restart ssh.socket
sudo systemctl restart fail2ban
  • UFW(ファイアウォール)を有効化
sudo ufw enable
sudo netstat -lntp | grep 36878

以下のように、36878 番ポートが 1/init によって正常に LISTEN されていれば成功です。

tcp6       0      0 :::36878                :::* LISTEN      1/init
  • 自環境内でのSSH接続確認
ssh -p 36878 localhost

自分の端末からSSH接続できることを確認します。

  • サーバ再起動
sudo reboot

この段階でサーバそのものを再起動します。なぜなら、ここで「SSH接続できるはず」としても、不慮の再起動で設定が違うなどがあり得るからです。

Step 7. 設定反映確認

※ここからはSSH接続クライアントからの接続確認です。※

SSH接続クライアントの接続ポートを22から設定したポート(上記例では36878)に変更して接続します。

接続できれば設定完了です。

まとめ

この作業はサーバ初期設定からやっておくべきものでしたが、ようやく心臓に悪い作業から解放です。

ポート変更後、筆者環境ではWebサーバのレスポンス改善を確認したました。

これは「22番だから侵入される」という話ではありません。

日々押し寄せる大量の自動化ボットによるSSH接続試行そのものをOSへ到達させないことで、限られたサーバ資源を本来のサービス提供へ集中させられたためと考えています。

なお:半ば筆者のVPSは公開情報ではありますが、上記設定とは異なるポート番号で設定されていることは補足しておきます。

サーバSSH接続時に「REMOTE HOST IDENTIFICATION HAS CHANGED」のエラーメッセージが出たときの対処。

再インストールしたLinuxサーバに対して、Linuxクライアントから公開鍵認証でSSH接続を行ったところ以下のメッセージが出ました。

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ED25519 key sent by the remote host is
SHA256:********************************
Please contact your system administrator.
Add correct host key in /home/hoge/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /home/hoge/.ssh/known_hosts:2
Host key for hoge.example.com has changed and you have requested strict checking.
Host key verification failed.

それに備えて秘密鍵を新しいものに差し替えていましたが、サーバが再インストール前の公開鍵情報を覚えていたという形です。

「SSHホスト鍵が変わってるよ!」と怒られたときの対処

上記そのものズバリの解決策がありましたので、これに沿って対応していきます。

エラーが起きたLinuxクライアントで

ssh-keygen -R hoge.example.com

を実行するだけ。(ホスト名は自分の環境に合わせます)

# Host hoge.example.com found: line 1
# Host hoge.example.com found: line 2
/home/hoge/.ssh/known_hosts updated.
Original contents retained as /home/hoge/.ssh/known_hosts.old

のメッセージが出てきたら対処完了です。

改めて、新たな秘密鍵を用いて

ssh -i /path/to/private/key/hoge.exammple.com.key hoge@hoge.example.com

等としてssh接続を行い、

This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes

と、無事に接続ができました。

Ubuntu 20.04のOpenSSLのEOL対応並びにOpenSSHの脆弱性対応

概要

  • Ubuntu 20.04をインターネットに公開している
  • 諸々の事情で22.04にアップグレードできない
  • 2023/09/11にサポート終了となったOpenSSLの1.1.1をアップグレードしたい。
  • OpenSSHの脆弱性、CVE-2024-6387 の対応を行いたい

方を対象としています。

参考環境

OS:Ubuntu 20.04

  • OpenSSLのバージョン確認
openssl version -a
OpenSSL 1.1.1f  31 Mar 2020
built on: Wed May 24 17:14:51 2023 UTC
platform: debian-amd64
options:  bn(64,64) rc4(16x,int) des(int) blowfish(ptr) 
compiler: gcc -fPIC -pthread -m64 -Wa,--noexecstack -Wall -Wa,--noexecstack -g -O2 -fdebug-prefix-map=/build/openssl-mSG92N/openssl-1.1.1f=. -fstack-protector-strong -Wformat -Werror=format-security -DOPENSSL_TLS_SECURITY_LEVEL=2 -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAESNI_ASM -DVPAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM -DNDEBUG -Wdate-time -D_FORTIFY_SOURCE=2
OPENSSLDIR: "/usr/lib/ssl"
ENGINESDIR: "/usr/lib/x86_64-linux-gnu/engines-1.1"
Seeding source: os-specific
  • OpenSSHのバージョン確認
ssh -V
OpenSSH_8.2p1 Ubuntu-4ubuntu0.9, OpenSSL 1.1.1f  31 Mar 2020

参考とした手順

実施する前の留意点

  • コピペだけで済むように、エディタを使わない手順にしています。
  • 実際に筆者が実施した手順をそのまま載せています。typo等はご容赦ください。
  • 作業影響が極めて大きいため、作業時間の見積や日時調整は迅速かつ丁寧に行ってください。
    • 特にmake / make testは思っている以上に時間がかかります。
  • この手順では、sslのパスが変わります。同一サーバ内の他のプログラムがsslを参照している場合は、特に注意してください。

さっくりとはならない手順

  1. システム全体のバックアップ
  2. 【OpenSSL】必要なライブラリをインストールします。
  3. 【OpenSSL】githubレポジトリから最新安定版のソースコードをダウンロードします。
  4. 【OpenSSL】ソースからインストールしていきます。
  5. 【OpenSSL】設定を行います。(コンフィグを反映させ、パスを通します)
  6. 【OpenSSL】バージョンアップを確認します。
  7. 【OpenSSL】自動アップデートを無効化します。
  8. システム全体の再起動を行います。(1回目)
  9. 【OpenSSH】コンフィグに必要なディレクトリの作成を行います。
  10. 【OpenSSH】インストールに必要なパッケージをインストールします。
  11. 【OpenSSH】作業用ディレクトリに移動します。
  12. 【OpenSSH】ソースをダウンロードします。
  13. 【OpenSSH】OpenSSHをソースからビルドします。
  14. システム全体の再起動を行います。(2回目)
  15. 【OpenSSH】バージョンアップを確認します。

実施した手順

全体のバックアップを取得します。

任意の方法でシステム全体のバックアップを取ります。とはいえ、EOL/脆弱性対応のため切り戻しは基本的に許されません。

必要なライブラリのインストール

sudo aptitude install build-essential zlib1g-dev libssl-dev libpam0g-dev libselinux1-dev libkrb5-dev checkinstall zlib1g-dev git

aptitudeを用いています。必要に応じてaptを使ってください。

【OpenSSL】root昇格

OpenSSLをソースコードからコンパイルしてインストールする一連の作業は管理者権限で実行します。

sudo su -

【OpenSSL】ソースコードの取得

  • 作業用ディレクトリに移動
cd /hoge && pwd

任意のディレクトリを指定します

  • git clone
git clone https://github.com/openssl/openssl -b openssl-3.3.1

2024/07/03現在の最新版をダウンロードします。

※root昇格済みなのでsudoが不要であることにご注意ください

  • ディレクトリ移動
cd openssl

【OpenSSL】ソースからインストール

  • コンフィグ
./config --prefix=/usr/local/ssl --openssldir=/usr/local/ssl shared zlib
  • コンフィグ成功時の出力
Configuring OpenSSL version 3.3.1 for target linux-x86_64
Using os-specific seed configuration
Created configdata.pm
Running configdata.pm
Created Makefile.in
Created Makefile
Created include/openssl/configuration.h

**********************************************************************
***                                                                ***
***   OpenSSL has been successfully configured                     ***
***                                                                ***
***   If you encounter a problem while building, please open an    ***
***   issue on GitHub <https://github.com/openssl/openssl/issues>  ***
***   and include the output from the following command:           ***
***                                                                ***
***       perl configdata.pm --dump                                ***
***                                                                ***
***   (If you are new to OpenSSL, you might want to consult the    ***
***   'Troubleshooting' section in the INSTALL.md file first)      ***
***                                                                ***
**********************************************************************
  • make
make

makeは時間がかかります。状況を時折確認しながら待ちましょう。

  • 整合性確認
make test

make 同様に時間がかかります。

  • インストール
make install

【OpenSSL】インストール後の設定

  • 設定ファイル追記
cat <<- __EOF__ | tee -a /etc/ld.so.conf.d/openssl-3.3.1.conf
/usr/local/ssl/lib64
__EOF__
  • 設定反映
ldconfig -v
  • 既存プログラムの退避
mv /usr/bin/c_rehash /path/to/backup/c_rehash.$(date +%Y%m%d)

任意の退避ディレクトリを指定します

mv /usr/bin/openssl /path/to/backup/openssl.$(date +%Y%m%d)

任意の退避ディレクトリを指定します

  • パスを通す
cat <<- __EOF__ | tee -a /etc/environment
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/local/ssl/bin"
__EOF__
  • 通したパスを反映
source /etc/environment
  • パス確認
echo $PATH

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/local/ssl/bin"

と表示されることを確認します

【OpenSSL】バージョンアップ後の確認

openssl version -a
OpenSSL 3.3.1 4 Jun 2024 (Library: OpenSSL 3.3.1 4 Jun 2024)
built on: Wed Jul  3 02:04:25 2024 UTC
platform: linux-x86_64
options:  bn(64,64)
compiler: gcc -fPIC -pthread -m64 -Wa,--noexecstack -Wall -O3 -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_BUILDING_OPENSSL -DZLIB -DNDEBUG
OPENSSLDIR: "/usr/local/ssl"
ENGINESDIR: "/usr/local/ssl/lib64/engines-3"
MODULESDIR: "/usr/local/ssl/lib64/ossl-modules"
Seeding source: os-specific
CPUINFO: OPENSSL_ia32cap=0xfffa3203578bffff:0x7a9

これで、Ubuntu20.04でもOpenSSL3.3.1を利用することが可能になりました。

システム全体の再起動(1回目)

  • システムの再起動を行います。
sudo reboot

【OpenSSL】自動アップグレード無効

強制的に3.3系に上げるので、その後、1.1.xがアップグレードされる可能性を防ぎます。

  • apt を使用する場合
sudo apt-mark hold openssl
  • aptitude を使用する場合
sudo aptitude hold openssl

これに続けて、CVE-2024-6387の対応を行います。

【OpenSSH】ディレクトリ作成と設定

sudo mkdir /var/lib/sshd && sudo chmod -R 700 /var/lib/sshd/ && sudo chown -R root:sys /var/lib/sshd/

【OpenSSH】作業用ディレクトリ移動

cd /hoge && pwd

任意のディレクトリを指定します。

【OpenSSH】ソースのダウンロードと展開

  • ソース取得
wget -c http://mirror.exonetric.net/pub/OpenBSD/OpenSSH/portable/openssh-9.8p1.tar.gz

上記CVEの脆弱性に対応したバージョンを用います。

  • ソース展開
tar -xzf openssh-9.8p1.tar.gz
  • ディレクトリ移動
cd openssh-9.8p1

【OpenSSH】展開したソースコードをインストール

  • OpenSSLの位置を確認
which openssl
  • 結果確認
/usr/local/ssl/bin/openssl

本手順でSSLのバージョンアップを行った場合の環境となります。

  • コンフィグ
./configure --with-kerberos5 --with-md5-passwords --with-pam --with-selinux --with-privsep-path=/var/lib/sshd/ --sysconfdir=/etc/ssh --with-ssl-dir=/usr/local/ssl

--with-ssl-dir=/usr/local/sslは、opensslがあるディレクトリを指定します。

  • make
make
  • インストール
sudo make install

システム全体の再起動(2回目)

  • システムの再起動を行います。
sudo reboot

【OpenSSH】バージョンアップ確認

  • バージョン確認

この時点でSSH接続できていれば、ほぼ設定完了です。

ssh -V
OpenSSH_9.8p1, OpenSSL 3.3.1 4 Jun 2024

バージョンアップされていることを確認します。

自動アップグレード無効

強制的に9.x系に上げるので、その後、8.xがアップグレードされる可能性を防ぎます。

  • apt を使用する場合
sudo apt-mark hold openssh-server
  • aptitude を使用する場合
sudo aptitude hold openssh-server

システム全体の確認

  1. ログインできることを確認します。
  2. 他のサービスが正常に稼働していることを確認します。

ソースコードからインストールしたOpenSSHを9.6.1p→9.7.1にアップデート(Ubuntu 20.04)

この記事の続きです。

概要

ソースコードからインストールしたOpenSSH9.6p1を、更にOpenSSH9.7p1にバージョンアップします。

前提

Ubuntu 20.04での動作確認です。

上記手順を用いて、ソースコードからOpenSSHをインストールしています。

さっくりとした手順

  1. 作業用ディレクトリに移動します。
  2. ソースをダウンロードします。
  3. OpenSSHをソースからビルドします。
  4. バージョンアップを確認します。

バージョンアップ前の確認

ssh -V
OpenSSH_9.6p1, OpenSSL 3.2.1 30 Jan 2024

作業用ディレクトリ移動

cd /hoge && pwd

任意のディレクトリを指定します。

ソースのダウンロードと展開

  • ソース取得
wget -c http://mirror.exonetric.net/pub/OpenBSD/OpenSSH/portable/openssh-9.7p1.tar.gz

2024/04/04現在の最新版を指定しています。

  • ソース展開
tar -xzf openssh-9.7p1.tar.gz
  • ディレクトリ移動
cd openssh-9.7p1

コンフィグ

  • OpenSSLの位置を確認
which openssl
  • 結果確認
/usr/local/ssl/bin/openssl

筆者の環境です。

  • コンフィグ
./configure --with-kerberos5 --with-md5-passwords --with-pam --with-selinux --with-privsep-path=/var/lib/sshd/ --sysconfdir=/etc/ssh --with-ssl-dir=/usr/local/ssl

--with-ssl-dir=/usr/local/sslは、opensslのヘッドディレクトリを指定します。

  • make
make
  • インストール
sudo make install

バージョンアップ確認

※別にターミナルを開いて確認します。

  • バージョン確認
ssh -V
OpenSSH_9.7p1, OpenSSL 3.2.1 30 Jan 2024

バージョンアップされていることを確認します。

  • SSHサービス再起動
sudo systemctl restart ssh.service
  • サービス再起動確認
sudo systemctl status ssh.service

active(running)を確認します

必要に応じてサーバの再起動を行ってください。

Powered by WordPress & Theme by Anders Norén