Site icon imageArea 11

個人的なScrapbox 〜2034.4

Post title icon2024

001.最低限の指針

選択理論心理学

https://u-hyogo.repo.nii.ac.jp/record/1080/files/KJ00010292219.pdf
※ アクセスするとpdfがダウンロードされるので注意
‐選択理論による「行動のセルフコントロールの 7 つの習慣」‐

①今ここで自分が行動せよ(効果的な行為、見方、考え方を選択せよ)。
②自分の様々な願望(上質世界の写真アルバム)を明確にせよ。
③相手を振り回すな(外的コントロールするな)。相手の主体性と行動選択を尊重せよ。
④相手や環境、過去の出来事に振り回されるな(外的コントロールされるな)。外から入ってくるものは「情報」に過ぎない。どう対応するかは自分が選択できる。
⑤相手の上質世界を理解し尊重せよ。意見が異なるときは、違いをよくすり合わせ、自分から「できる妥協」をせよ。
⑥以上を、自分の「内的行動選択のサイクル」を上手に使って実践せよ。
⑦自分の幸せのために行動する責任は、他人ではなく自分にあると自覚せよ。

002.このブログの作り方

1.https://github.com/otoyo/astro-notion-blog のREADMEに従ってあれこれする
2.forkしたコードをちょっと編集する。
(MITライセンスなので Powered by astro-notion-blog を右下に残してる)
以上

Icon in a callout block
wikiより引用

要約すると、MIT Licenseとは次のようなライセンスである。

  1. このソフトウェアを誰でも無償で無制限に扱って良い。ただし、著作権表示および本許諾表示をソフトウェアのすべての複製または重要な部分に記載しなければならない。
  2. 作者または著作権者は、ソフトウェアに関してなんら責任を負わない。

ちなみにドメインは10年分買ってる(約1万3千円)。
いつでも5億円で売却するので欲しい人は連絡してください。

Githubでコードを管理しているけど(非公開)
個人の運用なのでmainとdevelopブランチのみ。

main公開本番
develop公開待ち準本番
feature開発開発
003.RPCI
RPCIとは、「Response Practice for Cyber Incidents」を意味する演習です。

国立開発研究法人情報通信機構(NICT)が提供している実践的サイバー防御演習CYDER※の大規模な実機演習環境のノウハウを活かし、
情報処理安全確保支援士(登録セキスペ)特定講習向けカリキュラムとシナリオを構築しました。

本番に近いリアルな環境でのインシデント対応を行う演習になります。

情報処理安全確保支援士の重要な役割のひとつである「脅威への対応と対策」に関して実践で学べます。

受講者のみなさんは、仮想組織のネットワークをシミュレートした演習環境上で擬似的に発生させたサイバー攻撃に、
最大4人一組のCSIRTとしてチームで対処します。実際に起こり得る攻撃シナリオで、
実機を用いてインシデントハンドリングのプロシージャーを1から10まで学ぶことが可能です。

※CYDER: 政府のサイバーセキュリティ戦略等に基づき、国の機関、地方公共団体、
 重要社会基盤事業者等を対象に実施している実践的サイバー防御演習です。
 セキュリティインシデントが発生した際の対応手順や事前の備え等について学ぶことができます。

修得できるスキル	
 Wiresharkを利用した特定のプロトコルのパケット解析
 Nmapを利用したネットワークアクセスコントロールの適正動作確認
 Hydraを利用した、自らが管理するネットワーク機器への侵入試験
 ネットワーク機器への侵入軽減に対する対策説明能力
 CISO(最高情報セキュリティ責任者)に対する優先度をつけた再発防止策の提案

事前学習
 (標準学習時間2時間程度)
 演習で利用するツール(Wireshark, Nmap, Hydra等)の操作方法や、受講する際に必要となる知識を学ぶことが出来ます。
 ※2024年度は、2025年1月17日()正午まで事前学習サイトへのアクセスが可能です。演習後の復習にもご活用いただけます。

集合演習(ハンズオン&グループワーク)
 仮想組織のネットワークをシミュレートした演習環境を舞台に、
 最大4名のチームで攻撃者からの攻撃に対処し、インシデントハンドリングのプロシージャーを
 「ひとつひとつのステップ」を踏みながら1から10まで学びます。また、平時にどのようなセキュリティ対策や備えを実施しておく必要があるのかを学べます。

ハンズオン	
 チームに分かれ、インシデントハンドリングを一通り体験し、報告書を作成します。
 インシデントの発見(検知)、初動対応、指示、報告、ベンダーへの依頼、問題箇所の特定・隔離、
 ログ分析、被害状況の確認、フォレンジック等を、実際にパソコンを操作しながら体験します。

グループワーク	
 ハンズオンを通して気づいたポリシー等の運用面の課題を明確にし、解決策や強化策を検討するディスカッションを行い、他チームに向けて発表します。
 別組織の方の意見を聞くことで、アプローチ⽅法の違い等、新たな発⾒や気づきを得ることができます。

シナリオ例
 ある日、さいだ市の職員Aさんが、取引業者から納品されたUSBメモリを自分のパソコンに挿入し、USBメモリに入っていたファイルをクリックしました。
 数日後、ネットワーク監視会社から「さいだ市職員の業務用パソコンから不正な通信を検出した」と連絡を受けました。

01検知・連絡受付

 パソコンやサーバーなどの不審な動作を検知。組織内外からの通報を受け付けます。
 シナリオ例:寄せられた情報が正しい情報であるか真正性を確認する。

02トリアージ(優先順位付け)

 インシデントが疑われる事象に対して、情報収集やログ調査などを行い、事実関係を確認します。
 インシデントと判断した場合には、被害状況を把握した上で重要度によって対応に優先順位を付けていきます。
 シナリオ例:不正な通信がどんな内容のものか、どの職員のパソコンかを特定する。

03インシデントレスポンス(対応)

 組織として、どのように対応すべきか、外部に協力を求める必要があるかなどを検討します。
 「証拠保全」「封じ込め」「根絶」「復旧措置(暫定対応)」を行います。
 シナリオ例:影響範囲を特定し、被害拡大を防ぐ適切な対処を実施する。

04報告・公表

 被害の度合いや影響を及ぼしている範囲に応じて、報告・公表します。
 組織内部への報告に加えて、被害者、監督官庁などの外部関係者にも併せて報告します。
 シナリオ例:インシデントへの対応を時系列でまとめ、報告書を作成する。

05事後対応

 インシデントに関わったすべての関係者が参加して「振り返り」を実施します。
 同様のインシデントを防ぐための今後の対応などを含め、最終報告書に取りまとめます。
 シナリオ例:インシデント対応の中で得られた経験、気付きを共有する。

004.IPA春ネスペ

午後1のSD-WANで大失点しているはず。
午後2は↓の通り不備あり、公式にアナウンス。
→もし万が一午後1を突破していれば合格の可能性が無きにしも非ず。

いずれは自分で問題の不備を指摘できるようになりたい気持ちではある。

005.SpringBoot練習台

環境を汚染したくないのでDockerで作った。

Icon in a callout block
Docker
*Docker Desktop は、Docker Personal サブスクリプションの一部として、個人、非商用のオープン ソース開発者、学生、教育者、従業員数 250 名未満かつ年間売上高 1,000 万ドル未満の小規模企業が無料で使用できます。従業員数 250 名を超える企業または年間売上高 1,000 万ドルを超える企業で Docker Desktop を商用利用するには、有料サブスクリプション (Pro、Team、または Business) が必要です。
% tree
.
├── Dockerfile
├── README.md
├── docker-compose.yml
├── javaapp
│   ├── pom.xml
│   ├── src
│   │   └── main
│   │       ├── java
│   │       │   └── com
│   │       │       └── example
│   │       │           └── demo
│   │       │               ├── DemoApplication.java
│   │       │               ├── controller
│   │       │               │   └── UserController.java
│   │       │               ├── model
│   │       │               │   └── User.java
│   │       │               └── service
│   │       │                   └── UserService.java
│   │       └── resources
│   │           ├── application.properties
│   │           └── templates
│   │               ├── complete.html
│   │               ├── confirm.html
│   │               └── input.html
│   └── target
│       ├── classes
│       │   ├── application.properties
│       │   ├── com
│       │   │   └── example
│       │   │       └── demo
│       │   │           ├── DemoApplication.class
│       │   │           ├── controller
│       │   │           │   └── UserController.class
│       │   │           ├── model
│       │   │           │   └── User.class
│       │   │           └── service
│       │   │               └── UserService.class
│       │   └── templates
│       │       ├── complete.html
│       │       ├── confirm.html
│       │       └── input.html
│       ├── demo-0.0.1-SNAPSHOT.jar
│       ├── demo-0.0.1-SNAPSHOT.jar.original
│       ├── generated-sources
│       │   └── annotations
│       ├── maven-archiver
│       │   └── pom.properties
│       └── maven-status
│           └── maven-compiler-plugin
│               └── compile
│                   └── default-compile
│                       ├── createdFiles.lst
│                       └── inputFiles.lst
└── output
    └── demo-0.0.1-SNAPSHOT.jar
ディレクトリ構成 /output /javaapp/target はビルドで出てくるもの。

アプリの中身は適当に。
あとはルートディレクトリで↓を順番に打てば…

docker-compose up -d

docker build -t spring-boot-app .

docker run -p 8080:8080 spring-boot-app

↓こうなる。で、ブラウザでhttp localhostにアクセスするとアプリが見れる。

% docker run -p 8080:8080 spring-boot-app

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v2.5.6)

2024-06-08 06:49:04.720  INFO 1 --- [           main] com.example.demo.DemoApplication         : Starting DemoApplication v0.0.1-SNAPSHOT using Java 11.0.16 on e827d294a1ec with PID 1 (/app/demo.jar started by root in /app)
2024-06-08 06:49:04.723  INFO 1 --- [           main] com.example.demo.DemoApplication         : No active profile set, falling back to default profiles: default
2024-06-08 06:49:05.712  INFO 1 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
2024-06-08 06:49:05.727  INFO 1 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2024-06-08 06:49:05.727  INFO 1 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.54]
2024-06-08 06:49:05.779  INFO 1 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2024-06-08 06:49:05.779  INFO 1 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 992 ms
2024-06-08 06:49:06.254  INFO 1 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
2024-06-08 06:49:06.265  INFO 1 --- [           main] com.example.demo.DemoApplication         : Started DemoApplication in 1.983 seconds (JVM running for 2.391)

dockerファイルの中身

version: '3.8'

services:
  java-build:
    image: maven:3.8.1-openjdk-11-slim
    working_dir: /app
    volumes:
      - ./javaapp:/app
      - ./output:/output
    command: /bin/sh -c "mvn clean package && cp /app/target/*.jar /output"
docker-compose.yml
# ベースイメージとしてOpenJDKを使用
FROM openjdk:11-jre-slim
WORKDIR /app

# ホストのoutputフォルダからビルド成果物をコピー
COPY ./output/*.jar /app/demo.jar

CMD ["java", "-jar", "/app/demo.jar"]
Dockerfile