ブログ引っ越そうと思って、もう一つさくらVPSを借りた。
その時の初期設定を残しておく。
順次追加していくつもりで。
参考にされる方は、ユーザ名とsshのポート番号などを適宜変えてください。
・ユーザ名:runble1
・ポート番号:50055
・IPアドレス:00.000.000.000
・公開鍵:id_rsa2.pub
・秘密鍵:id_rsa2
- mkdir ~/.ssh
- ssh-keygen -t rsa
- Enter file in which to save the key
- mkdir ~/.ssh
- mv id_rsa2 ~/.ssh/
- scp ~/id_rsa2.pub [email protected]:/home/runble1
- ls
- mv id_rsa2.pub ~/.ssh/authorized_keys
- chmod 700 /home/runble1/.ssh
- chmod 600 /home/runble1/.ssh/*
- cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup
- sudo vim /etc/ssh/sshd_config
- sudo /etc/init.d/sshd restart
- ssh -p 50055 -i id_rsa2 [email protected]
- sudo vim ~/.ssh/config
- ssh runble1.com
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関係は難しいので以下も参考にする。
とりあえず、これで作業は完了。
他必要なことがあれば追記していく。
参考
Linux – CentOSの初期設定で最低限やること(@さくらのVPS) – Qiita
コメント