投稿

FreeBSD14 + SSHGuard + PF(Packet Filter)で不正な攻撃を自動ブロック

SSHGuardを導入した方がssh攻撃を放っておくより圧倒的にリソース消費を抑えるとのことなので導入したときの覚書。 Gemini 2.5 Proに教えてもらっている。 環境: FreeBSD 14.3-RELEASE-p2, SSHGuard 2.5.1,1 1. SSHへの攻撃を放置しておいた場合のリソース消費 仮想マシン提供側のファイアウォール(ConoHaだとセキュリティグループ)だけだとリソースを消費し続ける。 ネットワークリソースの消費: 攻撃者が送りつけてくる不正なパケットを、ネットワークインターフェースがすべて受信します。これだけでネットワーク帯域とCPUの割り込み処理リソースを消費します。 sshdプロセスの生成: SSHへの接続試行があるたびに、OSは新しいsshdのプロセスをフォーク(生成)します。プロセスの生成自体がCPUとメモリを消費します。 ログにはsshd[19312], sshd[19314], sshd[19317]... と大量のプロセスIDが記録されており、これが頻繁に発生している証拠です。 認証処理の実行: 生成されたsshdプロセスは、ユーザー名が存在するかどうかを確認し、パスワード認証の準備をします。これには、/etc/passwdへのアクセス、暗号化関連のライブラリの呼び出しなどが含まれ、CPUリソースを消費します。 ログの書き込み: 認証失敗のたびに、sshdはログ(/var/log/auth.logなど)に詳細を書き込みます。頻繁なディスクI/Oが発生し、ディスク性能やCPUリソースを消費します。 PFとsshguardを導入すると、攻撃元IPアドレスごとに最初の数回の試行に対してはリソースを消費するが、ブロックされた後はそのIPからの攻撃による負荷はほぼゼロ。 定常的に動作するPFとsshguard自体のリソース消費量は、 放置した場合の負荷に比べて圧倒的に軽微 。 2. SSHGuardとは sshdなどのログファイルをリアルタイムで監視し、短時間に繰り返される認証失敗を検知すると、その攻撃元IPアドレスをOSのファイアウォール(PF, IPFWなど)と連携して動的にブロックする。 公式サイト:  SSHGuard 特徴 動作原理: ログファイル(例: /var/log/auth.log)をt...

日本の医療制度、地域医療

診療情報管理士の勉強をしているときの覚書。 社会保障制度の4つの柱 社会保険・・・生活上のリスクに対する相互扶助(そうごふじょ)。 国家扶助・・・生存権を保障する最後のセーフティーネット。 公衆衛生・・・病気を未然に防ぐ取り組み。 社会福祉・・・特別な支援を必要とする人々への援助制度。 社会保険の生活上のリスクには、病気以外にも分娩/死亡/失業(雇用保険)も含まれる。 保険という名前だが約5割は国の税金で賄われている。 医療保障制度 1961年(昭和36年)国民皆保険制度が開始。 高度経済成長期の真っ只中。 「行く(19)無医(61)村)」と覚えるらしい。 日本の医療史に関しては下記サイトを参考に。 参考:  日本医療史の概要 | 病院ウェブリク 日本の医療の特徴 疾病構造はがん、心臓病、脳血管障害、糖尿病といった慢性化しやすい生活習慣病が増加傾向。 死因別疾患では悪性新生物が1位 5疾病5事業+新興感染症 5疾病:がん、脳卒中、急性心筋梗塞、糖尿病、精神疾患 5事業:救急医療、災害時医療、へき地医療、周産期医療、小児医療 医療分類 レベルが上がれば病院機能、病気の進行段階、救急度も上がる。 医療提供体制(一次〜三次医療): 医療機関の機能や役割による分類。 「どこで(どのレベルの病院で)医療を受けるか」という話です。 予防医学(一次〜三次予防): 病気の進行段階に応じたアプローチの分類。 「いつ(どの段階で)病気に関わるか」という話。 救急医療(一次〜三次救急): 救急患者の重症度に応じた対応の分類。 「どのくらい緊急で重い症状か」という話。 医療計画 1985年に法律が改正され、日本で初めて「医療計画」が制度化。 参考:  医療法改正の歴史 | 病院ウェブリク 医療の量を増やすから「適切に配置する」への発想の転換。 都道府県が 二次医療圏 というエリアを設定し、ベッド数のコントロール(病床規制)を開始。 医療分類の二次医療(入院や手術が必要な、より専門的な医療)は、「二次医療圏(=複数の市町村ブロック)」で完結することを目指す。 二次医療圏は 医療サービスの自己完結を目指すエリア で医療計画の中心的な単位。 医療と消費税 消費税は1989年(平成元年)から開始。 高齢化が進む日本の 社会保障の安定確保 を目的として開始された。 消費税は社会保障...

Certbotをアップデートしたら「No certificates found.」

certbotをアップデートしたらcertbot renewコマンドで何を表示されなくなったので調査したときの覚書。 Gemini先生(Gemini 2.5 Pro)に教えてもらっている。 環境: FreeBSD 14.2-RELEASE-p1, Python 3.11, certbot 4.11 1.certbotのconfig-dirを設定 certbotのconfig-dirを確認。 参考:  User Guide — Certbot 4.2.0 documentation # certbot --help all | grep -A 2 -- --config-dir   --config-dir CONFIG_DIR                         Configuration directory. (default: /etc/letsencrypt)   --work-dir WORK_DIR   Working directory. (default: /var/lib/letsencrypt) デフォルトで参照する場所にcli.iniファイルを設置。 # vim /etc/letsencrypt/cli.ini # CertbotのパスをFreeBSDの標準に合わせる config-dir = /usr/local/etc/letsencrypt work-dir = /usr/local/var/lib/letsencrypt 確認。 # certbot certificates 2.ログローテーション(log lotate)を設定 /var/log/letsencrypt/に大量のログファイルがあった。 certbotはdefaultで1000個のログバックアップを作るので変更する。 # less /etc/letsencrypt/cli.ini # CertbotのパスをFreeBSDの標準に合わせる config-dir = /usr/local/etc/letsencrypt work-dir = /usr/local/...

日本国以外からのPOSTを拒否するNginx設定をGeoIPで自動化

今まで手動でやってきた日本のIPアドレス一覧を自動化したときの覚書。 日本国外からのPOSTを拒否するNginx設定は前の記事を参考に。 参考:  日本国外からのPOSTを拒否するNginx設定 環境: FreeBSD 14.2-RELEASE-p4, nginx 1.28.0(※geoモジュールは未インストール), python 3.11.13 基本的にAI(Gemini 2.5 Pro)と対話してスクリプトを生成してもらった。 まずはMaxMindのGeoLite2データベースファイル(MMDB形式)を解析するPythonライブラリのインストール。 # pkg install py311-maxminddb バッチスクリプトはAI(Gemini 2.5 Pro)に作ってもらった。 AIへの指示概要(実際は対話しながら何度か修正) データベースファイル(MMDB形式)から日本からのIPアドレスを許可するnginxのconfファイルを生成するスクリプトを教えてください。 環境: 14.2-RELEASE-p4, python 3.11 cronで定期実行できるようにデータベースを更新する処理を加えてください。 Nginxのgeoモジュールはインストールしていない。 「allow 1.0.1.0/24;」のような形式 ファイル名は「JP.inc」(COUNTRY_CODEを使って".inc"の拡張子を追加) 保存するパスは「/usr/local/etc/nginx/conf.d/include/allow/JP.inc」(設定で指定可能) 生成されたシェルスクリプトはGistで公開。 https://gist.github.com/DaikiSuganuma/feec839c3fade0053044aa39d2fe0261 MaxMindのライセンスキーは公式サイトにログインして生成する。 生成されたIPアドレス一覧を確認。 # less /usr/local/etc/nginx/conf.d/include/allow/JP.inc 最後にcronを設定。 # cd /etc/cron.d/ # vim update_geoip MAILTO="info@hoge.jp" # [at Sunday 3am] ...

FreeBSDのPython3.9をアンインストール(Python 3.11だけにする)

Python3.9が2025年10月にend-of-lifeになるので、アンインストールしてみたときの覚書。 既に Python 3.11はインストール済み。 環境: FreeBSD 14.2-RELEASE-p4, Python 3.9.23, Python 3.11.13 1. 依存関係を調査 Python 3.9に依存しているパッケージを確認。 # pkg info -r python39 python39-3.9.23:         py39-sqlite3-3.9.23_10         py39-setuptools-63.1.0_3         py39-packaging-25.0         py39-psycopg-pool-3.2.1         py39-requests-2.32.2         py39-charset-normalizer-3.3.2         py39-urllib3-1.26.18,1         py39-pysocks-1.7.1         py39-psutil-5.9.8         py39-clang-11.0         py39-trio-0.25.0         py39-importlib-metadata-7.1.0         py39-pylsqpack-0.3.18         py39-sortedcontainers-2.4.0         py39-outcome-1.3.0_1   ...

医療資源1・2

診療情報管理士の勉強をしているときの覚書。 医療施設 保健所: 都道府県が設置。 許認可や監視・指導、調査などの行政的な権限を持つ。 感染症の拡大防止のための対策を主導。 市町村保健センター: 市町村が設置。 対人サービスが中心で、健康相談や保健指導を直接行う。 ワクチン接種の会場運営や住民への案内など。 ちなみに犬や猫の殺処分を管轄しているのは、主に保健所または動物愛護センター。 近年、多くの自治体で保健所から動物愛護センターに機能が移管・集約されています。 自治体は所有者不明の犬猫や、飼い主から引き取りを求められた犬猫を収容する義務がある。 病院: 20床以上の医療施設。約8,000施設、減少傾向。200床未満が8割。 一般診療所: 19床以下の医療施設。約100,000施設、無床診療所が増加傾向。 歯科診療所: 約67,000施設、微減傾向。 病院は全国の鉄道の駅(約9,000駅)の数と同じくらい。 一般診療所はコンビニの約2倍。 コンビニは約56,000施設なので「歯科診療所はコンビニより多い」は事実。 美容室は270,000施設なので「美容室は信号機(全国21万機)よりも多い」も事実。 総病床数は157万床。 これは日本の人口あたりの病床数は、世界的に見てもトップクラスに多い。 国民約80人に1床の割合。 医師・看護師の守秘義務 医療者の守秘義務違反は「親告罪(しんこくざい)」(刑法第135条)。 これは、被害者本人(患者さんなど)からの告訴がなければ、起訴・処罰することができないという制度。 患者さん個人のプライバシー保護が最優先のため。 弁護士の守秘義務違反は親告罪。 その他の税理士、公務員、情報処理安全確保支援士などの守秘義務違反は非親告罪で、秘密が漏れたこと自体が社会的な損害と見なされ、国が主体となって処罰することができる。 非親告罪の方が社会への影響の大きさから罰則も重い。 親告罪: 被害者が警察に「この人を罰してください」と告訴(被害届とは別)をしなければ、原則として警察は捜査を開始しませんし、検察も起訴できない。 捜査の「スイッチ」を被害者が持っているイメージ。 非親告罪: 警察は、被害者からの告訴がなくても、犯罪の事実を知れば(例えば、第三者からの通報、内部告発、報道、サイバーパトロールなどで)、自らの判断で捜査を開始することができる。 捜...

CertbotでLet's encryptのワイルドカード証明書を取得

Let's encryptのワイルドカード証明書を取得したときの覚書。 環境: FreeBSD 14.2-RELEASE-p3, certbot 2.9.0, nginx 1.26.3, Gemini 2.5 Pro certbotを2.9.0から3.1.0にアップグレード certbotのバージョン確認 #  certbot --version certbot 2.9.0 certbotのGitHubページ で確認すると最新が4.1.1だった。 pkgで検索。 # pkg search certbot py311-certbot-3.1.0,1          Let's Encrypt client py311-certbot-apache-3.1.0     Apache plugin for Certbot py311-certbot-dns-cloudflare-3.1.0 Cloudflare DNS plugin for Certbot py311-certbot-dns-cpanel-0.4.0_1 CPanel DNS Authenticator plugin for Certbot py311-certbot-dns-digitalocean-3.1.0 DigitalOcean DNS Authenticator plugin for Certbot py311-certbot-dns-dnsimple-3.1.0 DNSimple DNS Authenticator plugin for Certbot py311-certbot-dns-dnsmadeeasy-3.1.0 DNS Made Easy DNS Authenticator plugin for Certbot py311-certbot-dns-gandi-1.5.0_1 Gandi LiveDNS plugin for Certbot py311-certbot-dns-gehirn-3.1.0 Gehirn Infrastructure Service DNS Authenticator plugin for Certbot py311-certbot-d...

nginx: [warn] "ssl_stapling" ignored, no OCSP responder URL in the certificate

Nginxで下記waringが出力されるようになったので、調査したときの覚書。 nginx: [warn] "ssl_stapling" ignored, no OCSP responder URL in the certificate "/etc/letsencrypt/live/hoge.jp/fullchain.pem" 環境: Nginx  v1.26.3 Let's EncryptではOCSPのサポートを終了する。 公式サイト:  Ending OCSP Support in 2025 - Let's Encrypt ▼ AIによる日本語要約 何が?: Let's Encryptは、証明書の失効状態をリアルタイムで確認するOCSP (Online Certificate Status Protocol) のレスポンス提供を停止します。 いつ?: 2025年5月7日 なぜ変更するのか? (OCSPの問題点) プライバシーの侵害: クライアントがOCSPサーバーに問い合わせると、「どのユーザーが、いつ、どのサイトを訪問したか」という情報が証明書発行局(Let's Encrypt)に筒抜けになってしまいます。 これはLet's Encryptのプライバシー保護の理念に反します。 パフォーマンスの低下: サイト表示時に、ブラウザが別途OCSPサーバーに問い合わせるため、ページの読み込みが遅くなります。 信頼性の欠如 (ソフトフェイル): OCSPサーバーがダウンしていたり、応答が遅かったりした場合、ほとんどのブラウザはタイムアウトを待たずに「たぶん有効だろう」と判断して接続を続行してしまいます(ソフトフェイル)。 このため、セキュリティ上のメリットが薄いとされています。 warningの原因は証明書にOCSP URLが含まれていないから。 証明書ファイルにOCSPレスポンダのURLが含まれているかを確認するコマンド。 # openssl x509 -in /usr/local/etc/letsencrypt/live/hoge.jp/fullchain.pem -noout -ocsp_uri ssl_staplingの機能はoffにする(コメントアウトする)。 #ssl_stapli...

筋骨格系及び結合組織の疾患1・2・3・4

 診療情報管理士の勉強をしているときの覚書。 化膿性関節炎/感染性関節炎 関節の細菌感染症(関節炎)。 起炎菌としては黄色ブドウ球菌が最も多く、また人工関節置換術後の約2%にみられる。 抗菌薬の投与が遅れると関節が不可逆的に破壊されるという点で 整形外科の分野の緊急疾患 。 参考:  感染性関節炎 - Wikipedia 関節リウマチ 自己の免疫が主に手足の関節を侵し、これにより関節痛、関節の変形が生じる代表的な膠原病の1つで、炎症性自己免疫疾患。 以前は、「慢性関節リウマチ」と呼ばれていた。 発症のメカニズムは未解明。 参考:  関節リウマチ - Wikipedia 初期には「朝のこわばり」と呼ばれる症状が出現する。 関節炎が進行すると、関節そのものが変性してゆく。 近年は疾患修飾性抗リウマチ薬の発達により、基本的に薬物療法が中心となる。 多くの場合リウマチ科・膠原病科等の内科分野での加療が中心となっている。 痛風 尿酸が体内で析出して結晶ができることにより、関節炎などを来たす疾患。 尿酸とはプリン体と呼ばれる物質の代謝産物。 尿酸の結晶は比重が高く重力に引かれて足部に沈着しやすいため、痛風発作は足趾(そくし:足の指)に好発する。 参考:  痛風 - Wikipedia 結節性多発動脈炎 膠原病の一つ、自己免疫疾患の血管炎の一つ。 侵された動脈により多彩な臨床症状をしめす。 なぜか肺動脈と碑動脈は侵されない。 参考:  結節性多発動脈炎 - Wikipedia 川崎病(小児急性熱性皮膚粘膜リンパ節症候群) 日本の小児科医(川崎富作)によって1960年代に発見された、主に乳幼児がかかる発熱性疾患。 初期は全身の血管壁に炎症が起き、多くは1-2週間で症状が治まる。 病因は不明で、感染症なのか自己免疫疾患なのかは、はっきり特定されていない。 ただ発病は夏と冬に多く、地域流行性があることから、何らかの感染が引き金となって起こる可能性が示唆されている。 参考:  川崎病 - Wikipedia 全身性硬化症 原因不明の自己免疫疾患。 強皮症+内蔵にも症状が現れる。 多発性硬化症(神経のミエリン鞘が破壊され脳、脊髄、視神経などに病変が起こる)と異なる。 参考:  強皮症 - Wikipedia 参考:...

皮膚及び皮下組織の疾患1・2・3

 診療情報管理士の勉強をしているときの覚書。 毛嚢炎/毛包炎(もうのうえん/もうほうえん) 細菌感染症の一種。 1本或いは数本の毛の根元が、小さな白ニキビのような状態になる。 原因となる病原体は黄色ブドウ球菌であることが多い。 参考:  毛嚢炎 - Wikipedia 癤(せつ): 腫れ物で、細菌感染症の一種。一本の毛のみの感染。皮膚は赤く腫れて、疼痛を伴う。 癰(よう): 癤が複数になると癰。 水疱症 水疱(水ぶくれ)やびらんを生じる疾患をまとめて称する。 ウイルス性・細菌性疾患や熱傷などの物理的刺激による水疱形成を除く。 遺伝子の異常による先天性のものと、自己免疫によるものに大別される。 参考: 水疱症 - Wikipedia 尋常性天疱瘡(じんじょうせいてんぽうそう): 表皮内基底層直上に水疱ができる疾患である。天疱瘡のうち65%を占め、中高年に多い。口腔 内病変が非常に多いのが特徴である。 落葉状天疱瘡(らくようじょうてんぽうそう): 皮膚に 水疱ができる疾患。 水疱性類天疱瘡: 70歳以上の高齢者に多い水疱症。かゆみがある。 アトピー性皮膚炎 慢性に湿疹、皮膚炎を繰り返す皮膚の炎症。 アトピー素因を持つとアトピー性皮膚炎の発生可能性が高い。 参考:  アトピー性皮膚炎 - Wikipedia アトピー性皮膚炎は表皮、なかでも角層の異常に起因する皮膚の乾燥とバリアー機能異常という皮膚の生理学的異常(保湿因子を作りにくい)を伴い、多彩な特異的アレルギー反応が関与して生じる。 脂漏性湿疹(しろうせいしっしn) 脂質の分泌のある部分に炎症を起こす。 鼻の脇、耳の裏、胸前部、脇、陰部など。 成人で発生すると難治性でしばしば再発し、寒い時期やストレスがきっかけとなりやすい。 参考:  脂漏性湿疹 - Wikipedia 接触皮膚炎 何らかの物質が皮膚に接触したことで発症した急性の皮膚疾患。 日常語ではかぶれ。 掻痒(そうよう=かゆみ)を伴う発疹。 参考:  接触皮膚炎 - Wikipedia 自家感作性皮膚炎(じかかんさせいひふえん) 局所の湿疹や熱傷で作られたアレルゲン物質が血液で運ばれ、全身の至るところに湿疹や腫れが生じる皮膚炎の一種。 痒みが非常に強く、掻いているうちに、湿疹病変が拡大し全身に広...