done is better than perfect

自分が学んだことや、作成したプログラムの記事を書きます。すべての記載は他に定める場合を除き個人的なものです。

お名前.com VPS を借りたらまずやること(Debian) (2)

これは前の記事の続きです。

  • パーティションの設定(/homeを別パーティションに移動)
  • iptablesの設定

を行います。

3. パーティションの設定

この記事は、こちらの記事こちらの記事を参考にしています。ありがとうございます。

パーティションの設定は現在この用になっています。

$ df -h
ファイルシス                                           サイズ  使用  残り 使用% マウント位置
rootfs                                                    19G  1.4G   17G    8% /
udev                                                      10M     0   10M    0% /dev
tmpfs                                                    101M  232K  101M    1% /run
/dev/disk/by-uuid/3c384a48-4f6d-498a-9298-1d01d4d87c59    19G  1.4G   17G    8% /
tmpfs                                                    5.0M     0  5.0M    0% /run/lock
tmpfs                                                    377M     0  377M    0% /run/shm
/dev/vdb1                                                 79G  215M   75G    1% /home

最初にインストールされた時には、

/dev/vdb1                                                 79G  215M   75G    1% /home

の部分がない状態でした。つまり、20GBに全てが設定されている状態でした。 調べてみると、デフォルトの状態(CentOS)では残りの80GBは/dataとして マウントされているようですね。

ここでは、/home/vdbにマウントしてみたいと思います。

# fdisk /dev/vdb
# Command (m for help): n <- 新しい領域を作成する
# Command action
    e extended
    p primary partition (1 - 4)
p <- パーティションを設定
Partition number (1 - 4): 1 <- 1に設定
First cylinder (1 - 4): 1 <- 1に設定
Last Cylinder or +size or +sizeM or + sizeK: 767 <- 空き領域を全て使う

Command (m for help): t
Partition number (1 - 4): 1
Hex code (type L to list codecs): 83 <- Linux領域に設定

Command (m for help): p
Command (m for help): w <- 情報を書き込む

次に、/vdbをフォーマットします。ここではext4でフォーマットします。

# mkfs.ext4 /dev/vdb1

フォーマットが正常に終了したら、試しに一時的にマウントしてみます。

# mount -t ext4 /dev/vdb1 /mnt

マウントが正常に終了したら、古い/homeディレクトリの内容を全て/mntにコピーします。

# cp -a /home/* /mnt

コピーが終了したら、古い/homeディレクトリの中身を削除しま。

# rm -rf /home

上記が全て終了したら、/etc/fstabに次のような行を追加する。

/dev/vdb1 /home ext4 defaults 1 1

終わったら、一時的にマウントした/mntをアンマウントして再起動します。

# umount /mnt
# reboot

ログインすると、この記事の最初に載せたようになっていると思います。

4. iptablesの設定

以前の記事でもセキュリティの設定はしましたが、よりセキュアになるようにiptablesの設定をしましょう。

ここでは、Debian本家のWikiこちらの記事を参考にしています。ありがとうございます。

まずは必要なパッケージをインストールします。

$ sudo apt-get install iptables iptables-persistent

現在の様子を見てみます。

$ iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

当然何も設定されていませんね。

厳しいルール設定をしましょう。

$ sudo vim /etc/iptables.test.rules

このように記載します。

*filter

# Allows all loopback (lo0) traffic and drop all traffic to 127/8 that doesn't use lo0
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT

# Accepts all established inbound connections
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Allows all outbound traffic
# You could modify this to only allow certain traffic
-A OUTPUT -j ACCEPT

# Allows HTTP and HTTPS connections from anywhere (the normal ports for websites)
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT

# Allows SSH connections 
# THE -dport NUMBER IS THE SAME ONE YOU SET UP IN THE SSHD_CONFIG FILE
-A INPUT -p tcp -m state --state NEW --dport 30000 -j ACCEPT <- ここは、自分で設定したSSHのポート番号を書きましょう。

# Now you should read up on iptables rules and consider whether ssh access 
# for everyone is really desired. Most likely you will only allow access from
certain IPs.

# Allow ping
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT

# log iptables denied calls (access via 'dmesg' command)
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: "
--log-level 7

# Reject all other inbound - default deny unless explicitly allowed policy:
-A INPUT -j REJECT
-A FORWARD -j REJECT

COMMIT

この設定を適用しましょう。

$ iptables-restore < /etc/iptables.test.rules
$ iptables-save > /etc/iptables/rules
$ sudo service iptables-persistent start

お疲れ様でした。