月: 2023年12月 Page 2 of 4

Ubuntu20.04のOpenSSHを8.2p1から9.6.1pにアップデート。

概要

こちらの記事で、Ubuntu 20.04のOpensslを1.1.1から3.1.1にバージョンアップしました。

しかし、

OpenSSH_8.2p1 Ubuntu-4ubuntu0.9, OpenSSL 1.1.1f  31 Mar 2020

OpenSSHが参照しているSSLが前のままです。また、OpenSSHの脆弱性情報もあるのでセキュリティ上よろしくありません。

そこで、

  • OpenSSHを最新版にする
  • そのとき、参照するOpenSSLも現状に合わせる

作業を行いました。

参考にしたURL:

環境

  • Ubuntu 20.04
  • 上記自サイトに則って、OpenSSLを3.1.1にアップデート済み

さっくりとした手順

  1. コンフィグに必要なディレクトリの作成を行います。
  2. インストールに必要なパッケージをインストールします。
  3. 作業用ディレクトリに移動します。
  4. ソースをダウンロードします。
  5. OpenSSHをソースからビルドします。
  6. バージョンアップを確認します。

最初に

本件はSSHを扱います。念のため、サーバへのターミナルクライアントを別ウィンドウで開いておいてください。

  • 現行のバージョン確認
ssh -V
OpenSSH_8.2p1 Ubuntu-4ubuntu0.9, OpenSSL 1.1.1f  31 Mar 2020

必要なパッケージのインストール

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

ディレクトリ作成と設定

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

作業用ディレクトリ移動

cd /hoge && pwd

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

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

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

2023/12/20現在の最新版を指定しています。

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

コンフィグ

  • 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.6p1, OpenSSL 3.1.1

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

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

active(running)を確認します

この後、バージョンアップを行ったサーバにSSH接続できれば、作業は完了です。

確認日

2023/12/20

休日終わりのアグリコラ。

所用が済んだので、『アグリコラ』をソロで回しました。

オプションルールでアクションカードの順番や職業カードを選べるものの、

完全伏せ札、職業も進歩もシャッフルして7枚引いたのみ。

結果

得点合計

 57点

得点詳細

項目得点計算法
540~1:-1点 / 2:1点 / 3:2点 / 4:3点 5~:4点
33四角で囲われている柵1つごとに1点(最大4)
630:-1点 / 1~3:1点 / 4~5:2点 / 6~7:3点 / 8~:4点
野菜440:-1点 / 1:1点 2:2点 / 3:3点 / 4~:4点
未開拓地001つごとに-1点
家畜:羊630:-1点 / 1~3:1点 / 4~5:2点 / 6~7:3点 / 8~:4点
家畜:猪740:-1点 / 1~2:1点 / 3~4:2点 / 5~6:3点 / 7~:4点
家畜:牛530:-1点 / 1:1点 / 2~3:2点 / 4~5:3点 / 6~:4点
柵内の厩441つごとに1点
木の部屋0点
レンガの部屋1つごとに1点
石の部屋481つごとに2点
家族5151人ごとに3点
カード66カードに書かれている点数合計
ボーナス進歩や職業に書かれているボーナス合計
物乞い1つごとに-3点
合計-57-

職業が全て噛み合いました。地質学者と踏み粘土のお陰で柵と厩の供給がうまくいったのも幸いです。

この収納の美しさも相まって、よい夜を過ごせました。

『ライザのアトリエ3』クエスト一覧。(ネタバレあり)

2023年一番やりこんだゲーム『ライザのアトリエ3』、全ての

  • 地方ごとのクエスト
  • キャラクタークエスト
    • 及びパーティークエスト
  • 見聞録

筆者管理のRedmineにて記録しました。

重大なネタバレについてはマスキングしています。

また、実績解除に必要な

  • 料理
  • ソードマスター

についても挙げています。

メインクエスト/ワールドクエスト

https://atelier.reisalin.com/versions/23

これに関しては、mermaid.jsによるフローチャートを用いています。

地方ごとのクエスト

クーケン島周辺エリア

https://atelier.reisalin.com/versions/18

1の舞台。ここを基本的なエリアとして、各地方を行ったり来たり。新たなマップが追加されています。

クレリア地方

https://atelier.reisalin.com/versions/19

魔石とガラスの工芸都市、サルドニカを擁する地方だけあって、採取できる素材が一気に増えます。異なる特徴を持ったアトリエを作れるのもここからです。

ネメド地方

https://atelier.reisalin.com/versions/20

新たな仲間やかつての仲間との合流が目立つ地方。エリアの半分がメインクエストとは絡まない特異さを持っています。

異界オーリム

https://atelier.reisalin.com/versions/21

別世界でも冒険。

  • レアリティアップの鍵
  • 古の賢者の石の素材

など、エンドコンテンツに向けた調合が可能になってきます。

無料DLC:王都辺境

https://atelier.reisalin.com/versions/25

終盤から探索可能になる王都辺境。メインキャラクターの一人と関わりが深い地方です。

有料DLC:ロスカ島

https://atelier.reisalin.com/versions/24

クリアデータ前提の高難易度エリア。

  • 新たなキーメイク
  • 特殊な調合素材

などが待っています。

キャラクターごとのクエスト

以下はキャラクターごとのクエストです。ライザのみがパーティークエスト。

キャラクタークエストに関しては受諾タイミングも記しています。

次なる目標

  • 宝箱一覧
  • 素材の詳細データ

など、記録は色々です。

『ライザのアトリエ3』有料DLC「ロスカ島」文献探し一覧。(ネタバレあり)

にて、

他に凄く厄介な文献探しがありますが、こちらは合間を見て探しています。

と書いたところの宿題を達成しました。

概要

『ライザのアトリエ3』有料DLC『ロスカ島』のノーマルクエスト「文献探しを手伝おう」を探したときの記録です。

クエスト内容

ロスカ島各所に存在する「文献」を30個も探す、本作で一番面倒なクエスト。そのうちのいくつかは見つけるのが非常に困難だったのもめんどくささに拍車をかけます。

更に、実装当時は「30個集めたのにカウントされない」バグがあったため、しばらく放置していました。

それを、ようやく回収です。

備考

  • 場所は固まっていません。文献のカテゴリーごとにまとめています。
  • 詳細なスクリーンショットや内容は別リンク(別に管理しているRedmine)で記しています。

文献一覧

1.破れた羊皮紙

  • 異空の社と開明の社の中間地点
  • バードウォッチャー・タオで鳥を追いかけるときに発見

https://atelier.reisalin.com/issues/633#note-2

2. 破れた羊皮紙

  • 創世の社
  • 動力があるところ
  • 施設の渡り廊下、ジャンプしたところ

https://atelier.reisalin.com/issues/633#note-3

3.破れた羊皮紙

  • 開明の社、施設に入って右、奥に入ったところ

https://atelier.reisalin.com/issues/633#note-4

4. 破れた羊皮紙

中央の塔に向かうところ、廃墟の中

https://atelier.reisalin.com/issues/633#note-5

5.破れた羊皮紙

  • 創世の社
  • クエスト『研究所の遺産』を受諾したところ

https://atelier.reisalin.com/issues/633#note-6

6.破れた羊皮紙

  • 中央制御塔の入り口、廃墟の上(東側)
  • 軒先をジャンプしていく

※ここが一番見つけるのが大変でした。

この場所から、飛び石のように軒先をジャンプした先です。

https://atelier.reisalin.com/issues/633#note-7

7.研究者の手記

  • 開明の社から創世の社に向かうところ
  • 骨を伝って登っていくところ
    • 『ライザのアトリエ2』の伝承の竜骨谷のような立体です。

https://atelier.reisalin.com/issues/633#note-8

8. 研究者の手記

  • 異空の社、西側
  • アイテムレベル低下の釜の側

https://atelier.reisalin.com/issues/633#note-9

9.研究者の手記

  • 異空の社と開明の社の中間地点
  • アイテムレベルの低下の釜の下のオアシス、先

https://atelier.reisalin.com/issues/633#note-10

10.研究者の手記

  • 創世の社
  • 施設内西、端の本

https://atelier.reisalin.com/issues/633#note-11

11. 研究者の手記

  • 創世の社の北東にある奥まったオアシス

https://atelier.reisalin.com/issues/633#note-12

12. 研究者の手記

  • 異空の社、外を出て西側
  • 合間の廃墟

https://atelier.reisalin.com/issues/633#note-13

13. 研究者の手記

  • 中央制御塔の入り口、廃墟の上(西側)

https://atelier.reisalin.com/issues/633#note-14

14.研究者の手記

  • 創世の社
  • クエスト『研究所の遺産』を受諾したところ

https://atelier.reisalin.com/issues/633#note-15

15. 研究者の手記

  • 海岸の小廃墟から北
  • 異空の社に向かうところ
  • 古代の錬金釜『特性レベル上昇』北東

https://atelier.reisalin.com/issues/633#note-16

16.薄汚れた資料

  • 海岸の小廃墟東
  • 古代の錬金釜『古代の鍛治技術』そば
  • 動物についていかないと発見できない

※この文献が「探した」と判定されなかったために、クエストを達成できないバグが発生していました※

https://atelier.reisalin.com/issues/633#note-17

17. 薄汚れた資料

  • 異空の社の南西
  • 廃墟の間

https://atelier.reisalin.com/issues/633#note-18

18.薄汚れた資料

  • 創世の社、施設を出て南側
  • 枯れた噴水の近く

https://atelier.reisalin.com/issues/633#note-19

19.薄汚れた資料

  • 異空の社、施設に入って右

https://atelier.reisalin.com/issues/633#note-20

20. 薄汚れた資料

  • 異空の社、東側
  • 瓦礫などが詰まれているところの間

https://atelier.reisalin.com/issues/633#note-21

21.薄汚れた資料

  • 異空の社の北東
  • 古代の錬金釜「作成個数増加」すぐそば

https://atelier.reisalin.com/issues/633#note-22

22.薄汚れた資料

  • 異空の社、動力装置がある部屋を出たバルコニー

https://atelier.reisalin.com/issues/633#note-23

23. 薄汚れた資料

  • 異空の社の北
  • 古代の錬金釜「属性順応」のそば

https://atelier.reisalin.com/issues/633#note-24

24.古い研究記録

  • 異空の社、見聞録『秘匿された調査資料』がある部屋

https://atelier.reisalin.com/issues/633#note-25

25.古い研究記録

  • 異空の社、入り口から入って左

https://atelier.reisalin.com/issues/633#note-26

26.古い研究記録

  • 開明の社、施設に入って左の小部屋

https://atelier.reisalin.com/issues/633#note-27

27.古い研究記録

  • 開明の社、ギミックを開けた部屋の先

https://atelier.reisalin.com/issues/633#note-28

28.古い研究記録

  • 開明の社、施設に入って左、奥に入ったところ

https://atelier.reisalin.com/issues/633#note-29

29. 古い研究記録

  • 開明の社、動力がある場所(地下)

https://atelier.reisalin.com/issues/633#note-30

30. 古い研究記録

  • 異空の社、地下最下層に向かう途中
  • 本棚の前に積まれている本

https://atelier.reisalin.com/issues/633#note-31

まとめ

以上30個。非常に面倒なノーマルクエストでした。

補充と撮影。

情報カードにものを書くようになってから、万年筆のインクの減りが更に加速しました。

そこで、土曜日の朝、上記を対象に補充です。

本体とインクの対応に関しては、この表のお陰ですんなりと判別できました。

  • 補充
  • 拭き取り
  • 試し書き

を一通り行い、

まずは一安心です。

その跡に撮影。先月の終わり頃に組み立てた

『ハリー・ポッター』教科書&教室の「占い学」が背景です。

スクリプト改修。(SSL証明書の有効期限確認スクリプト)

概要

このスクリプトを修正します。

修正後の内容

  • qa_ssl_checker.rb
require 'openssl'
require 'socket'
require 'date'
require 'uri'
require 'timeout'

# ユーザーからURLを対話的に受け取る
def get_user_input
  print "チェックしたいサイトのドメインを入力してください(例: example.com): "
  domain = gets.chomp

  # 入力がhttp://またはhttps://で始まらない場合は、https://を追加
  domain = "https://#{domain}" unless domain.start_with?('http://', 'https://')

  domain
end

# 変数で指定したURLに接続して証明書の有効期限を取得するメソッド
def get_certificate_expiry_date(url)
  uri = URI.parse(url)
  hostname = uri.host
  ssl_socket = nil
  tcp_client = nil

  begin
    # タイムアウトを5秒に設定してSSL接続を確立
    Timeout.timeout(5) do
      tcp_client = TCPSocket.new(hostname, 443)
      ssl_context = OpenSSL::SSL::SSLContext.new
      ssl_socket = OpenSSL::SSL::SSLSocket.new(tcp_client, ssl_context)
      ssl_socket.hostname = hostname
      ssl_socket.connect

      # 証明書の有効期限を取得
      cert = ssl_socket.peer_cert
      expiration_date = DateTime.parse(cert.not_after.to_s)
      days_remaining = (expiration_date - DateTime.now).to_i

      return expiration_date, days_remaining
    end
  rescue Timeout::Error
    return nil, "サーバーへの接続がタイムアウトしました。"
  rescue => e
    return nil, e.to_s
  ensure
    ssl_socket&.close
    tcp_client&.close
  end
end

# メイン処理
def main
  url = get_user_input
  expiration_date, days_remaining = get_certificate_expiry_date(url)

  if expiration_date
    formatted_date = expiration_date.strftime("%Y/%m/%d")
    puts "サイト #{url} の有効期限は #{formatted_date} です。残り #{days_remaining} 日です。"
  else
    puts "証明書の取得に失敗しました: #{days_remaining}"
  end
end

# メイン処理を呼び出し
main
  • 差分
-  print "チェックしたいサイトのURLを入力してください(https://example.comのような形式): "
-  gets.chomp
+  print "チェックしたいサイトのドメインを入力してください(例: example.com): "
+  domain = gets.chomp
+
+  # 入力がhttp://またはhttps://で始まらない場合は、https://を追加
+  domain = "https://#{domain}" unless domain.start_with?('http://', 'https://')
+  
+  domain

変更された挙動

前は、URLを入力するときに

https://~ を含めたドメインが必要でしたが、今回はドメインのみ(example.com)のみで処理をしてくれるようになります。

地味ですが、大きな改善点です。

BookStackのバージョンアップ手順。(BookStack v23.08.3 → BookStack v23.10.4)

概要

運用しているBookStackのバージョンアップを行います。

環境

  • Ubuntu 20.04
  • Apache 2.4系
  • PHP 8.1
  • MySQL 8系

手順

https://www.bookstackapp.com/docs/admin/updates/

ほぼ、こちらの公式記事の通りに行いました。

BookStackのディレクトリに移動

  • ディレクトリ移動
cd /var/lib/BookStack/ && pwd

インストールされているディレクトリを指定します

アップグレード

  • git pull
sudo -u www-data git pull origin release
  • 実行例(一部抜粋)
 tests/LanguageTest.php                                                              |   19 +-
 tests/Permissions/RolePermissionsTest.php                                           |   16 +-
 tests/PublicActionTest.php                                                          |    4 +-
 tests/PwaManifestTest.php                                                           |   72 ++
 tests/SecurityHeaderTest.php                                                        |   11 +-
 tests/Settings/TestEmailTest.php                                                    |    6 +-
 tests/TestCase.php                                                                  |   38 +-
 tests/ThemeTest.php                                                                 |   44 +-
 tests/Uploads/AvatarTest.php                                                        |   62 +-
 tests/Uploads/ImageTest.php                                                         |   28 +-
 tests/User/UserApiTokenTest.php                                                     |   86 +-
 tests/User/UserManagementTest.php                                                   |    6 +-
 tests/User/UserMyAccountTest.php                                                    |  339 ++++++++
 tests/User/UserPreferencesTest.php                                                  |  164 +---
 tests/User/UserSearchTest.php                                                       |    3 +-
 version                                                                             |    2 +-
 557 files changed, 14110 insertions(+), 5348 deletions(-)
 rename app/{Notifications/ConfirmEmail.php => Access/Notifications/ConfirmEmailNotification.php} (82%)
  • アップグレード
sudo composer install --no-dev
  • 実行例(一部抜粋)
  - Upgrading psy/psysh (v0.11.20 => v0.11.22): Extracting archive
  - Upgrading laravel/tinker (v2.8.1 => v2.8.2): Extracting archive
  - Upgrading mtdowling/jmespath.php (2.6.1 => 2.7.0): Extracting archive
  - Upgrading aws/aws-sdk-php (3.279.2 => 3.283.8): Extracting archive
  - Upgrading league/flysystem-aws-s3-v3 (3.15.0 => 3.16.0): Extracting archive
  - Upgrading phpseclib/phpseclib (3.0.21 => 3.0.23): Extracting archive
  - Upgrading predis/predis (v2.2.1 => v2.2.2): Extracting archive
  - Upgrading socialiteproviders/manager (v4.3.0 => v4.4.0): Extracting archive
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover --ansi

   INFO  Discovering packages.  

  barryvdh/laravel-dompdf ................................................................................................... DONE
  barryvdh/laravel-snappy ................................................................................................... DONE
  intervention/image ........................................................................................................ DONE
  laravel/socialite ......................................................................................................... DONE
  laravel/tinker ............................................................................................................ DONE
  nesbot/carbon ............................................................................................................. DONE
  nunomaduro/termwind ....................................................................................................... DONE
  socialiteproviders/manager ................................................................................................ DONE

62 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
> @php artisan cache:clear

   INFO  Application cache cleared successfully.  

> @php artisan view:clear

   INFO  Compiled views cleared successfully.  

自分の環境ですとキャッシュのクリアなどは自動的に行うため、上記URLの追加手順は不要でした。

バージョンアップ確認

  1. BookStackがインストールされているURLにアクセスします。
  2. 管理者権限でログインします。
  3. 設定のシステムバージョンが以下、作業時の最新版になっていれば成功です。

Nextcloud、ブルートフォースの誤検知対応(occ実行)

エラー内容

Nextcloudで以下のエラーが出たので対応を行います。

あなたのIPアドレスは、 "xxx.xxx.xxx.xxx" として認識されており、現在ブルートフォース対策機能により様々なリクエストのパフォーマンスが低下しています。IPアドレスがあなたのアドレスでない場合、プロキシが正しく設定されていない可能性があります。詳細はドキュメントをご覧ください

エラーとなった原因

ファイル共有機能の検証を行っており、その際に共有/非共有の設定を繰り返していたなどの不審な動きがあったからだと思います。(現に、通常に使用している限りではエラーは発生しませんでした)

エラー解消

エラーが出たNextcloudサーバにSSH接続して対応します。

ディレクトリ移動

cd /home/www-data/nextcloud && pwd

occ実行

sudo -u www-data php occ security:bruteforce:reset [IPアドレス]

上記エラーで出てきたIPアドレスを指定します。

エラー解消確認

  1. Nextcloudに管理者権限でログインします。
  2. 管理画面を開きます。
  3. 以下のように、エラーが解消されていることを確認します。

休日午後のソロゲー。(大鎌戦役)

  • グラスロード
  • ユーコン・エアウェイズ

と休日に立て続けにボードゲームをプレイして、「しっかりがっつり、コンポーネントを動かしたい」と選んだのはこちら、『大鎌戦役』です。

プレイヤー側

勢力

ザクセン帝国

マット

工学主義(エンジニアリング)

オートマ側

勢力

ロスヴィエト連邦

難易度

オートマちゃん(易)

結果

52 - 36でプレイヤー勝利。

獲得した星章

  1. 戦闘勝利
  2. 目的達成(地底の優越:手番完了時にトンネル×3を支配)
  3. 目的達成(機械は筋肉に勝る:ファクトリーカードを所有している状態でメックを1体以上展開し、ワーカーが3人以下)
  4. 改善×6
  5. メック×4
  6. 徴兵×4

主だった記録

  • 目的が見えていたので、この2つを達成すると最初から決めていました。(ザクセンは2つとも目的を達成できるため)
  • ワーカーを減らしつつ効率的に動くため、序盤は以下の動きをしています。
  1. 交易:オイル×2
  2. 生産&改善→移動3マスと徴兵の食料を減らす)
  3. 移動:山岳→村と英雄 & 徴兵(戦力増強を解放)
  • あとは順当に展開して進軍と内政を行いました。

まとめ

対CPUセントは違った戦い方が要求されるオートマ戦ではあるものの、アプリでの経験が生きて良かったです。

休日のソロゲー。(ユーコン・エアウェイズ)

ボードゲーム「物理」をもっと動かしたいという気分となったので、数年ぶりに稼働させました。

ユーコン・エアウェイズ

ユーコン準州の水上飛行機会社をモチーフにした

  • ピック&デリバリー
  • リソース管理
  • 盤面強化
  • 手札管理

などが楽しい作品。余りにも久しぶりだったこととお金を稼ぐことだけに注力し、肝心の顧客を「連れ回す」ことができず。

結局、ルーキー止まりで終わりました。

ゲームがやや複雑かと思ったのですけれど、

  • 「いかにしてリソースを管理するか」
  • 客(ダイス)を汲み取って高収入を得るための方法を考える
  • カードをやりくりする

などがいい作品。こちらはまだソロでしか遊んでいないので、他の人たちを交えてやっていきたい作品です。

AIのイメージで描いてもらった大自然

Page 2 of 4

Powered by WordPress & Theme by Anders Norén