さくらのVPSでいつもやってること

さくらのVPSを借りた直後や再インストール時にやっている事のメモ。
OSはカスタムインストールでDebian amd64をインストールしています。(インストールはほぼデフォルト)
作業は全てrootで実施する前提。

DNS

カスタムインストール時にDNSの設定ができないので、OSインストール直後に行う。
nameserverをインストール時に表示されているDNSサーバのIPで指定。

vi /etc/resolv.conf
nameserver 210.224.163.3
nameserver 210.224.163.4

SSH

鍵の配置

Transmit等のFTP Clientにてlocalで作成した公開鍵(id_rsa.pub等)を$HOME/.ssh/authorized_keysとして配置。
.sshディレクトリは無いので作成する。権限は.sshが700、authorized_keysが400。
鍵を作成してない場合は、ssh-keygen -t rsa等で作成する。

sshd_config修正

鍵認証でログインできる事を確認した上で、sshd_configを修正してsshを再起動する。
rootログイン、パスワード認証の禁止とListen portの変更。

vi /etc/ssh/sshd_config
/etc/init.d/ssh restart
5c5
< Port 22
---
> Port 10022
26c26
< PermitRootLogin yes
---
> PermitRootLogin no
50a51
> PasswordAuthentication no

ClamAV

ClamAVインストール
apt-get update
apt-get install clamav
freshclam停止と自動起動設定削除

日次のウィルススキャン時に定義ファイルの更新をするので停止しておく。

/etc/init.d/clamav-freshclam stop
update-rc.d -f clamav-freshclam remove
ClamAV起動ユーザの変更

起動ユーザをclamavからrootに変更する。

sed -i.`date +%Y%m%d` -e 's/^\(User .*\)$/#\1/' /etc/clamav/clamd.conf 
ウィルススキャンスクリプトの作成

_EMAILにウィルス削除時の通知先を入れておく。
あとは日次で実行される。

freshclam
mkdir -p /usr/local/etc/clamav
echo "/proc/" >> /usr/local/etc/clamav/clamscan.exclude
touch /usr/local/etc/clamav/clamscan
chmod 755 /usr/local/etc/clamav/clamscan
ln -s /usr/local/etc/clamav/clamscan /etc/cron.daily/clamscan
vi /usr/local/etc/clamav/clamscan
#!/bin/bash
 
EXCLUDE_LIST=/usr/local/etc/clamav/clamscan.exclude
TMP_FILE=`mktemp`
_EMAIL=****@****
 
# check
[ "${EXCLUDE_LIST:+set}" != "set" -a "${_EMAIL:+set}" != "set" ] && exit 1
 
# exclude option setup
if [ -s $EXCLUDE_LIST ] ; then
    for _EXC in `grep -v ^# $EXCLUDE_LIST`
    do
        if echo $_EXC|grep /$ > /dev/null 2>&1 ; then
            _EXC=`echo $i|sed -e 's/^\([^ ]*\)\/$/\1/p' -e d`
            EXCLUDE_OPT="$EXCLUDE_OPT --exclude-dir=^$_EXC"
        else
            EXCLUDE_OPT="$EXCLUDE_OPT --exclude=^$_EXC"
        fi
    done
fi
 
# signature update
/usr/bin/freshclam > /dev/null
 
# virus scan
clamscan --recursive --remove $EXCLUDE_OPT / > $TMP_FILE 2>&1
 
# report mail send
if grep FOUND$ $TMP_FILE > /dev/null 2>&1 ; then
    grep FOUND$ $TMP_FILE|mail -s "Virus Report" $_EMAIL
fi
 
# tempfile remove
rm -f $TMP_FILE
 
exit 0

iptables

ネットワーク起動時に起動させるように/etc/network/if-pre-up.dに起動用スクリプトを入れておく。
とりあえず、sshとwebを開けてます。

touch /etc/network/if-pre-up.d/iptables_up
chmod 700 /etc/network/if-pre-up.d/iptables_up
chown root. /etc/network/if-pre-up.d/iptables_up
vi /etc/network/if-pre-up.d/iptables_up
#!/bin/sh
 
if [ "$IFACE" != "eth0" ]; then
    if [ "$1" != "manual" ]; then
        exit 0
    fi
fi
 
# iptables initialize
iptables -F
iptables -X
iptables -Z
 
# Basical Policy
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
 
# Allow all access from localhost
iptables -A INPUT -i lo -j ACCEPT
 
# Allow all response packets
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
 
# Allow all icmp packets
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
 
# Deny all access to port 113 to notify
iptables -A INPUT -p tcp --dport 113 -j REJECT --reject-with tcp-reset
 
# Deny all access from a private address
iptables -A INPUT -s 10.0.0.0/8 -j DROP
iptables -A INPUT -s 172.16.0.0/12 -j DROP
iptables -A INPUT -s 192.168.0.0/16 -j DROP
 
# Allow Services Port
# ssh
iptables -A INPUT -p tcp --dport 10022 -j ACCEPT
 
# web
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

初期化スクリプトも用意する。

touch /etc/network/if-post-down.d/iptables_down
chmod 700 /etc/network/if-post-down.d/iptables_down
chown root. /etc/network/if-post-down.d/iptables_down
vi /etc/network/if-post-down.d/iptables_down
#!/bin/sh
 
# Basical Policy
# Allow all packets
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
 
# Formatting
iptables -F
iptables -Z
iptables -X

interfacesに起動停止時に実行するように書いて手動適用させる。

echo "pre-up /etc/network/if-pre-up.d/iptables_up" >> /etc/network/interfaces
echo "post-down /etc/network/if-post-down.d/iptables_down" >> /etc/network/interfaces
/etc/network/if-pre-up.d/iptables_up manual
iptables -L

NTP

NTPインストール/設定

同期先NTPサーバを変更しておく。

apt-get install ntp ntpdate
vi /etc/ntp.conf
21,24c21,23
< server 0.debian.pool.ntp.org iburst
< server 1.debian.pool.ntp.org iburst
< server 2.debian.pool.ntp.org iburst
< server 3.debian.pool.ntp.org iburst
---
> server ntp.nict.jp
> server ntp.jst.mfeed.ad.jp
> server ntp1.sakura.ad.jp
手動同期

ntpを停止して手動同期する。

/etc/init.d/ntp stop
ntpdate ntp.nict.jp
起動と確認

起動してしばらく待ってから同期されているか確認する。

/etc/init.d/ntp start
ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*ntp-a2.nict.go. .NICT.           1 u    1   64  377    9.363    0.089   0.069
+ntp3.jst.mfeed. 133.243.236.17   2 u   56   64  377    9.522    0.739   0.123
+ntp1.sakura.ad. 133.243.238.164  2 u   62   64  377    8.251    0.190   0.179

Git

Git使わない人は必要無し。

apt-get install git-core

その他

他にもよく使うパッケージを入れておく。

apt-get install make gcc zsh vim vim-nox vim-common

CentOSで自宅サーバー構築