忍者ブログ

インフラ構築手順書

はじめてのインフラ、サーバ構築時に役に立つように構築手順情報をまとめました。


[PR]

広告 

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。



DDNSと組み合わせたSoftEtherVPNの実践設定

広告 

DDNSと組み合わせたSoftEtherVPNの実践設定

SoftEtherVPNを使えば、外出先から社内ネットワークへアクセスが可能になります。
しかし、どこからでもアクセスが可能であるということは、悪意のある人間からの 攻撃を受けやすい状態であるため、SoftEtherVPNの認証だけではセキュリティ脆弱性となりえる。
そこで、FW側でIP制限をかけるべきであるが、固定IPのみを許可した場合、外出先からモバイルルータ(スマホ)を使って 緊急メンテナンスのための接続ができない。

そこで考えるのが、DDNSを組み合わせてアクセス可能なIPを限定し、セキュリティ強化することです。 しかし、ここで問題になるのが、各FWにはDNSキャッシュがあるため、DDNSで更新したIPが反映されるまで時間がかかってしまう。 SSGでは、4時間ごとにキャッシュをクリアできるが、これでは会社に戻って作業した方がはやい。
今回は、DDNSキャッシュをクリアするバッチスクリプトを取り込み、定期的(4時間以内)に実行することでIP反映を なるべく早くする。


DDNSと組み合わせたSoftEtherVPN構築手順の概要

DDNSと組み合わせたSoftEtherVPNの事前作業

・DDNSにホスト名を登録する
・FWのセキュリティポリシー追加
 DDNSホスト名からのアクセス許可設定
・FWのDNSキャッシュのクリア設定
・SoftEtherVPNサーバインストールと初期設定
 ESXi上の検証環境手順であるSoftEtherVPNサーバインストールSoftEter VPN Server初期設定を参考に設定する
・SoftEtherVPNクライアント設定
 ESXi上の検証環境手順であるSoftEtherVPNサーバインストールを参考にインストールする


SoftEtherVPN接続時の手順

1.DDNSのホストにIP紐づけ&オンライン化
2.VPN接続要求
3.接続元IPの確認(FW処理)
4.VPN接続完了

 3,4はFWとクライアントPC間で自動で処理されます。

 ※作業が完了した後、DDNSのホスト名とIPアドレスの紐付けをクリアもしくはオフラインにしておくこと!!





DDNSと組み合わせたSoftEtherVPNの事前作業

DDNSと組み合わせたSoftEtherVPN環境を構築するために必要な事前作業を説明する。

DDNSにホスト名を登録する

DDNSとして、無料で使うことができるCYBERGATEを利用した場合の手順を説明します。
CYBERGATEにアクセスする
 CYBERGATEのDDNS

DDNSにホスト名を登録する
 ・「CyberGate - DDNS - ホストの追加」をクリック
   

 ・ホスト名、ドメイン名を任意のものを入力し、「確認」クリック
 この名前(ホスト名、ドメイン名)をFWに登録してください。
 

 ・内容を確認し、「送信」クリック
 


FWのセキュリティポリシー追加

ここでは、DDNSで登録したホスト名からのアクセスを許可するポリシーを追加します。
IPアドレスではなくホスト名でアクセス許可ができるFWである必要がある。今回SSGを前提に 説明する。
SSGにDDNSホスト名を登録する

SSGにDDNSホストからのアクセスを許可する
SoftEtherVPNのアクセスで5555ポートを許可する


FWのDNSキャッシュのクリア設定

LinuxからSSGへSSH接続し、DNSキャッシュクリア(exec dns refresh)を実行する。
ssg_dns_refresh.sh の変更すべき変数
下記の変数を環境に合わせて、変更してください。
REMOTE_HOST SSGのIPアドレス 192.168.1.1
USER SSGのユーザ名 netscreen
PASS SSGのパスワード hogehogepwd
PROMPT SSGのログインプロンプト SSG140->

# vi /opt/scripts/bin/ssg_dns_refresh.sh 
#!/bin/bash

#messagesへのログ出力の文言定義
MESSAGE1="SSGのDNSリフレッシュを開始します。コマンド:$0"
MESSAGE2="SSGのDNSリフレッシュを完了しました。コマンド:$0"

#SSG情報定義
REMOTE_HOST="192.168.1.1"
USER="netscreen"
PASS="hogehogepwd"
CMD="exec dns refresh"
PROMPT='SSG140->'

#関数定義
X_CMD(){ # user pw host cmd ## ssh ログインしてコマンドを実行するshell関数
local U=$1 ; shift # user
local PW=$1 ; shift # password
local H=$1 ; shift # host
local LCMD=$*
echo $LCMD
local PR=$PROMPT # prompt regular expression
expect -c "
set timeout 20
spawn ssh -l $U $H
while (1) {
expect timeout { break } \"(yes/no)?\" { sleep 1;send \"yes\r\" } \"word: \" { sleep 1;send \"$PW\r\" } -re \"$PR\" { sleep 1;send \"\r\";break }
}
expect -re \"$PR\" ; sleep 1; send \"$LCMD \r\"
expect -re \"$PR\" ; sleep 1; send \"exit\r\"
"
}

#messagesにスクリプト開始ログを出力
logger $MESSAGE1

X_CMD $USER $PASS $REMOTE_HOST $CMD

#messagesにスクリプト完了ログを出力
logger $MESSAGE2

cron設定
20分ごとにDNSキャッシュをクリアする設定とします。
10,30,50 * * * * /opt/scripts/bin/ssg_dns_refresh.sh >/dev/null 2>&1



SoftEtherVPNサーバインストールと初期設定

 ESXi上の検証環境手順であるSoftEtherVPNサーバインストールSoftEter VPN Server初期設定を参考に設定する


SoftEtherVPNクライアント設定

 ESXi上の検証環境手順であるSoftEtherVPNサーバインストールを参考にインストールする




SoftEtherVPN接続時の手順

SoftEtherVPNでVPN接続する手順は、DDNSホスト名とIPアドレス紐付け(オンライン化)を行う以外は、通常のVPN接続と同じです。

DDNSにホスト名を変更する

DDNSに登録したホスト名にIPアドレスの紐づけ(オンライン化)を行う。

CYBERGATEにアクセスする
 CYBERGATEのDDNS

DDNSに登録したホスト名のIPアドレス変更する
 ・「-DDNS- ホストのIPアドレス変更・削除」をクリック
 

 ・DDNSの対象ホスト名の「変更」クリック
 

 ・IPアドレスを確認し、「確認」



VPN接続要求

クライアントPC側で「SoftEtherVPNクライアント接続」を起動し、対象のVPN接続を行う。
DDNSのIPアドレスが反映されれば、VPN接続ができます。



DDNSホストのオフライン

VPN接続が終わったら、VPN切断とDDNSホストのオフライン化を忘れず行うこと。
CYBERGATEにアクセスする
 CYBERGATEのDDNS

DDNSに登録したホスト名のIPアドレス変更する
 ・「-DDNS- ホストのIPアドレス変更・削除」をクリック

 ・DDNSの対象ホスト名の「変更」クリック

 ・IPアドレスを確認し、「オフライン」



拍手[1回]



PHPのセキュリティや運用の観点から最低限行うべき設定

広告 

PHPのセキュリティや運用の観点から最低限行うべき設定

PHPの設定をする上で、セキュリティや運用の観点から最低限行うべき設定を説明する。
なお、Apacheの設定は事前に行っているものとして、説明する。

※Apacheのインストール設定手順は、以下記事を参考に設定を行う。
 Apacheの基本設定
 Apacheの仮想ホスト設定


PHPのインストール

ここでは、DBとしてMysqlを利用し、マルチ言語対応するためmbstringを使うため、PHPモジュールとして php-mysqlとphp-mbstringを合わせてインストールする。
 # yum install php php-mysql php-mbstring

ApacheにPHPモジュールをロードする

php関連の設定がまとめられたphp.confファイルをインクルードする。
 # vi /etc/httpd/conf.d/httpd-vhosts.conf
## PHP5 ####
 Include /etc/httpd/conf.d/php.conf

PHPログ関連の設定

ログ関連の設定内容
 ・notice以外をログとして出力する (~E_NOTICEがNoticeを除外する)
  [error_reporting = E_ALL]の場合、すべてのエラーログを表示する
 ・PHPスタートアップ時のエラーを表示しない
 ・エラーを画面に表示しない
 ・エラーログを出力する
 ・エラーログはsyslogに出力する(messegsを監視対象としている場合)
 # vi /etc/php.ini
;省略
error_reporting  =  E_ALL & ~E_NOTICE
display_errors = Off
display_startup_errors = Off
log_errors = On
error_log = syslog
;省略

文字コードの設定

アプリチームに確認し、文字コード関連の設定を行う。以下は設定例である。
 # vi /etc/php.ini
[PHP]
mbstring.language               = Japanese
mbstring.internal_encoding      = UTF-8
mbstring.http_input             = auto
mbstring.http_output            = pass
mbstring.detect_order           = auto
mbstring.substitute_character   = none
default_charset = "UTF-8"
;省略

PHPセキュリティ設定

PHPセキュリティ関連の設定内容
 ・グローバル変数制限
 ・情報の隠蔽
 ・セッション関係(セッション管理をCookieのみで行う)
 # vi /etc/php.ini
;省略
register_globals = Off        
expose_php = Off         
session.use_only_cookies = 1

その他のセキュリティ関連の設定内容

 ・外部の任意のスクリプトを実行される危険性回避
  ※EC-CUBEやWordPressの一部でallow_url_fopen利用しているので注意!!
 ・SHA-1の指定に変更
 ・指定ディレクトリ以外でのphp実行制御
 # vi /etc/php.ini
;省略
allow_url_fopen = Off        
session.hash_function = 1
open_basedir = /usr/share/:/var/www/


PHPのSession設定

Linuxの場合、一つのディレクトリの配下に10000個から15000個程度のファイルを作成することが出来ますが、実際には5000個もファイルを作成するとディスクI/Oの性能が落ち、ファイル読み書きのパフォーマンスが落ちてしまいます。 大量のアクセスがあると、一つのディレクトリに大量のSESSIONファイルを作成する事になり、上記の理由から結果的にレスポンスが落ちる事に繋がってしまいます。
セッションファイルを複数階層に保存する設定
ここではセッションファイルを/var/lib/php/session以下に2階層に分けて保存する。
 # vi /etc/php.ini
session.save_path = "2;/var/lib/php/session"

SESSIONファイルを保存するディレクトリの作成
備考のcreate_dir.shというスクリプトを作成し、sessionディレクトリにサブディレクトリ作成する。
使用例:sh create_dir.sh sessionディレクトリ 階層
 # sh create_dir.sh /var/lib/php/session/ 2

備考

create_dir.sh
#! /bin/sh
#実行例
#sh mod_files.sh /var/lib/php/session 2
if test "$2" = ""; then
	echo "usage: $0 basedir depth"
	exit 1
fi

if test "$2" = "0"; then
	exit 0
fi

for i in a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9; do
	newpath="$1/$i"
	mkdir $newpath || exit 1
	sh $0 $newpath `expr $2 - 1`
done


セッションファイルの定期削除
php.iniのsession.gc_maxlifetime等でガーベッジコレクションの設定ができますが、負荷がかかる ため、ここでは下記のように30分以上更新がないファイルを10分ごとに削除する設定をします。
# crontab -e
*/10 * * * * find /var/lib/php/session -type f -mmin +30 -exec rm -f {} \;


PHPに関連する記事

Apache構築手順【基本設定】
Apache構築手順【仮想ホスト設定】
Apache構築手順【PHP設定】
Nginxでロードバランサー構築


PHPに関するおすすめ書籍

[即戦力になるための PHPシステム開発の教科書]の書籍横断比較とレビュー

即戦力になるための PHPシステム開発の教科書
著者:マッキーソフト株式会社
出版日:2012-09-26
出版社:技術評論社

[CakePHP2.6 ビギナーズガイド: PHPフレームワークをハックせよ! PRIMERシリーズ]の書籍横断比較とレビュー

CakePHP2.6 ビギナーズガイド: PHPフレームワークをハックせよ! PRIMERシリーズ
著者:掌田津耶乃
出版日:2015-02-05
出版社:Tuyano-Project





拍手[0回]



PowerShellスクリプトを実行させる

広告 

PowerShellスクリプトを実行させる

PowerShellスクリプトを実行させるためには下記のことを知っている必要がある。

・PowerShellスクリプトの拡張子は、「.ps1」である。 ・PowerShellを悪用したウイルスなどがインストールされ、実行されないようにするため、デフォルトではスクリプト・ファイルの実行は禁止されている。


PowerShellの「実行ポリシー」
PowerShellスクリプトは、「実行ポリシー(Execution Policy)」で制御されている。
実行ポリシー内容
Restricted すべてのスクリプトが実行禁止。Windows PowerShell は対話型モードでのみ使用できます。PowerShellインストール直後のデフォルト設定
AllSigned 署名されているスクリプトのみが実行可能。署名されていないスクリプトは実行禁止
RemoteSigned ローカルに保存されているスクリプトは実行可能。インターネットからダウンロードしたスクリプト(非ローカルのスクリプト)は、署名されているもののみが実行可能
Unrestricted すべてのスクリプトが実行可能。ただしインターネットからダウンロードしたスクリプトは、実行するかどうかが確認されるので、ユーザーが明示的に許可した場合のみ実行される

実行できない場合のエラーメッセージ
PS C:\work> .\test.ps1
.\test.ps1 : このシステムではスクリプトの実行が無効になっているため、ファイル C:\work\test.ps1 を読み込むことができませ
ん。詳細については、「about_Execution_Policies」(http://go.microsoft.com/fwlink/?LinkID=135170) を参照してください。
発生場所 行:1 文字:1
+ .\test.ps1
+ ~~~~~~~~~~
    + CategoryInfo          : セキュリティ エラー: (: ) []、PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess

実行ポリシーの変更
PS C:\work> set-ExecutionPolicy RemoteSigned
実行ポリシーの変更
実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシーを変更すると、about_Execution_Policies
のヘルプ トピック (http://go.microsoft.com/fwlink/?LinkID=135170)
で説明されているセキュリティ上の危険にさらされる可能性があります。実行ポリシーを変更しますか?
[Y] はい(Y)  [N] いいえ(N)  [S] 中断(S)  [?] ヘルプ (既定値は "Y"): Y
実行ポリシーを「RemoteSigned」にした状態で、再度PowerShellスクリプトを実行する。

現時点の実行ポリシー状態の確認
PS C:\work> Get-ExecutionPolicy
Restricted 



PowerShellスクリプトをバッチ実行させる

バッチファイルの中で、実行ポリシーの変更し、PowerShellスクリプトを実行するように記述します。 また安全策として、最後に実行ポリシーを元にもどすとよいでしょう。 ・test.bat
powershell Set-ExecutionPolicy RemoteSigned
powershell c:\work\test.ps1
powershell Set-ExecutionPolicy Restricted




拍手[0回]



Yahoo!ブックマーク Googleブックマーク はてなブックマーク livedoorClip del.icio.us FC2 ニフティクリップ iza Buzzurl 


最新記事
(09/17)
(04/09)
(04/09)
(03/22)
(01/16)
(12/30)
(12/26)
(09/21)
(09/21)
(09/20)
(09/12)
(06/13)
(06/13)
(03/14)
(02/15)
(01/03)
(01/03)
(10/04)
(09/20)
(09/15)
(09/14)
(09/14)
(09/14)
(09/06)
(08/30)
最古記事
(10/29)
(10/29)
(10/29)
(10/29)
(10/29)
(04/12)
(04/12)
(06/12)
(06/12)
(06/20)
(06/22)
(07/22)
(07/22)
(07/30)
(07/30)
(08/18)
(08/18)
(08/22)
(08/24)
(08/24)
(08/24)
(08/24)
(08/24)
(08/24)
(08/24)


PR

Copyright © インフラ構築手順書 : All rights reserved

TemplateDesign by KARMA7

忍者ブログ [PR]

管理人限定

検索フォーム

カスタム検索

フリーエリア

ESXiの基本設定・運用設定
ESXiのSSH設定
ESXiの NTP設定
VMware ESXiでの時刻同期(NTP)ペストプラクティス
ESXiのゲストOS(仮想マシン)複製
ESXiのOVF形式で複製
異なるESXiバージョン間の複製(移行)
クローン作成後の後処理
仮想マシンのLVM追加
仮想共有ディスクファイルの作成
ESXi上でハイパーバイザーを稼動させる
パフォーマンスがでないとき確認すること


サーバ構築手順
ESXi上でRACを構築する
GFS2+DRBD構築
PaceMaker+MySQLレプリケーション構築
PaceMaker+DRBD構築
HeartBeat2+DRBD構築


Solarisの構築手順
Solarisのネットワーク設定変更
Solarisのホスト名変更
Solaris11のresolv.conf変更手順
Solaris11のHDD増設手順


AWS(Amazon Web Service)の基本設定・運用設定
S3 WEBサイトの構築
S3 WEBサイトのアクセス制限
S3 WEBサイトのリダイレクト設定


Windows Azureの基本設定・運用設定
AzureでWordpress構築
英語版Wordpressを日本語化する
AzureWebサイトの独自ドメイン設定
AzureWebサイトのモード変更
WEBアクセスログ解析ツールの比較


WordPressの基本設定・運用設定
WordPressの基本構造
WordPressのインストール手順
Wordpressマルチサイト機能
「続き読む(more)」カスタマイズ
Wordpressの独自PHP
Wordpressをサブディレクトリに移す
既存サブディレクトリをルートディレクトリとする
Wordpressが利用可能な共用ホスティング


Postfix構築
Postfixにおける暗号化したSMTP認証設定


SoftEtherVPNの構築
ESXi上のSoftEtherVPN構築
DDNSと組み合わせたSoftEtherVPNの設定


LinuxのAD連携
LinuxのActiveDirectory連携について
PAM認証でAD連携
ApacheでAD連携(LDAP認証)
ApacheでAD連携(Kerberos認証)
SAMBAで2台目DCサーバを構築
RedmineとGitのLDAP(AD)認証設定
JenkinsのLDAP(ActiveDirectory)認証設定


Redmine設定
Alminium(RedmineとGit/SVN)のインストール手順
RedmineとGitのLDAP(AD)認証設定
RedmineとGitの移行
JenkinsのLDAP(ActiveDirectory)認証設定


サーバの基本設定・運用設定
Apache
Apacheの基本設定
Apacheの仮想ホスト設定
PHPの基本設定
Nginxのロードバランサ設定
WebDAV構築手順
アンチウィルス
無償アンチウィルス(ClamAV)の導入手順
システム監視
システム監視ソフトMuninの導入手順
システム監視ソフトZabbixの導入手順
sarによるリソース使用情報取得


サーバ移行
Mysqlマイグレーション
MySQLマイグレーション時の問題点と解決策
Windows
Windows OS評価版からの移行
SQL Server評価版からの移行
クラスタソフト
クラスタソフトの比較

ツリーカテゴリ

広告ーSEO





人気ブログランキングへ
にほんブログ村 IT技術ブログ Webサイト構築へ

ブログ王ランキングに参加中!


最新トラックバック

バーコード

アフィリエイト2