zuntan02のはてなブログ

備忘録的なものです。時々職場の技術者ブログにも転記してますが、メインはこちらで。

【さくらのレンタルサーバー】メールサーバ(サイトと同一ドメイン)がさくら以外のものを利用していた場合に、サーバからのメールが届かない

【問題】

Wordpressサイト(www.hoge.jp):さくらのレンタルサーバ
DNSレジストラさくらインターネット管理の独自ドメイン(お名前などで取得した場合は以下対応不可なので注意)
・メールサーバ(hoge.jpのMXレコード向き先):G Suiteなど外部メールサーバ
といったような環境で、Wordpressからcontact@hoge.comへのメールを飛ばそうとするとメールが届かない。
下記参照記事より、同一ドメインの場合にMXレコードを見てくれず、外部のメールサーバに到達できない問題があることが判明。

【対応】

さくらのレンタルサーバー管理画面にて

 [ドメイン/SSL設定]
→[hoge.jp]-[変更]
→[3. メール利用をお選びください]
→[このドメイン宛のメールは別のサーバで受信する (上級者向け)]にチェックを入れて反映

でOK

【注意】

ドメインをお名前.comなどで取得していた場合は、上記

[このドメイン宛のメールは別のサーバで受信する (上級者向け)]

にチェックを入れることができないため対応不可能。解決方法あれば追記します。

3-8.cosmofield.com

以上。

【gitlab】gitlabに特定のIPから接続しようとするとForbiddenになったのでホワイトリスト対応したメモ

【サマリ】

AWS EC2上で運用していたgitlabサーバに、特定のIPからのみ接続できない、Forbiddenになる、一度Forbiddenになると2時間くらい接続できない、との指摘あり。
Dos攻撃対策が効きすぎていた模様。ホワイトリストに乗せて回避する。

【参照】

https://qiita.com/smallpalace/items/fe6144fe9b981b62742c
GitlabがFobbiden表示で見られなくなったら
https://press.crazy-nakada.fun/git/26/
Gitlabがforbidden アクセス不可に

【詳細】

/var/log/gitlab/gitlab-rails/production.log

Rack_Attack: blacklist <問題のIP> GET /hoge/fuga?service=git-upload-pack
Rack_Attack: blacklist <問題のIP> GET /hoge/fuga?service=git-upload-pack

Dos攻撃対策としてブラックリスト登録されてはじかれている模様

# gitlab.rbのホワイトリストを有効化してTMの関連IPを追加

diff /etc/gitlab/gitlab.rb /etc/gitlab/gitlab.rb_org

285,291c285,291
< gitlab_rails['rack_attack_git_basic_auth'] = {
<   'enabled' => true,
<   'ip_whitelist' => ["127.0.0.1","<接続元IP1>","<接続元IP2>"],
<   'maxretry' => 10,
<   'findtime' => 60,
<   'bantime' => 3600
< }
---
> # gitlab_rails['rack_attack_git_basic_auth'] = {
> #   'enabled' => true,
> #   'ip_whitelist' => ["127.0.0.1"],
> #   'maxretry' => 10,
> #   'findtime' => 60,
> #   'bantime' => 3600
> # }

# 反映
gitlab-ctl reconfigure

以上

AWS Client VPN使ってみた

筆者の理解の度合い

PC→AWS VPCへの接続をVPNできるもの
料金(https://aws.amazon.com/jp/vpn/pricing/)日本で$115/月~になるっぽい。安くはない

作業メモ

■作業環境:macOS
VPN接続ソフト:Tunnelblick

ステップ 1: サーバーおよびクライアント証明書とキーの生成
# easy-rsaで証明書作成していく
git clone https://github.com/OpenVPN/easy-rsa.git
cd easy-rsa/easyrsa3
./easyrsa init-pki

# 認証機関 (CA) を構築
./easyrsa build-ca nopass
Common Name (eg: your user, host, or server name) [Easy-RSA CA]:zuntan02

# サーバ証明書とクライアント証明書を作成
./easyrsa build-server-full server nopass
./easyrsa build-client-full client1.domain.tld nopass

# openVPN設定ファイル用dkimディレクトリを作成して諸々配置
mkdir ~/Desktop/zuntan02.dkim/
cp pki/ca.crt ~/Desktop/zuntan02.dkim/
cp pki/issued/server.crt ~/Desktop/zuntan02.dkim/
cp pki/private/server.key ~/Desktop/zuntan02.dkim/
cp pki/issued/client1.domain.tld.crt ~/Desktop/zuntan02.dkim/
cp pki/private/client1.domain.tld.key ~/Desktop/zuntan02.dkim/

# キーをACMに登録する
サーバー証明書AWS Certificate Manager (ACM) でプロビジョニングする必要がある
[CertificateManager]-[プライベートCA]-[証明書のインポート]
サーバー証明書

  • 証明書本文:server.crt
  • 証明書のプライベートキー:server.key
  • 証明書チェーン:ca.crt

の中身を貼り付ける

クライアント証明書

  • 証明書本文:client1.domain.tld.crt
  • 証明書のプライベートキー:client1.domain.tld.key
  • 証明書チェーン:ca.crt

の中身を貼り付ける

ステップ 2: クライアント VPN エンドポイントを作成する

[VPC]-[クライアント VPN エンドポイント]-[クライアント VPN エンドポイントの作成]
[名前]:てきとう
[Client IPv4 CIDR (クライアント IPv4 CIDR)]192.168.0.0/16(例)
[Server certificate ARN (サーバー証明書 ARN)]
→上記でACMに登録したサーバー証明書を指定
さらに[Use mutual authentication (相互認証の使用)] を選択、
[クライアント証明書 ARN]
→上記でACMに登録したクライアント証明書を指定

あとは初期値のままで[クライアント VPN エンドポイントの作成]

ステップ 3: クライアントの VPN 接続を有効にする

[VPC]-[クライアント VPN エンドポイント]-VPN エンドポイントを選択
[関連付け]-[関連付ける]-[VPC]
接続するVPC を選択

ステップ 4: クライアントのネットワークへのアクセスを承認する

[VPC]-[クライアント VPN エンドポイント]
承認ルールを追加する クライアント VPN エンドポイントを選択し、
[Authorization (承認)]-[Authorize ingress (受信を承認する)]
[Destination network (送信先ネットワーク)]
例)172.31.0.0/16
[For grant access to (アクセス許可の付与)] で [Allow access to all users (すべてのユーザーにアクセスを許可する)]

ステップ 5: (オプション) 追加のネットワークへのアクセスを有効にする

省略

ステップ 6: クライアント VPN エンドポイントの設定ファイルをダウンロードする

[VPC]-[クライアント VPN エンドポイント]-[Download Client Configuration (クライアント設定のダウンロード)]
→ovpnファイルが得られるので先ほど作成したdkimディレクトリの中に配置

# ovpnファイルの編集
~/Desktop/zuntan02.dkim/client-config.ovpn

# 以下を追記

cert client1.domain.tld.crt
key client1.domain.tld.key

pull-filter ignore redirect-gateway
route 172.31.0.0 255.255.0.0   #接続先VPCのCIDR

(参考)https://dev.classmethod.jp/cloud/aws/aws-client-vpn-other-network/

dkimフォルダをダブルクリックすることでtunnelblickに追加されるので接続してみる
→OK!

追加

さいしゅうてきにはNATGWをつけてすべての送出をClientVPN経由で出ていくというのもあり。
料金とかどうなるかな・・・
[AWS Client VPN] VPC を経由して固定のIPでインターネットへアクセスする | Developers.IO

ノートPCにACアダプタをつなぐとCPUの性能が低くおさえられる現象の顛末

【現象】

DELL E6500(Core2DuoP8700マシン)にWindows10を入れて使っていた。
バッテリー駆動だと全然軽いのに、ACアダプタをつなぐと激遅になる。
タスクマネージャでCPU見ると1GHz手前でキャップされているみたい。電力足りない?

【結論】

ACアダプタが間違っていて、OUTPUTが正規のは4.62Aあるのに、くっついてたのが3.34Aのやつ。
どこかで誰かが間違えてセットしたのね……
差し替えたらちゃんと100%まで出るようになった……

メモ:Apache(/nginx)とPHPのバージョン表示を無効化する

セキュリティ監査で指摘される前にせめて以下はやっておきたいメモ

【確認コマンド】

curl -v -X GET http://localhost

初期値だと以下の様なバージョン情報が返る

< Server: Apache/2.4.41 (Amazon) OpenSSL/1.0.2k-fips PHP/7.3.10
< X-Powered-By: PHP/7.3.10

対策

Apache

/etc/httpd/conf/httpd.conf

ServerTokens ProductOnly ; (クライアントに送り返す Server 応答ヘッダにバージョンを入れない)
ServerSignature Off ;  (エラー画面に表示されるApacheのバージョン情報等を表示しない)

PHP

/etc/php.ini

expose_php = Off

反映

service httpd configtest
service httpd restart

→上記の様なバージョン情報は出なくなる

おまけ

■nginx

/etc/etc/nginx/nginx.conf

vi nginx.conf
# 以下を追記
     server_tokens        off;

【AWS】Cloudwatchのcron式では日フィールドと曜日フィールドを同時に指定できない

【問題と解決】

Cloudwatchルールのイベントソースで以下のcron式を指定しようとすると書式エラー(Parameter ScheduleExpression is not valid.)

30 2 * * FRI *

以下のようにすると解決

30 2 ? * FRI *

【メモ】

下記リンクより
>cron 式の日フィールドと曜日フィールドを同時に指定することはできません。一方のフィールドに値 (または *) を指定する場合、もう一方のフィールドで ? (疑問符) を使用する必要があります。
なんと。。

【参考】

docs.aws.amazon.com