快適個人用Linuxサーバー構築記

はじめに
サーバーを調達
Virtual Private Server を調達
SSHの設定
SSHでサーバーにログインして、SSHの設定を行う。
iptables
iptablesを設定してファイアウォールをつくる。
認証局
公開鍵の認証局をつくる。
Postfix
SMTPサーバー。
IMAPサーバー
IMAP & POP3サーバー。

ソフトウェアのつかいこなし

はじめに
Linuxのソフトウェア
Linuxで動く便利なソフトの使い方。
PHP
Excel
バーコードの作り方
バーコードを生成するプログラム。
Perlのスクリプト
Perlで開発したソフト。

開発室

はじめに
主にLAPPの話
ZendFramework Application
ZendFrameworkのApplicationを使って開発する。
文献職人
論文の引用文献(Reference)を作成するソフト
Google Logo Collector
Googleのロゴ収集プログラム。
Loading Circle Maker
コンピュータの待ち時間に表示する時計を作成するプログラム。
アクリルアミドゲル作成
希望する濃度のアクリルアミドゲル(SDS-PAGE用)を作成するのに必要な試薬量を計算します。
算数のおけいこ
小学生の算数のおけいこ。

クラスターコンピュータをつくる

雑記帳

はじめに
RAD-tag
ゲノムを二種類の制限酵素で切ったときに適当な長さの断片はどのぐらいとれるのか。
bwa
マッピングツールとしてbwaを使ってみる。
stats
PHPの統計ライブラリstats。

ネットワークの調査

まずバーチャルサーバーのネットワーク環境がどうなっているのかを調べます。

$ /sbin/ifconfig
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:296391 errors:0 dropped:0 overruns:0 frame:0
          TX packets:296391 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:60641629 (57.8 MiB)  TX bytes:60641629 (57.8 MiB)

venet0    Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:127.0.0.1  P-t-P:127.0.0.1  Bcast:0.0.0.0  Mask:255.255.255.255
          UP BROADCAST POINTOPOINT RUNNING NOARP  MTU:1500  Metric:1
          RX packets:21080132 errors:0 dropped:0 overruns:0 frame:0
          TX packets:13070613 errors:0 dropped:75 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:23033207973 (21.4 GiB)  TX bytes:4211702096 (3.9 GiB)

venet0:0  Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:153.127.248.201  P-t-P:153.127.248.201  Bcast:153.127.248.201  Mask:255.255.255.255
          UP BROADCAST POINTOPOINT RUNNING NOARP  MTU:1500  Metric:1

二つのネットワークアダプタが設定されており、それぞれvenet0とvenet0:0と名づけられています。

venet0:0のほうにグローバルIPアドレスがあてられていて外部とはこちらを介して通信するようです。

次に経路を調べます。

$ /sbin/route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
link-local      *               255.255.0.0     U     1002   0        0 venet0
default         *               0.0.0.0         U     0      0        0 venet0

出て行くほうはvenet0を介しているようです。 なぜこのように(ネットワークアダプタが二つでデータの入るほうと出るほうが別々に)設定されているかはわかりませんが、課金などと関係あるのかもしれません。

スクリプトの作成

/firewall.sh

#!/bin/bash

# Script for firewall
# 2014/2/26 Takamasa Suzuki

IPTABLES="/sbin/iptables"
IP_ADDR=`/sbin/ifconfig venet0:0 | grep "inet addr" | sed -e "s/.*inet addr:\([0-9.]\+\) .*/\1/"`

# Policy
POLICY=DROP
if [ -n "$1" ] ; then
	POLICY=ACCEPT
fi

for CHAIN in INPUT OUTPUT FORWARD ; do
	$IPTABLES -P $CHAIN $POLICY
	$IPTABLES -F $CHAIN
done

$IPTABLES -X	# 全てのユーザー定義のチェーンを削除する
$IPTABLES -Z	# 全てのチェーンのパケット情報を0にする

if [ "$POLICY" == ACCEPT ] ; then
	$IPTABLES -L -n
	exit
fi

# for loopback interface
$IPTABLES -A INPUT -i lo -j ACCEPT
$IPTABLES -A OUTPUT -o lo -j ACCEPT

# ICMP (ping)
if [ PING ] ; then
	$IPTABLES -A INPUT -p ICMP -j ACCEPT
	$IPTABLES -A OUTPUT -p ICMP -j ACCEPT
fi

# basic networking
$IPTABLES -A INPUT -d $IP_ADDR -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -s $IP_ADDR -j ACCEPT

# Services in TCP
for SERVICE in 2022 http https smtp smtps submission pop3 pop3s imap imaps ; do
	$IPTABLES -A INPUT -d $IP_ADDR -m state --state NEW -p tcp --dport $SERVICE -j ACCEPT
done

$IPTABLES -L -n 

スクリプトの実行

# /firewall.sh
# service iptables save

brute force attack への対処

sshやメールサーバーに対し手当たり次第のユーザー名とパスワードでログインを試みようとする輩がいるので、それをブロックします。

# iptables -A INPUT -p tcp --dport 2022 --syn -m recent --name badhost \
	--rcheck --seconds 60 --hitcount 5 -j LOG --log-prefix "iptables_reject ssh:"
# iptables -A INPUT -p tcp --dport 2022 --syn -m recent --name badhost \
	--rcheck --seconds 60 --hitcount 5 -j REJECT
# iptables -A INPUT -p tcp --dport 2022 --syn -m recent --name badhost \
	--set -j LOG --log-prefix "recent_set"