/** Geminiが自動生成した概要 **/
SOY Inquiryで、削除したはずの問い合わせ内容が管理画面から検索できてしまうという個人情報保護の観点からの指摘に対し、以下の改善策を講じた。1. 論理削除後30日でデータベースから完全に削除される「自動削除機能」を追加2. 過去の問い合わせを一括で論理削除しやすくするため、「問い合わせ一覧の件数指定」機能を追加3. 誤って削除した場合も復元できるよう、「論理削除したレコードの確認・解除機能」を追加これらの機能はSOY Inquiry 2.8以降で利用可能。SOY Shopでも同様の要望があれば、問い合わせページから連絡を。
カテゴリー : セキュリティ
SOY Inquiryの個人情報の取り扱いについて
SOY CMSで管理画面のIPアドレス制限を追加しました
/** Geminiが自動生成した概要 **/
SOY CMSの管理画面に、IPアドレス制限機能が追加されました。従来の.htaccessによる制限だと、出張先などIPアドレスが異なる場所からアクセスする際に、都度設定変更が必要でした。新機能では、管理画面から一時的に制限を解除する「アンロック」が可能になり、利便性が向上しました。解除方法は、セキュリティに配慮し、URLを手動で作成する方式を採用しています。今回のアップデートにより、柔軟かつ安全な管理画面へのアクセス制限が可能になりました。ダウンロードは公式サイトからどうぞ。
ChromebookでOpenVPN Connect経由でVPNに接続
/** Geminiが自動生成した概要 **/
ChromebookでOpenVPN Connectを使ってVPN接続する手順のメモ。必要な証明書ファイル等をPlayファイル内のAndroidディレクトリに作成したフォルダに配置し、OpenVPN ConnectアプリでOVPNファイルを読み込むことで接続できた。Playファイルはアプリから参照できるディレクトリがダウンロードのみのため、誤操作防止のためAndroidディレクトリ内にフォルダを作成して証明書を配置した。
SOY CMS / SOY ShopのクッキーやセッションでSameSiteの設定を行う
/** Geminiが自動生成した概要 **/
SOY CMS/SOY ShopでクッキーとセッションのSameSite属性を変更する方法について解説されています。標準ではLaxに設定されていますが、Strictに変更したり、SameSite=None; Secure=true;にすることができます。設定は /CMSインストールディレクトリ/common/config/session.config.php 内の $sessCnf["samesite"] の値を編集することで行います。例えば、Strictに変更する場合は "Strict" を設定します。この変更はSOY CMSとSOY Shop全体に反映されます。変更後のパッケージはsaitodev.co/soycms/からダウンロード可能です。
Let's Encryptでwwwありなしに対応する
/** Geminiが自動生成した概要 **/
Let's Encryptを用いて、wwwあり(www.example.com)なし(example.com)両方のドメインでhttpsアクセスを実現する方法。Ubuntu 18.04、Apache2環境を前提とする。まず、certbotをsnapでインストールし、example.comのhttps化を行う。その後、www.example.comの証明書取得のため、`certbot certonly --webroot`コマンドを実行(webroot-pathはドキュメントルート)。最後に、Apacheの設定ファイル(000-default-le-ssl.conf)にwww.example.comのVirtualHost設定を追加し、example.comへのリダイレクトを設定、Apacheを再起動する。
Android版のChromeでアクセスした時にPHPのセッションが突然切れる症状で苦戦した
/** Geminiが自動生成した概要 **/
SOY Shopのカートで、Android Chrome利用時にセッションが突然切れ、カートの中身が消える問題が発生した。原因はCSRF対策で毎回`session_regenerate_id()`を実行していたこと。モバイルネットワークは不安定なため、`session_regenerate_id()`実行でセッション消失が起こる可能性があることがPHPマニュアルに記載されていた。対処として、スマホからのアクセス時は`session_regenerate_id()`を実行しないように変更した。関連記事「SOY CMSでSameSite cookiesの対応を追加しました」では、SameSite属性を設定することで、クロスサイトリクエストフォージェリ(CSRF)攻撃への対策を強化している。具体的には、CookieにSameSite=Lax属性を設定することで、クロスサイトでのCookie送信を制限し、セキュリティを向上させている。これにより、SOY CMSを利用するサイトのセキュリティが強化され、ユーザーの情報がより安全に保護される。
設置したお問い合わせフォームからの通知メールが届かない
/** Geminiが自動生成した概要 **/
SOY Inquiryで構築したお問い合わせフォームの管理者宛通知メールが突如届かなくなった。調査の結果、送信テストの繰り返しにより、さくらのメールボックスで迷惑メールと判定されていたことが判明。対応として、メールボックスのコントロールパネルで管理者メールアドレスをホワイトリストに登録した。転送設定を利用しているため、転送先メールアドレスのホワイトリストにも同様の登録が必要。通知メールにお問い合わせ番号を含めることで迷惑メール判定を回避できる可能性も検討中。
SOY CMSでSameSite cookiesの対応を追加しました
/** Geminiが自動生成した概要 **/
Android版ChromeでPHPセッションが突然切れる問題への対応についての記事を要約します。問題は、特定のAndroid版ChromeのバージョンでSameSite属性のないcookieがアクセス拒否されることに起因していました。解決策として、PHPで`session_set_cookie_params`関数を使用し、`SameSite=None`と`Secure`属性をcookieに設定することで、HTTPS通信時にのみcookieが送信されるようにしました。この変更により、Android版Chromeでのセッション維持が可能になりました。さらに、データベーススキーマの見直しやマイページの処理最適化を行い、表示速度の向上も実現しました。関連情報として、Webブラウザセキュリティに関する書籍の紹介や、cookie属性の詳細を解説するMDNのドキュメントへのリンクが掲載されています。
クロスサイトリクエストフォージェリを回避する方法を探る
/** Geminiが自動生成した概要 **/
記事では、SOY2HTMLでセキュアなフォームを作成する方法を解説しています。具体的には、CSRF対策としてトークンを埋め込んだフォームを生成するHTMLFormクラスの使い方を紹介しています。 buildHiddenToken()でトークンを生成し、isValidToken()で検証することで、悪意のある外部サイトからのリクエストを無効化できます。また、トークンの有効期限を設定することでセキュリティを強化できます。記事では、具体的なコード例を交えながら、これらの機能の使い方を分かりやすく説明しています。 さらに、HTMLFormクラス以外の方法として、独自にトークンを生成・検証する方法についても触れています。
SQLインジェクションに対してプリペアードステートメントが有効であるかを試してみる
/** Geminiが自動生成した概要 **/
この記事では、PHPにおけるSQLインジェクション対策としてプリペアードステートメントの有効性を検証しています。まず、脆弱なコード例を示し、攻撃者がSQL文を操作して意図しないデータを取得できることを実演。次に、プリペアードステートメントを用いた修正版を紹介し、SQL文と入力データを分離することで攻撃を防ぐ仕組みを解説しています。具体的には、プレースホルダを用いてSQL文を準備し、executeメソッドでパラメータをバインドすることで、入力データがSQL文として解釈されることを防いでいます。結果、同じ攻撃を試みてもデータが取得できず、プリペアードステートメントの有効性が確認されました。関連記事として、SOY2DAOでのプリペアードステートメントの利用方法も紹介されています。
クロスサイトスクリプティングを回避する方法を探る
/** Geminiが自動生成した概要 **/
SOY2では、XSS対策としてhtmlspecialcharsを簡便に利用できるHTMLLabelを提供している。記事では、HTMLLabelの基本的な使い方と、soy:idを用いた動的な値の表示方法を解説。HTMLLabelはHTMLタグを自動的にエスケープし、安全に値を表示。例として、ブログ記事のタイトルを表示するコードを紹介し、HTMLLabelを用いることで、タイトルに含まれるHTMLタグがエスケープされ、XSS脆弱性を防ぐ様子を示している。また、HTMLLabelの子要素としてHTMLタグを記述することで、特定のタグを許可することも可能。記事は、HTMLLabelがSOY2でのXSS対策に効果的であることを示唆。
SOY InquiryでRCE(Remote Code Execution)の脆弱性に対応しました
/** Geminiが自動生成した概要 **/
SOY Inquiry 2.0.0.3以前のバージョンにリモートコード実行(RCE)の脆弱性が見つかりました。これは非常に危険な脆弱性であり、全ての旧バージョンが影響を受けます。早急に最新版へアップデートしてください。対応版は下記URLからダウンロード可能です。https://saitodev.co/soycms/soyinquiry/
【SEO対策】他のCMS向けの総当り攻撃を避ける
/** Geminiが自動生成した概要 **/
サイバー攻撃の増加は深刻な問題であり、特にCMSを狙った攻撃は増加傾向にある。記事ではSOY CMSへの攻撃事例を通して、その脅威を具体的に示している。攻撃者は管理画面へのログインを試みたり、脆弱性を突いて不正アクセスを試みる。対策としては、管理画面のURLを変更したり、.htaccessでアクセス制限をかけることが有効である。また、WAFの導入やセキュリティプラグインの活用も推奨されている。常に最新の情報に注意し、適切なセキュリティ対策を実施することで、被害を最小限に抑えることが重要である。
SOY InquiryでGoogleのreCAPTCHA v3に対応しました
/** Geminiが自動生成した概要 **/
SOY InquiryがGoogle reCAPTCHA v3に対応しました。reCAPTCHA v3は、ユーザーの行動を分析してボットを判別する仕組みで、従来の文字入力やチェックボックス操作は不要です。SOY CMSのプラグインとして提供され、有効化するとサイト右下にreCAPTCHAロゴが表示されます。v3は学習ベースで精度が向上するため、初期は精度が低い可能性があります. 現時点ではJavaScript無効環境への対策は未対応です。最新版は公式サイトからダウンロード可能です。関連記事では、同一IPからの連続問い合わせをブロックする方法を紹介しています。
ApacheでLet's Encryptの自動更新する為にCertBotを導入した
/** Geminiが自動生成した概要 **/
Let's Encryptの証明書更新を自動化するため、CertBotを導入した。以前設定したcronでの自動更新が機能せず期限切れメールが届いたため、新しい仕組みに切り替えた。CertBot公式サイトの手順でインストール後、Ubuntu 18.04環境でcronを設定し、毎日2時半に`certbot renew --force-renew`を実行するようにした。Apacheの停止と起動を更新前後に行うように設定し、起動は少し遅らせて実行するようにした。
SOY Inquiryで同一IPアドレスからの連続した問い合わせをブロックする
/** Geminiが自動生成した概要 **/
SOY Shopでクレジットカード番号の不正取得を試みる「クレジットマスター」への対策が強化されました。クレジットマスターは短時間で大量のカード番号を試し、有効な番号を盗み出す攻撃です。対策として、クレジットカード入力画面にreCAPTCHA v3を導入し、ボットによるアクセスを検知します。また、一定回数以上の決済失敗時にアカウントをロックする機能を追加し、不正アクセスの被害を最小限に抑えます。さらに管理画面へのログインにもreCAPTCHA v3を適用し、セキュリティを向上させました。これらの対策により、クレジットマスターからの攻撃を効果的に防ぎ、安全なECサイト運営を支援します。
SOY Shopでクレジットマスターの対策を強化しました
/** Geminiが自動生成した概要 **/
SOY Shopがクレジットカード情報の不正取得攻撃対策を強化。クレジットカード入力画面への不自然なリダイレクトを検知した場合、該当IPアドレスからのアクセスを遮断する機能を追加。さらに、PAY.JPクレジットモジュールでは、モジュール内でカード情報送信の試行回数を記録し、一定回数を超えるとカート利用を禁止する。これらの対策により、ネットショップが不正利用の踏み台となるリスクを大幅に低減。今後もセキュリティ強化を継続していく。最新版は公式サイトからダウンロード可能。
SOY ShopのPAY.JPクレジットカード支払いモジュールでカード情報非通過化対応をしました
/** Geminiが自動生成した概要 **/
SOY ShopのPAY.JPクレジットカード支払いモジュールがカード情報非通過化に対応しました。2018年8月1日以降、加盟店はカード情報を直接扱うことが禁止され、トークン化が必須となりました。 そのため、モジュールはカード情報をPAY.JPサーバーに送信し、トークンを受け取って処理するように改修されました。既存モジュール利用者は、サイトのセキュリティ維持のため早急にバージョンアップが必要です。最新版はサイト(https://saitodev.co/soycms/soyshop/)からダウンロード可能です。詳細は「SOY CMSのバージョンアップについて」を参照ください。
Apache上で利用しているLet's Encryptの失効
/** Geminiが自動生成した概要 **/
旧サーバーでLet's Encrypt証明書の失効、新サーバーで新規発行の手順を解説。旧サーバーでは、`certbot`を使わず、`/opt/letsencrypt/letsencrypt-auto revoke`コマンドで証明書を失効、`delete`コマンドで関連ファイルを削除。ドメイン名(saitodev.co)を指定して実行。新サーバーでの証明書発行手順は別記事を参照。
さくらインターネットの共有サーバでLet's Encryptを利用して常時SSL化してみた
/** Geminiが自動生成した概要 **/
さくらインターネットの共有サーバーでLet's Encryptを使って簡単に常時SSL化する方法が紹介されています。コントロールパネルから数クリックで設定でき、20分ほどで完了します。SOY CMS利用者は、追加の設定が必要です。記事内の画像パスがHTTPのままになっている場合、ブラウザで警告が表示されるため、SOY CMSの設定画面からサイトURLをHTTPSに変更する必要があります。 記事本文中の画像パスもHTTPSに書き換えるか、.htaccessでリダイレクト設定を行うことで対応できます。 これらの対応により、サイト全体をHTTPSでアクセスできるようになり、セキュリティとSEO効果の向上が期待できます。
Socket.IOのチャットアプリでXSS対策
/** Geminiが自動生成した概要 **/
Socket.IOで作成したチャットアプリでXSS脆弱性対策を実施した。HTMLタグを入力するとエスケープされずに表示されてしまうため、`xss-filters`ライブラリを導入。`npm install xss-filters`でインストール後、サーバーサイドのメッセージ送信部分で`xssFilters.inHTMLData()`を用いて送信メッセージをフィルターした。その結果、HTMLタグがエスケープされて表示されるようになり、XSS攻撃を防ぐことができた。
PHPの古いバージョンでの不具合報告についての対応
/** Geminiが自動生成した概要 **/
公式パッケージ更新再開に伴い、サイトへの問い合わせが増加した一方、PHPの古いバージョン(PHP5.5系以前)での不具合報告も多い。セキュリティサポートが終了した古いPHPバージョンは重大な脆弱性を持つため、これらの環境での不具合修正は行わない。問い合わせフォームから報告する際は、PHPのバージョン明記が必須。バージョン確認方法は、SOY CMS(1系・3系)共に管理画面にログインし、「ようこそSOY CMSへ!」から「サーバー情報」→「PHP Info」タブで確認できる。
サイトを公開した直後にWordPressの管理画面ログインがあるか探られた
/** Geminiが自動生成した概要 **/
SOY CMSに総当り攻撃を仕掛けてみる。その4では、パスワードリスト攻撃への対策を検証しています。辞書攻撃ツールを使い、短いパスワードやありがちなパスワードを設定した場合、数秒で突破される危険性を示しています。対策として、パスワードの最低文字数を10文字以上に設定し、ランダムな文字列を使うことを推奨。ブルートフォース攻撃対策として、ログイン試行回数に制限を設けるプラグイン「Limit Login Attempts Reloaded」を紹介し、複数回のログイン失敗でアカウントをロックする方法や、一時的にIPアドレスをブロックする方法の効果を解説しています。また、WAF(Web Application Firewall)の利用も推奨し、既知の攻撃パターンをブロックすることでサーバー負荷を軽減できることを説明しています。
人はネットワーク内から新しい信用のあり方を発見した
/** Geminiが自動生成した概要 **/
ビットコインの信用は、ブロックチェーンという技術に基づいています。取引記録をブロックにまとめ、暗号技術を用いて安全性を確保し、世界中のコンピュータに分散保存することで改ざんを防ぎます。マイナーと呼ばれる人々がトランザクションを検証しブロックチェーンに追加することで、ビットコインが生成されます。この検証作業には高度な計算が必要で、成功したマイナーは報酬としてビットコインを受け取ります。この報酬システムと分散管理によって、ビットコインの信用と不正防止が実現されています。
総当り攻撃を仕掛けられたので、接続元を調べてみたら
/** Geminiが自動生成した概要 **/
CMSへの不正ログイン後の攻撃者は、まず管理者権限の奪取を目指します。パスワード変更や新規管理者アカウント作成を通してシステムの完全掌握を図ります。その後、サイト改竄、マルウェア設置、情報窃取など多岐にわたる悪質な行為を行います。改竄ではサイトコンテンツの書き換えや、フィッシング詐欺サイトへの誘導などが行われ、マルウェア設置では訪問者への感染拡大を狙います。情報窃取は顧客情報やデータベース情報などを標的に、金銭目的や更なる攻撃への足掛かりとします。攻撃者はこれらの行為を迅速かつ隠密裏に行うため、早期発見と対策が重要です。
SOY2DAOでプリペアードステートメントを利用する
/** Geminiが自動生成した概要 **/
SOY2DAOでプリペアードステートメントを使う方法を解説します。SQLインジェクション対策として、SQL内に直接値を埋め込むのではなく、プレースホルダ(:name)を使用します。例:$sql = "SELECT * FROM soyshop_user WHERE mail_address = :mail AND password = :pass";$binds = array(":mail" => $m, ":pass" => $p);$results = $dao->executeQuery($sql, $binds);executeQueryの第二引数にプレースホルダと値の連想配列を渡すことで、SOY2DAOが安全にSQLを実行します。これにより、$mや$pにSQL構文が挿入されても、悪意のあるクエリの実行を防ぎます。
IP偽装をしてみた
/** Geminiが自動生成した概要 **/
IPアドレス隠蔽のため、StealthyというFirefoxアドオンでプロキシ接続を試した。結果、What Is My IP Address? で確認すると、所在地が隠蔽され「Hide IP」と表示された。仕組みは、プロキシサーバを中継することで、接続先サイトにはプロキシサーバのIPアドレスが表示されるというもの。体感として表示速度が遅くなったため、攻撃目的には不向きと感じた。また、海外のプロキシアクセスを禁止すればサイト攻撃のリスク軽減になる可能性も考えたが、企業のプロキシ利用も多いため、一概に禁止はできないと考察した。
IPアドレスで接続元の情報がどれだけわかるか調べてみた
/** Geminiが自動生成した概要 **/
IPアドレスから接続元の情報がどこまで特定できるか検証した結果、固定回線ではプロバイダと大まかな位置情報が判明し、身元の特定は容易であることが分かった。 Y!mobileのポケットWiFiを使用した場合、位置情報は偽装され東京と表示されたが、プロバイダ情報は依然として取得可能であり、プロバイダへの問い合わせで身元が特定される可能性は残る。検証には「What Is My IP Address?」が使用され、プロバイダ情報に加え、地図上で位置情報まで表示された。OSやブラウザの種類も特定可能であると示唆されている。ポケットWiFiは位置情報の偽装に有効だが、プロバイダ情報から身元特定の可能性は排除できない。 筆者はプロバイダでの勤務経験がないため、詳細な情報提供はできないとしている。
接続元IPアドレスを知られたくない時にすること
/** Geminiが自動生成した概要 **/
SOY CMSで総当たり攻撃への対策として、ログイン試行回数制限とアカウントロック機能を実装する方法が解説されている。記事では、PHPでログイン処理をカスタマイズし、データベースにログイン試行回数を記録、一定回数を超えるとアカウントをロックする仕組みを構築している。具体的なコード例も示され、ログイン試行回数の記録方法、ロック時間の管理、管理画面からのロック解除方法などが説明されている。これにより、総当たり攻撃による不正ログインを防ぎ、サイトのセキュリティを高めることができる。さらに、ログイン画面にCAPTCHAを導入することで、ボットによる自動攻撃への対策も強化できる。
インターネット内に流れているパケットを傍受してみる
/** Geminiが自動生成した概要 **/
WordPressなどのCMSは総当り攻撃の標的になりやすく、特にログインページがhttpの場合、IDとパスワードが傍受されやすい。Wiresharkのようなツールを使えば、ネットワーク上のパケットを解析し、http通信のログイン情報を簡単に盗み見ることが可能。httpsは通信を暗号化するため、傍受されても内容は解読できない。カフェなどのフリーWi-Fiでhttpのログインページを使うのは危険。https化はセキュリティ対策だけでなく、HTTP/2.0による高速化にも繋がるため重要。また、メールもhttpと同様に暗号化されていないと傍受される可能性があるため注意が必要。
インストーラーで再インストール後にサイトを復元
/** Geminiが自動生成した概要 **/
SOY CMSのインストーラによる再インストール後、サイトを復元する方法です。まず、再インストール前にサイトのソースコードからサイトID(例: /site/files/ の"site"部分)を確認しておきます。次に、インストーラで再インストールする際、インストール先ディレクトリを既存のものと異なる名前に変更します。インストール完了後、初期管理者を作成し、「サイトの復元」ではなく「サイトの作成」を選択します。ここで、事前に確認しておいたサイトIDを入力してサイトを作成します。サイトIDが正しければ、既存のファイル群が使用され、サイトが復元されます。最後に、元の管理画面URL(例: /cms/admin)で再インストールを行い、以前のデータベースに接続できないようにすることでセキュリティ対策を行います。データベース接続設定ファイル(例: mysql.db)を復旧すれば、元のアカウントも復元可能です。
SOY CMSでインストーラを削除せずにいたらどうなるか?
/** Geminiが自動生成した概要 **/
SOY CMSのインストーラを削除しないと、再インストールが可能になり、サイトデータが消去される危険性がある。攻撃者は用意したデータベース情報で再インストールし、初期管理者権限を奪取できる。管理画面URLが判明していれば、インストーラ経由でサイトを初期化・乗っ取りが可能。他CMSでもインストーラが残っていれば同様の危険があるため、インストール後は必ず削除する必要がある。
SOY CMS/ShopでPHPモジュールに使用の制限を設けました
/** Geminiが自動生成した概要 **/
SOY CMS/Shopのセキュリティ強化のため、テンプレートエディタとPHPモジュールでのPHP実行に制限が加わりました。PHPの使用は、`user.config.php`で`SOYCMS_ALLOW_PHP_SCRIPT`を`true`にすることで許可されます。 PHPモジュールはさらに`SOYCMS_ALLOW_PHP_MODULE`を`true`にすることで利用可能になります。これらの設定により、テンプレートやモジュールでPHPコードの実行を制御し、セキュリティリスクを軽減します。アップデートはGitHubから入手可能です。
CMSに不正にログインした後、何をする?
/** Geminiが自動生成した概要 **/
ウェブサイトがサイバー攻撃の標的となる脆弱性を抱えているかを判断する方法が解説されています。攻撃者は古いバージョンのCMSや安全でないお問い合わせフォームなどを利用して不正アクセスを試みます。記事では、SOY CMSを例に、不正ログイン後に攻撃者が踏み台として悪用する具体的な手順と、その対策が示されています。具体的には、ファイルマネージャーからのPHPファイルアップロードの制限、フロントコントローラーの編集制限、そしてファイルパーミッションの変更による対策が紹介されています。攻撃者はウェブサイトのソースコード、ログインフォームのバージョン、お問い合わせフォームのHTTPS化などを確認することで攻撃対象を選定するため、これらの対策が重要となります。
SOY CMSに総当り攻撃を仕掛けてみる。その4
/** Geminiが自動生成した概要 **/
Go言語で書かれたSOY CMSへの総当り攻撃スクリプトを改良し、CSVファイルからIDとパスワードを読み込むように変更した。これにより、コードの可読性が向上し、辞書を使い回せるようになった。 実行結果から、指定のIDとパスワードでログイン成功を確認。今後の課題として、メモリ効率の改善、対象サイトURLの指定、ログイン成功時の判定処理などが挙げられている。
SOY CMSに総当り攻撃を仕掛けてみる。その3
/** Geminiが自動生成した概要 **/
Go言語で書かれたコードを用いて、SOY CMSへの総当たり攻撃を試行。パスワード候補の配列を定義し、ループ処理でログインを試みる。一致するパスワードが見つかった場合、処理を中断し「ログイン成功」とID、パスワードを表示する。今回は"********"でログイン成功。このコードはパスワード候補を増やすことで、複雑なパスワードでも突破可能。しかし、SOY CMS側では複数回ログイン失敗するとエラーが表示される対策が取られていることが確認された。
SOY ShopにEC CUBE2.4系のログインチェックを導入しました
/** Geminiが自動生成した概要 **/
EC-CUBE2.4系からSOY Shopへの移行時に、顧客のパスワードをそのまま利用できるようログインチェック機能を導入。EC-CUBEとSOY Shopのパスワード暗号化方式の違いを考慮し、SOY Shop側でEC-CUBEの暗号方式を適用する処理を追加。暗号化パスワードにスラッシュの有無でEC-CUBEかSOY Shopかを判別。EC-CUBE2.4.4以前のバージョンに対応しており、顧客がパスワードを変更すればSOY Shopの方式に自動更新されるため、特別な切り替えは不要。将来的には2.11.1以降のバージョンにも対応予定。修正版はフォーラムまたはGitHubから入手可能。
SOY CMSに総当り攻撃を仕掛けてみる。その2
/** Geminiが自動生成した概要 **/
Go言語でSOY CMSへの総当り攻撃コードを改良した。前回はトークンチェックで攻撃が無効化されたため、今回はトークン取得とセッションキー保持の処理を追加した。具体的には、ログインページからトークン値を抽出し、自作のCookieJarを用いてセッションキーを保持することで、正規のログインと同様にトークンを送信できるようにした。この改良により、辞書攻撃が可能になった。 最後に、管理画面URLの特定の容易性と攻撃のしやすさを指摘し、URLを複雑にする、IDを辞書攻撃されにくいものにするなどの対策の必要性を訴えている。
SOY CMSに総当り攻撃を仕掛けてみる。その1
/** Geminiが自動生成した概要 **/
SOY CMSへの総当たり攻撃を試行する記事。Go言語でログインを試みるコードを作成し、IDとパスワードを固定で送信、ログイン失敗を確認。本来は辞書データを用いて繰り返し実行する計画だったが、SOY CMSのログインフォームにトークンのチェックがない事を発見。GitHubで管理しているコードにトークンチェックを追加し、攻撃を阻止した。
ブログで絵文字の機能は使わない方が良いかもしれない
/** Geminiが自動生成した概要 **/
SOY CMSで絵文字を使うと、画像パスにCMSのインストールディレクトリが含まれるため、管理画面のURLが推測されやすく、総当り攻撃の標的になる危険性がある。記事に絵文字を使いたい場合は、画像パスを外部の無関係な場所に配置し、管理画面URLを特定できないようにする必要がある。そうでない場合は、侵入検知機能の導入が必須となる。 記事では絵文字の危険性を指摘し、対策として画像パスの変更と侵入検知システムの導入を推奨している。
SSHの鍵認証でログイン設定
/** Geminiが自動生成した概要 **/
外部からのSSHログインを安全にするため、鍵認証を設定する方法を解説。新規アカウント(hoge)作成後、ssh-keygenで鍵ペアを生成し、公開鍵をサーバにコピー、authorized_keysにリネーム、パーミッション変更。その後、/etc/ssh/sshd_configでPasswordAuthenticationをnoに変更し、sshdを再起動することでパスワード認証を無効化。WindowsではPuTTYgenを使用。無線LANのセキュリティ確認も重要。
SSHで外部のネットワークからログインできるようにする
/** Geminiが自動生成した概要 **/
Sambaサーバに外部からSSH接続できるよう設定した手順の記録。まずSambaサーバにSSHをインストールし、プライベートIPアドレス(192.168.11.8)を設定、ルーターのIPアドレスをゲートウェイに設定した。次に外部からのSSH接続のため、rootログインを禁止し、無線LANルーターでポートフォワーディング(外部ポート71823→内部ポート22)を設定。外部IPアドレス(例:127.0.0.1)へポート71823を指定してSSH接続を確認した。パスワード認証はセキュリティ的に不安なので、次回は鍵認証を設定予定。
Goで運営しているサイトでLet's Encryptを利用してみた
/** Geminiが自動生成した概要 **/
Go製WebアプリをHTTP/2で運用するために、Let's EncryptでSSL証明書を取得した。取得手順は、letsencryptコマンドで証明書を作成し、Goのコードに証明書のパスを指定するだけ。`http.ListenAndServe`を`http.ListenAndServeTLS`に変更し、fullchain.pemとprivkey.pemのパスを設定することでHTTPS化。証明書取得後、サイトはHTTP/2で動作するようになった。
さくらのVPS + Apache2.4のサーバでSSL対応してみた
/** Geminiが自動生成した概要 **/
さくらVPS上のApache2.4でSSL証明書を設定する方法を解説した記事です。opensslを用いて秘密鍵とCSRを作成し、認証局に提出、発行された証明書と中間CA証明書を所定のディレクトリに配置、Apacheの設定ファイルを編集してSSLを有効化します。設定ファイルでは、証明書ファイル、秘密鍵ファイル、中間CA証明書のパスを指定します。最後にApacheを再起動し、httpsでアクセスしてSSL設定を確認します。記事ではLet's Encryptを使った簡便な設定方法への言及もあります。