カテゴリー: ガジェット Page 2 of 42

GrowiとGmailの連携。

Wiki + Markdownが軽快で新たなツールとなったGrowi。

Gmailでメール送信ができるように設定しました。

前提

Growiは構築済みです。

こちらを元に、Gmailアカウントの設定から、アプリパスワードを発行します。

手順

すべてブラウザ上で行います。また、管理者権限でログインします。

メールの設定画面に遷移します。

管理画面>アプリ設定>メールの設定までs樹住みます。

設定を変更します。

以下の通り変更、入力します。

  • Fromアドレス:任意のアドレスを入力
  • 送信方法:SMTP
  • ホスト:smtp.gmail.com
  • ポート:587
  • ユーザー:Gmailアカウント
  • パスワード:設定したアプリパスワード

設定後、「更新」をクリックします。

メール送信を確認します。

更新後、「テストメールを送信」をクリックし、

こちらのようなメールを受信すれば設定完了です。

戻ってきた思考回路。

とはいえ、当面は文章量は少なめです。

1週間ぶりぐらいのガイアプロジェクト

平熱に戻りつつあり、喉の痛みも減ってきたのでiPadで広げましたガイアプロジェクト。

最初のゲームは感が鈍っていて、ダー・朱ワームでも130点程度。

その後、気を取り直して上級技術タイル2枚取りで179点まで行った次第。

毎日やってたゲームの存在を忘れていたのも、思考が鈍っていたのも相当な驚きでした。

療養時の“ロギング”。

本来、別の用途で作っていたこれがはからずも役立ちました。

外部からつながるredmine

上述したredmine、

スケジュールの他に「プロジェクト」に分け、様々なことを記録。Webアクセスできる環境ならばメモができる仕組みを整えていたのが幸いしました。

記録

ここに、以下のようにして、今回の療養について記録をしています。

日毎のチケット

「2022/07/11の記録」といったようにチケットを発行し、

  • 体温測定の記録
  • 食べたもの
  • 体調/症状
  • その他特記事項

を記していくという次第。

これなら、後で検索を行えますし、症状の改善/悪化を追うことができます。

なにより、この「療養」も立派なプロジェクトの一つ。成功と完遂を祈るばかりです。

メモ帳、追加。(UbuntuにGrowi導入)

以前、Dockerでいじっていたツールが思いの外有用そうだったので、オンプレ環境で作りました。

導入:Growi

いわゆるナレッジベースツールです。すでに

すでにknowledgeベースは入れているものの

  • 階層化でWikiを作ってくれる
  • エディタ周りが高機能
  • 日々の記録に便利そう

ということで、早速入れてみます。

インストールした環境

  • Chuwi Herobox Pro

既に以下の環境を導入済み

  • Linux 20.04
  • Apache
  • MySQL
  • Zabbix
  • WebアルバムLychee

参考にした記事:
https://qiita.com/BigTree777/items/4a67d36c4111a1fb50e7

手順

Node.jsをインストールします。

cd /hoge/
curl -sL https://deb.nodesource.com/setup_14.x -o nodesource_setup.sh
sudo bash nodesource_setup.sh
sudo apt install nodejs

npmを用いてyarnをインストールします。

sudo npm install -g yarn

Elasticsearchのインストール

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg
sudo apt-get install apt-transport-https
echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-7.x.list
sudo apt-get update && sudo apt-get install elasticsearch

Elasticsearchのメモリ変更

sudo vi /etc/elasticsearch/jvm.options
設定ファイル
# 任意の行に以下を追加
-Xms256m
-Xmx256m

ElasticSearchの自動起動有効化

sudo su -
systemctl start elasticsearch
systemctl enable elasticsearch

GROWIに必要なプラグインのインストール

sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-kuromoji
sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-icu

MongoDBのインストール

wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list
sudo apt update
sudo apt install -y mongodb-org=4.4.13 mongodb-org-server=4.4.13 mongodb-org-shell=4.4.13 mongodb-org-mongos=4.4.13 mongodb-org-tools=4.4.13

MongoDBのバージョン固定

※これをやらないと全文検索がうまくいかないとのこと

echo "mongodb-org hold" | sudo dpkg --set-selections
echo "mongodb-org-server hold" | sudo dpkg --set-selections
echo "mongodb-org-shell hold" | sudo dpkg --set-selections
echo "mongodb-org-mongos hold" | sudo dpkg --set-selections
echo "mongodb-org-tools hold" | sudo dpkg --set-selections

GROWIのインストール

sudo git clone https://github.com/weseek/growi /opt/growi
cd /opt/growi

sudo git checkout -b v5.0.5 refs/tags/v5.0.5
sudo yarn

以降、参考にした記事:
https://qiita.com/hawk777/items/0916024c1bd7b24904ae

systemdスクリプトの作成

sudo vi /etc/systemd/system/growi.service
スクリプト内容
[Unit]
Description = growi
After=network-online.target mongod.service
ConditionPathExists=/opt/growi

[Service]
ExecStart=/opt/growi/growi-start.sh
Restart=no
Type=simple

[Install]
WantedBy=multi-user.target
chown root:root /etc/systemd/system/growi.service
chmod 644 /etc/systemd/system/growi.service

起動スクリプトの作成

sudo vi /opt/growi/growi-start.sh
スクリプト内容
#!/bin/sh
cd /opt/growi
MONGO_URI=mongodb://localhost:27017/growi \
ELASTICSEARCH_URI=http://localhost:9200/growi \
MATHJAX=1 \
PASSWORD_SEED=[任意の文字列] \
npm start

権限変更

sudo chmod +x /opt/growi/growi-start.sh

デーモン化、起動確認

sudo systemctl daemon-reload
sudo systemctl start growi.service
sudo systemctl status growi.service

※起動するまで5分ぐらいかかりました。

起動後、http://[アドレス]:3000

でログインできました。

2022年上半期、買ったもの。

2022年もいよいよ折り返し。

今年は結構大きめの買い物がありました。

OLYMPUS E-P7

「オリンパスのカメラを手に虹を撮る」初夢がきっかけで以前使っていたカメラを引っ張り出したら「このレンズの魅力は引き出せる」思い、カメラも新調。

  • 多彩なフィルター
  • 圧倒的な軽さ

と、街歩きにもってこいなカメラです。

iPad mini 6 & Apple Pencil

これはリプレースしたもの。特にApple Pencilは「側面につければそのまま充電」により、運用がとても楽になりました。

また、大容量ストレージにより電子書籍閲覧も快適です。

Chuwi Herobox

こちらは「新たなインフラ基盤」です。redmineによるスケジュール管理や各種データの保存がとても便利だったので専用機を導入。

  • コンパクトで
  • ディスプレイの裏にマウントでき
  • ファンレスの静音設計

と、家庭内サーバに求められる機能を全て持っていて、

  • Redmine
  • ローカルDNS
  • Webアルバム
  • Zabbix

を入れて自宅内のサーバ機能が充実しました。

Chromebook Duet 560

こちらは今月。

こちらは店頭で見かけて即買ったというもの。キックスタンド型やらmicroSDスロットがついてないなど、自分が最初にChromebookを買ったときの要件から外れていましたけれど

  • 8GB / 256GBの高性能
  • 臨場感たっぷりのサウンド
  • 視野角が広くベゼルが狭いために没入感たっぷり

と、出先でのエンタメにもジウうに分な活躍を見せています。

と、以上4つ。下半期もどんなガジェットに会えるのやら。

万年筆『ライティブ』セカンドインプレッション。

こちらの記事の続きとなります。

ライティブ・買い増し

一週間とたたずにもう一本。こちら、相当な魅力にあふれていました。

使ってよかったと思ったところ

長さと軽さの絶妙なバランス

軸が長いのにコンバータを入れても軽く、スッと書けます。細かい字を書いても振り回されるということがなかったです。

線の書きやすさ

これが一番驚いたところ。ノートの隙間を有効活用するため、ページを半分折って線を引いているのですが、ボールペンのような滑りで最初から最後まで滲むことなく引けます。

今まで、線を引くときにはボールペンを使っていたので、これはアルシュの革命と言えます。

ちょっと残念だったところ

クリップの硬さ

ペンホルダーに収める際、ペンクリップの隙間がややきつく、入れるのに難儀したのがちょっとした難点。

シールキャップの音

これは完全に好みの問題です。ライティブはプレピーと同じく、(安価なモデルでありながら)インクの乾燥を防ぐためのシールキャップを搭載しています。

この「パチン」とはめるときの音が少しパッとしないのが少々。

今の所の結論

  • 比較的安価
  • 大容量コンバータ対応
  • 書きやすく
  • 取り回ししやすく
  • なめらかに書ける

いい万年筆です。

特に、インクを買いましている自分にとって「比較的手に入れやすい価格で書きやすい」モデルはうってつけです。

ミニチュアとペンスタンド。-百均グッズの撮影用小物(その15)-

ミニ一斗缶

百均で新たに購入したのはこちらです。

ダウンサイジングした一斗缶。しっかりと「オリーブオイル」のラベルまで貼られています。これをさっそくこう使いました。

ペンスタンド

深さ、大きさがペンスタンドにピッタリ。しかも、適度な重さがあるので倒れにくいのもナイス。

撮影

と、このように、いつものフィギュア撮影に添えてもマッチします。

百均グッズ、思わぬところで思わぬ使い道があるのが素敵です。

Mod Securityが検知したIPアドレスの抜き出し。

やりたいこと

Mod Securityを導入してから、不正アクセスがerror.logに現れるようになりました。
そのアドレスをネガティブリストに放り込むことで後続のアクセスをブロックする方法は設定しました。

そこで、

  • 日ごとにerror.logで検知したログを確認し
  • IPアドレスのみを抜き出してリスト化する

設定を行います。

環境

  • Ubuntu 20.04(Linux Mint)
  • Apache 2.4
  • Mod Security

※ログは/var/lib/redmine/log に格納されています。

手順

一般ユーザで実施します。

参考:

https://linux.just4fun.biz/?%E9%80%86%E5%BC%95%E3%81%8DUNIX%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89/%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%8B%E3%82%89IP%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%E3%81%AE%E3%81%BF%E6%8A%BD%E5%87%BA%E3%81%99%E3%82%8B

apacheのerror.logからIPアドレスを抜き出します。

cd /var/lib/redmine/log
cat error.log | awk 'match($0,/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/) { print  substr($0, RSTART, RLENGTH) }'
# IPアドレスのみ表示されることを確認。

IPアドレスを並べ替え、重複を除外します。

cd /var/lib/redmine/log
cat error.log | awk 'match($0,/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/) { print  substr($0, RSTART, RLENGTH) }' | sort | uniq
# 一意のアドレスのみが表示されることを確認。

自動実行するスクリプトを作成します。

cd /hoge/
vi negativelist.sh
スクリプト内容
#!/bin/sh

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

cd /var/lib/redmine/log
cat error.log | awk 'match($0,/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/) { print  substr($0, RSTART, RLENGTH) }' | sort | uniq > /var/lib/redmine/log/suspicious_ip.`date +%Y%m%d`

スクリプトに実行権限を付与します。

chmod +x negativelist.sh

日ごとに実行されるように設定します。

sudo su -
crontab -u www-data -e
# redmineのログプラグインで閲覧できるよう、apache実行ユーザのcronを編集します
cron内容
0 8 * * * /hoge/negativelist.sh

これで、「Mod Securityが不正アクセスと見なしたIPアドレスを日ごとに抜き出す」仕組みが整いました。

(シェルスクリプトで指定したディレクトリ内に、suspicious_ip.yyyymmdd というファイルが作成されます。
 また、/var/lib/redmine/log 配下に置くことで、redmineのログプラグインで表示することができます。)

直接ネガティブリストに追記しないのは、偽陽性で自分自身がブロックされるのを防ぐためです。

Mod SecurityによるIPアドレスブロック。(ネガティブリスト型)

攻撃の兆候

Mod Securityを導入して一昼夜――

公表していないURLであるにも関わらず、しっかりと攻撃の予兆がログに現れました。

※この方法で、サーバにアクセスすることなく、redmineへのログを一元管理しています。

この、不正アクセスの予兆を示したアクセス元を調べると

Torから来ている望ましくないものまであり、昨今の驚異を嫌でも感じずにいられません。

そこで、Apacheの設定ファイルではなくMod Securityの機能を用いてIPアドレスを遮断していきます。

参考:

Apache×Mod SecurityでカンタンWAF構築

https://qiita.com/m0nch1/items/ac7255399366fb113a82

環境

  • Ubuntu 20.o4 (Linux Mintでも同様)
  • Apache 2.4
  • Mod Security導入済み

手順

すべて管理者権限で実施しています。

バーチャルファイル編集

vi /etc/apache2/sites-available/VIRTUALHOST.conf
# 使っているバーチャルファイルに読み替えます
追記内容
## Negativelist
SecRule REMOTE_ADDR "@pmFromFile negativelist.txt" "phase:1,id:2,deny,msg:'Negativelisted IP address'"

ネガティブリスト作成

vi /etc/etc/apache2/sites-available/negativelist.txt
ネガティブリストの内容
XXX.XXX.XXX.XXX
YYY.YYY.YYY.YYY
#ブロックしたいIPアドレスを記入していきます
# 設定確認のため、自分自身のアクセス元を記入しました

ネガティブリスト反映

cd /etc/apache2/site-enabled
ln -s ../sites-available/negativelist.txt negativelist.txt
# 設定ファイルの位置を明示していないのでシンボリックリンクを張ります

設定変更

apache2ctl configtest
#Syntax OK を確認します
systemctl restart apache2

設定確認

上記手順で、「自分自身をブロックする」設定を入れ、redmineにアクセスして「403」が返ってくることとエラーログにその旨が記録されていることを確認。(その後、このアドレスは削除しています)

今後の展望

  • 不正アクセスを検知したらそのIPアドレスを自動的に追記する
  • 数が増え続けるため、いっそのことポジティブリストに切り替える

などが必要になってきます。

Apache + redmine環境にMod Security導入。

インターネット環境に構築したredmineに不正アクセスが飛んでくるというエントリーを投稿したところ、

「Mod Security導入も一つの手」

というコメントをいただき、早速導入することにしました。

環境

  • Ubuntu 20.04 (Linux Mintでも動作確認済み)
  • Apache 2.4

参考

インストール方法

全て管理者権限で実施しました。

システム全体のアップグレード

aptitude update
aptitude upgrade

Ubuntu 20.04にMod Securityをインストールします。

aptitude install libapache2-mod-security2
systemctl restart apache2

ModSecurity 設定ファイル/ディレクトリをコピーしていきます。

cp -pi /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf
cd /tmp
git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git
cd /owasp-modsecurity-crs
cp -pi crs-setup.conf.example /etc/modsecurity/crs-setup.conf
cp -pir rules/ /etc/modsecurity/

ModSecurityの設定を行います。

vi /etc/apache2/mods-available/security2.conf
設定ファイル内容
<IfModule security2_module>
   # Default Debian dir for modsecurity's persistent data
   SecDataDir /var/cache/modsecurity

   # Include all the *.conf files in /etc/modsecurity.
   # Keeping your local configuration in that directory
   # will allow for an easy upgrade of THIS file and
   # make your life easier
   IncludeOptional /etc/modsecurity/*.conf
   Include /etc/modsecurity/rules/*.conf
</IfModule>

設定反映

systemctl restart apache2

redmine設定ファイル修正

vi /etc/apache2/sites-available/VIRTUALHOST.conf
# 各自のバーチャルホストファイルに読み替えます
追記内容
# Mod Security
SecRuleEngine On
## ModSecurity有効化
SecRequestBodyInMemoryLimit 524288000
SecRequestBodyLimit 524288000
## ファイルのアップロードをできるようにします。
SecRuleRemoveById 949110
SecRuleRemoveById 941310
SecRuleRemoveById 980130
SecRuleRemoveById 911100
SecRuleRemoveById 200002
SecRuleRemoveById 200003
## 上記を無効化しないとチケット更新時にエラーとなりました(偽陽性)ため、上記ルールを除外します。
    SecRule ARGS:modsecparam "@contains test" "id:4321,deny,status:403,msg:'ModSecurity test rule has triggered'"
## テスト用の検知パラメータを付け加えます。

設定反映

systemctl restart apache2

設定確認

ブラウザから

http://your-site-domain/redmine/?modsecparam=test

にアクセスし、「Forbidden」が表示されることを確認します。

また、

  • チケットの更新ができること
  • ファイルのアップロードができること

をそれぞれ確認しました。

Page 2 of 42

Powered by WordPress & Theme by Anders Norén