Internship Report – Software Engineer meets ITSec
When I began my internship with TOKYO Co. in January of 2026, I couldn’t imagine how much I would learn about IT Security Operations in just a few weeks. From exploring Security Information and Event Management Systems (SIEM) like Wazuh, to setting up virtual Ubuntu Servers with Snort3 as Intrusion Detection System (IDS), I had the chance to apply my new knowledge in real-world systems. I already built my own Security Operation Center (SOC) web app and this has only been half of my internship time!
インターンで体験したITセキュリティ運用と日本文化
2026年1月にTOKYO社でインターンを始めたとき、わずか数週間でこれほど多くのITセキュリティ運用について学べるとは想像していませんでした。WazuhのようなSIEM(Security Information and Event Management)を調べたり、Snort3を侵入検知システム(IDS)として動かすための仮想Ubuntuサーバーを構築したりと、新しく学んだ知識を実際のシステム環境で試す機会を得ることができました。さらに、自分自身でSOC(Security Operation Center)のWebアプリも開発しました。しかも、これはまだインターン期間の半分が過ぎた時点での成果です。
ここでは、インターン期間中に取り組んだITセキュリティのプロジェクトと、日本での体験について紹介したいと思います。
The Brain: Wazuh Log and Alert Management
Let me begin by explaining the basics of SIEM and IT Security Operations for those who might be unfamiliar with the concepts, just like I was a few weeks ago. Organizations must maintain a variety of IT systems to ensure seamless business operations. This heterogeneous environment, ranging from communication servers to employee workstations, presents a unique challenge: each system is exposed to different vectors. While a public-facing server might face direct brute-force attacks, an internal client is more likely to be compromised via phishing or malicious USB drives.
A SIEM system must observe all these systems and their respective risks at once, by collecting and analyzing logs. When something suspicious is detected, an alert must be raised to let an operator know about it so the respective countermeasures can be taken. A lot of times, this could be an automated response like blocking a malicious IP through a firewall setting. Wazuh is a powerful example of such a SIEM system, it is open-source which means it is developed by a community of engineers and can be installed and used for free by anyone!
Because organizations can have thousands of systems to observe, each creating hundreds of log messages every minute, it is very important to separate relevant logs from irrelevant ones. Wazuh achieves this by applying a set of rules to the alerts, detecting known attack patterns. To make the mass of log messages searchable efficiently, it uses OpenSearch (based on ElasticSearch) for indexing large amounts of data.
SIEMの役割:Wazuhによるログとアラート管理
まず、数週間前の私と同じように、SIEMやITセキュリティ運用にあまり馴染みのない方のために基本を簡単に説明します。
企業が日々の業務を円滑に進めるためには、多くのITシステムを運用する必要があります。通信サーバーやWebサーバー、社員のPCなど、さまざまなシステムが混在する環境では、それぞれ異なるセキュリティリスクにさらされています。例えば、インターネットに公開されているサーバーはブルートフォース攻撃を直接受ける可能性があります。一方、社内PCはフィッシングメールや不正なUSBデバイスによって侵害される可能性があります。
SIEMは、これらすべてのシステムからログを収集・分析することで、セキュリティ上の異常を検知する仕組みです。何か不審な動きが検出された場合にはアラートを発し、運用担当者に通知します。場合によっては、ファイアウォールで攻撃元のIPアドレスをブロックするなど、自動的に対策が実行されることもあります。WazuhはそのようなSIEMの代表的なツールで、オープンソースとしてコミュニティによって開発されています。そのため、誰でも無料で導入して利用することができます。
企業環境では、数千台のシステムが毎分何百ものログを生成することも珍しくありません。そのため、大量のログの中から重要なものを効率よく見つけ出す必要があります。Wazuhではルールセットを用いて既知の攻撃パターンを検知し、OpenSearch(ElasticSearchベースの検索エンジン)によって大量のログデータを高速に検索できるようにしています。
Beyond the Code: Culture and Team Fun
Of course I didn’t only learn about IT Security but also about Japanese culture! For example, on Setsubun we performed the bean-throwing ritual together at the office, to chase away the demons and attract good luck. When throwing the beans you shout “Oni wa soto!“ and you can eat the beans afterwards! It was really fun and we continued to celebrate at a nearby Yakotiri restaurant after work. Oishii desu!
日本文化との出会い:節分イベント
インターンではITセキュリティだけでなく、日本文化を体験する機会もありました。
節分の日には、オフィスで豆まきを行いました。鬼を追い払い、福を呼び込むための日本の伝統行事です。豆を投げながら「鬼は外!」と声を出し、その後は豆を食べることもできます。とても楽しい時間で、仕事の後には近くの焼き鳥屋さんに行き、みんなで食事をしました。とても美味しく、日本らしい雰囲気を楽しむことができました。
The Honeypot: A public server running Snort3
While Wazuh comes equipped with a set of rules for detecting common attacks or suspicious actions, new exploit techniques and security loopholes are discovered by hackers every day and attacks are becoming increasingly complex. Staying up-to-date and detecting even the newest attacks requires an IDS like Snort3 which monitors all network activity and can detect attacks before they actually create any damage.
With some custom configuration it is possible to make Snort3 and Wazuh talk to each other to combine their strengths. First, I installed Snort3 on a new Ubuntu Server and configured it to watch the local network traffic. Alerts are exported in JSON format and saved on the server’s local storage, where the Wazuh Agent reads them and forwards them continuously to the Wazuh Manager for analysis. To ensure that even the newest attacks are detected, an updated ruleset is downloaded every day using “PulledPork”, a script which downloads new rules from a public database and updates Snort’s configuration. Snort will detect and log malicious network traffic together with details like the source IP address and the suspicious action. With some additional configuration in Wazuh, an attacker’s IP address can be converted into geo-coordinates so you can see directly where your system is being attacked from!
ハニーポット環境:Snort3によるネットワーク監視
Wazuhには既知の攻撃を検知するルールが備わっていますが、新しい攻撃手法や脆弱性は日々発見されています。こうした最新の攻撃を検知するためには、ネットワーク通信そのものを監視するIDS(侵入検知システム)が重要になります。そこで今回、Snort3を用いた監視環境を構築しました。
まず、新しいUbuntuサーバーにSnort3をインストールし、ネットワークトラフィックを監視するよう設定しました。Snort3が生成するアラートはJSON形式で保存され、それをWazuh Agentが読み取ってWazuh Managerへ送信し、分析が行われます。また、最新の攻撃にも対応できるよう、「PulledPork」というスクリプトを利用して毎日最新のルールを取得し、Snortのルールセットを更新する仕組みも導入しました。Snortは攻撃を検知すると、攻撃元のIPアドレスや攻撃内容などの情報をログとして記録します。さらにWazuh側で設定を行うことで、IPアドレスを地理情報に変換し、どの地域から攻撃が行われているのかを可視化することも可能になります。

The Control Center: A Next.js App with 3D Visualization
Wazuh comes with its own dashboard for visualization and observation of alerts, where you can create time series charts or map overviews. However as a software engineer, I couldn’t help but create my own web app with a 3D globe animation showing attacks in real-time! The app is built using Next.js as a framework and three.js (specifically three-globe) for the 3D earth animation. The alert data is polled directly from the Wazuh Indexer’s REST API. On the client side, some statistics are calculated about where the most attacks are coming from, and what usernames are most commonly used for SSH brute force attempts. This provides real-time insights about the organization’s IT security status.
SOCダッシュボード:3D地球で攻撃を可視化
Wazuhには標準のダッシュボード機能がありますが、ソフトウェアエンジニアとして「自分でも作ってみたい」と思い、独自のWebアプリも開発しました。このアプリでは、3Dの地球を表示し、世界中からの攻撃をリアルタイムで可視化することができます。アプリはNext.jsをフレームワークとして使用し、3D地球の表示にはthree.js(three-globe)を利用しています。アラートデータはWazuh IndexerのREST APIから取得しています。クライアント側では、どの地域から攻撃が多いのか、SSHブルートフォース攻撃でよく使われるユーザー名は何かといった統計情報を計算し、リアルタイムでセキュリティ状況を確認できるようにしました。
Bonus material: As someone with a background in cloud software engineering, of course I couldn’t just build the app and copy the files to the server manually. Instead I set up a full CI/CD pipeline using GitHub Actions. First the code quality is ensured by formatting and linting the codebase, then it’s checked for any errors by building the Next.js app. In a subsequent step, the application is built as a Docker image and pushed to the GitHub container registry. As a final deployment step, the production server pulls the image from the registry and loads the docker-compose.yml with deployment instructions by performing a shallow clone. And they ran ‘docker compose up’ happily ever after …
I’m already amazed at how much I learned about IT Security and Japanese Culture in the past weeks and really looking forward to the second half of my internship!
Bonus:CI/CDパイプラインの構築
クラウド開発の経験もあったため、アプリを手動でサーバーにコピーするのではなく、CI/CDパイプラインも構築しました。GitHub Actionsを使い、コードのフォーマットやLintチェックを行った後、Next.jsアプリのビルドによってエラーがないか確認します。その後、アプリケーションをDockerイメージとしてビルドし、GitHub Container Registryに登録します。本番サーバーはレジストリからイメージを取得し、docker-compose.yml を読み込んで docker compose up を実行することでアプリケーションを起動します。
ここ数週間で、ITセキュリティの実践的な知識だけでなく、日本文化についても多くのことを学ぶことができました。インターンの後半では、さらに新しい技術やプロジェクトに挑戦できることを楽しみにしています。

