Nginx: "This Connection Is Not Private"警告の解決法 - マルチドメインのserver_name定義
CentOS、Nginxを用いたWebサーバーにおいて、下記のserverディレクティブ設定で後述の事象が発生。
CentOS、Nginxを用いたWebサーバーにおいて、下記のserverディレクティブ設定で後述の事象が発生。
PythonのみでCGIを処理できるサーバを立てられるので、その動作確認。今回は下記CGIHTTPServerモジュールを使用する。尚、実行環境はMac OSX。
Python のみでWebサーバを提供できるのでその動作確認。今回は下記SimpleHTTPServerモジュールを使用する。
import SimpleHTTPServer
SimpleHTTPServer.test()
上記コードを実行すると下記のようにWebサーバをポート8000番(デフォルト)で提供する。
Googleが公開している、Webアプリケーション向けのセキュリティ脆弱性スキャナソフトウェア。 オフィシャルサイト:skipfish - web application security scanner - Google Project Hosting
FTP(File Transfer Protocol)はInternet Request for Comment(RFC) 959で定義されているファイル転送プロトコルであるが、この度、改めてFTPの仕組み、特にクライアント-サーバ間の接続方法を確認。 上図より接続のフローを簡単に説明すると、
FTPにはActive/Passiveの2つのモードがあるが、両モードの違いはサーバ→クライアントへの接続に使用するサーバ側の送信ポートの違いである。図の通り、Activeモードはport 20番、Passiveモードは1024以上のport番号からランダムに選択したものを使用する。
先日はTCPでのデータ送受だったので、今回はUDPプロトコルを用いた確認をする。
補足はソースコード中のコメントを参照。サンプルの為、サーバ・クライアントは同一マシン上での実行を想定。 tsUdpServ.py
# coding: utf-8
from socket import *
from time import ctime
HOST = gethostname()
PORT = 34512
BUFSIZE = 1024
ADDR = (gethostbyname(HOST), PORT)
USER = 'Server'
udpServSock = socket(AF_INET, SOCK_DGRAM) # IPv4/UDPでソケット作成
udpServSock.bind(ADDR) # HOST, PORTでbinding
while True:
print 'Waiting for message...'
data, addr = udpServSock.recvfrom(BUFSIZE) # データ受信
print '...received from and returned to:', addr
udpServSock.sendto('%s > [%s] %s' % (USER, ctime(), data), addr) # データ送信
udpServSock.close()
TCPと大きく変わるところは、ソケットの作成時にソケットファミリーをSOCK_DGRAMとすること。また、listen()とaccept()メソッドが不要となったところあたりかな。 tsUdpClnt.py
# coding: utf-8
from socket import *
HOST = gethostname()
PORT = 34512
BUFSIZE = 1024
ADDR = (gethostbyname(HOST), PORT)
USER = 'Client'
udpClntSock = socket(AF_INET, SOCK_DGRAM)
while True:
data = raw_input('%s > ' % USER) # 標準入力からのデータ入力
if not data:
break
udpClntSock.sendto(data, ADDR) # データ送信
data, ADDR = udpClntSock.recvfrom(BUFSIZE) # データ受信
if not data:
break
print data # データ出力
udpClntSock.close()
設置環境はFedoraを想定。 注:ソースからインストールした場合や他の環境だと一部ファイルのパスが違うところがある。 機会があれば今後も少しずつ書き足し・修正していく。
起動
# /etc/rc.d/init.d/httpd start または、 # service httpd start
終了
# /etc/rc.d/init.d/httpd stop または、 # service httpd stop
再起動
# /etc/rc.d/init.d/httpd restart または、 # service httpd restart
自動起動に設定
# chkconfig httpd on
自動起動の確認(Run level 3:on)
# chkconfig --list httpd
設定の反映
# /etc/rc.d/init.d/httpd reload
ディレクトリの所有者の変更
# chown <ユーザ名>. /var/www/html/
ディレクトリをApache実行ユーザに変更
# chown -R apache:apache /var/www/html/cgi-bin/
設定ファイルhttpd.confのパス
/etc/httpd/conf/httpd.conf
外部設定ファイル*.confを置くパス
/etc/httpd/conf.d/*.conf ・起動時に読み込まれる ・AliasとDirectoryを合わせて用いる場合が多い
DocumentRoot
ルートディレクトリの設定 e.g. DocumentRoot "/var/www/html" で www.example.com/へのアクセスは/var/www/htmlのインデックスページとなる。
Alias
Alias <ドメイン以下のURLパス> <サーバ内のディレクトリパス> e.g. Alias /blog /var/www/blog の場合は、http://www.example.com/blog/にアクセスした際、サーバの/var/www/blog/内の既定のインデックスファイルが読み込まれる。
Directoryタグ
e.g.
<directory "/var/www/html">〜<directory>
属性にディレクトリパスを指定している。
.htaccessを許可する場合
AllowOverride All
IPアドレスによるアクセス制限
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
Allow from 192.168.1.0/24
↑はlocalhost、イントラネット以外からのアクセスを拒否
SSLRequireSSL # SSL経由のアクセス
AuthUserFile <認証するユーザリストのパス>
AuthGroupFile <パス>
AuthName "<ページ名>"
AuthType Basic # 認証タイプ
require valid-user
初回は # htpasswd -b -c <保存先> <ユーザ名> <パスワード> 二件目以降は既にファイルが作成されているので-cを抜く # htpasswd -b <保存先> <ユーザ名> <パスワード> ここで作成したファイルのパスを上のAuthUserFile項目に書く。
サーバーでsshdサービスを使っていると、招かれざる人(大抵bot)も相応の頻度でアクセスしてくる。何時何処からどのようなアクセスがあるのかを把握する為にログファイルを確認することは大事。
sshd のログファイルのパスはCentOS / Fedora系ではデフォルトでは /var/log/secure となる。。
# cat /var/log/secure
尚、ssh のログインに失敗/成功したユーザ数は以下の様なコマンド等でカウントできる。
# grep -c invalid /var/log/secure
# grep -c Failed /var/log/secure
# grep -c Accepted /var/log/secure
Linux系OSに入っているタスクを自動実行するためのデーモンプロセス、cronをWindows環境でも使用するため,Cygwin((UNIXのフリーソフトウェア等をWindowsに移植したもの))を用いてcronをインストール。 まず、Cygwin Information and InstallationからCygwinをダウンロードしセットアップを開始。セットアップを進めていくと下の画面でインストールするパッケージを選択できます。ここでAdmin内のcronとcygrunsrvをInstallすればOK。
インストール後、サービスの設定には主に以下のサイトを参考にしました。