投稿者: manualmaton Page 116 of 277

mod_securityで検知したIPの自動遮断。

ここから更に改良を加えました。

やりたいこと

  • 上記抜き出したIPアドレスのリストを日々統合する。
  • 自動的にmod_securityのnegativeリストに入れる。
  • その上で普段アクセスしているIPアドレスを除外して偽陽性から逃れる。

前提

以下を導入済みです。

  • Mod_security
  • Apache 2.4.1
  • Redmine 4.2
  • ログの格納先は /var/lib/redmine/log/

手順

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

ログを格納するディレクトリを作成します。

mkdir /var/lib/redmine/log/suspicious_ip

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

cd /hoge/
vi negativelist_add.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/suspicious_ip.`date +%Y%m%d`
chown www-data:www-data /var/lib/redmine/log/suspicious_ip/suspicious_ip.`date +%Y%m%d`
cat /var/lib/redmine/log/suspicious_ip/suspicious_ip.2* |sort |uniq > /var/lib/redmine/log/suspicious_ip_all.txt
cat suspicious_ip_all.txt > /etc/apache2/sites-available/negativelist.txt
chown www-data:www-data suspicious_ip_all.txt
sed -i  /除外したいIPアドレス/d /etc/apache2/sites-available/negativelist.txt

スクリプトに実行権限を設定します。

chmod +x negativelist_add.sh

Apacheの設定ファイルを編集します。

ここでは/etc/apache2/sites-available/redmine-le-ssl.conf にコンフィグを作成済みです。

cd /etc/apache2/sites-available
cp -pi redmine-le-ssl.conf redmine-le-ssl.conf.bak
vi redmine-le-ssl.conf
設定ファイル内容
<VirtualHost _default_:80>
servername [redmineのドメイン名]
 RewriteEngine On
        RewriteCond %{HTTPS} off
        RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</VirtualHost>
<VirtualHost _default_:443>
servername [redmineのドメイン名]
CustomLog /var/log/redmine/access.log combined
ErrorLog /var/log/redmine/error.log
Alias /redmine /var/lib/redmine/public

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

## Negativelist
SecRule REMOTE_ADDR "@pmFromFile negativelist.txt" "phase:1,id:2,deny,msg:'Negativelisted IP address'"

# /etc/apache2/sites-available/negativelist.txt に記載されたIPアドレスを自動的に遮断します。

<Location /redmine>
PassengerBaseURI /redmine
PassengerAppRoot /var/lib/redmine
Require all granted
<RequireAll>
    Require all granted
</RequireAll>
</Location>

  SSLEngine on
    Protocols h2 http/1.1
    Header always set Strict-Transport-Security "max-age=63072000"


SSLCertificateFile [let's encryptが指定した証明書ファイルのパス]
SSLCertificateKeyFile [let's encryptが指定した秘密鍵ファイルのパス]

#Include /etc/letsencrypt/options-ssl-apache.conf

        RewriteEngine On
        RewriteCond %{HTTP_HOST} ^samplehoge\.hogehoge
        RewriteRule ^/$ https://samplehoge.hogehoge/redmine/ [R]

</VirtualHost>

SSLProtocol             all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite          ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
SSLHonorCipherOrder     off
SSLSessionTickets       off

SSLUseStapling On
SSLStaplingCache "shmcb:logs/ssl_stapling(32768)"

設定を反映します。

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

crontabで自動実行できるようにします。

crontab -e

追記内容

0 8 * * * /hoge/negativelist.sh

これで、以下の動きができるようになります。

  • アクセスログ(エラーログ)に従ってIPアドレスの抜き出し
  • 重複を抜き出し、その日にアクセスされた不審なIPアドレスを記載する。
  • 蓄積されたIPアドレスを全て統合。重複を抜き出しネガティブリストに上書きする。
  • そこから普段アクセスしているIPアドレスを削除する。

“推し色”と“檸檬”。(丸善コラボLAMY 入手-2-)

昨年から、丸一年経っての出来事です。

ふと思い立ち、丸善の文具コーナーに訪れたら幸運が待っていました。

レモンのチャーム付きLAMY万年筆。

しかも、一番好きなこの明るい緑で彩られています。

昨年のものとは異なり、二つ切りのレモンとまるごとをあしらった形です。

今回のペン先は極細を選びました。

  • 割と気に入っているブランドの
  • 一番好きな色
  • そして書きやすい極細

と、三拍子が揃った道具を入手しました。

Nectcloud recognizeアプリ導入後のOPcacheの設定。

発生した事象

Nextcloudにアップロードされた画像をタグ付けしてくれる「recognize」アプリを使っています。

それを用いて運用したところ、以下のエラーに出くわしました。

発生画面

メニュー > Administration settings > 概要

  • PHP OPcacheモジュールが正しく設定されていません。詳細はドキュメントを参照してください。
    • 「OPcacheのインターン文字列バッファーがまもなく一杯になります。全てのスクリプトをキャッシュに保管できるようにするには、opcahe,interned_strings_bufferの値を8より多い値で、PHP設定に適用することを推奨します。

これを放置していったところ、Webサービスが止まり、SSHにも接続できなくなりました。そのため、以下の対処を施しました。

前提:環境

以下の環境で動いています。

  • Ubuntu 20.04
  • Apache 2.4.54
  • PHP 7.4.32

※snapは使わず、オンプレで構築しました。

また、Opcacheモジュールは設定済みです。

対処

以下、管理者権限で実施しています。

mkdir /etc/old
cd /etc/php/7.4/mods-available
cp -pi opcache.ini /etc/old/opcache.ini.`date +%Y%m%d`
vi opcache.ini
設定内容
opcache.interned_strings_buffer=16
; 8 → 16に修正

設定反映

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

反映確認

メニュー > Administration settings > 概要

へと進みます。

「全てのチェックに合格しました。」

を確認します。

余談:recognizeアプリの注意点

万単位のファイルを既にインポートしたため、画像認識とタグ付けのためにかなりのCPUリソースを消費します。(平均オーバーロードが7を超えるときもありました)
そのため、zabbix等で負荷を監視している場合は認識中は閾値を上げておく等の対処が必要です。

ボドゲと背景。-2-

figmaライザリン・シュタウトの可動性に着目し、「どんなボードゲームと撮影したら映えるだろうか」を考えた結果、積んでいたボードゲームにも着目するようになりました。

ボードゲーム『Newton』

3つのボードをまんべんなく目を配らないとうまく得点が伸びないソロ感強めのボードゲーム。

2年ぶりのプレイともあって、今回はあまり得点が伸びませんでした。

そして、ボードゲームのタイトルとなっている偉大な科学者は錬金術でも名を馳せていたのでこのように収めた次第。

アクアガーデン

水族館のために魚を集めていくゲーム。木駒のカラフルさ豪華さが魅力です。

こちらも10ヶ月ぶりぐらいのプレイです。ソロの規定点である60点ちょうどだったのでホッとしました。

こちらも木駒を抱えられる大きさだったのが素晴らしく。

Ubuntu 20.04にNextcloudをインストール。

Dropboxのようにファイルを保存できて、各種アプリ(プラグイン)で様々な機能を拡張できるOSS、Nextcloudをインストールしました。

このエントリーで行うこと

  1. nextcloud用のphpモジュールを入れる
  2. nextcloudに即したデータベースを入れる
  3. apache設定ファイルを作成する
  4. 設定反映を行い、初期画面を出す。

インストールしたハードウェア

この、2台目のChuwi Herobox Proです。redmineのデータ同期サーバのデータをマウントするために選びました。

前提

以下が導入済みです。

  • Ubuntu 20.04
  • Apache 2.4 (2.4.41)
  • mysql 80 (8.0.30)
  • php 7.4 (7.4.32)
  • nextcloud用のドメインを設定していること
  • サーバ証明書 (Let's Encryptワイルドカードを用いました)

手順

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

phpの追加モジュールをインストールします。

sudo apt install php7.4-{opcache,pdo,bcmath,calendar,ctype,fileinfo,ftp,gd,intl,json,ldap,mbstring,mysqli,posix,readline,sockets,bz2,tokenizer,zip,curl,iconv,phar,xml}

systemctl restart apache2

データベースを作成します。

mysql -u root -p
CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY 'パスワード';
CREATE DATABASE IF NOT EXISTS nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@'localhost';
FLUSH PRIVILEGES;

ファイルをダウンロードして配置します。

導入したサーバは/homeディレクトリを別SSDにマウントしているため、以下のようにしました。

wget https://download.nextcloud.com/server/releases/latest.zip
unzip latest.zip /home/www-data
chown -R www-data:www-data /home/www-data/nextcloud

設定ファイルを作成します。

mkdir /var/log/apache2/nextcloud
chown -R www-data:www-data /var/log/apache2/nextcloud
vi /etc/apache2/sites-available/nextcloud.conf

設定ファイルの内容

<VirtualHost _default_:80>
 ServerName [公開するドメイン名]
 RewriteEngine On
        RewriteCond %{HTTPS} off
        RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
 CustomLog /var/log/apache2/nextcloud/access.log combined
 ErrorLog /var/log/apache2/nextcloud/error.log
</VirtualHost>

<VirtualHost _default_:443>
 ServerName [公開するドメイン名]
 CustomLog /var/log/apache2/nextcloud/ssl_access.log combined
 ErrorLog /var/log/apache2/nextcloud/ssl_error.log
  SSLEngine on
  Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
    SSLProtocol All -SSLv2 -SSLv3  -TLSv1
     SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
    SSLCertificateFile /etc/certs/ssl.crt
    # 証明書のファイルパス
    SSLCertificateKeyFile /etc/private/ssl.key
    # 秘密鍵のファイルパス

    DocumentRoot /home/www-data/nextcloud
    <Directory /home/www-data/nextcloud>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Require all granted
    </Directory>

</VirtualHost>

設定を反映します。

a2ensite nextcloud.conf
apache2ctl configtest
# Syntax ok を確認します
systemctl restart apache2

起動確認

ブラウザから設定したドメインにアクセスします。

アクセス後、ガイドに従い

  • 管理者アカウント
  • パスワード
  • データベース情報

を設定後、以下の画面が出てくれば成功です。

PHPの再インストール。(混在環境の改善)

こちらの続きです。

  • システム内にPHP 7.4と8.1が混在
  • 一部をアップグレード対応しても満足に動かない

パターンがあったので、完全削除を対応しました。

手順

PHPの完全削除

apt-get --purge autoremove php*

これにより、設定ファイルを含めてPHPが削除されました。

PHP7.4インストール

add-apt-repository ppa:ondrej/php
aptitude update
aptitude upgrade

apt install php7.4

apt install php7.4-{opcache,pdo,bcmath,calendar,ctype,fileinfo,ftp,gd,intl,json,ldap,mbstring,mysqli,posix,readline,sockets,bz2,tokenizer,zip,curl,iconv,phar,xml}


設定反映

systemctl restart apache2

その後、正常に上がっていることを確認。

[--purge]オプションで完全に削除するのを失念していました。

宝石“と”煌めき。

5日連続でボードゲーム『宝石の煌めき』のソロバリアントをプレイ。

このゲームのバリアントは

  • セットアップが簡単で
  • 程よい時間に終わり
  • 達成感がすごい

と、かなり理想的なもの。そして、それ以外にもう一つ

「プレイ後のコンポーネントがそのまま背景になる」

利点があります。

特に、

  • 『宝石の煌めき』アップグレードトークン
  • 『宝石がいっぱい!』付属トークン
  • 百均の背景

と組み合わせると、その反射をデジカメのスターライトエフェクトが拾ってくれます。

この反射が「煌めき」を醸し出しているので、もう一度プレイしたくなるという循環を生んでいます。

カードの選択とタイルの集中。(ボードゲーム『宝石の煌めき』ソロバリアント)

今月に入って「平日夜でもテーブルトップ版のボードゲームをプレイできる」ことに気づき、

  • セットアップが楽
  • ソロの強さが丁度いい
  • プレイ後の盤面で写真撮影ができる

ということで『宝石の煌めき』に励んでいます。

最初の盤面

最初がこの形。戦略の軸は

  • サファイアを中心的に
  • その後、オニキスやルビーを取っていき
  • 最終的に貴族2枚

です。このソロバリアントは各宝石トークンが3枚ずつ。故に、「4枚以上あるなら同色2枚」のオプションがありません。(詳しいルールは下記)

その上、対戦相手であるボットはLv.3/Lv.2の発展カードを買えなければLv.1の発展カードをあっさりと奪い取ります。

そのため手なりで進むのではなく確固たる軸が必要でした。

最終盤面

結論を言うと、ほぼ戦略通り。サファイアとルビーを中心的に取ったのでゲーム中盤に一人目の貴族。最終局面でLv.3カードと帰属訪問を同時にこなして19点。

しかしながら、相手の場はそれは見事なものでした。本当に狙いたかった左下のルビー3点カードを取られてしまったのは痛かったです。

そして、上述のリンク先にある通り、このバリアントは

  • 初級:貴族はボットを訪問しない
  • 中級:貴族は両方訪問する
  • 上級(無理?):貴族はプレイヤーを訪問しない

の3段階の難易度調整があります。今の所、まだ難易度は初級のまま。これを上げられる日はいつ来るのやら。

ソロゲー後の写真撮影。

ボードゲームのソロプレイを行ったあと、盤面が「背景になる」と思うことが多々あります。

そもそも箱庭感覚が大好きでボードゲームを行っている側面がありますので、その箱庭を利用しない手はありません。

宝石の煌めき

アップグレードトークンや百均で購入したクリスタルオブジェクト/宝箱で更に飾りを増やします。

アグリコラ

キャラクターの出自だけに相性はいいし、盤面の緑が背景として映えます。

コーヒーロースター

こちらも飾り等を足すことなく。

「キャラクターに合いそうな世界観のボードゲーム」をいくつか持っていくと撮影の楽しみも増えるのでいい感じです。

週末のソロゲームデー。

終日、ボードゲームのソロプレイを楽しんだ日がありました。

タッジーマッジー

たった18枚の変則ドラフトなのに、

  • カウンティング
  • 確率計算
  • 得点行動の推進
  • 及びその阻害
  • セットコレクション

がとても楽しく、気がつけば何度もプレイしてしまうある意味危険なゲーム。

しかも、ソロプレイはラウンドを重ねるに連れてBOTのカードが一枚ずつ増えていく理不尽さ。

なので「あと少しで勝てたのに」「次に負けないためには」の悔しさが更に「もう一回」を加速させます。

宝石の煌めき(ソロバリアント)

半年ぶりぐらいにテーブルトップ版のソロバリアントをプレイ。Steam版を相当数こなしただけに、結構な差をつけて勝つことができました。

コーヒーロースター

3ラウンド、フルセットで行ったのはそれこそ買った直後ではないだろうかというレベル。

  • 確率計算
  • チキンレース
  • バースト
  • 資源変換

など、ボードゲームの要素がたくさん詰まった上質なソロ専用ゲーム。

ここのところ、バッグビルディングの『ぬくみ温泉開拓記』をぶっ続けで遊んでいたので、こちらも遊ぶ機会を増やしてもいいと思いました。

アグリコラ

この日の締めくくりは『アグリコラ』。ラウンドごとのアクションを使うたびに資源がもらえる職業のおかげで安定して改築を重ねられての勝利です。

Page 116 of 277

Powered by WordPress & Theme by Anders Norén