シェア
ロールダウン

//Linux

ClamAVによるウイルス・マルウェア・トロイの木馬の効果的なスキャン

14/04/2025カテゴリー : Linux 技術記事
Tags :

今日のソフトウェア開発の世界では、セキュリティは無視できない重要な要素です。ウイルス、トロイの木馬、マルウェアなどの脅威は、ソースコードファイル、システムリソース、さらには日常的に使用しているライブラリの中にも潜んでいる可能性があります。 商用のセキュリティ対策は強力ですが、コストが高いため、スタートアップや小規模プロジェクトには適していません。そこで登場するのが、ClamAVです。ClamAVはオープンソースで無料、さらに導入が容易なため、理想的な選択肢となります。ClamAVはウイルスやマルウェアのスキャン機能を提供し、ソフトウェア開発プロセスに簡単に統合できます。 本記事では、ClamAVの紹介、ソースコードのセキュリティにおける役割、Docker環境における使用方法とその自動化によるスキャン最適化について解説します。 ClamAVとは? ClamAV は、Unix系(Linux、macOS)システムで広く使用されているオープンソースのウイルススキャンソフトウェアです。このソフトは特にサーバーやWindows以外の環境に適しており、ウイルス検出だけでなく、マルウェアやトロイの木馬、メール、ファイルシステム、その他の入力ストリームにおける脅威も検出します。 このソフトウェアは現在、Cisco傘下のセキュリティ研究チーム「Cisco Talos」によってメンテナンスされています。ClamAVは既知のマルウェアに対する検出力が高いですが、ゼロデイ脅威に対する防御には設計されていません。 なぜClamAVが必要か? 信頼できないリソース内のマルウェア検出:ソースコード自体は安全であっても、外部ライブラリやアップロードされたファイルにはマルウェアやトロイの木馬が潜んでいる可能性があります。ClamAVはそれらを検出するのに有効です。 低コスト:ClamAVは完全無料のオープンソースソフトウェアであり、商用ソリューションを導入する余裕のないプロジェクトに最適です。 自動スキャン可能:DevOpsやCI/CDパイプラインに簡単に組み込むことができ、開発初期からセキュリティ対策が可能です。 定期的なアップデート:ClamAVは頻繁にウイルス定義が更新されており、新しい脅威にも即対応可能です。 ClamAVを使用するメリット 無料かつオープンソース:ライセンス費用がかからず、柔軟にカスタマイズ可能です。 簡単に統合できる:ClamAVはさまざまなツールや自動化プロセスに統合しやすいです。 多様なマルウェアを検出可能:ソースコード、圧縮ファイル、メールなど、さまざまな形式のファイルをスキャンできます。 マルチプラットフォーム対応:Linuxだけでなく、WindowsやmacOSでも利用可能です。 DockerでClamAVを利用してソースコードを自動スキャンする手順 以下では、ClamAVをDockerコンテナで構築し、自動的にソースコードをスキャンする方法について説明します。 ステップ1: ClamAV用Dockerfileの作成 Dockerfileを作成してClamAVをインストールし、ソースコードスキャン環境を構築します。 FROM clamav/clamav:latest RUN freshclam CMD freshclam && clamscan -r –bell -i /scan 注釈: -r: /scan 以下を再帰的にスキャン –bell: ウイルス検出時にベルを鳴らす -i: 感染ファイルのみ表示 /scan: スキャン対象のディレクトリ(ホストからマウント) ステップ2: docker-compose.ymlの作成 services: clamav: build: context: . image: clamav-scanner container_name:..

もっと見る
  • 40 ビュー
  • 0 コメント

Nginxのアーキテクチャ、動作、および基本設定

17/01/2025カテゴリー : Linux 技術記事

Nginx(Engine X)は、Igor Sysoevによって2004年に開発されたオープンソースのHTTPウェブサーバーで、C10k問題(10,000の同時接続を処理する問題)を解決するために作られました。現在、Nginxは単なるウェブサーバーではなく、強力なリバースプロキシ、ロードバランサー、HTTPキャッシュとしても利用されています。 1. Nginxの概要 Nginxは、HTTPウェブサーバー、リバースプロキシ、ロードバランサー、コンテンツキャッシュ、TCP/UDPプロキシサーバー、メールプロキシサーバーです。 柔軟性、優れたパフォーマンス、安定性、リソース消費の低さ、シンプルな設定が特徴です。 イベント駆動型とノンブロッキングI/Oのメカニズムにより、同時に何千もの接続を効率的に処理します。 2. Nginxアーキテクチャの主要コンポーネント Nginxアーキテクチャの主要コンポーネント Masterプロセス: Nginxのライフサイクル全体を管理します。 設定ファイル(nginx.conf)を読み取り、検証します。 ワーカープロセスを作成し、起動します。 システムからのシグナル(再起動、リロード、停止など)を処理します。 クライアントからのリクエストは直接処理しません。 ワーカープロセス: クライアントからのリクエストを処理し、静的コンテンツを提供するか、バックエンドにリクエストを転送します。 独立して動作し、イベント駆動型で複数の接続を同時に処理します。 worker_processesの数は、通常CPUコアの数と一致させてリソースを最大限に活用します。 キャッシュローダープロセス(オプション): 再起動時にディスクからメモリにキャッシュコンテンツをロードします。 キャッシュマネージャープロセス(オプション): キャッシュのサイズ管理と定期的なクリーンアップを行います。 3. ワーカープロセスの動作 ワーカープロセスはイベント駆動型モデルに従い、epoll(Linux)などのメカニズムを使用して、単一のスレッドで複数の接続を同時に処理します。 A. 初期化とイベント待機 初期化:Masterプロセスによって作成された後、ワーカープロセスはNginxの設定ファイルから情報を読み取り、イベントループを設定して新しい接続、I/Oリクエスト、または処理が必要なタスクを監視します。 イベント待機:ワーカープロセスは、(新しい接続、データの受信、データの書き込み完了など)監視すべきイベントをepollメカニズムを使ってシステムに登録します。 B. 接続の処理 epollからのイベント受信:新しいリクエストがクライアントから送信されると、epollはワーカープロセスに通知し、ワーカープロセスはそのイベントを即座に処理します。 接続はブロックしない:ワーカープロセスは、データまたはリソースを待っているときにブロックしません。もしデータがまだ準備できていない場合(例:リクエストのボディが完全に読み込まれていない場合)、ワーカープロセスは一時停止し、他の接続を処理します。 並列処理:各ワーカープロセスは1つのスレッドで実行されますが、イベントループ内でイベントを切り替えながら、何千もの接続を同時に処理することができます。 C. リクエストの処理 リクエスト解析:HTTPリクエストの解析(ヘッダー、メソッド、URLなど)を行い、設定ファイルに基づいて適切な処理を実行します。 タスクの実行:静的コンテンツの提供、バックエンドサーバーへのリクエストプロキシ、またはSSL/TLSの処理を行います。 D. レスポンスの送信 レスポンスの準備:HTTPレスポンスを作成し、ステータスコード、ヘッダー、ボディを設定します。 レスポンスの送信:データをソケット経由で書き込むか、データが大きい場合はチャンク化して送信します。 E. 接続の終了または保持 処理が完了した後、ワーカープロセスは次のリクエストがない場合接続を閉じるか、HTTP keep-aliveが有効であれば接続を保持します。 4. ワーカープロセスの設定 A. ワーカープロセスの設定 設定ファイル:/etc/nginx/nginx.conf(通常、このファイルは/usr/local/nginx/confや/etc/nginx、または/usr/local/etc/nginxにあります)。 worker_processesディレクティブを使って設定(デフォルトはauto..

もっと見る
  • 40 ビュー
  • 0 コメント

Shellの範囲を理論と応用で拡張する

24/11/2017カテゴリー : Linux 技術記事

★ 期待通りに使用できますか? Bash on Ubuntu on Windows。 2016年8月から、[Bash on Ubuntu on Windows](以下、BoWと省略)はWindows 10に組み込まれました。そのため、Windows上でUbuntuとBashの両方を使用できるようになりました。 「もし開発ができるなら面白いだろう」と考えている人も多いのではないでしょうか? 私たちはBoWを使用して、実際の開発環境を模倣し、期待に応えられるかを検証しました。 BoWを使用してアプリケーションを開発する Windows 10 Anniversary Updateから導入された[BoW]は、2017年4月のCreators Updateによって強化され、開発ツールも利用可能になりました。この投稿では、BoWを使用して開発することで期待通りに動作するかを検証します。 開発環境について 私たちは次の環境で開発と検証を行いました。 Windows 10 Pro 64bit, version 1703, build 15063.138 (Creators Update) 16GB RAM Intel Core i7-5500U CPU @ 2.40GHz BoWはCreators Updateから以下の環境を使用しています[指示1]。 ▼指示1 BoWの情報(この投稿で使用されている) $ uname -a Linux DESKTOP-T3CMM04 4.4.0-43-Microsoft #1-Microsoft ⇙ Wed Dec..

もっと見る
  • 61 ビュー
  • 0 コメント

Shellの機能を拡張する方法

23/08/2017カテゴリー : Linux 技術記事

bashの新機能は非常に便利です。 この記事では、バージョン4.0以降で追加された新しい機能について紹介します。 shellscriptの互換性について考慮する際には、新しい機能を追加する際に慎重である必要がありますが、使用しなくても知っておくことは有益です。 これらの新機能がどのような問題を解決するために追加されたのかを見ていきましょう。 2016年9月、bashのバージョンが4.4にアップデートされ、多くの新機能が追加されました。しかし、bashをアップデートするたびにあまり興味が湧かない理由があります。例えば、bashスクリプトをPOSIX標準に合わせると、bashの新機能がいくつかのセキュリティリスクを生むことが分かります(*1)。一方で、コマンドラインを使ってシェル操作を行う場合、パイプやリダイレクトを多く使います。新機能が追加されたものの、どこか少し物足りない感じがするのです。 新機能にはそれぞれ理由があるのですが、その中でも一部の人々は、bashの新機能が必要だと感じ、その追加を支持しています。 さらに、bash内でデータやフラグの管理を見えなくするための新しい機能があることがわかりました。たとえ使わない機能でも、それを理解することによって、シェルの仕組みをより深く知ることができます。そのため、この記事では、バージョン4.0以降のbashに追加された新機能に焦点を当て、これらの機能がどのような問題を解決するために追加されたのか、またその便利さについて深掘りしていきます。 bash 4.4の準備 bashのコードは[https://ftp.gnu.org/gnu/bash/](https://ftp.gnu.org/gnu/bash/)から入手できるので、バージョン4.4をダウンロードして使用しましょう。ほとんどのUNIX系のOSでは、手動でインストールできます。詳細なインストール方法は[指示1]に記載されています。以前のバージョンについても同様の方法でインストールできますので、古いバージョンと新しいバージョンを比較する際は、[指示1]の手順を調整してみてください。この記事では、Ubuntu 16.04 Server環境で動作確認を行いました。 各バージョンでの変更内容は、tarで展開したCHANGESファイルに記録されています。興味がある方はぜひ確認してみてください。 また、bashをバージョンアップした際には、BASH_VERSION環境変数を頻繁に確認しましょう。例えば、バージョン4.4と3.2をPATHに設定し、次のように切り替えてみてください。 $ bash4.4 $ echo $BASH_VERSION $ 4.4.0(1)-release $ bash3.2 $ echo $BASH_VERSION $ 3.2.57(1)-release 標準出力と標準エラー出力の統合とパイプ「|&」の使用 まずは簡単なトピックから始めましょう。バージョン4.0以降、bashでは|&がパイプの新しいシンボルとして導入されました。bashを使っているとき、標準出力と標準エラー出力を統合した後、別のコマンドに渡したいことがありますが、バージョン3.2までは以下のように書かなければなりませんでした: $ ls a aa 2>&1 l nl 1 ls: ‘aa’にアクセスできません:省略された部分 2 a 上記のコードでは、標準エラー出力と標準出力を統合してパイプに渡し、nlコマンドで番号を付けています。しかし、バージョン4.0以降では、以下のように書くことができ、簡潔に処理ができます。 $ ls a aa l& ln 1 ls: ‘aa’にアクセスできません:省略された部分 2 a これにより、書き方が簡単になり、効率的になります。しかし、単に書き換えたことで新しい機能が追加されたわけではありません。便利さを感じるかどうかは使用状況に依存します。次に、findコマンドをディレクトリで実行する例を見てみましょう。標準出力と標準エラー出力がどのように扱われるか確認できます。..

もっと見る
  • 61 ビュー
  • 0 コメント

SSHキーの設定方法

SSHキーの動作方法 SSHキーとは、個人鍵(private key)と公開鍵(public key)を使ってユーザー認証を行う方法です。個人鍵と公開鍵は密接に関連しており、互いに認識できるようになっています。SSHキーを作成すると、両方の鍵が作成されます。その後、公開鍵はサーバーに配置され、個人鍵はクライアントに保存されます。クライアントがサーバーにログインする際、クライアントは個人鍵を使って認証要求を送信します。サーバーは、クライアントの個人鍵がサーバー上の公開鍵と一致するかどうかを確認し、一致すればログインが許可されます。 ステップ1 — RSAキーのペアを作成 最初に、クライアントのマシンでSSHキーのペアを作成します。 ssh-keygen -t rsa ステップ2 — キーとパスフレーズの保存 キーを作成するためにコマンドを入力すると、いくつかの質問に答える必要があります: Enter file in which to save the key (/home/demo/.ssh/id_rsa): Enterキーを押して、デフォルトの場所(ユーザーフォルダ内)に保存します(この例ではユーザー名は「demo」)。 Enter passphrase (empty for no passphrase): パスフレーズを使用するかどうかはあなたの選択です。パスフレーズを入力することで、個人鍵を保護できます。もし個人鍵が失われたり、盗まれたりした場合でも、パスフレーズがわからなければ誰もログインできません。パスフレーズの唯一の欠点は、SSHキーでサーバーにログインするたびにパスフレーズを入力する必要があることです。 キー作成プロセスは次のようになります: ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/demo/.ssh/id_rsa): Enter passphrase (empty for no..

もっと見る
  • 177 ビュー
  • 0 コメント

[LINUX][レッスン0] 総合紹介

01/10/2014カテゴリー : Blog Linux 技術記事

1. 研究用ドキュメント : – Linuxの参照リンク: https://www.k4.dion.ne.jp/~mms/unix/linux_com/ https://www.dais.is.tohoku.ac.jp/~koike/tips/linux_command.html Linuxコマンド: https://linuxcommand.org/ 2. 基本的なLinuxコマンド ファイル / フォルダ: vi [file]: ファイルの内容を編集。 rm [file]: ファイルを削除。 cp (or scp) [file] [to_file]: ファイルをコピー。 file [file]: ファイルの内容に関する情報を表示。 その他: clear: コマンドラインウィンドウをクリア。 ls (or ll) [dir]: ディレクトリの内容をリスト表示。 cat [file]: ファイルの内容をコマンドラインウィンドウに表示。 passwd: パスワードを変更。 less (or more)[file]: ファイルの内容を1ページずつ表示。 info: シェル、ユーティリティ、プログラムに関する情報とドキュメントを表示。 grep [“String”] [file]: ファイル内の文字列を検索。 head [file]: ファイルの最初の10行を表示。..

もっと見る
  • 45 ビュー
  • 0 コメント

福利厚生

給料・ボーナス制度

社員の感情・願望を理解しているので、リバークレーンベトナムは特に年2回の定期昇給制度を設けています。毎年6月と12月に評価を行い、毎年1月と7月に給与が変更されます。また、社員は月次と年次の優秀な個人には定期的な業績賞与が別で支給されます。

日本研修制度

世界中の新しい技術分野に触れるために、社員を日本にオンサイトさせる方針があります。さらに、技術分野か管理分野かのキャリアパスは社員の決定次第です。

毎年社員旅行

リバークレイン・ベトナムは、スタッフに挑戦の機会を提供するだけでなく、年に一度の魅力的な旅行で彼らを楽しませています。エキサイティングなガラディナーやチームビルディングゲームは、リバークレインのメンバー同士の絆をさらに深める手助けをします。

リバークレイン イベント

チームビルディング・ファミリーデー・お夏休み・中秋節などのイベントはチーム内のメンバーが接続出来るしお互いに自分のことを共有出来る機会です。ご家族員に連携する際にはそれも誇りに言われています。

社会保険制度

リバークレーンベトナムは従業員に社会保険、医療保険、失業手当などの社会保険制度があります。当社は、これらの保険に関するあらゆる手続きをスタッフに必ずサポートしています。さらに、他の保険契約も考慮され、検討されています。

他福利

社員向けの活動をサポートすることもあります。 ・文化・芸術・スポーツクラブの運営費用 ・技術研究の教科書を購入する金額 ・エンジニア試験・言語能力試験を受験料 ・ソフトスキルのセミナー・コースの参加費 ・等 また会社政策通り、他のベネフィットもあります。

© 2012 RiverCrane Vietnam. All rights reserved.

Close