概要
本記事は、
に改訂版を書いたため削除しました。
場合に必要な措置となる、NW保護を行います。
sudo ufw limit proto tcp from any to any port 22
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
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接続を行い、通信できるかを確認します。
sudo reboot
再起動後、SSH接続ができることを確認します。
sudo ufw status
上記、許可された設定が有効になっていることを確認します。
sudo aptitude update && sudo aptitude install fail2ban
systemctl status fail2ban.service
active(running)を確認します。
教義と進行に沿ったエディタを用いて/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アドレス)を指定ください。スペース区切りで複数指定できます。
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アドレスがブロックされていました。
vpsを利用して立ち上げたUbuntu 24.04。
まずは2024年7月に発生した脆弱性に対応させます。
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
ssh -V
OpenSSH_9.6p1 Ubuntu-3ubuntu13.5, OpenSSL 3.0.13 30 Jan 2024
脆弱性に対応していないバージョンだったので、まずはここから対応します。
※脆弱性対応のため、切り戻しは一切考慮しません。※
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
ソースコードからコンパイルしてインストールするため、この作業は全て管理者権限で実行します。
sudo su -
cd /hoge && pwd
任意のディレクトリ名を指定します。
git clone https://github.com/openssl/openssl -b openssl-3.3.1
2024/09/01現在の最新版を指定します。
cd openssl && pwd
./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 test
これも時間がかかります。
make install
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 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に変わります。
その後のシステムアップグレードでパスなどが変わるのを防ぎます。
sudo apt-mark hold openssl
sudo aptitude hold openssl
reboot
再起動すると同時に、rootから抜けます。
むしろここからが本番。CVE-2024-6378の致命的な脆弱性の対応を行います。
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.8p1.tar.gz
tar -xvzf openssh-9.8p1.tar.gz
cd openssh && pwd
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
sudo make install
ターミナルクライアントソフトは開いたまま、新たなウィンドウで開き、ログインできることを確認します。
ssh -V
OpenSSH_9.8p1, OpenSSL 3.3.1 4 Jun 2024
これで、SSH接続の脆弱性に対応。一番の危険は去りました。
ちょうどうってつけの記事を見つけました。
https://note.com/96sun/n/nfa072deb2bd2
こちらをほぼコピーしつつ、自分の手持ちのコンボパーツと合わせました。
太字のところが自分が入れたカード。
他にも前兆の時計/Clock of Omensとカルドーサの鍛冶場主/Kuldotha Forgemasterなどの展開コンボ。
デッキの動きを見る度に楽しいので、これは鍛えがいがあります。
RedmineのViewCustomizeはいじりがいがあるプラグインです。
今回もまたちょっとした要望に応えるユースケースとなりました。
攻略情報をRedmineのチケットとして載せています。
https://atelier.reisalin.com/projects/ryza3/issues/gantt

この、「アトリエ-全般」やチケットNo.が視認性を悪くしているので、これの表示を変えます。
具体的には
トラッカー名-チケット番号-チケットの件名
を、
チケットの件名-トラッカー名-チケット番号
に変える形です。
※ 参考:Redmine View Customizeサンプルスクリプト:ガントチャートでトラッカー名・チケット番号を非表示にする
以下の通り設定します。
$(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です。
日々の弁当は作りやすさと盛り付けのしやすさ、時間を加味して
に抑えています。ここで時間を詰められるのが副菜。
ふとしたことで作った副菜が割とよかったのでメモしておきます。

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

こうしてできたのがこんな形です。ピーマンと油の相性がよく、いい感じの箸休めとなりました。
バージョンアップしたNextcloudに、ある意味で待っていた機能が改善されました。
なぜか、今まで、
# で見出しタグを指定した後に文字を入力しようとすると日本語で文字が入力できないというかなり厳しい事象がありました。
そのため、Markdwonの文書の書き出しは
ぐらいしか手はありませんでしたですが、今回(かは不明ですが)のバージョンアップによって

このように、見出しの後にそのまま日本語入力ができます。
「オンラインで気兼ねなくメモを取れる」環境がほしかったので、これは大きな改善。
モバイルアプリなどを利用してのメモ書きの効率化も図れそうです。
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-expensiveto perform the migrations.「1つ以上のMIMEタイプの移行が利用可能です。特定のファイルタイプをより適切に処理するために、新しいMIMEタイプが追加されることがあります。大規模なインスタンスではMIMEタイプの移行に時間がかかるため、アップグレード時に自動的には行われません。移行を実行するには、occ maintenance:repair --include-expensiveコマンドを使用してください。」
とあるので、この警告に対処していきます。
Nextcloudがインストールされているサーバにログインしての作業です。
cd /var/www/html/nextcloud && pwd
自分の環境に合わせます。
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を正しく読んでいないようです。
そこで、改めての対処です。
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)ことを確認します。
cd /var/www/html/nextcloud && pwd
自分の環境に合わせます。
sudo -u www-data php occ maintenance:repair --include-expensive
今度は通ります。
sudo systemctl restart apache2.service
systemctl status apache2.service
active(running)を確認します。

Powered by WordPress & Theme by Anders Norén