Lambda on PHPでポート開放をチェックする……

ということで、図のこのようなことをLambdaに任せてみよう!!という記事です。

なぜそんなことするの?

実はこのサーバーを作るときにPort 22番のファイアーウォール設定にミスがあって本来は自宅の固定IPアドレスからのみアクセスにしなきゃいけないのに全世界に公開してしまうというミスをしてしまいまして(-_-;)

つまりこれを用意すれば第三のIPアドレスから簡単にポート開放状況をチェックすることができます!!

他にも……

自宅サーバーのポート開放チェックなど外部IPからアクセスチェックにも使えますし(^_^;)

ということでサクッとコードを……

<?php
if (isset($_POST['host_name'])) {
$host_name = htmlspecialchars($_POST['host_name']);
$port_name = htmlspecialchars($_POST['port_no']);
$socket = @fsockopen($host_name , $port_name);
echo "<p>IPアドレス or ホスト名:" . $host_name .
     "<br>ポート番号:" . $port_name . "</p>";
if ($socket === FALSE) {
    echo '<p><span style="color:#ff0000;">ポートが開放されていません</span></p>';
} else {
    echo '<p><span style="color:#7ecef4;">ポートが開放されています</span></p>';
}
}
?>

単純に「fsockopen」でポートにアクセス出来るかということだけでチェックしています……

「isset($_POST[‘host_name’])」は同一のPHPにPOSTすることで実現するために変数がセットされていない場合は非表示にするということにするために必要になりますf^_^;)

ちなみにHTMLの部分は今回省略していますf^_^;)

実際に実行するとこんな感じになります(^_^)v

自宅サーバー支援サイトでは自分のIPにポート開放チェックができても攻撃に使えてしまうという欠点があるため、IPアドレスを任意で入力できる機能が通常はついていないので……(わたしがサイト管理人でもたしかに任意にはしたくないです……)

これで簡易的にではありますが、ファイアーウォールが正しく動いているかなどチェックができますね!!

ちなみにTCPでしかこの方法は使えないので注意してください!!
(UDPに関してはいろいろ検証しようと思ってます……)

LambdaでPHPを実行してみる……(その2)

前回の記事……
LambdaでPHPを実行してみる……(その1)

ということで、レイヤーを作ったところで終わっているので表示までいっちゃいます!!

入力した名前(今回は「php_info」)を選び、「コードエントリータイプ」を「zipファイルをアップロード」にします。

<?php
phpinfo();
?>

というコードを作り今回は、「phpinfo.php」で作成しました。

それをzip圧縮するわけですが……

ポイントがあります。

zipファイル名は「XXX.php.zip」(XXXは呼び出されるファイル名)にします。
(今回は1ファイルしかないため、「phpinfo.php」がファイル名になる)

そして、フォルダに入れずに直下の位置にファイルを置きます。

そして、「ハンドラ」はphpファイルの名前(つまり.zipの手前までのファイル名)と一緒にします。

「保存」(←画像はもう押した後)をクリックすると、こんな画面に切り替わります。

これでLambda側の作業はおしまいです!!

LambdaのPHPレイヤーはAPI Gatewayで起動することが前提なので、API Gatewayを設定します。

全てデフォルト設定のまま、「API 名」だけ決めて「APIの作成」をクリックします。

「アクション」→「メソッドの作成」

「ANY」→「チェック」という形でメソッドを作ります。

統合タイプ→「Lambda関数」
Lambda プロキシ統合の使用→「チェック」
Lambda 関数→「関数名」

を入れて保存します。

「権限の追加~」と出ますが、しないと使えないので「はい」にします。

「アクション」→「API のデプロイ」を選びます。

デプロイされるステージ→「新しいステージ」
ステージ名→「名前を入れる」

デプロイが完了すると、URLが表示されます。

表示されました(^_^)v

これで動きそうなのは分かったので、あることに使ってみたいなと思ってます(^_^;)

LambdaでPHPを実行してみる……(その1)

復活です(-_-;)

今回はKUSANAGIを使用していますので、構築編もやってもいいかなと思っています……

固定ページ周りは少しずつ作っていきます(^_^;)

いきなりAWSネタでいきます!!

ということで……

ついにLambdaでPHPがサポートされました!!

という事で、phpinfoなんて何人も実行してるじゃん!!

と思うかもしれませんが、今回は最近リリースされたPHP 7.3バージョンでやってみたいと思うのでそこから試してみたいと思います!!

「一から作成」を選びます。

今回はランタイムを「関数コードまたはレイヤーでカスタムランタイムを使用」を選択します。

名前とかロールあたりはとりあえず適当で入力しちゃいます(-_-;)

あとは「関数を作成」をクリックして作成しちゃいます!!

こんな感じで表示が変わるので下にスクロールします……

「Layers」を選び「レイヤーの追加」をクリックします。

「レイヤーバージョン ARN を提供」を選択してレイヤーバージョン ARNに……

arn:aws:lambda:<region>:887080169480:layer:php73:2

と入力します。
(「region」の部分は「us-east-1」とか「north-east-1」とかに置き換えてください)

で……

このARNってどこから持ってきたの?

と思いますよね?

GitHub – stackery/php-lambda-layer: PHP Runtime Layer for AWS Lambda

ここに書いているARNをそのまま持ってきました。

こんな感じになればOKです!!

ここまでで結構な物量になってしまったので続きは明日にしたいと思います(^_^;)

次回の記事……
LambdaでPHPを実行してみる……(その2)