当サイトではIT・Web系技術、メタバースなどの情報提供を目的とします。
個人的な技術ブログなども投稿する予定です。

Ubuntu上にOpenVPNサーバを構築する

こんにちはゆーろんです。 今回はAWSのEC2に入れたUbuntuサーバにOpenVPNサーバを構築しようと思います。 個人的には外部のLANからインターネットアクセスした場合ののプロキシサーバとして利用するために設定を行いました。 ゆーろん 頑張って書いたのでぜひご覧ください! 目次 OpenVPNとは OpenVPNの設定手順 OpenVPNとeasy-rsaのインストール ルート認証局の作成 認証局/DHパラメータの作成 サーバ用の秘密鍵/証明書の作成 クライアント用秘密鍵/証明書の作成 OpenVPNの設定 パケット転送の有効化 VPNクライアントに固定IPを割り当てる OpenVPNの起動 VPNクライアントの通信をOpenVPNサーバに経由させる OpenVPNクライアントの設定 参考記事 OpenVPNとは OpenVPNはGPL Lisenceで公開されているOSSのインターネットVPNのこと。 具体的にはSSL/TLSプロトコルを利用したSSL VPNといえます。 特徴は以下の通りです。 堅牢なセキュリティと安全性 設定がテキストベース Windows, Unix問わず、様々なOSに対応している VPNが低コストで実現できるため、個人や小規模事業者がVPNを構築する際の選択肢の1つとなっています。 OpenVPNとは | OpenVPN.JP OpenVPN.JP | OpenVPN日本語情報サイト

【AWS EC2】TeraTermでのAmazon Linux 2023の初期設定

こんにちはゆーろんです。 今回はAWSのEC2においてAmazon Linux 2023を設定した際にボトルネックになったポイントがあったのでその対策方法なども紹介します。 ゆーろん 久しぶりにEC2を立てたらいろいろ変わっていたので紹介します。 目次 Amazon Linux 2023の特徴 TeraTerm4.0以前でTeraTermでSSH接続するための設定 その他の基本設定 ホスト名の変更 タイムゾーンの変更 ロケールの設定 SELinuxの無効化 ユーザの作成 Amazon Linux 2023の特徴 Amazon Linux 2023は2023年3月15日にリリースされたEC2の新しいイメージです。 特徴としては以下の通りです。 ベースとなるOSがRedHatからFedoraへ変更 サポートは3年間(EOLは2028年3月15日まで) パッケージ管理ツールの変更(yumからdnf) SELinuxがデフォルトの無効状態からパーミッシブモードに変更 初期状態ではrsyslogやcronieがインストールされていない SSHサーバのデフォルト値が変更(デフォルトではssh-rsa署名が無効) クラウド向け Linux | Amazon Linux 2023 | Amazon Web Services Amazon Web Services, Inc. Amazon Linux 2023 では、クラウドアプリケーションを開発して実行するため、セキュリティに重点を置いた安定した高性能オペレーティングシステムを提供します。 特にTeraTermを使ってAL2023のインスタンスにアクセスする場合、Version5.0以上を使用する必要があります。 これはTeraterm 5.0 beta 1以上からrsa-sha2-256 および rsa-sha2-512プロトコルがサポートされているからです

【2023年】お世話になった技術書の紹介

こんにちは。ゆーろんです。もう11月の終わりになってすっかり寒くなりました。 今回は主に今年読んだ技術書を紹介します。 目次 お世話になった技術書 シスコ技術者認定教科書 CCNA 完全合格テキスト&問題集 200-301 CCNA対策から学ぶネットワーク運用ガイドシリーズ はじめての人のための Terraform for AWS マスタリングTCP/IP ホワイトハッカー入門 新人エンジニアのためのインフラ入門 まとめ お世話になった技術書 シスコ技術者認定教科書 CCNA 完全合格テキスト&問題集 200-301 シスコ技術者認定教科書 CCNA 完全合格テキスト&問題集 200-301 2020/6/24 林口 裕志, 浦川 晃, 中道 賢 CCNAを取得するのを決めたため、CCNAの参考書として購入しました。

【WIFI脆弱性調査ツール】Pwnagotchiの製作

お久しぶりです。ゆーろんです。 今回はpwnagotchというWIFIに関する脆弱性調査ガシェットを紹介いたします。 アスキーアートで表現された顔文字が特徴なかわいらしい電子ペットです。 目次 Pwnagotchiとは 製作 材料 構築 まとめ Pwnagotchiとは 「Pwnagotchi(ポーナゴッチ)」はWi-Fiの脆弱性を突いてその情報を収集する電子ペットキット。 具体的にはWPA, WPA2の4Wayハンドシェイク、アソシエーションを傍受しその情報を集めるデバイスです。 これはKrackと呼ばれる脆弱性に関する情報を集めているのに等しいです。 特徴としてWi-Fiを探査する際に深層強化学習アルゴリズムを用いて行われることがあります。 なおこのガジェットはセキュリティの勉強のために設計されているため、WIFIの攻撃を直接できない設計になっています。 Pwnagotchi - Deep Reinforcement Learning instrumenting bettercap for WiFi pwning. 製作 筆者はAmazonとスイッチサイエンスで材料をそろえました。 材料費は1万円以内程度でした。 なお2022年現在、入手できる電子ペーパディスプレイWaveshareがV4.0となっていることが多いです。 このバージョンは公式ファームウェアがサポートしていないため、対応させる方法に関して後ほど紹介します。 材料 最低限の材料は以下の通り。 Raspberry pi zero w(wh) Waveshare 2.13inch 電子ペーパディスプレイ MicroSD (最低8GB) 持ち運び用のモバイルバッテリなどの電源 オプショナルな材料は以下の通り。 Raspberry pi zeroのケース Raspberry pi zero用バッテリ 構築

【Kali Linux対応】Monitorモード対応無線アダプタ AWUS036ACUの紹介

こんにちはゆーろんです。 先日、Amazonにて台湾の企業であるAlfa Networkの提供するAWU036シリーズのAWUS036ACUを購入しました。 このデバイスはWIFIのMonitor Modeが対応しているようではありますが、実際の動作報告がネット上で少ないため今回は動作報告とレビューをしたいと思います。 なお、結論から言うとはKali Linux 2023においてMonitor Modeに対応していることが実際に確認できました。 目次 Alfa AWUS036ACU 検証環境 Monitorモードの使用確認 まとめ Alfa AWUS036ACU Alfa AWUS036ACUはAlfa社が出しているWifiアダプタです。 ALfa社の提供するWIFIアダプタで有名なものにはAWUS036ACHなどがあります。 なおAWUS036ACUのスペックは以下の通りです。 パラメータ 値 WIFI対応規格 IEEE 802.11(b,g,n,ac) 周波数帯 2.4GHz(最大 300Mbs), 5.0GHz(最大 867Mbps) セキュリティ対応規格 WEP, WPA, WPA2, WPA3 公式の対応デバイス Windows, MaCOS Error CODE: 400 MESSAGE: Unable to retrieve content from the URL. Error CODE: 400 MESSAGE: Unable to retrieve content from the URL. 使用されているほとんどのWIFIは未だにIEEE802.11(b,g,n,ac)が多いので通常の検証には十分なデバイスだと思います。 なお、関連製品のAWUS036ACHはIEEE802.11aをこれに加えて対応しています。

AWS LightSailのApacheログをS3に転送する

こんにちは。ゆーろんです。 今回はAWS LightSailのWordPreess構成におけるApacheのログをS3に転送する方法を1つを紹介します。 目次 LightSailのログをS3に転送する方法 今回の目的 設定手順 Apacheのアクセスログを日付ベースで作成させる AWSにてS3転送用のIAMユーザを作成する aws cliにS3転送用IAMユーザ情報を登録する 任意のフォルダにShellScriptを作成する CrontabにShellScriptを登録する LightSailのログをS3に転送する方法 LightSailのログをS3に転送する方法はいくつかあります。 私の知る限りの具体例を2つ出してみます。 CloudWatch Agentを利用してCloudWatch logsにログ転送後Lambda+EventBridgeを用いてS3に転送 aws cliを利用したS3転送用のShellScriptを用意してCronやSystem-timerで回す 1の手法の特徴はログの様子をCloudWatchで観測できる点です。 ただ今回の場合、インスタンスはLightSailですから、AWSリソースも多く使用する必要があること、目的がS3に送ることなのに関して構成が回りくどいことから不採用にします。 2の手法はログをaws cli経由でS3に転送するといった単純なものです。 設定もS3転送用のIAMユーザの作成、aws cliのインストールやShellScriptの用意と定期実行系への登録で済みます。以上のことからこの手法を今回は採用します。 今回の目的 Apacheのaccess_logを日付毎に取得/生成し、それをS3に転送することを目的とします。 設定手順 Apacheのアクセスログを日付ベースで作成させる デフォルトではApacheのログはaccess_logに書き続けられます。 そのため日毎のaccess_log.日付などを生成しそこにログを書いてもらう必要があります。 LightSailのWordPress構成の場合Bitnami環境で構築されています。 設定ファイルは/opt/bitnami/apache/conf/httpd.confとなります。 このファイルをviやvimで開いてもらってCustomLog “logs/access_log” commmonの記述部分を以下のように変更します。 CustomLog "|/opt/bitnami/apache/bin/rotatelogs /opt/bitnami/apache/logs/access_log-%Y%m%d 864000 540" combined 上記記述はApacheの機能でログをローテーションさせています。 具体的には「access_log-20220314のようにログファイルを1日(864000秒)に1回、UTC+9時間(540分)のオフセットでcombined(commonにリファラやagent情報を含める)モードで作成/ログを保存する」という記述になります。 設定を保存後、以下コマンドでapacheを再起動します。 sudo /opt/bitnami/ctlscript.sh restart apache AWSにてS3転送用のIAMユーザを作成する AWS Console等でS3転送用のIAMユーザを作成します。 与える権限はS3に書き込みができるような権限(S3FullAccessなど)を与えます。 またIAMユーザ生成の際に作成したアクセスキー、シークレットキーはメモしておきます。 aws cliにS3転送用IAMユーザ情報を登録する Lightsailのbitnami環境ではaws cliはすでにインストールされています。 以下コマンドを入力してaws cliにS3転送用IAMユーザ情報を登録します。 aws configure その後、コンソールに表示される情報に従って、アクセスキー、シークレットキー、AWSのリージョン情報(例: ap-northeast-1)、デフォルトの保存形式(.txt, .logなど)を登録します。 任意のフォルダにShellScriptを作成する 任意のフォルダにtouchコマンド等でShellScriptを作成します。今の回例では“send_accesslog_s3.sh“と作成しました。 以下に記述例を示します。

Vagrant+VirtualBoxで仮想サーバ構築②Zabbixサーバ編

こんにちは。ゆーろんです。 今回はVagrant+VirtualBoxで監視ツールであるZabbixサーバ(Manager)と監視対象のZabbixエージェント(監視対象サーバ)をローカルで立ててみましたので、手順を紹介します。 目次 説明 VirtualBoxとは Vagrantとは AlmaLinuxについて Zabbixについて 環境 環境構築 Vagrant+VirtualBoxの設定 Zabbix Mannagerに対する設定 ブラウザからZabbixの設定 あとがき 説明 初めに今回の使用技術とAlmaLinuxに関して説明します。 VirtualBoxとは ホスト型の仮想化ソフトウェア。 Vagrantとは 一言でいうと仮想マシンなどを簡単に構築/操作するためのソフトウェア。 VirtualBoxやVMwareを直接操作せずともエージェントとして操作できる。 ちなみにTerraformと同じHashiCorp製。 Vagrant by HashiCorp Vagrant by HashiCorp AlmaLinuxについて RHELのクローン。 サーバ用Linuxの事実上の標準だったCentOSの開発終了に伴い、AlmaLinuxまたはRockyLinuxに移行するケースが多い模様。

【第2回】CTFをやってみる ksnctf

こんにちは。ゆーろんです。 記録がてら、今回もCTFの備忘録をぼちぼち書いていきます。 ぼちぼち解くことを目指すので複数日またぐこともあると思いますが、よろしくお願いします。 目次 問題 解いてみる 感想 問題 国内では有名な ksnctf です。 今回の問題は以下です。 Programming - ksnctf program.cpp #include <stdio.h> #include <string.h> int main () { const char * s = " " "0123456789" " " " " " " "ABCDEFGHIJ" ; printf ( "%c" , strlen (s) ); int i = 020000000 + 001000000 + 000600000 +000040000 +000007000 +000000500 +000000020 +000000002 ; printf ( "%s" ,&amp; i ) ; long long l = 2LL * 11LL * 229LL * 614741LL * 9576751LL + 5LL ; printf ( "%s" , &amp; l ) ; float f = 1.0962664770776731080774868826855754386638240000e-38f ; printf( "%s" , &amp;f ) ; double d = 6.7386412564254706622868098890859398199406890000e-308 ; printf ("%s" ,&amp;d); } C++のソースコードが与えられています。 なぞにTabや空白があるので気味の悪いコードとなっています。

LightSail上でメールアドレス配信をSESで有効化する

こんにちは。ゆーろんです。 今回はLighSail上のWordPress環境からAmazon SESを使用してメールを送信させる方法をまとめます。 お問い合わせフォームの設置にはGoogle Formを埋め込む、LightSailにメールサーバ機能を追加するなどの方法もありますが Amazon SESを使用したほうがセキュリティ的にも良いのでSESを採用します。 目次 AmazonSESとは 実装の目標と手順 Identifyの作成 ドメインの検証 メールアドレスの検証 SMTPクレデンシャルの作成 テストメールの送信 WP Mail SMTPの設定 AmazonSESとは Amazon SES(Amazon Simple Email Service)はAWSが提供する電子メールサービスの1つです。 既存ドメインまたは既存のメールアドレスを利用して、メール配信をすることができます。 特徴としては以下の通りです。 信頼性と高い配信性能 メールの監視と管理が可能 低価格 実装の目標と手順 WordPressからSESを利用して特定のメールアドレスにお問い合わせ内容を送信できるようにする。 なおメール受信は行わず送信専用とする。 手順は以下の1から4を実施。 Identifyの作成 AWS SESのダッシュボード右より「検証済み ID」を選択。 ドメインの検証 SESのダッシュボード右「IDの作成」にて以下パラメータでIdentityの作成を行う。 IDタイプ: ドメイン ドメイン: Route53またはLightSailで設定してあるドメインを記載 DKIMの詳細設計 IDタイプ: Easy DKIM DNSレコードのRoute53への発行: 有効化 DKIM署名: 有効化 上記設定でドメインのID作成を行う。 Route53で設定してあるドメインを設定する場合数分以内に検証済みになる。 メールアドレスの検証 ドメインの検証と同様に「IDの作成」にて以下パラメータでIdentityの作成を行う。 IDタイプ: Eメールアドレス Eメールアドレス: 送信先の存在する実際のメールアドレスを設定 上記設定でメールアドレスのID作成を行う。 SMTPクレデンシャルの作成 SESのダッシュボード右「SMTP設定」にて「SMTP認証情報の作成」を選択。 画面に従いSMTP認証用のIAMユーザを作成し、作成後最後に表示されるSMTPユーザ名とSMTPパスワードをメモする。 テストメールの送信 AWS SESのページより「検証済み ID」を選択。 ドメインにチェックを入れて「テストEメールの送信」でメールが送れるかテストを行う。

【第1回】CTFをやってみる ksnctf

こんにちは。ゆーろんです。 記録がてら、CTFの備忘録をぼちぼち書いていきます。 ぼちぼち解くことを目指すので複数日またぐこともあると思いますが、よろしくお願いします。 目次 問題 解いてみる 1日目 2日目 感想 問題 国内では有名な ksnctf です。 今回の問題は以下です。 Login - ksnctf http://ctfq.u1tramarine.blue/q6/ https://ctfq.u1tramarine.blue/q6/ http://ctfq.u1tramarine.blue/q6/ https://ctfq.u1tramarine.blue/q6/ ログインフォームのURLが2つ与えられています。 ここからFLAGの文字列をどうにかして取得するということです。 解いてみる 1日目 まず入力フォームといえばSQLインジェクションが思い浮かびます。 ということで定番の” or 1=1 —を入れてみます。 以下のように表示されます。 上記コードから2点の脆弱性が確認できます。 パスワードが平文で保存されている プリペアドステートメントが実装されていない またコードからはidパラメータ入力においてSQLの条件文を満たせば写真ページが表示されることがわかります。 つまり直接パスワード自体をSQLでそのまま直接取得して表示することは厳しそうです。 2日目 SQLインジェクションにはいくつか種類があるようです。 HTTPレスポンス/リクエストなどを見た限り特に何もないようなので ここでSQLインジェクションを深めます。 インバウンドSQLインジェクション エラーベースSQLインジェクション UNIONSインジェクション ブラインドSQLインジェクション マルチブルステートメント 調べる限り、ブラインドSQLインジェクションという手法が怪しそうでした。 ブラインドSQLインジェクション Webサーバへ何種類かまたは複数のデータを送信した際のレスポンスや動作からデータベースの情報を分析する手法 ブルートフォースでやみくもにFLAG_hogehoge…と総当たりするのも大変なのでパスワードの断片情報から求めます。 まずパスワードの文字数を求めてみます。 SELECT * FROM user WHERE id="" or (SELECT length(pass) FROM user WHERE id = "admin") > 30 -- $id" AND pass="$pass" 上記のSQLとなるようにひたすらフォームに入力して調べ、Congratulationsとページが出るところを探します。