さくらVPSの初期設定をしてみる
TweetPosted on Tuesday Jan 21, 2014 at 06:43AM in Technology
環境
- さくらインターネット VPS 1G
- CentOS 6.5
何をするの?
- 一般ユーザを作る
- 作ったユーザの公開鍵を置く
- 作ったユーザがsudo出来るようにする
- sshのパスワード認証を無効化
- ssh以外のポートが空いてない事を確認
- iptablesでsshとhttp以外を遮断
- IPv6を無効化
接続まで
Webから申し込みをして5分ほどで、IPアドレスとrootアカウントのパスワードが書かれた仮登録完了メールが届くが、この時点ではまだ起動していないのでVPSコントロールパネルから起動してやらないといけない。さらにVPSコントロールパネルからリモートコンソールを開くとOSの起動ログが見える。リモートコンソールでログインプロンプトが表示されたのを確認してからsshで接続すると良い。
OSのアップデート
まあ一応ログインしたらすぐやっておく。やってみたけど特に何も更新はなかった。
yum update
ユーザを作る
面倒くさいけどsshでrootログイン出来るとか若干気持ち悪いのでやっておきましょう。こういう感じ
# adduser kyle # passwd kyle ユーザー kyle のパスワードを変更。 新しいパスワード: 新しいパスワードを再入力してください: passwd: 全ての認証トークンが正しく更新できました。 #終わったら作ったユーザでログインし直しましょう。
公開鍵を置く
こんな感じかと
<![CDATA[ cd mkdir .ssh chmod 700 .ssh cat > .ssh/authorized_keys << EOF [YOUR PUBLIC KEY HERE] EOF chmod 600 .ssh/authorized_keys ]]>実行するとこうなる
$ ls -ld .ssh drwx------ 2 kyle kyle 4096 1月 19 09:08 2014 .ssh $ ls -l .ssh 合計 4 -rw------- 1 kyle kyle 408 1月 19 09:08 2014 authorized_keys $
sudo出来るようにする
suしてvisudoを起動します
$ su - パスワード: # visudo起動したら一番下に以下を追加。面倒くさいので全部パスワード不要にする。
kyle ALL=(ALL) NOPASSWD: ALL確認してみよう
$ sudo whoami root $大丈夫そうですね
sshのパスワード認証を無効にする
日常的にブルートフォースアタック的なものが飛んでくる今日においては嫌な感じなので無効にしておきましょう
cd /etc/ssh sudo cp sshd_config sshd_config.bak sudo sed -i -e "s/^PasswordAuthentication yes/PasswordAuthentication no/" sshd_config変更したら再起動
sudo service sshd restart万が一入れなくなったらWebのリモートコンソールからログインしてなんとかしましょう。
空いてるポートを確認する
$ netstat -an | grep LISTEN | grep tcp tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN tcp 0 0 :::22 :::* LISTEN tcp 0 0 ::1:25 :::* LISTEN $
22と25だからsshとメールですかね。外に向けて空いてるのはsshだけだ。
ポートスキャンサービスを使って空いてるポートを確認する
25番が空いてるか閉じてるか手元の端末から叩いても分からない(そもそも25番向けの外向きパケットはほとんどのISPで遮断される?)し、念のためポートスキャンサービスを使って確かめてもらいます。
ここを使います。GRC | ShieldsUP! — Internet Vulnerability Profiling ここで問題なのがこのサービスは、そのサービスにアクセスしたIPアドレスに対してしかスキャンかけてくれない事ですね。まあしょうがない。ゆえに若干力技ですがsshを使ってsocksのトンネル(?)を使ってアクセスします。手元の端末で以下を叩くと手元の端末でsocksサーバが立ち上がります。Windowsでもputtyの設定でゴニョゴニョすればsocksサーバ立てられたはず。
ssh [YOUR VPS IP ADDRESS HERE] -D 1080こうすると手元の1080番にsocksサーバが立ち上がり、VPSを通じてWebアクセスができるようになります。socks用WebブラウザとしてはOperaが良い。OSのプロキシの設定いじらなくても独立した設定をアプリで持ってくれるので。こんな感じになります
Proceedっていうボタン押して遷移する画面でAll Service Portsを押すとポートスキャンが始まります
---------------------------------------------------------------------- GRC Port Authority Report created on UTC: 2014-01-19 at 00:55:26 Results from scan of ports: 0-1055 1 Ports Open 1055 Ports Closed 0 Ports Stealth --------------------- 1056 Ports Tested NO PORTS were found to be STEALTH. The port found to be OPEN was: 22 Other than what is listed above, all ports are CLOSED. TruStealth: FAILED - NOT all tested ports were STEALTH, - NO unsolicited packets were received, - A PING REPLY (ICMP Echo) WAS RECEIVED. ----------------------------------------------------------------------
開いてるのはsshだけですね。25番は127.0.0.1に対してしかlistenしてないから出てきません。
iptablesの設定
別にこのままでもいいのですが、PING返したくないし、一応念のためにiptablesの設定もします。sshとhttpだけ開けます。
sudo sh -c 'cat > /etc/sysconfig/iptables' <<EOF *filter :INPUT DROP [0:0] :FORWARD DROP [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT COMMIT EOF sudo service iptables restart
この状態で再度ポートスキャンしてみるとこんな感じ
---------------------------------------------------------------------- GRC Port Authority Report created on UTC: 2014-01-19 at 04:32:40 Results from scan of ports: 0-1055 1 Ports Open 1 Ports Closed 1054 Ports Stealth --------------------- 1056 Ports Tested The port found to be OPEN was: 22 The port found to be CLOSED was: 80 Other than what is listed above, all ports are STEALTH. TruStealth: FAILED - NOT all tested ports were STEALTH, - NO unsolicited packets were received, - NO Ping reply (ICMP Echo) was received. ----------------------------------------------------------------------
IPv6の無効化
Apacheの設定とかで微妙にはまりそうな気配なので無効化しておく
sudo cp /etc/sysconfig/network /etc/sysconfig/network.bak sudo sed -i -e 's/NETWORKING_IPV6="yes"/NETWORKING_IPV6=no/' /etc/sysconfig/network echo 'options ipv6 disable=1' | sudo sh -c 'cat > /etc/modprobe.d/disable-ipv6.conf' sudo chkconfig ip6tables off
参考文献
- Linuxのお勉強(CentOSとApache):CentOSでユーザーを追加・削除する(LINUX) - livedoor Blog(ブログ)
- sedでファイルを置換する - より良い環境を求めて
- さくらVPSでセキュリティ関連の設定をする(ファイヤーウォール編) - モンテカットの開発日記
- yumでシステムのアップデート | hajichan.net technical version
- 開いているポートを確認するには - すがブロ
- iptablesの設定
- ファイアウォール(iptables)の設定
- CentOS - 立ち上げ直後のiptablesを設定する。 - Qiita [キータ]
- さくらVPSにおけるIPv6を無効化する - なぜにぷろぐらむ
- LinuxでIPv6を無効化する(意外と苦戦) - OpenGroove
- CentOS 6でIPv6を無効にするには « smilemark blog
Tags: linux