-
Java導入確認
AWSでは初期状態でJavaが導入済の状態になっています。java -version
java version "1.7.0_85" OpenJDK Runtime Environment (amzn-2.6.1.3.61.amzn1-x86_64 u85-b01) OpenJDK 64-Bit Server VM (build 24.85-b03, mixed mode)
JAVA_HOMEも設定済のため、そのまま利用する。
JAVA_HOMEは下記パスを参照している。/usr/lib/jvm/jre
【AWS】初期設定
-
日本語環境に設定
vi /etc/sysconfig/i18n
下記内容に変更 LANG=en_US.UTF-8 ↓ LANG=ja_JP.UTF-8
-
ec2-userのパスワード設定
ec2-userでteratermからログインする際、秘密鍵がないとログインできないが、
常時稼働するサーバーとして運用する場合、パスワードも設定しておく方が安全。
今回のAWSはお試しなので設定せず。
-
rootのパスワード設定
初期状態ではrootにパスワード設定がないため、
ec2-userでログインを行ってから下記コマンドでパスワード設定する。sudo su - passwd New password: 任意の文字列 Retype new password: 任意の文字列
-
タイムゾーンの変更
rootユーザで実行します。cp -p /usr/share/zoneinfo/Japan /etc/localtime
上書きするか確認されるので、上書きします。
dateコマンドを打って日本時間になっていれば問題ありません。しかし、上記方法だけでは、「/etc/localtime」はglibcパッケージが更新されると、
パッケージ更新に含まれるスクリプトによりUTCに戻ってしまいます。
AWSではcloud_initがインスタンスの起動時にセキュリティの更新を実行するので、
そのタイミングで設定が初期化されてしまいます。
そこで以下の設定も行います。vi /etc/sysconfig/clock
ZONE="Asia/Tokyo" UTC=false
【AWS】セキュリティ向上その1
-
・AWSログインの2段階認証
上部の「サービス」-「IAM」を選択します。「ルートアカウントのMFAをアクティブ化」を行います。
=2段階認証を行います。
2段階認証にはiPhoneアプリの「Authy」を利用します。「ルートアカウントのMFAをアクティブ化」を選択し、
「MFAの管理」ボタンを押下します。「仮想MFAデバイス」を選択し、「次のステップ」ボタンを押下します。
説明を読んだら、「次のステップ」ボタンを押下します。QRコードを「Authy」で読み取ります。
読み取ると6桁の数字が出るので、それを認証コード1へ、
秒数経過でさらに6桁の数字が出るので、それを認証コード2へ。
「仮想MFAのアクティブ化」ボタンを押下すると関連付けが完了します。
-
グループの作成
上部の「サービス」-「IAM」を選択します。
左側の「グループ」を選択します。
「新しいグループの作成」ボタンを押下します。
グループ名に任意の名前を入力し、「次のステップ」ボタンを押下します。
ポリシーとして、「AmazonEC2FullAccess」を選択し、「次のステップ」ボタンを押下します。
「グループの作成」ボタンを押下します。
-
IAMユーザーの作成
AWSログインは今後、IAMユーザーと呼ばれる権限の低いユーザーで行えるようにします。
これにより、iPhoneなどからAWSを起動したりします。上部の「サービス」-「IAM」を選択します。
左側の「ユーザー」を選択します。
「新規ユーザーの作成」ボタンを押下します。
ユーザー名を1名分入力し、「作成」ボタンを押下します。認証情報を「認証情報のダウンロード」ボタンを押下し、ダウンロードしておきます。
このファイル内の「Access Key Id」「Secret Access Key」は
後程、iPhone用のAWS起動アプリで利用します。
-
ユーザーの詳細設定
ユーザー名をクリックし、「グループにユーザーを追加」ボタンより、
先ほど作成したグループに追加させます。
次に下部の「パスワードの管理」ボタンを押下し、パスワードを設定します。
【AWS】EC2のインスタンス作成
AWS(AmazonWebService)が個人でも1年間無料とのことで利用してみました。
AWSのサイトでamazonのログインとパスワードでサインインし、
EC2でインスタンスを作成します。
-
【手順1:Amazonマシンイメージ(AMI)】
「Amazon Linux 64bit」を選択します。
開発言語としては、Python、Ruby、Perl、Java
リポジトリとしてはDocker
DBとしてはMySQL、PostgreSQLなどが含まれているようです。また、使ったことはないですが、
ローカルにAmazonコマンドラインインターフェース(AWS CLI)というツールを
インストールしておくと、
コマンドライン上から「aws 任意のコマンド」でAWSを操作できるようです。
-
【手順2:インスタンスタイプの選択】
無料利用枠の対象である「t2.micro」を選択します。
「確認と作成」ボタンを押下します。
手順3~手順6の手順は省略され、デフォルト設定が適用となります。
-
【手順7:インスタンス作成の確認】
「作成」ボタンを押下します。
デフォルトのセキュリティグループはポート全開放されていますと、
セキュリティ強化の警告が表示されますが、
インスタンス作成時に手順3~手順6をすっ飛ばすと、
自動的に新しいセキュリティグループが作成され、
SSHのポート22のみを許可したセキュリティグループになります。常時起動するサーバーにしないため、許可する送信元も初期設定のままとします。
ダイアログで「新しいキーペアの作成」を選択し、キーペア名を入力します。
「インスタンスの作成」ボタンを押下します。
ものの5分程度の手順で仮想サーバーが作れるって
正直便利すぎると思いました。
予想請求額の通知を受け取る設定で0円より大きくなったら
通知を受け取るようにしておきます。(念のため)
【VPNサーバ】OpenVPN導入その6
約1年ずっと起動していたRaspberry Piもとうとう再起動しました。
それに伴い、iPhoneからRaspberry PiのOpenVPNを介して、
自宅サーバに接続しようと思ったところ、接続できなかったので設定を見直し。
-
iptablesの設定
iptables -t filter -A INPUT -i eth0 -p udp -m udp --dport 1194 -j ACCEPT iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j SNAT --to 192.168.XXX.XXX
「–to」にはRaspberry Piの通常のIPを指定します。
再起動すると設定が消えるため、自動設定できるようにするのが良いですが、
まだ自動化できていません。
設定後、ufw(iptable)の再起動は不要です。
この内容は「【Raspbian】OpenVPN導入その2」の最後の方にも記載がありますが、
見逃しがちなので、再度記載しました。
【Excel】フォルダ内のエクセルファイルに対して情報を取得する
Dir関数を用いるため、ネットワーク上の長いファイルパスには未対応です。
Sub Test() ' ' Test Macro ' ' フォルダ内のファイルに対して処理を行います。 ' ' 画面チラつきを防止する。 Application.ScreenUpdating = False ' フォルダパスとファイル名を宣言する。 Dim strFilePath As String Dim strFileNmae As String ' テキストボックスかセル入力でフォルダを指定させる。 strFilePath = "C:\Users\test\Desktop\テストディレクトリ" strFilePath = Worksheets("sheet1").Cells(2, 1).Value ' 末尾が\ではない場合、\を追加する。(未実装) strFilePath = strFilePath & "\" ' 指定フォルダ内のファイル名を取得する。 strFileName = Dir(strFilePath, vbNormal) ' 結果シートをアクティブにする。 Worksheets("sheet1").Activate ' 結果シートの行数を宣言する。 Dim longGyo As Long longGyo = 3 ' 指定フォルダ内のファイルがなくなるまで繰り返す。 Do While strFileName <> "" ' 結果配列とシート数を宣言する。 Dim strArr() As String Dim sheetCnt As Long ' ファイルを開く。 With Workbooks.Open(Filename:=strFilePath & strFileName) ' ファイル内のシート数を取得する。 sheetCnt = .Worksheets.Count ' ファイル内のシート数分+チェックしたい項目数分の2次元配列を確保する。 ReDim strArr(1 To sheetCnt + 1, 10) ' 1シート目からnシート目まで繰り返す。 Dim i As Long For i = 1 To sheetCnt strArr(i, 0) = .Worksheets(i).Name strArr(i, 1) = .Worksheets(i).Cells(3, 4).Value strArr(i, 2) = .Worksheets(i).PageSetup.LeftHeader strArr(i, 3) = .Worksheets(i).PageSetup.CenterHeader strArr(i, 4) = .Worksheets(i).PageSetup.RightHeader strArr(i, 5) = .Worksheets(i).PageSetup.LeftFooter strArr(i, 6) = .Worksheets(i).PageSetup.CenterFooter strArr(i, 7) = .Worksheets(i).PageSetup.RightFooter .Worksheets(i).Select strArr(i, 8) = ActiveWindow.Zoom strArr(i, 9) = ActiveCell.Address Next i ' 保存せずファイルを閉じる。 .Close SaveChanges:=False End With ' 配列の1からnまで繰り返す。 Dim j As Long For j = 1 To sheetCnt ' 結果シートのセルに各ファイルの各シートの値を設定する。 Cells(longGyo, 1).Value = strFilePath & strFileName Cells(longGyo, 2).Value = strArr(j, 0) Cells(longGyo, 3).Value = strArr(j, 1) Cells(longGyo, 4).Value = strArr(j, 2) Cells(longGyo, 5).Value = strArr(j, 3) Cells(longGyo, 6).Value = strArr(j, 4) Cells(longGyo, 7).Value = strArr(j, 5) Cells(longGyo, 8).Value = strArr(j, 6) Cells(longGyo, 9).Value = strArr(j, 7) Cells(longGyo, 10).Value = strArr(j, 8) Cells(longGyo, 11).Value = strArr(j, 9) longGyo = longGyo + 1 Next j ' 次のファイルを取得する。 strFileName = Dir() Loop ' 画面チラつき防止を解除する。 Application.ScreenUpdating = True End Sub
【Excel】全シート分繰り返す
Sub Test() ' ' Test Macro ' ' 全シート分繰り返す。 ' ' 画面のチラつきの防止設定を行う。 Application.ScreenUpdating = False ' 全シート分繰り返す。 Dim Sht As Worksheet For Each Sht In Worksheets ' シートを選択する。 Sht.Select ' 処理を記述する。 Msg "test" Next Sht ' 画面のチラつきの防止設定を元に戻す。 Application.ScreenUpdating = True End Sub
【Excel】選択セルの行列と選択セルの最終行列
Sub Test() ' ' Test Macro ' ' 行列を求める。 ' ' 特定のセルを選択する。(i:行、j:列) ActiveSheet.Cells(i, j).Select ' 選択セルの行求める。 MsgBox ActiveCell.Row ' 選択セルの列を求める。 MsgBox Activecell.Column ' 選択セルの最終行を求める。 MsgBox ActiveSheet.Cells(i, j).End(xlDown).Row ' 選択セルの最終列を求める。 MsgBox ActiveSheet.Cells(i, j).End(xlToRight).Column End Sub
【bat】エビデンスの取得効率化
少しでもエビデンスの取得を効率化するために、
下記手順でテストを行うことを想定。
- 01_BEFORE_UT.batを実行(第1引数にフォルダ名(ケース番号)を指定)
- テスト実行
- 02_AFTER_UT.batを実行(第1引数にフォルダ名(ケース番号)を指定)
DBはDB2としています。
-
01_BAFORE_UT.bat
@ECHO OFF REM 実行時の第1引数にエビデンス用のフォルダ名(ケース番号)を指定してください。 REM コマンドプロンプトを立ち上げ、「db2cmd 01_BAFORE_UT.bat フォルダ名」で実行します。 REM ************************************************************* REM エビデンスフォルダ設定 REM ************************************************************* SET EVI_DIR=%1 SET SQL_OUTPUT=%EVI_DIR%\10_SQL_LOG_Before MKDIR %EVI_DIR% MKDIR %SQL_OUTPUT% REM ************************************************************* REM DB設定(各自の設定に変更してください。) REM ************************************************************* SET SERVER_I=XXXXX SET USER_ID=YYYYY SET USER_PASS=ZZZZZ REM ************************************************************* REM DB2接続 REM -t:SQLファイル内のセミコロンをステートメント終了文字とする。 REM -v:コマンドテキストを標準出力にエコーする。 REM ************************************************************* db2 -tv connect to %SERVER_ID% user %USER_ID% using %USER_PASS%; REM ************************************************************* REM SQL実行 REM -t:SQLファイル内のセミコロンをステートメント終了文字とする。 REM -v:コマンドテキストを標準出力にエコーする。 REM -f:ファイル名を指定する。SQL文をファイルから読み込む。 REM ************************************************************* db2 -tvf select_AAA.sql > %SQL_OUTPUT%\select_AAA.log REM ************************************************************* REM DB2切断 REM ************************************************************* db2 connect reset
-
02_AFTER_UT.bat
@ECHO OFF REM 実行時の第1引数にエビデンス用のフォルダ名(ケース番号)を指定してください。 REM コマンドプロンプトを立ち上げ、「db2cmd 02_AFTER_UT.bat フォルダ名」で実行します。 REM ************************************************************* REM エビデンスフォルダ設定 REM ************************************************************* SET EVI_DIR=%1 SET SQL_OUTPUT=%EVI_DIR%\20_SQL_LOG_After SET LOG_OUTPUT=%EVI_DIR%\30_BATCH_LOG MKDIR %SQL_OUTPUT% MKDIR %LOG_OUTPUT% REM ************************************************************* REM DB設定(各自の設定に変更してください。) REM ************************************************************* SET SERVER_I=XXXXX SET USER_ID=YYYYY SET USER_PASS=ZZZZZ REM ************************************************************* REM DB2接続 REM -t:SQLファイル内のセミコロンをステートメント終了文字とする。 REM -v:コマンドテキストを標準出力にエコーする。 REM ************************************************************* db2 -tv connect to %SERVER_ID% user %USER_ID% using %USER_PASS%; REM ************************************************************* REM SQL実行 REM -t:SQLファイル内のセミコロンをステートメント終了文字とする。 REM -v:コマンドテキストを標準出力にエコーする。 REM -f:ファイル名を指定する。SQL文をファイルから読み込む。 REM ************************************************************* db2 -tvf select_AAA.sql > %SQL_OUTPUT%\select_AAA.log REM ************************************************************* REM DB2切断 REM ************************************************************* db2 connect reset REM ************************************************************* REM ログファイル取得 REM ************************************************************* copy \\サーバーホスト名\12345\xxxx.log %LOG_OUTPUT%
基本的な確認コマンドその1
-
OSのバージョン確認
cat /etc/issue CentOS release 6.6 (Final) Kernel \r on an \m
-
OSのbit数確認
uname -a Linux z-area.net 2.6.32-504.23.4.el6.x86_64 #1 SMP Tue Jun 9 20:57:37 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux