投稿

2022の投稿を表示しています

GeoIP2のCSVデータでPostgresSQLデータベースを更新して国別拒否リストを生成

国単位でIPアドレス制限を行うためにPostgreSQLにインポートしたGeoIP2のデータを更新しようとしたときの覚書。 環境: CentOS Stream 8, PostgreSQL 14.6, nginx 1.22.1 GeoIP Updateは独自形式のデータベースバイナリ 公式が公開しているGeoIP Updateというプログラムが使えるか調査。 Updating GeoIP and GeoLite Databases | MaxMind Developer Portal GitHub - maxmind/geoipupdate: GeoIP update client code YUMリポジトリにもあったけどバージョンが低い。 # dnf search geoip # dnf info geoipupdate Name         : geoipupdate Version      : 2.5.0 だけどGeoIP Updateは独自形式(mmdb)で保存される。 これをnginxから参照する方法もあるみたいだけど、nginx自体のbuildが必要との情報があったので、前と同じcsv形式でPostgreSQLのデータベースをアップデートすることにした。 国別IPアドレスのCSVファイルをダウンロード 最新のCSVダウンロード手順 MaxMind へログイン 左メニューのGeoIP2/GeoLite2のDownload Files 「GeoLite2 Country: CSV Format」のDownload ZIPをクリック ZIPファイルの中身 GeoLite2-Country-Blocks-IPv6.csv: IPv6一覧 GeoLite2-Country-Blocks-IPv4.csv: IPv4一覧 GeoLite2-Country-Locations-ja.csv: IPアドレスIDと国コードの対応リスト(日本語版) PostgreSQLデータベースへインポート 新規作成時は前の記事を参考に。 nginxで国単位のIPアドレス制限 postgresユーザーでSQLコマンド発行 # su - postgres $ psql geo 確認のためテーブル一覧表示。 geo=# \d データ削除 geo=# truncate table geoi

FileNotFoundError: [Errno 2] No such file or directory: '/usr/bin/pip'

Pythonのpipモジュールでエラーになったので調査したときの覚書。 環境: CentOS Stream 8, Python 3.9.13, pip 22.1.2 パッケージ一覧を表示 # python -m pip list FileNotFoundError: [Errno 2] No such file or directory: '/usr/bin/pip' pipの場所を確認 # which pip /usr/local/bin/pip リンクを張ればいいのかな? 他はどうなっているか確認。 # ll /usr/bin/pip* lrwxrwxrwx 1 root root  23 Mar  1  2022 /usr/bin/pip-3 -> /etc/alternatives/pip-3 lrwxrwxrwx 1 root root  22 Jul  9 16:02 /usr/bin/pip3 -> /etc/alternatives/pip3 lrwxrwxrwx 1 root root   8 Sep 21 06:36 /usr/bin/pip-3.9 -> ./pip3.9 -rwxr-xr-x 1 root root 650 Sep 21 06:36 /usr/bin/pip3.9 前にalternativesでpipを登録したのを思い出した。 参考:  Python3.6からPython3.9に切り替える alternativesの確認 # alternatives --list # alternatives --display pip でも/usr/local/bin/pipを参照するようになっているのでalternativesは意味ない。 alternativesの登録を削除する。 # alternatives --remove pip /usr/bin/pip3.9 # alternatives --list # ll /etc/alternatives/pip* # rm -f /etc/alternatives/pip* # ll /usr/bin/pip* # rm -f /usr/bin/pip3 /usr/bin/pip-3 /usr/bin/pipにシンボリックリンクを張る。 # cd /u

Windows11をクリーンインストール(2022年12月)

Windows10だった自作PCのマザーボードとCPUを交換してWindows11をクリーンインストールしたときの覚書。 事前準備 自作PCはOS用SSDとデータ用HDDに分けてある。 「ドキュメント」はデータ用Dドライブ Windows10の頃の覚書も参考に。 Windows10をクリーンインストールして初期設定。バックアップ作業 バックアップ一覧 Windows11のインストールメディアを作成。 USBメモリ8GB以上が必要。 Windows 11 をダウンロードする モリサワフォントのアンインストール フォントを使用するPCの変更の手順 | よくあるご質問 | サポート | 株式会社モリサワ マザーボードの最新ドライバーとBIOSを確認してダウンロード。 TUF GAMING B550-PLUS|マザーボード|ASUS 日本 PhpStormの設定をエクスポート。 FileZillaの設定をエクスポート。 レンタルオフィス複合プリンタのIPアドレスメモ。 keyhacの設定ファイルでコミットし忘れがないか確認。 バックアップファイル一覧 C:\Users\daiki\AppData\Roaming C:\Users\daiki\.ssh C:\Users\daiki\.gitconfig C:\Windows\System32\drivers\etc\hosts C:\Users\daiki\AppData\Local\VirtualStore\Program Files (x86)\Tools\teraterm\ttpmenu.iniとTERATERM.INI その他 ごみ箱を空にしておく 「ディスククリーンアップ」を起動してDドライブ(データ用HDD)をクリーンアップ実行 後で気づいたバックアップしておけば良かったもの プリントするときの用紙設定 PCパーツ交換 → BIOS設定 → Windows11インストール マザーボードを交換した後、BIOSを起動して設定。 データ用HDDは2台でRAID1でミラーリングしてしたけど止めた。 Windows11のUSBインストールメディアを挿して、BIOS上で起動順位変更して再起動。 Windows11のインストール自体は結構早く終わった。 Windows 11 Pro 22H2 Windows11設定 クリーンイ

macOS Ventura 13.0.1からmacOS Monterey 12.6.1へダウングレード

macOS Ventura 13.0.1にアップグレードしたら仮想マシン上のsamba共有のネットワークが遅すぎて仕事にならないので、一つ前のmacOS Montereyをクリーンインストールしてみたときの覚書。 環境: Mac mini(2018) Core i7 3.2 GHz, VMware Fusion 13.0.0, Parallels Desktop 18.1.0 ちなみにVMware FusionとParallels Desktopの最新版で試してみてもほぼ同じ現象。 (Parallels Desktopの方が幾分ましだった) 結局、データを残したままダウングレードは出来ない。 ディスクユーティリティで削除したあと再インストールする。 あとsamba共有ネットワークが遅いのはmacOSのネットワーク設定でIPv6を「Link-local only」で無効にすると直るかもしれない。 1.バックアップする このMacは仮想マシンの母艦としてしか使ってないので、外部ストレージに仮想マシンファイルをコピーする。 2.macOSをダウンロードして起動可能なUSBメディア作成 下記公式サイトに従う。 macOS の起動可能なインストーラを作成する - Apple サポート (日本) Mac上のSafariでApple公式サイトへアクセスしてダウンロード。 macOS をダウンロードする方法 - Apple サポート (日本) macOS Monterey 12.6.1を選択。 最新のmacOSからダウングレードできない旨のメッセージが表示されるけどQuitする。 (ダウンロードされている。) Terminalでインストールメディア作成コマンドを叩く(SSH経由ではダメ)。 % sudo /Applications/Install\ macOS\ Monterey.app/Contents/Resources/createinstallmedia --volume /Volumes/USB32GB/ 一旦USBを抜く。 その他やったこと 設定 → AppleIDのサインアウト 3.USBメディアからの起動を許可する シャットダウン。 起動してすぐ「Command(Windowsキー) + r」を長押ししてmacOS復旧画面を立ち上げる。 Apple T2 セキュリテ

CentOS Stream 8のPHPを7.4から8.0にアップグレード

PHP 7.4が2022年11月28日でサポート終了になったのでdnf経由で8.0にアップグレードしたときの覚書。 PHP: Supported Versions 環境: CentOS Stream 8, ImageMagick 6.9.12-67 Q16 1.PHP8.0をインストール 現在のモジュールを確認 # dnf module list php CentOS Stream 8 - AppStream Name                         Stream  php                          7.2 [d] php                          7.3     php                          7.4 [e] php                          8.0 Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled 仮想環境なのでスナップショットをとっておく。 モジュールを7.4から8.0に切り替える # dnf module reset php # dnf module enable php:8.0 # dnf --allowerasing distro-sync 確認 # php --version PHP Warning:  PHP Startup: Unable to load dynamic library 'imagick.so' (tried: /usr/lib64/php/modules/imagick.so (/usr/lib64/php/modules/imagick.so: undefined symbol: instanceof_function), /usr/lib64/php/modules/imagick.so.so (/usr/lib64/php/modules/imagick.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0 PHP Warning:  PHP Startup: mecab: Unable to initialize mod

Apple Business Managerのアカウント削除

Apple Business Managerからアカウント削除しようとしたときの覚書。 所有Apple製品: Mac mini, iPhone, iPad Air アカウント削除する理由 登録してみて2年経ったけどほぼ使っていない。 Apple製品を購入するときはABMアカウント(経由のAppleID)で購入してた。 会社名とメールアドレスが変更となったとき簡単に変更できなくて困った。 個人のAppleIDだけの方がデバイス間で同期してくれるので楽。 iOSの開発、iOSデバイスの管理が必要となったときに再考する。 削除するまでのAppleとのやり取り 公式ヘルプの「お住まいの地域のAppleCare登録サポートの電話番号」から電話してみた。 Apple Business Managerのサポートを受ける - Apple サポート (日本) サポート担当の方にアカウント削除したいと申し出る。 理由を聞かれたので上記の理由を説明する。 D-U-N-S® Number情報を更新して、それをサポートに伝えれば2営業日で更新します。と言われる。 パスワード情報をできるだけ管理したくないのでアカウント削除でお願いします。と伝える。 シニアアドバイザーに代わってアカウントを残す方向で説得される。 アカウント削除は大事らしい。 もう一度アカウント削除でお願いします。と伝える。 シニアアドバイザーのさらに上司に確認するということで、再度かけ直してもらう。 紐付けられたAppleIDも完全に削除される旨の確認(同意する)。 会社の代表番号に電話をかけて代表者の確認が必要とのこと。 Twilioの設定で留守電になるので、1時間後に再度かけ直してもらう。 代表電話番号で受けて確認終了。 アカウント削除後に連絡をくれるらしい。 【関連記事】 Twilioで転送電話→出なかったら留守電応答→音声録音→メール送信 法人用Apple IDをApple Business Managerで管理

Windows10にImageMagick7.10をインストール(scoop経由)

CentOSにImageMagick7をインストールするのは手間取りそうだったので、Windowsなら簡単にできるかもと思って調査したときの覚書。 やりたいことはJpegをAVIFに一括変換するスクリプトを作ること。 出来るだけファイルサイズが小さくなるライブラリを使い、メンテナンスしやすい仕組みにしたい。 環境: Windows10 pro Scoopというパッケージ管理にImageMagickがある。 Scoopのインストールは前の記事を参考に:  Windows10にDart Sassをインストール 検索してインストール。 PS C:> scoop search imagemagick PS C:> scoop install imagemagick ダウンロードに時間が掛かる。。。 インストール完了。 Notes ----- - The bundled ffmpeg has been renamed to 'ffmpeg.exe.old' to prevent conflict with a standalone ffmpeg installation - if you need it for ImageMagick tools, rename it back to 'ffmpeg.exe'. - 'convert.exe' is deprecated in v7 (it also conflicts with the builtin Windows 'convert' utility). Use 'magick convert ...' instead. 変換してみる。 imagemagick6と同じくmogrifyコマンドは使えるのが嬉しい。 PS C:> cd /path/to/projects PS C:> mogrify -quality 80 -format avif -path ./ ./key-visual.jpg 少し時間がかかるけど変換完了。 他のツールで生成した画像と見比べる。 ウェブアプリ版のSquoosh がサイズと画質のバランスがいい。   【関連記事】 JpegからAVIFへ変換するためのコマンドラインツールSquoosh,

ImageMagick-heicをdnf経由でインストールできなかった

RemiリポジトリにImageMagick-heicを見つけて、avif変換が簡単にできるかもと思ったときの覚書。 環境: CentOS Stream 9 Remi's RPM repository Remiリポジトリをインストールする。 # dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm # dnf search heic --enablerepo remi # dnf install ImageMagick-heic --enablerepo remi Error:  Problem: package ImageMagick-heic-1:6.9.12.67-1.el9.remi.x86_64 requires libheif.so.1()(64bit), but none of the providers can be installed   - cannot install the best candidate for the job   - nothing provides libjxl.so.0.6()(64bit) needed by libheif-1.12.0-4.el9.remi.x86_64   - nothing provides libde265.so.0()(64bit) needed by libheif-1.12.0-4.el9.remi.x86_64   - nothing provides libx265.so.199()(64bit) needed by libheif-1.12.0-4.el9.remi.x86_64 libheifに紐づくlibjxl, libde265, libx265が必要といわれた。 それらをビルドするのは面倒。 【関連記事】 JpegからAVIFへ画像変換のためにvipsを調査 AVIFとは。HEIFやWebPとの違い。 CentOS9にImageMagick6.9をdnfからインストール

JpegからAVIFへ画像変換のためにvipsを調査

前の記事でAVIFがWebPの半分くらいになると分かったので、もっと簡単にJpegから変換できないかと調べているときの覚書。 参考:  JpegからAVIFへ変換するためのコマンドラインツールSquoosh, sharp, cavif 環境: CentOS Stream 8(仮想マシン), ImageMagick 6.9.12-67 Node.js製「sharp」は libvips を内部で使っているというのでvipsについて調べる。 libvips公式サイト パッケージ管理にあるというので検索してみる。 # dnf search vips ない。。。 remiリポジトリをインストールしてみる。 参考:  Remi's RPM repository # dnf install http://rpms.remirepo.net/enterprise/remi-release-8.rpm 検索 # dnf search vips あった。 vips-devel.x86_64 : Development files for vips vips-heif.x86_64 : Heif support for vips vips-magick-gm.x86_64 : Magick support for vips using GraphicsMagick vips-magick-im6.x86_64 : Magick support for vips using ImageMagick6 vips-magick-im7.x86_64 : Magick support for vips using ImageMagick7 vips-openslide.x86_64 : OpenSlide support for vips vips-poppler.x86_64 : Poppler support for vips vips-tools.x86_64 : Command-line tools for vips ん?ImageMagick6で使えるようになるのかな?と思いインストールしてみる。 (怖かったのでスナップショットを取ってから) # dnf install vips-magick-im6 ImageMagickの対応フォーマットの確認 # convert -lis

AVIFとは。HEIFやWebPとの違い。

AVIFを開発に導入しようとしているときの覚書。 AVIFとは。 AV1 Image File Formatの略。 AVI動画圧縮コーデックを用いたHEIF画像ファイルフォーマット。 非営利団体のAlliance for Open Mediaが開発。 AV1 - Wikipedia High Efficiency Image File Format - Wikipedia AV1はオープンかつロイヤリティフリーな動画圧縮コーデック。 Googleが開発しているVP9をベースにしており、特許料が発生するHEVC(H.265)の置き換えを目指している。 AVIFはSafariとGoogle Chromeで対応済み。 Microsoft Edgeは未対応(近いうち対応すると思う)。 "avif" | Can I use... Support tables for HTML5, CSS3, etc 拡張子は AVIFとHEIFの違い。 HEIF(High Efficiency Image File Format)はISOで定義された画像ファイルフォーマット。 読みは「ヒーフ」。 HEIF自体はただのコンテナ(規格)。 特許使用料が発生するHEVC(H.265)コーデックを格納しているファイルは拡張子が.heicまたは.heif。 AV1コーデックを格納しているファイルは拡張子が.avif。 AVIFとWebPの違い。 WebPはVP8動画コーデックを用いた画像ファイルフォーマット。 VP8はGoogleが開発したオープンかつロイヤリティフリーな動画圧縮コーデック。 GoogleがVP8の技術を応用してWebPを開発。 WebP - Wikipedia AVIFはVP9をベースにしたAV1コーデックを用いておりVP9からAV1に移行するらしいので、実質AVIFはWebPの後継。 参考: Successor: from VP10 to AV1 | VP9 - Wikipedia 参考:  後継:VP10からAV1へ|VP9 - Wikipedia 【関連記事】 JpegからAVIFへ変換するためのコマンドラインツールSquoosh, sharp, cavif ホームページ開発に画像形式WebPを導入 JPEGについて再勉強。Baseline JPEGとPro

自作PCのパーツ一覧(2022年12月)

10年選手になる仕事用PCを刷新しようと前の環境を調べているときの覚書。 下記パーツを2013年5月購入。 ASUSTek ATXマザーボード P8H77-V P8H77-V|ASUS|株式会社アユート PCパーツ・VR・オーディオ等周辺機器 総合代理店 Intel CPU Core i7 3770 3.4GHz 8M LGA1155 Ivy Bridge BX80637I73770(4コア) インテル® Core™ i7-3770 プロセッサー Fractal Design ミドルタワーPCケース Define R4 Black Pearl FD-CS-DEF-R4-BL Define R4シリーズ | Fractal Design ミドルタワー型PCケース | 株式会社アスク GreenMax Plus 650 GZ-EMS65A-C1 Rev2(PC電源ユニット650w) DDR3メモリ 8GBx2 ビデオカードは2019年4月にNVIDIA Quadro P1000へ換装。当時約45,659円。 NVIDIA Quadro P1000 - 株式会社 エルザ ジャパン 最近のビデオカードはPCI Express 4.0だがPCI Express 3.0のマザーボードでも差がないという記事があった。 PCIE3.0とPCIE4.0でグラボ性能に差が出るのか RTX3080を使って検証 | あさくひろくPCゲーミング ざっと調べた感じビデオカードだけ変更して様子をみるのもいいかもしれない。 価格.com - ASUS TUF-RTX3070TI-O8G-GAMING [PCIExp 8GB] 価格比較 現時点の最安値が86,771円。 購入したPCパーツ 結局CPUとマザーボードを換装することにした。 Ryzen 7 5700X BOX(8コア、3.4GHz - 4.6GHz)/30,700円 価格.com - AMD Ryzen 7 5700X BOX 価格比較 ASUS TUF GAMING B550-PLUS/18,282円 TUF GAMING B550-PLUS|マザーボード|ASUS 日本 DDR4メモリ 8GBx2/5,780円 合計54,762円。 これで動かしてみてビデオカードを買い替えるか決める予定。 【関連記事】 Windows10をクリーン

svgからwoff2へ変換するNode.js製「grunt-webfont」

fontcustomがエラーを吐くようになったので、 fontforgeを使った svgからwoff2へ変換する方法を探しているときの覚書。 環境: CentOS Stream 8, fontforge 20200314, Node.js v18.9.1 最近も更新されている下記Node.js(Grunt)製ツールを試してみた。 L2jLiga/grunt-webfonts: SVG to webfont converter for Grunt ドキュメントに従い依存関係のあるソフトのインストール # dnf install fontforge ttfautohint ttfautohintはリポジトリになかった。 そのまま進める。 grunt-webfontをインストールする。 # su - node $ cd /path/to/project/ $ npm install grunt grunt-webfont --save-dev npm WARN EBADENGINE Unsupported engine { npm WARN EBADENGINE   package: 'svg-pathdata@1.0.0', npm WARN EBADENGINE   required: { node: '0.10.*' }, npm WARN EBADENGINE   current: { node: 'v18.9.1', npm: '8.19.3' } npm WARN EBADENGINE } WARNINNGが出たけどとりあえず進める。 Gruntfile.jsを作る $ vi Gruntfile.js module.exports = function(grunt) {   grunt.loadNpmTasks('grunt-webfont');   grunt.initConfig ({     webfont: {       icons: {         src: 'fonts/svg/*.svg',         dest: 'fonts/icons',         options: {           font: 'i

svgからウェブフォントwoff2に変換するNode.js製ツール

fontcustomがエラーで変換に失敗するようになったので代替コマンドを探しているときの覚書。 環境: CentOS Stream 8, Node.js v18.9.1 Node.jsを使うのが汎用的で良さそう。 tancredi/fantasticon: Icon font generation tool jaywcjlove/svgtofont: Read a set of SVG icons and ouput a TTF/EOT/WOFF/WOFF2/SVG font. シンプルそうなfantasticonを試す。 インストール。 $ npm install fantasticon --save-dev package.jsonにコマンドを書く。   "scripts": {     "font": "fantasticon ./fonts/svg --output ./fonts/icons --name icons --font-types woff2 woff --asset-types css html"   } 実行 $ npm run font 一部 iconmonstr でダウンロードしたsvgの変換が上手くいっていない。 変換には内部でfontforgeを使うツールがないか探すことにした。 【関連記事】 CentOS Stream 8 + Ruby + fontcustomをインストール 【CentOS】SVGをWOFFなどのWebフォントへ変換するfontcustomをインストール

JpegからAVIFへ変換するためのコマンドラインツールSquoosh, sharp, cavif

WebPとAVIFの比較をしようとLinux向けの変換ツールを調査しているときの覚書。 環境: CentOS Stream 8, Node.js v14.18.2 -> v18.9.1 AVIFの対応状況 "avif" | Can I use... Support tables for HTML5, CSS3, etc Edge以外は対応している。 Node.jsをv18に変更 開発環境のNode.jsがv14だったので最新のv18にアップグレードする。 確認 # dnf module list nodejs v14からv18に変更 # dnf module reset nodejs # dnf module enable nodejs:18 # dnf --allowerasing distro-sync 確認 # node --version v18.9.1 Squoosh CLI Chrome teamが開発している画像圧縮ウェブツール「Squoosh 」をコマンドラインで使えるようにしたもの。 squoosh/cli at dev · GoogleChromeLabs/squoosh · GitHub Globalでインストール # npm i -g @squoosh/cli AVIFに変換してみる。 $ squoosh-cli --avif '{quality: 30}' key-visual.jpg TypeError: Failed to parse URL from /usr/local/lib/node_modules/@squoosh/cli/node_modules/@squoosh/lib/build/imagequant_node-a4aafbae.wasm エラーになった。 ウェブアプリ版のSquoosh でAVIF変換したら問題なく完了した。 Quality: 30 Effort: 4 ファイルサイズ比較 Jpeg: 281KB WebP: 70KB AVIF: 26KB Jpegの10分の1でWebPの半分なのにGoogle Chromeで表示して並べてみても違いが分からない。 とりあえずsquoosh-cliはアンインストール。 # npm uninstall -g @squoosh/cli

dnf updateしたらphp-pgsqlのエラー

dnf updateしたらエラーになったので調べた時の覚書。 環境: CentOS Stream 8, PHP 7.4.30 # dnf update Last metadata expiration check: 8:04:20 ago on Fri 21 Oct 2022 07:49:06 AM JST. Error:  Problem: package php-pgsql-7.4.30-1.module_el8.7.0+1190+d11b935a.x86_64 requires libpq.so.5(RHPG_9.6)(64bit), but none of the providers can be installed   - cannot install both libpq5-15.0-42PGDG.rhel8.x86_64 and libpq5-14.5-42PGDG.rhel8.x86_64   - package libpq5-15.0-42PGDG.rhel8.x86_64 obsoletes libpq provided by libpq-13.2-1.el8.x86_64   - package libpq5-15.0-42PGDG.rhel8.x86_64 obsoletes libpq provided by libpq-13.3-1.el8_4.x86_64   - package libpq5-15.0-42PGDG.rhel8.x86_64 obsoletes libpq provided by libpq-13.5-1.el8.x86_64   - cannot install the best update candidate for package php-pgsql-7.4.30-1.module_el8.7.0+1190+d11b935a.x86_64   - cannot install the best update candidate for package libpq5-14.5-42PGDG.rhel8.x86_64 (try to add '--allowerasing' to command line to replace conflicting packages or '--skip-

ARPとルーティングテーブル

サイバーセキュリティの勉強をしているときの覚書。 環境: Windows 10, CentOS Stream 8 ARP(Address Resolution Protocol)とは? IPv4アドレスとMACアドレスを紐づけるプロトコル。 相手のMacアドレスが分からない場合、ARPリクエストをネットワークにブロードキャストするとMACアドレスを格納してARPリプライが返ってくる。 一度取得したIPv4とMACアドレスの関連情報をARPテーブルにキャッシュとして保存される。 Windowsの場合は15秒~30秒間キャッシュに保存する。 WindowsでキャッシュされたARPテーブルを表示するコマンド C:> arp -a CentOSでキャッシュされたARPテーブルを表示するコマンド # ip n 参考サイト Address Resolution Protocol - Wikipedia Address Resolution Protocol caching behavior - Windows Server | Microsoft Learn ARPとルーティングテーブル 通信するときはまずルーティングテーブルを見て、どの経路で通信すればいいか決める。 その後、ARPのキャッシュテーブルまたはリクエストを参照して、宛先のMACアドレスが決まる。 サイバーセキュリティとARP ネットワークを盗聴する場合は、IPv4アドレスとMACアドレスの関連を偽装する場合はあるため、怪しい動作するPCおよびルーターのARPテーブルの中身は保存しておく。 【関連記事】 ルーティングテーブルとnetstat, ipコマンド

共通鍵暗号アルゴリズムAES(Advanced Encryption Standard)

サイバーセキュリティの勉強をしているときの覚書。 AESとは? AES(Advanced Encryption Standard)は2001年にアメリカで定められた標準暗号。 特徴 共通鍵暗号方式 鍵長は128bit, 192bit, 256bitの3種類 (鍵長と処理速度は相関関係にあるため用途に応じて選択する) 無料で利用可 現在の主流(今のところどんな攻撃にも屈していない) 日本政府管轄プロジェクト「CRYPTREC」に電子政府推奨暗号リストとして登録されている。 参考サイト Advanced Encryption Standard - Wikipedia CRYPTREC - Wikipedia AESはアルゴリズムなので、この暗号化アルゴリズムを利用した実装がいろいろとある。 AESが使われている実装の例 一覧とリンク TLS/HTTPS通信など。参考:  Transport Layer Security - Wikipedia ZIP/ファイルの暗号化。参考:  ZIP (ファイルフォーマット) - Wikipedia WPA2/Wi-Fiの 標準暗号化プロトコル CCMP。参考:  Counter mode with Cipher-block chaining Message authentication code Protocol - Wikipedia AACS/Blue-ray Discの暗号化規格。参考:  Advanced Access Content System - Wikipedia 【関連記事】 Let's Encryptで無料SSLをCentOS7に設定(certbot)

ルーティングテーブルとnetstat, ipコマンド

サイバーセキュリティの勉強をしているときの覚書。 環境: Windows 10, CentOS Stream 8 ルーティングテーブルとは? パケットの宛先と次の転送先を記したネットワーク経路一覧。 同じ宛先が登録されている場合はネットマスク値が高い(長い)経路が優先される。 一般的な端末PCではルーターがデフォルトゲートウェイとして登録されているだけ。 VPNや仮想マシンを設定している場合はそのネットワーク用の宛先がルーティングテーブルに記載されている。 参考サイト ルーティングとは|ヤマハ ルーティングテーブルを確認するコマンド WindowsとMacでは「route -r」で確認できる。 netstatはネットワーク情報を表示するコマンド。-rはルーティングテーブルを表示するオプション。 C:> netstat -r CentOS8からはnetstat, ifconfigはipコマンドに統一された。 # ip route show  netstat - Wikipedia ipコマンドチートシート for Red Hat Enterprise Linux サイバーセキュリティとルーティングテーブル マルウェアに感染した場合やハッカーがネットワーク内を調査する際、このルーティングテーブルを書き換えることがある。 そのため、ディジタルフォレンジックス(セキュリティ証拠収集)の一つとしてルーティングテーブルの確認方法は知っておきたい。 デジタル・フォレンジック - Wikipedia 【関連記事】 WindowsノートPCにCentOS7をクリーンインストール

サイバーセキュリティ対策のSIEM、UEBA、SOARとは?

SIEM(シーム: Security Information and Event Management)を調査しているときの覚書。 SIEM(Security Information and Event Management)とは? サイバーセキュリティ対策向けに異常検知を目的とした統合ログモニタリングシステム。 ファイヤーウォール/サーバー/IT機器などからログを収集・分析して見える化する。 サイバー攻撃を早期に発見して対応することが可能になる。 ログ収集や異常検知の設定など運用面でのコストがネック。 参考サイト SIEM(シーム)とは?セキュリティの異常を自動検知する仕組み SIEMとは?仕組みや機能、メリット、導入のポイントを解説!|Joshisu Man(情シスマン) SIEMとは?セキュリティ対策におけるログ収集の重要性 | サイバーセキュリティ情報局 UEBA(User and Entity Behavior Analytics)とは? ユーザーや機器の異常動作を機械学習によって検知する機能。 SEIMと合わせて活用することで運用コストを下げる。 よって、SEIM+UEBAを次世代SEIMと呼ぶこともある。 参考サイト 「SIEM運用は難しい」を覆す次世代ソリューション「LogRhythm」とは? | 東京エレクトロンデバイス SOAR(Security Orchestration, Automation and Response)とは? セキュリティ運用の統合管理ソリューション。 様々な情報を集約、分析して発生したインシデントの管理や関係者への通知を自動化する。 IT機器を個別に監視するのではなく、セキュリティインフラ全体を統合管理することで、組織全体のセキュリティを強化する考え方。 SOARするためのモニタリング手段としてUEBA機能付きのSIEMが導入される感じ。 SOARは インシデント対応(Response)までを含む のが大きな違い。 参考サイト SOARとは?意味・定義 | ITトレンド用語 | NTTコミュニケーションズ SOARとは:セキュリティのオーケストレーションと自動化によるレスポンス | Splunk 【関連記事】 ファイヤーウォールの意味/次世代ファイアウォール(NGFW) OWASP ZAPでWordPressサイトをセキュ

オフィスのネットワークが遅い(DNSサーバーからの応答が遅い)

最近ネットワークが遅いと感じることが多かったので調査したときの覚書。 オフィスのネットワーク環境はレンタルオフィスなので、施設提供のLANケーブルにオフィスルーターを接続している。 オフィスルーター: Aterm WX3000HP 1.問題の切り分け PCとオフィスルーターを再起動した後、下記確認する PCのネットワークドライバの更新情報 ルーターのファームウェアバージョン 同じLAN内からdigコマンドなどでDNS応答状況 DNS(名前解決)状況を調査 Windows Terminalからネットワーク環境を調査。 > ipconfig DNSサーバーはオフィスルーター(192.168.10.1)を参照している。 nslookupでレスポンスを見る > nslookup > google.com タイムアウトするか確認。 同じLAN内のLinux仮想マシンからはdigコマンドを実行する。 # dig google.com Google Public DNSに問い合わせる。 # dig @8.8.8.8 google.com 分かったこと 同じドメイン名でもタイミングによってはタイムアウトする。 GoogleとCloudflareのPublic DNSを指定してもタイムアウトする場合がある。 LAN上のどのPCから行っても同じ。 なぜだ? 施設のルーターでDNSパケットを制御しているのかもしれない。 2.Public DNSをオフィスルーターに設定 DHCPから提供されたDNSサーバー(施設ネットワークの出口になっているルーター)ではなくPublic DNSに変更してみる。 GoogleとCloudflareのPublic DNSが有名。 今回はCloudflareを設定してみた。 Public DNS  |  Google Developers Set up 1.1.1.1 on a router · Cloudflare 1.1.1.1 docs 1.1.1.1 - Wikipedia 3.WindowsのDNSサーバーを直接変更 設定 → ネットワーク → アダプターのオプションを変更する からDNSサーバーを指定する 優先DNSサーバー: 1.1.1.1 代替DNSサーバー: 1.0.0.1 施設ルーターの問題ならオフィスルーターやWindo

PHPでTwilio API SDKを叩いてSMS送信を試す

 Twilio APIをPHPから叩いているときの覚書。 環境: PHP 7.4.30, Twilio SDK 6.42.0 公式サイト GitHub - twilio/twilio-php: A PHP library for communicating with the Twilio REST API and generating TwiML. PHP Helper library | Twilio 1.インストール composerを使ってインストールする。 $ composer require twilio/sdk 2.SMS送信サンプル サンプルを実行してみる。 <?php $sid = "ACXXXXXX"; // Your Account SID from www.twilio.com/console $token = "YYYYYY"; // Your Auth Token from www.twilio.com/console $client = new Twilio\Rest\Client($sid, $token); $message = $client->messages->create(   '+819012345678', // Text this number   [     'from' => '+12223334444', // From a valid Twilio number     'body' => "テスト\n送信",   ] ); print $message->sid; print $message->status;  簡単に送れた。 MessageInstanceを返すので詳細はソースコードを読んだ方が分かりやすい。 送信ログはTwilio Consoleの電話番号を選択したMessages logでも確認できる。 3.Twilio Lookup APIを試す Lookup APIは電話番号が正しい形式かキャリア情報を取得できる。 参考サイト Twilio Lookup API – SMSを送信する前に電話番号の詳細情報を取得する #twilio |

Microsoft Graph PHP SDK v2.0を試す

Microsoft Graph APIをPHPからアクセスしようとしいるときにMicrosoft Graph PHP SDKの2.0-RCがリリースされていたので試したときの覚書。 環境: PHP 7.4.30, Microsoft Graph PHP SDK 2.0.0-RC6 公式サイト GitHub - microsoftgraph/msgraph-sdk-php: Microsoft Graph Library for PHP. Tags · microsoftgraph/msgraph-beta-sdk-php · GitHub PHP 7.4以上。 v2.0を試すときはMicrosoft Graph PHP SDK Upgrade Guideとサンプルコードを参考にする。 msgraph-sdk-php/UPGRADING.md at feat/kiota-preview · microsoftgraph/msgraph-sdk-php · GitHub msgraph-sdk-php/Examples.md at feat/kiota-preview · microsoftgraph/msgraph-sdk-php · GitHub Postmanのチュートリアルをやっていないと理解できないと思う。 Microsoft Graph API + PostmanでOneDriveにファイルアップロード あとPhpStormとかでソースコードを読みながらでないと使い方が分からない。 ※ 公式ドキュメントはEnglish(United States)に変更しないとPHP SDKのサンプルコードが表示されない。 1.ドライブ情報取得 v2.0からはAccessTokenの管理はSDKがやってくれるようになった。 参考:  Get Drive - Microsoft Graph beta | Microsoft Docs $tokenRequestContext = new \Microsoft\Kiota\Authentication\Oauth\ClientCredentialContext( '6cc440ec-8a1f-4736-ac1d', 'eae64fe9-b7eb-4c4b-b87d', 'vh5

さくらのメールボックスで使われている迷惑メールフィルタ「SpamAssassin」とは?

迷惑メールフィルタ「SpamAssassin」を調査したときの覚書。 参考サイト Apache SpamAssassin: Welcome ウェブメールでメールフィルタ機能を設定したい | さくらのサポート情報 SpamAssassin - Wikipedia SpamAssassinとは? メールサーバーに組み込めるオープンソースの迷惑メールフィルタ。 Apacheソフトウェア財団が管理運用しているので安心感がある。 主な特徴 スパムを判定するルールを柔軟に設定可能 ルールに基づきスコアを加算して一定以上の場合スパムと判定 スパムと判定したメール件名に文字列を挿入可能 デフォルトは「*****SPAM*****」 判定ルールとスコア値の結果をメールヘッダー「X-Spam-Status」として挿入 SpamAssassinが挿入するメールヘッダー さくらのメールボックスにメールアカウントを作成して、SPFを設定していないサーバーからメール送信してみた。 ユーザ/メールアドレス全体設定の迷惑メールフィルタは「弱めの設定」。 アカウント設定の迷惑メールフィルタは「フィルタを利用」に設定する。 mailコマンドで送信。 # mail test@hoge.jp Subject: test http://1.2.3.4/?key=test . メールログを確認 # less /var/log/maillog 挿入されたメールヘッダー X-Spam-Checker-Version: SpamAssassin 3.4.3 (2019-12-06) on www1234.sakura.ne.jp X-Spam-Flag: YES X-Spam-Level: ******* X-Spam-Status: Yes, score=7.7 required=7.0 tests=BODY_SINGLE_URI, BODY_SINGLE_WORD,LOCALPART_IN_SUBJECT,NORMAL_HTTP_TO_IP, NUMERIC_HTTP_ADDR,SPF_HELO_NONE,SPF_NONE,TVD_SPACE_RATIO_MINFP autolearn=no autolearn_force=no version=3.4.3 X-Spam-Report:  * 

Lets Note S9にUbuntu Desktop 22.04をインストール

古いレッツノートにUbuntu Desktopをインストールしたときの覚書。 環境: Let's note CF-S9L(CF-S9LY9BDP), Intel Core i7 M640 2.8Ghz, メモリ8GB Let's note CF-S9Lは2010年9月発売。 参考: パナソニック公式サイト|スペック対比表 1.Ubuntu 22.04をクリーンインストール 公式サイトのチュートリアルを参考に。 Install Ubuntu desktop | Ubuntu balenaEtcherというソフトを使ってUSBメモリにISOファイルを書き込む。 完了後にWindowsが「フォーマットしますか?」と聞いてくるがキャンセル。 USBメモリをノートPCに挿して起動。 BIOSでUSB HDDの起動順序を上位にしておく。 3分ぐらい処理が走った後Welcome画面が表示された。 言語はEnglish、キーボードはJapanese、Minimal installationを選択。 Other optionsの2つも選択。 Erase disk and install Ubuntu, None インストールは10分ぐらい。 USBメモリを抜いて再起動。 2.USBメモリをフォーマット インストールメディアとなったUSBメモリをフォーマットするにはUbuntuになったノートPCにUSBメモリを接続して、Disksアプリケーションを使う。 (macOSのDisk Utilityでも出来ると思う) 参考:  usb - Can't format Ubuntu installation stick - Ask Ubuntu 右上のメニューからFormat Disk... No partitioningを選んでフォーマット。 左下のアイコンからFormat Partition... Volume Nameは「USB32GB」とかにして「FAT」を選択。 Windows PCに挿して確認。 3.Ubuntu Desktopの感想など 分かったことや感想など。 内臓Wi-Fiが普通に使える。 トラックパッドの右端こすってスクロール出来ない。 YouTubeが見れて音も出る。 デフォルトでインストールされているFirefoxが遅いように感じる。 Google

API経由のSMS送信に関してTwilioとAmazon SNSを調査比較

SMSと連携した予約システムを開発しているときの覚書。 SMSのAPIを提供しているのはTwilioとAmazon SNSが有名。 SMS Messaging API | Twilio Amazon SNS(サーバーレスアプリのための pub/sub メッセージングサービス)| AWS 費用はほぼ同じ1通10円ぐらい。 Twilioは米国の番号を取得して日本の番号へ国際SMSを送信する。 高品質SMSという日本国内番号から送る方法がある。 Twilioの営業担当へ要問合せ。 Twilio から050番号で SMS を送ることはできないのですか? – Twilio - KDDI Web Communications 高品質SMSとは何ですか? どのように機能しますか? – Twilio - KDDI Web Communications Amazon SNSは発信番号(送信元)を選択できる。 Amazon SNS で、SMS メッセージを送信する際に発信番号の選択をサポートできるようになりました Amazon SNS の SMS を利用する際の留意点と対策について - サーバーワークスエンジニアブログ 2022年からドコモとソフトバンクでフィッシングSMS対策が強化されている。 ドコモからのお知らせ : 「危険SMS拒否設定」(無料)の提供について(2022年3月22日更新) | お知らせ | NTTドコモ 迷惑SMS対策機能(無料)を提供開始 | スマートフォン・携帯電話 | ソフトバンク 【関連記事】 Twilioで転送電話→出なかったら留守電応答→音声録音→メール送信 LINE Notifyでメールアドレスがないユーザーとの問合せ機能を実現したい

OpenLiteSpeed, Nginx, NGINX Unitを改めて調査

PHP7.4が今年末でサポート終了するタイミングでWebサーバーも見直そうと調査しているときの覚書。 特にWordPressと相性がいいOpenLiteSpeedが気になっていた。 環境: CentOS Stream 8, Nginx 1.22.0, PHP 7.4.30 1.OpenLiteSpeedとは? 商用のLiteSpeedのオープンソース版Webサーバー。 2003年初版リリース。 ちょっとずつシェアが増えていて2022年8月時点で12.3%。 Nginx: 33.8%, Apache: 31.3%, Cloudflare Server 21.7% 参考:  Historical trends in the usage statistics of web servers, August 2022 独自にビルドしたPHPとキャッシュ用WordPressプラグインも配布していて、Nginxより高速に動作するらしい。 HTTP/3にいち早く対応。 設定ファイルの記述はApacheと同じ。 OpenLiteSpeed LiteSpeed Web Server - Wikipedia 開発しているのはLiteSpeedというアメリカの会社。 George Wangという方がSEO。 About Us - LiteSpeed Technologies 中国との関係を心配してしまう…。 2. Nginxとは? オープンソースな軽量Webサーバー。 ロシア人の開発者により2004年に初版公開。 2019年3月にアメリカのF5ネットワークスに買収された。 nginx - Wikipedia Leadership | Company Information | F5 F5, Inc. - Wikipedia 2021年にApacheを抜いてWebサーバーのシェア1位に。 2022年1月にはオリジナル開発者がF5とNginxが離れることが発表された。 F5、NGINXの開発チームをロシア国外へ移転させたことを報告。開発を立て直しリリースサイクルも元通りに - Publickey NGINX開発者のIgor Sysoev氏が引退を発表。F5とNGINXから退任 - Publickey これからの開発が心配…。 3. NGINX Unitとは? php-fpmと同じアプリケーショ

Office365スパム対策に引っ掛かってメールサーバーがブラックリストに登録されていることが判明

サーバーからメール送信するときに拒否されたので、スパム判定されているか確認したときの覚書。 環境: CentOS Stream 8, Postfix 3.5.8 1.サーバーからメール送信時にエラー サーバーからメール送信しようとしたら下記エラー。 Aug  9 07:50:23 server03 postfix/smtp[246790]: 477E6D96A3: to=<>, relay=hoge.mail.protection.outlook.com[]:25, delay=0.72, delays=0.06/0.02/0.6/0.04, dsn=5.7.606, status=bounced (host hoge.mail.protection.outlook.com[] said: 550 5.7.606 Access denied, banned sending IP []. To request removal from this list please visit https://sender.office.com/ and follow the directions. For more information please go to  http://go.microsoft.com/fwlink/?LinkID=526655 AS(1430) (in reply to RCPT TO command)) Office 365 スパム対策 IP 除外ポータルから申請してブラックリストから除外できる。 Delist IP - Delist IP ブロックされた送信者の一覧から自分を削除し、アドレス 5.7.511 アクセス拒否エラー - Office 365 | Microsoft Docs 電子メール配信率の最大化 (Dynamics 365 Marketing) | Microsoft Docs 除外申請したら下記エラー。 リクエストの処理中にエラーが発生しました。こちらにあるメールの配信率に関するベスト プラクティスに従っていることをご確認いただき、リストからの除外をリクエストする IP アドレスを delist@messaging.microsoft.com にお送りください。 送信しようとしたサーバーはSPFとDKIMを設定済み。

Google Workspaceで宛先不明のメールを転送受信

Google Workspaceでいないユーザー宛てにメールが来たとしてもメール転送する設定をしたときの覚書。 サーバー側でrootやnginx宛てに送ろうとするときがある。 今まではユーザーのメールエイリアス設定で受け取っていた。 昔Google Apps時代はメールエイリアス設定で正規表現を記述できたけど今は出来ない。 公式ヘルプを参考にする。 Google Workspace でのメールのルーティングと配信のオプション - Google Workspace 管理者 ヘルプ 公式ヘルプでは「キャッチオール」という言い方をしている。 Google Workspaceの管理画面にログイン アプリ → Google Workspace → Gmail → ルーティング → 設定 ルーティング名: 宛先不明を転送 1.影響を受けるメール: 受信 2.上記の種類のメッセージに対し、次の処理を行う   件名の先頭に追加するカスタム テキスト: 宛先不明   エンベロープ受信者を変更する: (受信するユーザーの@の前部分) オプション   B. 影響を受けるアカウントの種類     認識できない、キャッチオール これで保存。 @の前を適当な値にしてメール送信テストする。

Microsoft Graph API + PostmanでOneDriveにファイルアップロード

サーバーのバックグラウンド処理(PHP)でOneDriveの機能を利用する方法を調査しているときの覚書。 環境: CentOS Stream 8, PHP 7.4.19 Microsoft Graph API公式ドキュメント ユーザーなしでアクセスを取得 - Microsoft Graph | Microsoft Docs サーバーなどバックグラウンドでMicrosoft Graph APIにアクセスするのを「アプリケーション(Application)」と呼んでいる。 ユーザーの許可を得るアクセスは「委任(Delegated)」。 最初はよく分からなくてもPostmanで動作確認するあたりでだんだんと分かってくる。 1.アプリ登録とアクセス許可 まずは上記公式ドキュメントに従ってやってみる。 アプリ登録 「証明書とシークレット」からクライアントシークレットを作成 説明は作成日(20220804)を設定することにした 値をコピーしておく 「APIのアクセス許可」からアクセス許可の追加。 Files.ReadWrite.All|アプリケーションを追加 「既定のディレクトリに管理者の同意を与えます」をクリック ちなみに無期限のクライアントシークレットは作成不可になったらしい。 クライアントシークレットを定期更新する処理を作るか、手動による更新が必要。 クライアント シークレット作成画面の変更について | Japan Azure Identity Support Blog 2.Postmanで動作確認 10年前によく使っていたAPIテストツール「Postman」がクラウドベースで超進化していた。 Microsoft Graph API で Postman を使用する - Microsoft Graph | Microsoft Docs Microsoft Graph | Postman API Network 上記ドキュメントからリンクされている説明動画を見ればだいたい分かる。 Googleアカウントでサインアップした。 動画と同じことをやってみる。 Postmanの画面が少し違っていた。 動画見て分かった気にならないのが大事。 3.OneDriveの情報取得 Postman上で特定ユーザーのOneDrive情報を取得するリクエストを送信してみる。 UserIdはGet U