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

【RaspberryPi】LAN内全部広告ブロックできるPi-holeを構築する

みなさんこんにちは、ゆーろんです。 今回はLAN全体を広告ブロックできるDNSサーバであるPi-holeをRaspberrypi zero 2 Wを用いて構築してみましたので、その手順を紹介したいと思います。 これによりサイトに表示されるバナー広告などが表示されなくなることが見込めます。 なお残念ながらYoutubeの広告はアルゴリズムが特殊なため広告ブロックはそのままではされません。 とは言っても通常のサイトは快適に見れるようになるのでLAN自体で広告ブロックをするのはよい選択だと思います。 クライアントのブラウザに個別に広告ブロックの拡張機能(u-block originなど)を入れる必要もなくなります。 今回の記事では主に構築方法と簡単な設定方法を紹介していきたいと思います。 目次 構築環境 Pi-holeのインストール DNSの指定 WEB GUIの設定 設定上の注意点 DMZにPiHoleを設定している場合 ローカルDNSを設定する 構築環境 筆者の構築では以下機材を用意しました。 Raspberry Pi zero 2 W microSD Card 16GB以上 USBtype-b LAN コネクタ Raspberry Pi zero 2 wケース 電源ケーブル USBtype-b LAN コネクタ を用意した理由は有線経由でLANに接続するためです。 WIFI経由でも接続できますが、コリジョンがないため有線の方が安定しやすいと言えます。 Pi-holeのインストール Pi-holeは、Raspberry Pi OS liteに追加でインストールする形になります。 Lite版はGUIがありませんので、基本的はコマンド操作になります。 他のPCからSSHで遠隔接続すると楽に操作できます。 ゆーろん Raspberry Pi OS liteに設定するユーザ名は「Pihole」以外にしてね~。さもないと競合しちゃうよ! Raspberry Pi ImagerでRaspberry Pi OS liteをmicroSDカードに書き込んで起動する形になります。 筆者の場合設定は以下のようにしました。 microSDカードにOSをインストールできたら、Raspberry Pi zero 2 wにセットしてLANに接続します。 このとき、インストールした際の設定でIPアドレスを固定化しておくと接続が楽です。 固定化を忘れた場合はWEBからルータ設定に入ってクライアントリストを確認すると良いでしょう。

【AWS】LightSailへのWebアクセスをCloudFrontリクエスト以外を無効化する

こんにちは。ゆーろんです。 最近このWEBサイトへのアクセスログを見ると、CloudFront経由ではなく直接HTTPリクエストを送って見られることが多いです。 ログを見るとKali付属のツールを使ってスキャニングを行いセキュリティホールを探すようなリクエストばかりでした。 特に海外からのスキャニングが多い…。 セキュリティ強度を上げるため、HTTP/HTTPSリクエストはCloudFrontのみから受け付けるようにすることにしました。 というわけでその方法をメモしていきます。 目次 CloudFrontのみのアクセスにする仕組み 環境 実装手順 CloudFrontの設定 Webサーバの設定 動作確認 CloudFrontのみのアクセスにする仕組み 仕組みとしては以下の通りです。 CloudFrontからオリジンへリクエストを送る際に秘密の独自HTTPヘッダを付与 オリジン側では独自HTTPヘッダが付いていればCloudFrontからのリクエストと判断し、もし付いていなければ403を返してアクセス拒否する 結構、仕組みはシンプルです。 CloudFrontの機能で「カスタムヘッダーの追加」という設定項目で自由にヘッダーを付けることができるので使用します。 環境 環境は以下の通りです。 CDN: CloudFront Webサーバ: Apache Apache以外も大体似た感じに設定できると思うので適宜読み替えてください。 実装手順 CloudFrontの設定 CroudFrontのすでに展開しているディストリビューションを編集し以下画像のように任意のヘッダと任意の文字列を追加します。 なお文字列は推測されにくい文字列を設定することをお勧めします。 これで設定を反映したらステータスがDeployedになるまで待ちます。 Webサーバの設定 Lightsailの場合は/etc/apache2/apache2.confがApacheの設定ファイルになります。 設定ファイルに以下のように追加(<と>はとってください)。 <Directory /opt/bitnami/wordpress> Require all granted AllowOverride All SetEnvIf <任意のヘッダ名> \"^<任意の文字列>\" CDNValid Order deny,allow Deny from all Allow from env=CDNValid </Directory> 動作確認 curlコマンドでオリジンへ直接アクセスし以下のようにレスポンスがあれば成功。 curl <オリジンのIPアドレス>/wordpress <!DOCTYPE HTML> <html><head> <title>403 Forbidden</title> </head><body> <h1>Forbidden</h1> <p>You don\'t have permission to access this resource.</p> </body></html> これでHTTPリクエストでオリジンへ直接アクセスすることを禁止にできました。

Proxmox VEのインストールと推奨設定

こんにちは。ゆーろんです。 先日、学習用/実験用に仮想化基盤ホスト用の物理サーバを用意しました。 仮想化基盤はVMware ESXIかProxmox VEのどちらかをインストールしようと思っていたが、 コチラの記事からわかる通り、VMware製品の販売/配布の終了が決まったこと、Proxmox VEは無料ですべての機能が使える特徴があることからProxmox VEを採用した。 というわけで、今回はProxMox VEをホストマシンにインストールする手順と初期設定を紹介します。 目次 Proxmox VEとは 構築環境 インストール手順 推奨する初期設定 参照リポジトリの変更 ロケールの日本語化 IPv6の無効化 rootでのSSH制限 WEB GUIのサブスクリプションダイアログの無効化 まとめ Proxmox VEとは Proxmox VE(Proxmox Virtual Environment)はLinuxのDebianベースで開発されている仮想化基盤を構築するためのOSS仮想化プラットフォーム。 仮想化の構築はKVMとLXCに基づき、仮想マシン(VM)やコンテナを作成、管理、監視するための機能を提供している。 また、WebのUIを備えているため、仮想マシンの作成、スナップショット、復元、クローン、移行などが容易に行える。 Proxmox Virtual Environment - Open-Source Server Virtualization Platform Proxmox Proxmox VE is an open-source server virtualization management platform. 特徴は以下の通り。

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プロトコルがサポートされているからです

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に移行するケースが多い模様。

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メールの送信」でメールが送れるかテストを行う。

Vagrant+VirtualBoxで仮想サーバ構築①Webサーバ編

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