さくらインターネットのVPSを借りてみた。
第一回目の今回は、初期状態からウェブサーバーを立ち上げるまで。
久しぶりに、(ほぼ)空のLinuxサーバーをいじるので悪戦苦闘です(笑)
VPSのいいところは、コンパネから簡単にOSの再インストールが出来るところですね。コンパネからrootパスワードを設定したら、ものの数分で初期状態のサーバーが立ち上がります。これは、便利!
ではでは私がやってみた手順をババッと
SSHにrootでアクセスしない
SSHにrootでログインできるようにしておくとセキュリティ上、マズイのでSSHログイン用のユーザーをつくります。
ここから、しばらくは「VPSコントロールパネル」のリモートコンソールから作業します。
# useradd –m USERNAME
# passwd USERNAME
※USERNAME…新しく作るユーザー名に置き換えてください。
そしたら、今作ったユーザー名でSSHログインできるか確認します。問題なくログインが出来れば、次にrootのSSHログインを停止する作業です。
/etc/ssh/sshd_config ファイルを編集します。
PermitRootLogin no
既にコメントアウトされた PermitRootLogin yes の行があると思いますので、その近くに記述しておけばいいでしょう。
さらにSSHで使用するポートの変更もすれば、セキュリティ的には少し安心かもしれません。
Port 10022
例)SSHポートを 10022 にする設定(初期値は 22 )
SSHを再起動!
/etc/init.d/sshd restart
SSHを再起動したら、設定が反映されているか確認します。rootでSSHログインできなくなっているか?(ポートを変更した場合)変更したポートでSSHログインできるか?などなど。
パケットフィルタの設定
さくらのVPSは初期状態で、「全開」状態になってます。
まあ、公開用サーバーとして使うので、そんなに気にしなくてもいいのかもしれませんが、気持ち悪い感じがするかもなので必要なパケット以外はフィルタしちゃいます。
今回は、WWW(80)、FTP(20)、SSH(22)、それとDNS(53)を許可する設定にします。
適当なところに、iptables 設定用のスクリプトを書いておきます。
コマンドラインから、1行ずつ実行しちゃダメですよ。コマンドでやってると最初の INPUT DROP の後から、何もできなくなっちゃいます!
vi /home/USERNAME/IPTABLES_SH
#!/bin/sh
iptables -F
iptables -Xiptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROPiptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPTiptables -A INPUT -p tcp –dport 22 -j ACCEPT
iptables -A INPUT -p tcp –dport 80 -j ACCEPT
iptables -A INPUT -p tcp –dport 20 -j ACCEPTiptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p udp -m udp –sport 53 -j ACCEPT
iptables -A INPUT -p udp -m tcp –sport 53 -j ACCEPTservice iptables save
service iptables restartip6tables -F
ip6tables -P INPUT DROP
ip6tables -P OUTPUT ACCEPT
ip6tables -P FORWARD DROPservice ip6tables save
service ip6tables restart
スクリプトの説明をブロックごとに簡単に…
- 最初のブロックで iptables に関する設定をクリア(初期化)します。
- 出力(OUTPUT)を許可(ACCEPT)し、入力(INPUT)とパケット転送(FORWARD)を破棄(DROP)する。
- ローカルの出力と入力をともに許可します。
- 宛先ポート(–dport)ごとに許可するパケットを指定します。
- セッション確立したパケットは許可します。
- DNS(53)はudpを使うので、5の許可では通信できないので別途指定します。
- ここまでの設定を保存(save)し、iptables を再起動(restart)します。
- 8,9番目のブロックは、IPv6に関する設定ですが、今回は特に使用しないで、出力以外は破棄(DROP)にしておきます。
スクリプトの記述ができましたら、パーミッションを変更して実行します。
# chmod 744 /home/USERNAME/IPTABLES_SH
# /home/USERNAME/IPTABLES_SH
ウェブサーバーパッケージのインストール
ウェブサーバーに必要なパッケージは、とりあえず、httpd、php、mysqlくらいでしょうか、必要になったらあとで追加しましょう。
ちゃちゃっとやってしまいたいので yum で簡単にインストールしちゃいます。
# yum install httpd http-devel
# yum install php php-mbstring php-mysql php-gd php-pear
# yum install mysql mysql-devel mysql-server
それぞれ、実行するとインストールするパッケージの一覧と(y/n)表示されますので、 y を押してインストールを完了します。(-y オプションをつけてやっちゃっていいかも)
自動起動スクリプトをつくる
「つくる」とか言っちゃってますが、シンボリックリンクを作成するだけです。
yumでインストールしたパッケージの起動スクリプトが /etc/rc.d/init.d 以下に保存されていますので、そこから必要なパッケージをランレベル3( /etc/rc.d/rc3.d )にシンボリックリンクを作成します。
# cd /etc/rc.d/rc3.d
# ln –s ../init.d/httpd S40httpd
# ln –s ../init.d/mysqld S41mysqld
できたら、おもむろに reboot してみましょう。
そして起動したらブラウザでサーバーにアクセスしてみます。
Apacheのテストページが表示されれば、セットアップ完了です。
とりあえず、今日はここまで。