[[PageOutline]] = さくらの VPS セットアップメモ 〜2G プラン据え置き Ubuntu16.04 入れ替え編〜 = 入れ替え、と言っても一旦別ノード契約しての実質お引越しなのですが…。 * [wiki:HowTo/SakuraVpsSetup 初回 (1G プラン + CentOS5)] * [wiki:HowTo/SakuraVpsSetup2 2回目 (2G プラン + Scientific Linux 6)] 国際的には RedHat 系より Debian/Ubuntu の方が主流、と聞いたので、今回は Ubuntu16.04 で建ててみることにします。 個人的には Ubuntu はデスクトップ用途のイメージですが…。 == Ubuntu セットアップ == VPS コントロールパネルの「OSインストール」→「カスタムOSインストール」から、「Ubuntu16.04 amd64」を選択し、コンソール画面の内容に従って操作を進めていきました。 ディスクの区画割りで若干カスタマイズを施した以外は概ね画面の指示通りに進めただけです。詳細は省きます。 == ソフトウェアの更新 == ViM を使うのであればインストールが必要です。 {{{ $ sudo su - # apt install vim }}} `apt` コマンドでシステム全体の更新が可能です。 `update` で更新されるソフトウェアのリストを更新、 `upgrade` で実際に更新を行います。 `apt-get` ではなく `apt` を使うことで、更新によって依存関係が追加されたソフトウェアの追加インストールもやってくれるらしいです。 {{{ # apt update # apt upgrade }}} Debian/Ubuntu の場合は `aptitude` もあったほうが良いかもしれません。デフォルトでは入っていないので必要ならインストールします。 {{{ # apt install aptitude }}} == ssh 接続のためのセキュリティ設定 == CentOS や Scientific などと違って、セットアップが終わった段階でメインで使用するユーザーのアカウントも設定されます。普段使い用のアカウントについては自分でユーザーを作って設定する必要はありません。 sshd の設定については、設定ファイルに施す変更は初回と同様です。公開鍵認証の鍵の設定についても (dsa ではなく rsa2 を使っている以外は) 特に変わりません。 sshd のサービス名は ubuntu では `sshd` ではなく `ssh` になっています。再起動は `service` コマンドではなく `/etc/init.d` 以下のスクリプトを直接叩いたほうが良いようです (`service` コマンドではステータスがコンソールに表示されないため)。 {{{ # /etc/init.d/ssh restart }}} `visudo` は不要です。なお、 `sudo` で権限昇格できるユーザーのグループは、 ubuntu では `wheel` グループではなく `sudo` グループとなっています。 == シェルのロケール設定 == 初回と同じ。 == BIND の設定 == 参考: [http://www.usupi.org/sysad/126.html named を chroot して動かす - いますぐ実践! Linuxシステム管理 / Vol.126] * デフォルトでは `bind9-host` はインストールされているものの、 `bind9` はインストールされていません。 * 前回の Scientific Linux 6 のときのような、 chroot 専用の BIND パッケージがあるわけではないようです。 `bind9` をインストールします。 {{{ # apt install bind9 }}} 起動時のオプションに chroot するディレクトリを指定します。 {{{ # vim /etc/default/bind9 # startup options for the server OPTIONS="-u bind -t /var/named/chroot" }}} chroot 先の環境を構築します。 {{{ # mkdir -p /var/named/chroot/dev # mkdir -p /var/named/chroot/bind /var/named/chroot/var/run/bind/run /var/named/chroot/var/cache/bind /var/named/chroot/etc # chown root.bind /var/named/chroot/var/run/bind/run # chmod 775 /var/named/chroot/var/run/bind/run # mknod -m 666 /var/named/chroot/dev/random c 1 8 # tar cf - -C /etc bind | tar xvfp - -C /var/named/chroot/etc }}} `dev/log` 経由で syslog にログを渡せるようにします。 Ubuntu 16.04 は rsyslog がデフォルトで入っているので、設定方法が若干異なるようです。 参考: [http://qiita.com/tjinjin/items/f01a62db74dfd6d7db07 rsyslogを使ってsftpサーバの操作ログを出力する。 - Qiita] {{{ # vim /etc/rsyslog.d/xx-bind.conf AddUnixListenSocket /var/named/chroot/dev/log }}} 最後に、`rsyslogd` を再起動し、 `bind9` の起動を確認してひとまず完了です。 {{{ # /etc/init.d/rsyslog restart # /etc/init.d/bind9 start # /etc/init.d/bind9 stop }}} == パケットフィルタリング設定 == iptables 自体は導入済み。 設定方法については以下のサイトを参考にした。 * [http://hy.xrea.jp/linux/index.php?Ubuntu%2FUbuntu%E3%81%A7iptables%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B Ubuntu/Ubuntuでiptablesを設定する - Welcome to Life with Linux] 1. `iptables` コマンドを呼びまくるシェルスクリプトを書いて実行する。 {{{ $ sudo su - # vim iptables.sh }}} {{{ #!sh #!/bin/sh /sbin/iptables -F /sbin/iptables -X /sbin/iptables -P INPUT ACCEPT /sbin/iptables -P OUTPUT ACCEPT /sbin/iptables -P FORWARD ACCEPT /sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT /sbin/iptables -A INPUT -p icmp -j ACCEPT /sbin/iptables -A INPUT -i lo -j ACCEPT /sbin/iptables -A INPUT -p tcp -m state --state NEW -m multiport --dports 22,25,53,587,993,80,443 -j ACCEPT /sbin/iptables -A INPUT -j REJECT --reject-with icmp-host-prohibited /sbin/iptables -A FORWARD -j REJECT --reject-with icmp-host-prohibited }}} {{{ # chmod u+x iptables.sh # ./iptables.sh }}} 1. 設定内容を確認 {{{ # iptables -L -n Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW multiport dports 22,25,53,587,993,80,443 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT) target prot opt source destination REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT) target prot opt source destination # }}} 1. 設定内容をファイルに保存する {{{ # mkdir /etc/iptables # iptables-save > /etc/iptables/iptables.rules }}} 1. ↑で保存したファイルを、起動時に読み込み、終了時に保存し直すよう設定する {{{ # vim /etc/network/interfaces }}} {{{ #!sh # 最終行に追加 pre-up iptables-restore < /etc/iptables/iptables.rules post-down iptables-save -c > /etc/iptables/iptables.rules }}} 1. 再起動し、設定内容を確認 {{{ # reboot }}} {{{ $ sudo su - # iptables -L -n Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW multiport dports 22,25,53,587,993,80,443 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT) target prot opt source destination REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT) target prot opt source destination # }}}