個人開発Webアプリケーションを0円で運用する

こんにちは、takapi86です。 最近は、ジョジョの奇妙な冒険にハマっています。9月ごろから1部を見始めて、現在は6部のシーズン2まできました。 好きなスタンドはクレイジー・ダイヤモンドです。 これはGMOペパボ EC Advent Calendar 2023 12/16 の記事です。…

Whisperを活用して長時間の音声ファイルを字幕ファイルに変換する君を作ってみた

ローカル環境で、Whisperを使って長時間の音声ファイルを字幕ファイルに変換する仕組みを構築しました! 具体的には、WAV形式の音声ファイルを入力として受け取り、出力としてWebVTT(Web Video Text Tracks)形式の字幕ファイルを生成します。 まだまだブラ…

Docker ComposeでNFSをマウントしてみる

環境 ホストOS: CentOS7 コンテナイメージ: Ubuntu 22.04 今回は簡易的にCentOS7のホスト上にあるボリュームをコンテナからNFS経由でマウントする方式で検証したので記録に残しておきます。 ホスト側の準備 検証のため簡易的な設定にします。 インストール〜…

Virtualbox/Vagrantに構築したk0s環境へホストからkubectlできるようにする

前回はk0sでKubernetes環境をVirtualbox/Vagrantに構築し、nginxのデフォルトページを表示させるところまで行いました。 今回はこの構築した環境にkubectlできるようにします。 takapi86.hatenablog.com 結論から言うと手順はすごく簡単でした。 以下のディ…

k0sでKubernetes環境をVirtualbox/Vagrantに構築する

k0sという軽量Kubernetesディストリビューションがあるようです。 k0sproject.io 自前のWebアプリを安価にk8sクラスタで運用できると嬉しいなぁということでまずはローカル環境で試してみます。 この記事のゴール Kubernetes環境でNginxを立て、ホストからNg…

DockerfileのCMDをShell形式で記述したらコンテナが停止しなくなってしまったので直した

UbuntuでPHP-FPMのイメージを作成する際に、CMDにPHP-FPMの起動コマンドをShell形式で書いたらdocker kill, Ctrl-Cでコンテナが終了しなくなってしまったので調べて修正しました。 FROM ubuntu:20.04 RUN apt update -qq && apt -y upgrade -qqy \ && DEBIAN…

heroku-guardianを試した

heroku-guardianってなに? Herokuのセキュリティチェックツールです。 Herokuプラットフォーム自体の攻撃対象領域を減らすためのチェックをしてくれます。 何をチェックするの? ユーザの認証設定や意図してないビルドパック使っていないか、その他諸々見て…

SiteGuard Server EditionでIPアドレスベースのアクセス制限を行う

SiteGuard Server Editionを使って、IPアドレスベースのアクセス制限を行えると聞いたので検証してみます。 検証環境 Vagrant(vbox) apache2.4 SiteGuard Server Edition 5.00-1 インストール マニュアルに従ってインストールします。 Vagrant.configure("…

【Docker Desktopの代替】Docker Daemonを自分で立ててみた

みなさんご存知だとは思うのですが、Docker Desktopが有料化されるようですね。 www.itmedia.co.jp そこで代替できるツールがないか調べてみたところ・・・ Docker Machine hyperkit + minikube Podman lima + docker など、色々候補が上がりましたが、結局…

minioを使ってローカルにS3互換の環境を立ち上げてみた

ローカル環境でS3のテストを行うときに例えば以下の問題が考えられます。 回線やサービスなどローカル環境以外の影響を受けることになるので障害時にテストすることができなくなる 課金されてしまう 公開したくないファイルをあげてしまう恐れがある この問…

ペネトレーションテストの教科書を読んだ

読んだ動機・目的 セキュリティテストの中でWebアプリケーションの脆弱性診断については、自分でも実施できるレベルになっているが、ペネトレーションテストについては概要レベルでしか理解できていなかったため 実際の攻撃では具体的にどのようなツールを使…

ARPスプーフィングしてNintendo Switchの通信を覗いてみた

Nintendo Switchある対戦ゲームで、ふと、どのような通信が行われているか気になったので、Wiresharkで通信を覗いてみました。 まだ、Wiresharkは使いこなせていないので、今回はパケットが来ていることを確認するところまでやります。 パケットキャプチャす…

iPhoneのHTTPリクエスト/レスポンスをキャプチャする

ふと、あるアプリがどのような形でサーバとやりとりしているのかが気になったので、iPhoneのHTTPリクエスト/レスポンスをキャプチャできるように設定してみました。 必要な機器・ソフト iPhone PC Burp Suite 今回はWindows10で行いましたが、MacOSやLinux…

【メモ】CronJobについてざっくり概要を見ていった

業務で今VMのCronで動いているあるバッチをKubernetesのCronJobに移せないか検証するため、まずはCronJobについてざっくり概要を学んでいきたいと思います。 構築時に気をつけておきたい設定などをメモしていきます。 Kubernetesドキュメント https://kubern…

PowerDNSのAPIを使ってレコードを追加してみる

前回作成した、PowerDNS Authoritative Serverのdocker環境を使ってレコード情報を登録してみます。 レコードを追加する方法としては、以下の方法があります。 ビルトインのAPI経由で更新 nsupdateコマンド経由で更新 直接SQLでDBに書き込んで更新 このうち…

手元でPowerDNSのAPIを叩くためのDockerイメージを作った(その2)

こちらの記事で、手元でPowerDNSのAPIを叩くためのDockerイメージを作りましたが、 takapi86.hatenablog.com 加えて、 レコードの保存先をMySQLへ PowerDNS-Adminを使ってGUIで管理できるようにする というのをやっていきます。 レコードの保存先をMySQLへ d…

手元でPowerDNSのAPIを叩くためのDockerイメージを作った

PowerDNSのAPIを手元で叩ける環境が必要だったので用意しました。 要件は以下です。 ローカルで動作すること 最低限ビルトインのAPIが動くこと digで問い合わせができること インストールする こちらを参考にDockerfileを作成します。 https://repo.powerdns…

Smartyでのエスケープをまとめた

SmartyでのXSS対応方法をまとめます。 足りてないパターンがあれば追加予定。 参考 『体系的に学ぶ安全なWebアプリケーションの作り方 第2版』 Smartyのコード https://github.com/smarty-php/smarty/blob/478f8a29b4da07b7d18164cc8554b967a2036678/libs/pl…

オープンソースのSNSをDockerで動かしてみたら懐かしすぎた

こんにちは、たかぴーです。 このエントリは、GMOペパボエンジニア Advent Calendar 2020 - Adventarの8日目の記事です。7日目はしばっちさんの「AWSでDNSをRoute53を使わずに構築する」でした。 社内のPHPアプリケーションをDocker化するにあたりどういった…

書き込みが必要なDockerコンテナをReadOnlyで動かせるようにする

コンテナを触っている人であれば当たり前っちゃ当たり前のテクニックな感じだと思いますが、最近k8s環境でDockerコンテナを読み取り専用で動かすことができたので、メモしておきます。 Dockerコンテナを安全に運用するための手段の一つとして、コンテナを読…

コンテナイメージの脆弱性スキャンツールTrivyを使ってみる 〜とりあえず試す編〜

Docker Bench for Securityに引き続き、コンテナイメージの脆弱性スキャンツールTrivyを使ってみます。 Docker Bench for Securityについてのエントリーはこちら takapi86.hatenablog.com Trivyとは何か Docker Bench for Securityがコンテナイメージの作成…

Docker Bench for Securityを使ってみる 〜とりあえず試す編〜

これは何? CIS Docker BenchmarksというDockerのセキュリティ基準に沿って、自動診断してくれるツール 診断項目はこんな感じ Host Configuration Docker daemon configuration Docker daemon configuration files Container Images and Build File Containe…

Capistrano3で並列制御を行う

Capistranoでは、デフォルトではすべてタスクが並列で実行されるようになっていますが、次の設定で並列実行できるサーバの数を制御できます。 設定方法 タスク個別に設定する場合 task :uptime do on roles(:all), { in: :groups, limit: 5, wait: 2 } do ex…

GETリクエストのボディはPHPで取得できるの?試してみた

定期的に業務で不正なリクエストがないか見ています。 その調査でふと、PHPはGETリクエストに含まれるボディの値が取得できてしまうのか、 取得可能であればそこも気にしなければなぁ、ということで調べてみました。 GETリクエストのボディ? GETは指定したU…

Ruby技術者認定試験(Gold)どうやって勉強していたっけ?というのを思い出した

2年前くらいに、Silver受かったときにブログを書いたのですが、 https://takapi86.hatenablog.com/entry/2018/05/13/230504 その後、Goldを受かったまま何もアウトプットできていなかったので、書いていこうと思います。 2年前の話なので、今は状況が変わっ…

phpのmemcachedライブラリを2系から3系にあげたらSession Lockに関するワーニングが頻繁に発生するようになったので対応した

PHPバージョンアップに伴い、memcachedライブラリを2系から3系にバージョンアップしたところ、以下のようなエラーが度々発生するようになってしまいました。 (結果的には、ローカル環境で気付けたため、本番導入時には解決した状態で適用することができまし…

Railsチュートリアル用にdocker環境を作った

社の新人研修でRailsチュートリアルをやっていくことになったのでDocker環境を用意した。(僕は講師陣の方 github.com 結果的にはDockerとRails両方覚えなければならないので混乱させてしまう恐れがあるということで、ローカル環境でやっていこうということ…

デバッグツールとしてBurp Suiteを使っている

例えば、 ファイルのアップロード処理 CSVのインポート処理 入力項目の多い登録処理 上記のような処理をE2Eでデバッグ実行しようとすると、ファイルを準備したり値を画面からいっぱい設定したり・・・それを何度も実行しようとするとそこそこ手間だったりし…

capistranoデプロイ時にデプロイするファイルをウィルススキャンする

プライベートの検証環境を使って、 capistranoデプロイ時にデプロイするファイルをウィルススキャンするようにしてみました。 やっていることは、capistranoデプロイ時にclamdscanしているだけです。 上手くいってそうなので、メモとして残しておきます。 使…

smartyのエスケープについて見直す

SmartyではPHPの値を出力するとき、デフォルトではエスケープされていないので、 XSS対策として、明示的にエスケープしなければなりません。 XSS対策としての正しくエスケープを行うには、内部でどのような動きをしているのか把握する必要があるので、 見直…