さくらVPSのCentOS6.5で一番最初に行う基本設定

ブログ引っ越そうと思って、もう一つさくらVPSを借りた。

その時の初期設定を残しておく。
順次追加していくつもりで。

参考にされる方は、ユーザ名とsshのポート番号などを適宜変えてください。
・ユーザ名:runble1
・ポート番号:50055
・IPアドレス:00.000.000.000
・公開鍵:id_rsa2.pub
・秘密鍵:id_rsa2

1. VPSの起動とsshでつなぐまで

ゴール:sshでつないで、rootのパスワードを変更する

まずは、さくらVPSのコンソールに入って、「起動」をクリックしてVPSを起動する。
IPアドレス・パスワードはメールで通知されているはず。

ターミナルからssh接続する。

ssh [email protected]

VPSの起動は少々時間がかかるので注意。
ちゃんとVPS起動してないと以下のように出てはじかれる。

ssh: connect to host 00.000.000.000 port 22: Connection refused

sshでログイン後とりあえずアップデートしてみる。
自分の環境は最新でした。

yum -y update

rootのパスワード変える。
以下のコマンドを入力したあとエンターを押す。

passwd

2. sudoを行う作業用ユーザの作成

ゴール:sudoを使える作業用ユーザを作成する

rootでの作業は危険なため、作業用ユーザを作成する。
ユーザ名はrunble1とした。

useradd runble1

作業用ユーザのパスワードを作成。

passwd runble1

作業用ユーザをwheelグループに所属させる。
wheelはsudo(後述)する権限のあるグループとなる。

usermod -G wheel runble1

wheel グループのメンバーのみ root になれる(suできる)ように設定する。
以下のファイルを編集する。

vim /etc/pam.d/su

以下の行のコメント(この場合は#)を外す。

auth            required        pam_wheel.so use_uid

sudoの設定ファイルを開く。

visudo

以下の行のコメントを外す。

%wheel ALL=(ALL) ALL

作業用ユーザでログインできるか確認する。
Macならcommand+Tにて新しいタブを開いて、今までのやつを念のため残しておく。

ssh [email protected]

ログインできたらsudoできるか確認する。
こういう時、適切なテストコマンドはなんだろう?

sudo vim /etc/ssh/sshd_config

開けて上書き保存できたら大丈夫。

sshの設定(公開鍵認証・configファイルまで)

ゴール:sshの接続方法を公開鍵認証方式にして、configファイルを使ったコマンドの短縮を行う

作業用ユーザのホームディレクトリ(/home/runble1/)に.sshディレクトリをつくる。

mkdir ~/.ssh

とりあえず、さくらVPS(サーバ)での作業は終わり。
次からは自分のPC上(クライアント)での作業となる。

一応念のためcommand+Tで新しいタブを作って、古いセッションは残しておく。

公開鍵・秘密鍵を作成する。

ssh-keygen -t rsa

以下の文言が出てきたら、公開鍵の名前を入力する。
多分デフォルトはid_rsa。自分は既に1つ作成済みなのでid_rsa2とした。

Enter file in which to save the key

これでカレントディレクトリに公開鍵(id_rsa2)と秘密鍵(id_rsa2.pub)ができる。

クライアント側にも~/.sshディレクトリを作成し、秘密鍵はそこに移動させておく。

mkdir ~/.ssh

mv id_rsa2 ~/.ssh/

公開鍵をサーバに送る。

scp ~/id_rsa2.pub [email protected]:/home/runble1

ここまででクライアント側での作業終わり。以下サーバ側での作業となる。
サーバにログインして、公開鍵が届いているか確認する。

ls

公開鍵を、サーバ側の~/.sshディレクトリにauthorized_keysという名前で移動。

mv id_rsa2.pub ~/.ssh/authorized_keys

.sshディレクトリと公開鍵の権限を変更する。

chmod 700 /home/runble1/.ssh

chmod 600 /home/runble1/.ssh/*

sshで公開鍵認証を行えるようにする。
sshの設定ファイルを編集するのだが、バックアップをとっておいたほうがいい。

cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup

sshの設定フィアルを開く。

sudo vim /etc/ssh/sshd_config

Port番号の変更(49513 〜 65535)、rootログイン、空パス、パスワードログインを禁止、RSA認証を許可など。
RSAは正直自信ない。いらないかも。

Port 50055
PermitRootLogin no
PermitEmptyPasswords no
PasswordAuthentication no
RSAAuthentication yes
PubkeyAuthentication yes

設定を有効にするためsshd再起動。

sudo /etc/init.d/sshd restart

クライアント側にて、パスワードなしでVPSへログインできるか確認。
自分のところでは1回目聞かれたんだけど・・・

ssh -p 50055 -i id_rsa2 [email protected]

いちいち上記のようなコマンドを打つのはメンドクサイ。
なので、クライアント側でsshのコマンドを簡略化できるconfigファイルを作成する。

sudo vim ~/.ssh/config

以下を記述。

Host runble1.com
    HostName 00.000.000.000
    Port 50055
    IdentityFile ~/.ssh/id_rsa2
    User runble1

VPSのログインは以下のようにログインできるようになる。

ssh runble1.com

iptablesの設定

ゴール:sshのポートのみを許可する

まずは今どんな状態か確認する。

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

iptablesを編集する。

sudo vim /etc/sysconfig/iptables

自分の設定は以下。
sshのポート番号は適宜変えること。

*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

# SSH, HTTP
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 50055 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

# 海外IPに対する設定
-A RH-Firewall-1-INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH
-A RH-Firewall-1-INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 8 --rttl --name SSH -j DROP

-A RH-Firewall-1-INPUT -p tcp --dport 22001 -m state --state NEW -m recent --update --seconds 240 --hitcount 8 --rttl --name SSH -j DROP
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited

COMMIT

iptableを再起動。OKが4つ出れば大丈夫。

sudo /etc/init.d/iptables restart

多分これから先、VPS自体を再起動することがある。
なので、サーバ起動時にiptableも起動するように設定する。

sudo chkconfig iptables on

確認しよう。

/sbin/chkconfig –list iptables

以下のようになっていればOK。

iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off

iptable関係は難しいので以下も参考にする。

俺史上最強のiptablesをさらす – Qiita

iptablesの設定

とりあえず、これで作業は完了。
他必要なことがあれば追記していく。

参考

Linux – CentOSの初期設定で最低限やること(@さくらのVPS) – Qiita

Smart Hacks: 新さくらのVPSでWebサーバを構築するテンプレ

CentOS で行なっておきたいセキュリティ設定: ある SE のつぶやき

コメント

タイトルとURLをコピーしました