VPSをとりあえず設定してみる

さくらVPSに申し込んでみる
ConoHaに申し込んでみる
ServersMan@VPSに申し込んでみる
の続き

VPSをとりあえず設定してみる。

最新にアップデート

sshでサーバーにログインし、
とりあえず最新の状態にしておく。

# yum update
さくらVPSとConoHaは、デフォルトでepelのリポジトリが入っていて、有効になっている。
ServersManではデフォルトでvzというリポジトリが入ってる。これは何?

ユーザー作成

ユーザーを作成し、sudoできるようにする。
今回は「hoge」というユーザーを作成する。

# adduser hoge
# passwd hoge
# usermod -G wheel hoge
# visudo
%wheel        ALL=(ALL)       ALL

これで、hogeユーザーでログインできるようになる。

mac$ ssh hoge@サーバーのアドレス
ServersManの場合は
mac$ ssh -p 3843 hoge@サーバーのアドレス

鍵認証の設定

鍵が無い場合は、作成しておく。

mac$ ssh-keygen

鍵をサーバーに転送する。

mac$ scp ~/.ssh/id_rsa.pub hoge@サーバーのアドレス:
ServersManの場合は
mac$ scp -P 3843 ~/.ssh/id_rsa.pub hoge@サーバーのアドレス:

サーバーにログインし、

mac$ ssh hoge@サーバーのアドレス

鍵の設定をする。

$ mkdir .ssh
$ mv id_rsa.pub .ssh/authorized_keys
$ chmod 700 .ssh
$ chmod 600 .ssh/authorized_keys

これで、サーバーにパスワード無しでログインできるようになる。

mac$ ssh hoge@サーバーのアドレス

SSHの設定

ポート番号を変更し、パスワードによるログインを禁止するよう設定する。
今回はポート番号は「19999」に変更する。
ssh_configと間違えないように

$ sudo vi /etc/ssh/sshd_config
・・・
Port 19999
・・・
PermitRootLogin no
・・・
PasswordAuthentication no
・・・
$ sudo service sshd restart

ConoHaの場合は、iptablesで22番ポートが設定されているので19999に書き換える。

$ sudo vi /etc/sysconfig/iptables
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
↓
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 19999 -j ACCEPT
$ sudo service iptables restart

これで、19999番ポートじゃないとログインできなくなる。

mac$ ssh -p 19999 hoge@サーバーのアドレス

iptablesの設定

今回は、SSHの19999番ポートとHTTPの80番ポートだけ開けるよう設定する。

さくらVPS/ServersManの場合

デフォルトの状態は、すべて受け入れる状態になっている。

$ sudo 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

以下の記事を参考にして作成する。

ウェブ開発者のための、1時間でできるLAMP環境構築術(CentOS編) - さくらインターネット創業日記
http://tanaka.sakura.ad.jp/2011/05/centos-linux-apache-php-perl-mysql-lamp.html

さくらVPSの場合は、iptablesのファイルがないので新規に作成する。
ServersManは既にiptablesがあるが、OUTPUTより下の部分を下記のように修正する。

上15行と最後の2行はお決まりの記述のようで、その間の行に通したいポートを指定している。

$ sudo vi /etc/sysconfig/iptables
*filter
:INPUT   ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT  ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 19999 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80    -j ACCEPT

-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
$ sudo service iptables restart

改めてiptablesの状態を見てみると、下記のように表示される。

$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
RH-Firewall-1-INPUT  all  --  anywhere             anywhere

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
RH-Firewall-1-INPUT  all  --  anywhere             anywhere

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain RH-Firewall-1-INPUT (2 references)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere
ACCEPT     icmp --  anywhere             anywhere            icmp any
ACCEPT     esp  --  anywhere             anywhere
ACCEPT     ah   --  anywhere             anywhere
ACCEPT     udp  --  anywhere             224.0.0.251         udp dpt:mdns
ACCEPT     udp  --  anywhere             anywhere            udp dpt:ipp
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ipp
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:dnp-sec
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:http
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited
ConoHaの場合

ConoHaは既にiptablesが設定されているので、
80番ポート分を追加する。

$ sudo vi /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 19999 -j ACCEPT
↓
-A INPUT -m state --state NEW -m tcp -p tcp --dport 19999 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
$ sudo service iptables restart

iptablesの状態を見てみると、下記のように表示される。

$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     icmp --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:dnp-sec
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:http
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

ただ、iptablesのことが分かってないので、
これでちゃんとiptablesが設定できているのか微妙。

SELinuxを無効にする

SELinuxは使いこなせないので、無効にする。

だが確認したところ、どのVPSも既に無効になっていたので、特に設定する必要なし。

$ getenforce
Disabled

もし、無効になってない場合は、下記のような感じで無効にする。

$ sudo setenforce 0
$ sudo vi /etc/selinux/config
SELINUX=disabled

完了

最後に、一応、再起動しておく。(必要ないかもしれないがなんとなく)

$ sudo reboot

以上で、設定完了。(たぶん)