DDNSと組み合わせたSoftEtherVPNの実践設定
SoftEtherVPNを使えば、外出先から社内ネットワークへアクセスが可能になります。DDNSと組み合わせたSoftEtherVPN構築手順の概要
■DDNSと組み合わせたSoftEtherVPNの事前作業・DDNSにホスト名を登録する
・FWのセキュリティポリシー追加
DDNSホスト名からのアクセス許可設定
・FWのDNSキャッシュのクリア設定
・SoftEtherVPNサーバインストールと初期設定
ESXi上の検証環境手順であるSoftEtherVPNサーバインストールと SoftEter VPN Server初期設定を参考に設定する
・SoftEtherVPNクライアント設定
ESXi上の検証環境手順であるSoftEtherVPNサーバインストールを参考にインストールする
1.DDNSのホストにIP紐づけ&オンライン化
2.VPN接続要求
3.接続元IPの確認(FW処理)
4.VPN接続完了
DDNSにホスト名を登録する
DDNSとして、無料で使うことができるCYBERGATEを利用した場合の手順を説明します。FWのセキュリティポリシー追加
ここでは、DDNSで登録したホスト名からのアクセスを許可するポリシーを追加します。FWのDNSキャッシュのクリア設定
LinuxからSSGへSSH接続し、DNSキャッシュクリア(exec dns refresh)を実行する。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
10,30,50 * * * * /opt/scripts/bin/ssg_dns_refresh.sh >/dev/null 2>&1
SoftEtherVPNサーバインストールと初期設定
ESXi上の検証環境手順であるSoftEtherVPNサーバインストールと SoftEter VPN Server初期設定を参考に設定するSoftEtherVPNクライアント設定
ESXi上の検証環境手順であるSoftEtherVPNサーバインストールを参考にインストールするDDNSにホスト名を変更する
DDNSに登録したホスト名にIPアドレスの紐づけ(オンライン化)を行う。VPN接続要求
クライアントPC側で「SoftEtherVPNクライアント接続」を起動し、対象のVPN接続を行う。DDNSホストのオフライン
VPN接続が終わったら、VPN切断とDDNSホストのオフライン化を忘れず行うこと。PHPのセキュリティや運用の観点から最低限行うべき設定
PHPの設定をする上で、セキュリティや運用の観点から最低限行うべき設定を説明する。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ログ関連の設定
ログ関連の設定内容# 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セキュリティ関連の設定内容# vi /etc/php.ini
;省略 register_globals = Off expose_php = Off session.use_only_cookies = 1
その他のセキュリティ関連の設定内容
・外部の任意のスクリプトを実行される危険性回避# 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ファイルを作成する事になり、上記の理由から結果的にレスポンスが落ちる事に繋がってしまいます。# vi /etc/php.ini
session.save_path = "2;/var/lib/php/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
# crontab -e
*/10 * * * * find /var/lib/php/session -type f -mmin +30 -exec rm -f {} \;
PHPに関連する記事
・Apache構築手順【基本設定】PHPに関するおすすめ書籍
即戦力になるための PHPシステム開発の教科書 |
CakePHP2.6 ビギナーズガイド: PHPフレームワークをハックせよ! PRIMERシリーズ |
PowerShellスクリプトを実行させる
PowerShellスクリプトを実行させるためには下記のことを知っている必要がある。・PowerShellスクリプトの拡張子は、「.ps1」である。 ・PowerShellを悪用したウイルスなどがインストールされ、実行されないようにするため、デフォルトではスクリプト・ファイルの実行は禁止されている。
実行ポリシー | 内容 |
---|---|
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.batpowershell Set-ExecutionPolicy RemoteSigned powershell c:\work\test.ps1 powershell Set-ExecutionPolicy Restricted