投稿者: manualmaton Page 9 of 237

WebARENA Indigo®のファイアウォール設定。

ufwとfail2banの前段に、vpsが備えているファイアウォールを挟ませることで、サーバの負荷を抑えます。

手順

管理画面にログインします。

ネットワーク管理>ファイアーウォールをクリック。

右上の「ファイアウォールの作成」をクリック。

  • ファイアウォール名:任意の名前
  • インバウンドルール
    • HTTP(80) IPアドレス→0.0.0.0 (全てのIPアドレスを許可)
    • HTTPS(443) IPアドレス→0.0.0.0 (全てのIPアドレスを許可)
    • Custom / TCP / 22 IPアドレス→0.0.0.0 (全てのIPアドレスを許可)

を設定します。これは基本的なWebサーバ用の設定なので、許可したいポートが他にあればそれに合わせます。

設定後、インスタンスへの適用→作成したインスタンスを選び、設定を保存します。

固定IPを持っていれば、SSHのIPアドレスを指定することで、それ以外のIPをシャットアウト可能です。

Ubuntu24.04サーバの初期設定。(ufwとfail2ban)

  • インターネット上に公開されたWebサーバを運営している
  • IPアドレスが固定されていない

場合に必要な措置となる、NW保護を行います。

環境

  • Ubunt 24.04

さっくりとした手順

  • ufwを有効化します。
  • fail2banをインストールします。
  • fail2banの設定をします。

SSHとWeb通信のみを有効化させます。

  • SSH接続を許可するが過度な接続を制限する
sudo ufw limit proto tcp from any to any port 22
  • http通信を許可
sudo ufw allow 80/tcp
  • https通信を許可
sudo ufw allow 443/tcp
  • ufwの設定を反映
sudo ufw enable

Command may disrupt existing ssh connections. Proceed with operation (y|n)?はyで続けます。

  • 反映確認
sudo ufw status

以下を確認します。

状態: アクティブ

To                         Action      From
--                         ------      ----
22/tcp                     LIMIT       Anywhere                  
80/tcp                     ALLOW       Anywhere                  
443/tcp                    ALLOW       Anywhere                  
22/tcp (v6)                LIMIT       Anywhere (v6)             
80/tcp (v6)                ALLOW       Anywhere (v6)             
443/tcp (v6)               ALLOW       Anywhere (v6) 

別ウィンドウで新たなSSH接続を行い、通信できるかを確認します。

  • 再起動後でもufwが有効であることを確認
sudo reboot

再起動後、SSH接続ができることを確認します。

sudo ufw status

上記、許可された設定が有効になっていることを確認します。

fail2banをインストールします。

  • インストール
sudo aptitude update && sudo aptitude install fail2ban
  • インストール確認
systemctl status fail2ban.service 

active(running)を確認します。

fail2banを設定します。

  • jail.localの作成

教義と進行に沿ったエディタを用いて/etc/fail2ban/jail.localを管理者権限で編集します。

[ufw]
enabled=true
filter=ufw.aggressive
action=iptables-allports
logpath=/var/log/ufw.log
maxretry=1
bantime=-1
ignoreip = 127.0.0.0/8 ::1
# ignoreipは任意の(ある程度アクセス元が判明しているIPアドレス)を指定ください。スペース区切りで複数指定できます。

[sshd]
enabled=true
filter=sshd
mode=normal
port=22
protocol=tcp
logpath=/var/log/auth.log
maxretry=3
bantime=-1
ignoreip = 127.0.0.0/8 ::1
# ignoreipは任意の(ある程度アクセス元が判明しているIPアドレス)を指定ください。スペース区切りで複数指定できます。
  • ufw.aggressiveを作成
sudo tee /etc/fail2ban/filter.d/ufw.aggressive.conf > /dev/null << 'EOF'
[Definition]
failregex = [UFW BLOCK].+SRC=<HOST> DST
ignoreregex =
EOF
  • 設定反映
sudo systemctl restart fail2ban.service
systemctl status fail2ban.service 

active(running)を確認します。

  • 設定確認
sudo cat /var/log/fail2ban.log

この時点で、

2024-09-01 17:14:26,476 fail2ban.filter         [1720]: INFO    [ufw] Found xxx.xxx.xxx.xxx - 2024-09-01 17:14:26
2024-09-01 17:14:26,623 fail2ban.actions        [1720]: NOTICE  [ufw] Ban xxx.xxx.xxx.xxx
2024-09-01 17:14:44,198 fail2ban.filter         [1720]: INFO    [ufw] Found yyy.yyy.yyy.yyy - 2024-09-01 17:14:44
2024-09-01 17:14:44,647 fail2ban.actions        [1720]: NOTICE  [ufw] Ban yyy.yyy.yyy.yyy

と、fail2banが不審なアクセスを弾いています。

sudo fail2ban-client status ufw

設定して10分も経たないうちに100ほどのIPアドレスがブロックされていました。

Ubuntu24.04のSSHとSSLの脆弱性対応。(OSインストール後最初に行うこと)

vpsを利用して立ち上げたUbuntu 24.04。

まずは2024年7月に発生した脆弱性に対応させます。

  • openssl
openssl version -a
OpenSSL 3.0.13 30 Jan 2024 (Library: OpenSSL 3.0.13 30 Jan 2024)
built on: Fri Aug  9 02:33:21 2024 UTC
platform: debian-amd64
options:  bn(64,64)
compiler: gcc -fPIC -pthread -m64 -Wa,--noexecstack -Wall -fzero-call-used-regs=used-gpr -DOPENSSL_TLS_SECURITY_LEVEL=2 -Wa,--noexecstack -g -O2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -ffile-prefix-map=/build/openssl-uVxJzP/openssl-3.0.13=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -fdebug-prefix-map=/build/openssl-uVxJzP/openssl-3.0.13=/usr/src/openssl-3.0.13-0ubuntu3.3 -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_BUILDING_OPENSSL -DNDEBUG -Wdate-time -D_FORTIFY_SOURCE=3
OPENSSLDIR: "/usr/lib/ssl"
ENGINESDIR: "/usr/lib/x86_64-linux-gnu/engines-3"
MODULESDIR: "/usr/lib/x86_64-linux-gnu/ossl-modules"
Seeding source: os-specific
CPUINFO: OPENSSL_ia32cap=0x9fb82203478bfffd:0x0
  • openSSH
ssh -V
OpenSSH_9.6p1 Ubuntu-3ubuntu13.5, OpenSSL 3.0.13 30 Jan 2024

脆弱性に対応していないバージョンだったので、まずはここから対応します。

環境

  • Ubuntu 24.04LTS
  • インストールしたばかりの状況

さっくりとならない手順

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

※脆弱性対応のため、切り戻しは一切考慮しません。※

ロケール変更

  • ロケール確認
localectl
System Locale: LANG=C.UTF-8
VC Keymap: (unset)     
X11 Layout: us
X11 Model: pc105
  • 使えるロケールを確認
localectl list-locales
C.UTF-8
en_US.UTF-8

→ 日本語がないので、追加することから確認します。

  • 日本語を追加
sudo aptitude install language-pack-ja
  • ロケール追加確認
localectl list-locales
C.UTF-8
en_US.UTF-8
ja_JP.UTF-8

追加を確認しました。

  • 日本語ロケールに設定
sudo localectl set-locale LANG=ja_JP.UTF-8

これで各種メッセージが日本語で表示されるようになります。

必要なパッケージをインストールします。

sudo apt install aptitude

パッケージ管理はこちらが好みなので先にインストールします。

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

【OpenSSL】root昇格

ソースコードからコンパイルしてインストールするため、この作業は全て管理者権限で実行します。

sudo su -

【OpenSSL】ソースコード取得

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

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

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

2024/09/01現在の最新版を指定します。

  • ディレクトリ移動
cd openssl && pwd

【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 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)

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

  • パスを通す
sudo sed -i 's|^PATH=.*|#&\nPATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/local/ssl/bin"|' /etc/environment
  • 通したパスの反映
source /etc/environment
  • パスの反映
echo $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/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: Sun Sep  1 05:14: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=0x9fb82203478bfffd:0x0

これで、バージョンが3.0.1から3.3.1に変わります。

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

その後のシステムアップグレードでパスなどが変わるのを防ぎます。

sudo apt-mark hold openssl
sudo aptitude hold openssl

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

reboot

再起動すると同時に、rootから抜けます。

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

むしろここからが本番。CVE-2024-6378の致命的な脆弱性の対応を行います。

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
  • ソース展開
tar -xvzf openssh-9.8p1.tar.gz
  • ディレクトリ移動
cd openssh && pwd

【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
  • インストール確認

ターミナルクライアントソフトは開いたまま、新たなウィンドウで開き、ログインできることを確認します。

  • バージョンアップ確認
ssh -V
OpenSSH_9.8p1, OpenSSL 3.3.1 4 Jun 2024

これで、SSH接続の脆弱性に対応。一番の危険は去りました。

WebARENA Indigo®を利用したUbuntu 24.04サーバへの立ち上げ。

概要

Ubuntu 20.o4サーバのEOLが近づいてきたため、現時点でのUbuntu最新版LTSサーバのvpsを立ち上げたときの記録です。

選定したサービス:WebARENA Indigo®

https://web.arena.ne.jp/indigo

今回は国産vpsを選定です。

  • 円安の影響下でAWS Lightsailが高額になった
  • 回線キャリアが運営しているだけあってNWが安定(アップロードも500Mbps/ベストエフォート)
  • Lightsailと同じく月額課金のため安心

が選定理由です。

申し込みそのものは

  • サインイン
  • クレジットカード情報の入力
  • 携帯電話を利用した本人確認

で、アカウント作成後は

こんな形のダッシュボードができました。

ここからUbuntuサーバを立ち上げていくのですが、罠が待っていました。

Ubuntu24.04サーバの罠-rsa秘密鍵、再び-

上記ダッシュボードから

  1. サービス管理
  2. インスタンス管理
  3. SSH鍵

で鍵を作成後、

  1. インスタンス
  2. インスタンス作成

で、Ubuntu 24.04インスタンスを作成するとログインできません

過去にもこういう事例があったので、それに沿って対応します。

これと同じく、

(SSH-1アルゴリズムによるRSA認証が無効化されます)

に引っかかるので、

  1. Ubuntu 20.04でインスタンスを立ち上げる
  2. アクセスできるアカウントを作成する
  3. Ubuntu 22.04/24.04に対応した秘密鍵を作成する
  4. その上でUbuntuのアップグレードをする

回りくどい方法を採りました。

最初のインスタンスへのアクセス

  1. WebARENAのコンソールからSSH鍵を作ります。
    • SSH鍵の作成
    • SSH鍵名を入力して作成をクリック
    • ダウンロードされた秘密鍵を利用
  2. Ubuntu20.04でインスタンスを立ち上げます。
    • インスタンス管理>インスタンスに移動
    • イメージの選択「Ubuntu」>「Ubuntu20.04」を選択
    • 自分の運用に沿ったサイズを選択
    • SSH鍵は上記で作成したものを選択
    • インスタンス名は任意のものを入力
    • 「インスタンスの作成」をクリック
  3. インスタンスを起動します。OSがインストールされたら、「操作」から「インスタンスの起動」をクリックします。
    • AWSと違って、最初からグローバルのIPアドレスがアタッチされているのが利点です。
    • ドメインとDNS登録できる環境があれば、この時点で名前解決できるようにします。
  4. ターミナルクライアントソフトから、インポートされた秘密鍵を使ってアクセスします。
    • アクセス先:アタッチされたIPアドレス
    • ユーザー名:ubuntu
    • 秘密鍵を利用
    • パスワード:空白

Ubuntu 22.04以降に対応したアカウントの作成

  • root昇格
sudo su -

パスワードは設定されていないので空エンターです。

  • ユーザー作成
adduser hoge

hogeは任意のユーザー名です。その後、パスワードなどを設定していきます。

  • 作成したユーザーを管理者グループに入れる
usermod -G sudo hoge

hogeは自分が作成したユーザー名です。

  • 作成したユーザーに切り替え
su - hoge
  • ユーザー名確認
whoami

作成したユーザー名であることを確認します。

  • root昇格確認
sudo su -

パスワード入力後、作成したユーザーがrootに昇格できることを確認します。

  • 作成したユーザーに戻る
exit && whoami

作成したユーザーであることを確認します。

秘密鍵作成

  • edEd25519での秘密鍵作成
ssh-keygen -t ed25519

鍵の格納場所は初期値(/home/hoge/.ssh)なので空エンターです。特別な運用がない限りはパスワードを設定します。

  • 秘密鍵確認
cd .ssh && pwd

/home/hoge/.sshにいることを確認します。

  • ファイルの内容確認
ls -l
  1. id_ed25519
  2. id_ed25519.pub

の2つを確認します。

cat id_ed25519
cat id_ed25519.pub

とした上で内容をコピーし、ローカル環境に貼り付けて保管します。この、秘密鍵と公開鍵はサーバセキュリティの生命線です。管理と保管は厳密に行ってください。

  • サーバ上から秘密鍵を削除
rm id_ed25519

サーバにアクセスするための秘密鍵がサーバ上にあっては意味がありません。「ローカルに秘密鍵があることを再確認した上で」秘密鍵を削除します。

  • 公開鍵の名前と権限変更
mv id_ed25519.pub authorized_keys
chmod 600 authorized_keys

公開鍵の名前をauthorized_keysに変更して、所有者のみがアクセスできるようにします。

ローカルPCからアクセスできることを確認します。

ターミナルクライアントソフトで

  • IPアドレス(設定していればドメイン名)
  • 作成したユーザー名とパスワード
  • ローカルに保管した秘密鍵

を用いてアクセスできることを確認します。

Ubuntuのアップグレード

Ubuntu 20.04から24.04まで上げるので、二段階に上げます。

また、OSの再インストールなので、休憩時間を一切挟まず、一気通貫で行ってください。

Ubuntu 20.04→22.04

  • root昇格
sudo su -

ここから全てroot権限で設定します。

  • パッケージの最新化とアップグレード前の再起動
apt update && apt upgrade && apt autoremove

パッケージを最新版にして不要パッケージを削除します。途中で不要パッケージを消すかを求められるので[y]で消去します。

reboot

再起動を行います。

  • 再ログインしてroot昇格
sudo su -
  • OSのアップグレード
do-release-upgrade

アップグレード中にプロンプトから質問されたこと

以下、主要な質問事項です。コメント(#の後)に概要を書いています。

Reading cache

Checking package manager

Continue running under SSH?

This session appears to be running under ssh. It is not recommended
to perform a upgrade over ssh currently because in case of failure it
is harder to recover.

If you continue, an additional ssh daemon will be started at port
'1022'.
Do you want to continue?

# SSHのポートを追加するか
# → y

Starting additional sshd 

To make recovery in case of failure easier, an additional sshd will 
be started on port '1022'. If anything goes wrong with the running 
ssh you can still connect to the additional one. 
If you run a firewall, you may need to temporarily open this port. As 
this is potentially dangerous it's not done automatically. You can 
open the port with e.g.: 
'iptables -I INPUT -p tcp --dport 1022 -j ACCEPT' 

To continue please press [ENTER]

# 設定を変更するか
# → Enter

Do you want to start the upgrade?


4 packages are going to be removed. 85 new packages are going to be
installed. 555 packages are going to be upgraded.

You have to download a total of 247 M. This download will take about
49 seconds with a 40Mbit connection and about 6 minutes with a 5Mbit
connection.

Fetching and installing the upgrade can take several hours. Once the
download has finished, the process cannot be canceled.

 Continue [yN]  Details [d]

# アップグレード前の最終確認
# → y

There are services installed on your system which need to be restarted when certain libraries, such as libpam, libc, and libssl, are upgraded. Since these restarts may cause interruptions of service for the system, you will     x
   x normally be prompted on each upgrade for the list of services you wish to restart.  You can choose this option to avoid being prompted; instead, all necessary restarts will be done for you automatically so you can avoid being   x
   x asked questions on each library upgrade.                                                                                                                                                                                            x
   x                                                                                                                                                                                                                                     x
   x Restart services during package upgrades without asking?

# アップグレード時、各種サービスを再起動前にプロンプトでy/nを確認するか
# → 質問されるのがめんどいので yes

# この間、SSH等の設定変更を行うか訊いてきます。プロンプトの選択を変えずに先に進みました
# keep the local version currently installed

Remove obsolete packages? 

# 不要パッケージの削除
# → Yes

System upgrade is complete.

Restart required

To finish the upgrade, a restart is required.
If you select 'y' the system will be restarted.

Continue [yN]

# アップグレード完了後にリブートするか
# → y
  • 22.04へのアップグレードを確認

再起動後、再びアクセスします。

cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=22.04
DISTRIB_CODENAME=jammy
DISTRIB_DESCRIPTION="Ubuntu 22.04.1 LTS"

となっていればまずはアップグレード完了です。

Ubuntu 22.04 → 24.04

  • root昇格
sudo su -
  • OSのアップグレード
do-release-upgrade

途中のプロンプトはほぼ同じなので割愛。再起動後、

cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=24.04
DISTRIB_CODENAME=noble
DISTRIB_DESCRIPTION="Ubuntu 24.04.1 LTS"

にて成功です。

初期ユーザーの無効化

WebARENAのコンソールで作成された初期ユーザーはパスワードがない状態なので、無効化します。

  • root昇格
sudo su -
  • 初期ユーザーのsshディレクトリに移動
cd /home/ubuntu/.ssh
  • 公開鍵退避
mv authorized_keys ../

以上、仕様によって「すぐに立ち上げ」というわけには行きませんでしたが、クラウドでUbuntu24.04サーバを立ち上げることができました。

ベースデッキ、ベースアップ。(統率者メモ:2024/09/01)

このデッキの改良案が何か無いかと思っていたところ、

ちょうどうってつけの記事を見つけました。

https://note.com/96sun/n/nfa072deb2bd2

こちらをほぼコピーしつつ、自分の手持ちのコンボパーツと合わせました。

統率者

  • 根花のヘイゼル/Hazel of the Rootbloom

デッキ

クリーチャー

  • マリオネットの見習い/Marionette Apprentice
  • ズーラポートの殺し屋/Zulaport Cutthroat
  • ネイディアの夜刃/Nadier's Nightblade
  • 悲哀の徘徊者/Woe Strider
  • 巣穴の魂商人/Warren Soultrader
  • さえずる魔女/Chittering Witch
  • ヘイゼルの醸造主/Hazel's Brewmaster
  • 強欲な果食動物/Insatiable Frugivore
  • 無慈悲な略奪者/Pitiless Plunderer
  • 無情な屍技術師/Ruthless Technomancer
  • 溜め込む親玉/Hoarding Broodlord
  • 金のガチョウ/Gilded Goose
  • 茨越えの餌あさり/Thornvault Forager
  • 献身のドルイド/Devoted Druid
  • ペレグリン・トゥック/Peregrin Took
  • 不屈の補給兵/Tireless Provisioner
  • リスの小走り/Scurry of Squirrels
  • リスの将軍、サワギバ/Chatterfang, Squirrel General
  • 秘密を知るもの、トスキ/Toski, Bearer of Secrets
  • 永久の証人/Timeless Witness
  • 深き森の隠遁者/Deep Forest Hermit
  • 貪欲なるリス/Ravenous Squirrel
  • 蔦刈りの導師/Vinereap Mentor
  • 種選奴、カメリア/Camellia, the Seedmiser
  • 抜け目ない狩人/Savvy Hunter
  • 甘歯村の断罪人、グレタ/Greta, Sweettooth Scourge
  • どっきりドングリ団/The Odd Acorn Gang
  • リスの巣の守り手/Drey Keeper
  • ベレドロス・ウィザーブルーム/Beledros Witherbloom
  • 歩行バリスタ/Walking Ballista
  • アカデミーの整備士/Academy Manufactor
  • カルドーサの鍛冶場主/Kuldotha Forgemaster
  • マイアの戦闘球/Myr Battlesphere

インスタント

  • 命取りの論争/Deadly Dispute
  • 切断マジック/Saw in Half
  • 新緑の命令/Verdant Command
  • 蓄え放題/Cache Grab
  • ウィンドグレイスの裁き/Windgrace's Judgment

ソーサリー

  • リスのお喋り/Chatter of the Squirrel
  • 根鋳造の弟子入り/Rootcast Apprenticeship
  • 群がり庭の虐殺/Swarmyard Massacre
  • 大渦の脈動/Maelstrom Pulse
  • 戦争の犠牲/Casualties of War

エンチャント

  • アクロゾズの約定/Promise of Aclazotz
  • 想起の拠点/Bastion of Remembrance
  • 美食家の才能/Gourmand's Talent
  • パンくずの道標/Trail of Crumbs
  • 獣使いの昇天/Beastmaster Ascension
  • 殺しのサービス/Killer Service
  • 似通った生命/Parallel Lives

アーティファクト

  • 太陽の指輪/Sol Ring
  • 恐竜の遺伝子/Dino DNA
  • 頭蓋骨絞め/Skullclamp
  • 秘儀の印鑑/Arcane Signet
  • 反発のタリスマン/Talisman of Resilience
  • ゴルガリの印鑑/Golgari Signet
  • 忘却の偶像/Idol of Oblivion
  • アシュノッドの供犠台/Ashnod's Altar
  • ミミックの大桶/Mimic Vat
  • ヌカコーラ自動販売機/Nuka-Cola Vending Machine
  • 仮面林の結節点/Maskwood Nexus
  • 前兆の時計/Clock of Omens
  • 囀り吐き/Chitterspitter

プレインズウォーカー

  • 呪われた狩人、ガラク/Garruk, Cursed Huntsman

土地

  • 8:沼/Swamp
  • 8:森/Forest
  • ボジューカの沼/Bojuka Bog
  • 平穏な茂み/Tranquil Thicket
  • 草むした墓/Overgrown Tomb
  • ゴルガリの腐敗農場/Golgari Rot Farm
  • 憑依されたぬかるみ/Haunted Mire
  • ジャングルのうろ穴/Jungle Hollow
  • ラノワールの荒原/Llanowar Wastes
  • 屍花の交錯/Necroblossom Snarl
  • 汚れた森/Tainted Wood
  • 疾病の神殿/Temple of Malady
  • 黄昏のぬかるみ/Twilight Mire
  • 森林の墓地/Woodland Cemetery
  • 緑ばんだ沼/Viridescent Bog
  • 統率の塔/Command Tower
  • 風変わりな果樹園/Exotic Orchard
  • 祖先の道/Path of Ancestry
  • 不気味な辺境林/Grim Backwoods
  • 群がりの庭/Swarmyard
  • 新緑の地下墓地/Verdant Catacombs

太字のところが自分が入れたカード。

  • ヘイゼルの醸造主/Hazel's Brewmaster & 献身のドルイド/Devoted Druid
  • ヌカコーラ自動販売機/Nuka-Cola Vending Machine & ペレグリン・トゥック/Peregrin Took

    あたりの無限を仕込んでいます。

他にも前兆の時計/Clock of Omensとカルドーサの鍛冶場主/Kuldotha Forgemasterなどの展開コンボ。

デッキの動きを見る度に楽しいので、これは鍛えがいがあります。

ViewCustomizeによるガントチャートの修正

RedmineのViewCustomizeはいじりがいがあるプラグインです。

今回もまたちょっとした要望に応えるユースケースとなりました。

やりたいこと

攻略情報をRedmineのチケットとして載せています。

https://atelier.reisalin.com/projects/ryza3/issues/gantt

この、「アトリエ-全般」やチケットNo.が視認性を悪くしているので、これの表示を変えます。

具体的には

トラッカー名-チケット番号-チケットの件名

を、

チケットの件名-トラッカー名-チケット番号

に変える形です。

環境

  • Redmine 4.2
  • View_Customizeプラグインが入っていること

手順

※ 参考:Redmine View Customizeサンプルスクリプト:ガントチャートでトラッカー名・チケット番号を非表示にする

  1. Redmineの管理画面にログインします。
  2. 「管理」 > 「表示のカスタマイズ」に移動します。
  3. 「新しい表示のカスタマイズ」をクリックします。

以下の通り設定します。

  • 「パスのパターン」: /issues/gantt
  • 「プロジェクトのパターン」:空白
  • 「挿入位置
  • 「種別」:JavaScript
  • コード
$(function() {
$('div.issue-subject span').each(function() {
var $this = $(this);
var issue_link = $this.find('a.issue');
var issue_number = issue_link.text().trim();
var issue_title = $this.clone().children().remove().end().text().trim();
var new_html = issue_title + ' ' + issue_number;
// 新しいHTMLを設定
$this.html(new_html);
// リンクを再設定
$this.wrapInner('<a href="' + issue_link.attr('href') + '"></a>');
});
});
  • コメント:ガントチャートの並び順を変える
  • 有効:チェック
  • プライベート:チェックを外す

設定後、保存します。

修正確認

上記の設定を行ったプロジェクトのガントチャートを確認します。

このように、並び順が変われば設定OKです。

弁当の時短と彩り。

日々の弁当は作りやすさと盛り付けのしやすさ、時間を加味して

  • ごはん(ふりかけや海苔含む)
  • メインのおかず
  • 副菜
  • 卵焼き

に抑えています。ここで時間を詰められるのが副菜。

ふとしたことで作った副菜が割とよかったのでメモしておきます。

ピーマンとトウモロコシのベーコン炒め

材料

  • ピーマン 1袋
  • トウモロコシの缶詰1缶
  • 刻みベーコンひとつかみ
  • 調味料

手順

  1. フライパンに油を引きます。
  2. その上に洗ったピーマンを適当な大きさにちぎっていきます。
    • 種もヘタもまるごと入れていきます。
    • これで時短を図ります。
    • 気になるという方は取り除いておきます。
  3. 火にかけて炒めていきます。
  4. ピーマンがしんなりしてきたらトウモロコシ、ベーコンを入れて更に炒めます。
  5. 調味料で味付けします。このとき自分が使ったのはこんな感じです。
    • 味覇
    • ショウガ
    • 醤油
  6. 味が行き渡ったら完成。

と、材料の時点でカットされているベーコンを使い、ピーマンはまるごと、そのままちぎって入れることで時間の短縮を図りました。(気にならなければ、ですが)

こうしてできたのがこんな形です。ピーマンと油の相性がよく、いい感じの箸休めとなりました。

Nextcloud Ver.29.05(?)でのうれしい改良点。

バージョンアップしたNextcloudに、ある意味で待っていた機能が改善されました。

見出しのマルチバイト対応。

なぜか、今まで、

# で見出しタグを指定した後に文字を入力しようとすると日本語で文字が入力できないというかなり厳しい事象がありました。

そのため、Markdwonの文書の書き出しは

  • テキストエディタでMarkdwon直打ち
  • ローカル環境のGrowiをコピペする
  • その上で、一度、Redmineのチケットにする

ぐらいしか手はありませんでしたですが、今回(かは不明ですが)のバージョンアップによって

このように、見出しの後にそのまま日本語入力ができます。

「オンラインで気兼ねなくメモを取れる」環境がほしかったので、これは大きな改善。

モバイルアプリなどを利用してのメモ書きの効率化も図れそうです。

Nextcloud 29.05のバグをパッチ適用で修正。

Nextcloudのバージョンを29.05に上げたところ、以下のメッセージが出てきました。

One or more mimetype migrations are available. Occasionally new mimetypes are added to better handle certain file types. Migrating the mimetypes take a long time on larger instances so this is not done automatically during upgrades. Use the command occ maintenance:repair --include-expensive to perform the migrations.

「1つ以上のMIMEタイプの移行が利用可能です。特定のファイルタイプをより適切に処理するために、新しいMIMEタイプが追加されることがあります。大規模なインスタンスではMIMEタイプの移行に時間がかかるため、アップグレード時に自動的には行われません。移行を実行するには、occ maintenance:repair --include-expensiveコマンドを使用してください。」

とあるので、この警告に対処していきます。

自環境

  • Ubuntu 20.04
  • PHP 8.1
  • Apache 2.4
    • (www-dataとして実行)
  • Nextcloudを29.04→29.05にアップデート直後

1回目の手順:occ実行 → 失敗

Nextcloudがインストールされているサーバにログインしての作業です。

ディレクトリに移動します。

cd /var/www/html/nextcloud && pwd

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

occコマンドを実行します。 → 失敗

sudo -u www-data php occ maintenance:repair --include-expensive

Nextcloudの実行ユーザー(www-data)を付与した上でoccを実行します。

ですが、以下のエラーが出てきて問題は解決しませんでした。

WARNING: Failed to create filecache trigger (compatibility mode will be used): An exception occurred while executing a query: SQLSTATE[HY000]: General error: 1419 You do not have the SUPER privilege and binary logging is enabled (you might want to use the less safe log_bin_trust_function_creators variable)
- exiftool binary is configured: /var/www/html/nextcloud/apps/memories/bin-ext/exiftool-amd64-glibc
- go-vod binary is configured: /var/www/html/nextcloud/apps/memories/bin-ext/go-vod-amd64
- WARNING: ffmpeg binary could not be configured

調査の結果、バグと判明

そこで、このエラーメッセージで探したところ、そのものズバリのバグが報告されていました。

[Bug]: Warning: One or more mimetype migrations are available #47359

どうやら、RepairMimeTypes.phpファイルがver29.0.5を正しく読んでいないようです。

そこで、改めての対処です。

2回目の手順:パッチ作成と適用 → ○

パッチファイルを作成します。

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

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

  • 修正前のファイルをバックアップ
sudo cp -pi /var/www/html/nextcloud/lib/private/Repair/RepairMimeTypes.php /hoge/RepairMimeTypes.php.$(date +%Y%m%d)

Nextcloudのルートディレクトリ (自分の環境に合わせます)から作業ディレクトリにコピーします。

  • 修正されたファイルを取得
wget https://raw.githubusercontent.com/nextcloud/server/stable29/lib/private/Repair/RepairMimeTypes.php -O RepairMimeTypes.php.fixed
  • パッチを作成
sudo -u www-data diff -u /var/www/html/nextcloud/lib/private/Repair/RepairMimeTypes.php RepairMimeTypes.php.fixed > RepairMimeTypes.patch
  • 作成したファイルの確認
cat RepairMimeTypes.patch
--- /var/www/html/nextcloud/lib/private/Repair/RepairMimeTypes.php      2024-08-20 17:56:22.000000000 +0900
+++ RepairMimeTypes.php.fixed   2024-08-26 14:14:11.568462741 +0900
@@ -424,7 +424,7 @@
                        $out->info('Fixed ReStructured Text mime type');
                }

-               if (version_compare($mimeTypeVersion, '30.0.0.0', '<') && $this->introduceExcalidrawType()) {
+               if (version_compare($mimeTypeVersion, '29.0.5.0', '<') && $this->introduceExcalidrawType()) {
                        $out->info('Fixed Excalidraw mime type');
                }

差分(プラスマイナス)が2行のみを確認します。

パッチを適用します。

  • パッチ適用
sudo patch -d /var/www/html/nextcloud/lib/private/Repair  < /hoge/RepairMimeTypes.patch 

/hogeはパッチを作成したディレクトリをフルパスで指定します。

  • 差分確認
sudo -u diff -u /hoge/RepairMimeTypes.php.$(date +%Y%m%d) /var/www/html/nextcloud/lib/private/Repair

以下のような差分を確認します。

-               if (version_compare($mimeTypeVersion, '30.0.0.0', '<') && $this->introduceExcalidrawType()) {
+               if (version_compare($mimeTypeVersion, '29.0.5.0', '<') && $this->introduceExcalidrawType()) {
  • 権限確認
ls -l /var/www/html/nextcloud/lib/private/Repair/RepairMimeTypes.php

念のため、パッチを当てても所有者が変わっていない(www-data)ことを確認します。

改めてoccを実行し、Webサービス再起動の上で修正を確認します。

ディレクトリに移動します。

cd /var/www/html/nextcloud && pwd

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

occコマンドを実行します。 → 成功

sudo -u www-data php occ maintenance:repair --include-expensive

今度は通ります。

  • Webサービス(apahce)再起動
sudo systemctl restart apache2.service
  • 再起動後のステータス確認
systemctl status apache2.service

active(running)を確認します。

  • 事象の解消を確認
  1. 作業を行ったサーバで稼働するNextcloudに管理者権限でログインします。
  2. 管理者メニューで以下の通りWarningが解消されていることを確認します。

ufwの過剰設定によるサーバの暴走とufwの設定リセット。

「やらかしてしまった」メモです。

起こしてしまったこと

事象

aws lightsailで動かしているUbuntu20.04サーバにアクセスできない事象が発生しました。

Webサイトはもちろん、sshにもつながりません。

確認と一時対処。

awsの管理画面にログインしてリソース状況を確認したら、CPUがバースト。いわゆる暴走状態なのでこの状態を止めます。

「停止」→「起動」を選択。(再起動では完全に暴走が止まりませんでした)

それから程なくしてssh接続ができるまでは回復。ですが、

netstat -lntp

を実行してもWebサービスがリッスンしていません。

systemctl status apache2.service

でサービスは動いていることを確認。状態を確認できたところで原因を特定します。

事象発生前に何をしていたか?

バーストが発生しているサーバで、ufwの作業をしていました。これ以外に設定は特にやっていないので、ほぼおおそらくこれが問題だろうと判断。

取り急ぎ、

sudo ufw disable

を行い

サイトが見られることを確認しました。判断するに

  • ルールの数を増やしすぎて処理性能が追いつかなくなった。
  • 増やしたルールがコンフリクトやループを起こしハングアップ。

等でバースト、暴走したと考えられます。

不審なアクセスを無計画に弾いていたことが徒になった形です。

対処

ufwの強制リセットと最小限の設定

ufwが原因だと特定したものの、サーバ内のFWが有効化されていないのは危険です。そこで、以下のようにして設定を強制リセットしました。

  • 設定の強制リセット
sudo ufw --force reset
  • sshとweb通信のみを有効化
sudo ufw limit proto tcp from any to any port 22
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
  • 設定反映
sudo ufw enable

設定確認

  • ステータス確認
sudo ufw status
状態: アクティブ

To                         Action      From
--                         ------      ----
22/tcp                     LIMIT       Anywhere                  
80/tcp                     ALLOW       Anywhere                  
443/tcp                    ALLOW       Anywhere                  

を確認しました。

  • 通信確認
  1. ssh接続ができること
  2. このサーバで稼働しているWebサイトが見られること

を確認し、対処完了です。

本件の教訓

「FWをいじるだけだから、特に作業履歴をやらなくてもいいだろう」という慢心から起きたものでした。

個人で運営しているサーバだったことに救われた形です。

また、この程度の作業ということで、システム全体のバックアップを取らなかったことも冷や水でした。

  • 自分の作業によって起きる影響
  • ufwの効率的な管理
  • 作業前のバックアップ確認

といった基本的な運用の管理への意識を改める自戒の出来事でした。

Page 9 of 237

Powered by WordPress & Theme by Anders Norén