Skip to main content

10 posts tagged with "Server"

View All Tags

Python: SimpleHTTPServerでWebサーバをたてる

· 2 min read
Yu Sasaki
Enterprise Security Manager / Advisor

Python のみでWebサーバを提供できるのでその動作確認。今回は下記SimpleHTTPServerモジュールを使用する。

import SimpleHTTPServer
SimpleHTTPServer.test()

上記コードを実行すると下記のようにWebサーバをポート8000番(デフォルト)で提供する。

クライアント-サーバ間のFTPの接続構成図

· One min read
Yu Sasaki
Enterprise Security Manager / Advisor

FTP(File Transfer Protocol)はInternet Request for Comment(RFC) 959で定義されているファイル転送プロトコルであるが、この度、改めてFTPの仕組み、特にクライアント-サーバ間の接続方法を確認。 FTP connection between client and server 上図より接続のフローを簡単に説明すると、

  1. クライアント→サーバ(port 21)へTCPで制御用の接続を試みる
  2. サーバ→クライアントへTCPでデータ伝送用の接続を試みる
  3. 両コネクションにてコマンドのやり取り+データの伝送を行う

FTPにはActive/Passiveの2つのモードがあるが、両モードの違いはサーバ→クライアントへの接続に使用するサーバ側の送信ポートの違いである。図の通り、Activeモードはport 20番、Passiveモードは1024以上のport番号からランダムに選択したものを使用する。

Python: UDP/IPv4 Socket Server/Client (1 Client接続のみ)

· 2 min read
Yu Sasaki
Enterprise Security Manager / Advisor

先日はTCPでのデータ送受だったので、今回はUDPプロトコルを用いた確認をする。

ソースコード(for Python 2.7)

補足はソースコード中のコメントを参照。サンプルの為、サーバ・クライアントは同一マシン上での実行を想定。 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()

Apacheでよく使うコマンドと設定項目

· 2 min read
Yu Sasaki
Enterprise Security Manager / Advisor

設置環境は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の設定

設定ファイル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、イントラネット以外からのアクセスを拒否

.htaccessによるパスワード認証

.htaccessファイル内の設定例

SSLRequireSSL # SSL経由のアクセス
AuthUserFile <認証するユーザリストのパス>
AuthGroupFile <パス>
AuthName "<ページ名>"
AuthType Basic # 認証タイプ
require valid-user

認証するユーザの登録

初回は # htpasswd -b -c <保存先> <ユーザ名> <パスワード> 二件目以降は既にファイルが作成されているので-cを抜く # htpasswd -b <保存先> <ユーザ名> <パスワード> ここで作成したファイルのパスを上のAuthUserFile項目に書く。

sshdのログファイルの確認方法

· One min read
Yu Sasaki
Enterprise Security Manager / Advisor

サーバーで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

Cygwinでcronをインストール

· One min read
Yu Sasaki
Enterprise Security Manager / Advisor

Linux系OSに入っているタスクを自動実行するためのデーモンプロセス、cronをWindows環境でも使用するため,Cygwin((UNIXのフリーソフトウェア等をWindowsに移植したもの))を用いてcronをインストール。 まず、Cygwin Information and InstallationからCygwinをダウンロードしセットアップを開始。セットアップを進めていくと下の画面でインストールするパッケージを選択できます。ここでAdmin内のcronとcygrunsrvをInstallすればOK。 Cygwinのインストール画面:パッケージ選択 インストール後、サービスの設定には主に以下のサイトを参考にしました。