サーバ契約後の設定(Apacheインストール、iptablesなど)
サーバー取得後にやること。
とりあえず最低限必要なことは下記かと。
・ssh設定
・apacheインストール
・iptables(FW)の設定
・NTP設定
■ssh設定(きほんさくらのマニュアルに記載されてる)
【さくらのVPS】サーバの初期設定ガイド – さくらのサポート情報
port:本来は22番だけどこれを変えた方がセキュリティ的にはいい。
※ただの通信手段に過ぎない。
クライアント側、teratermとかの方で鍵を作る。
・公開鍵の設定
ドキュメントルートの下に.sshつくり、
その中にauthorized_keysつくって貼り付け。
/home/hiromode/.ssh/authorized_keysみたいな。
webdir→ 755
.ssh→ 700
authorized_keys→ 600
設定ファイル
→ここにポート番号を書く
PermitRootLogin no
PasswordAuthentication no
PermitEmptyPasswords no
⇒コメントアウトして上記に変更する。
sshdの場所(デーモン)
/etc/init.d/sshd restart
■Apacheインストール
起動
/etc/rc.d/init.d/httpd start
自動起動確認(2~5がonになってればOK)
chkconfig --list httpd
自動起動設定
chkconfig httpd on
おさらい↓
ファイル種別|所有者 |所有グループ | その他
d | rwx | rwx | rwx
■ドキュメントルート設定
まあだいたい/var/www/htmlだからそこを
chown XXXXX:apache html とかにしとく。
■Virtualhost設定
/etc/httpd/conf.d/virtualhost.conf つくる。
→別ページに記載しました
■iptables設定(FW)
基本ポートは最初空いているが、危険なのでまずは全て閉じるという考え方。
必要なポートのみ開ける。
下記ファイル作成して入れる。
/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 -m state --state ESTABLISHED,RELATED -j ACCEPT# SSH(XXXX), HTTP, HTTPS
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport XXXX -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
iptables再起動
service iptables restart
反映確認
iptables -L
自動起動確認
chkconfig iptables --list
iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off
もし、3:off になっていた場合は、以下のコマンドで 3:on にする。
# chkconfig iptables on
大事なので解説というか覚えたことメモ
*filter
filterテーブル。基本ここからCOMMITの間
: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 新ルール追加
-j ジャンプの意味。ここではINPUTを指定しているため、入ってくるのに対して上記ユーザ定義チェインに飛んでチェックしている。
-A FORWARD -j RH-Firewall-1-INPUT
同上。FORWARDになっただけ。
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
lo ループバックの意味。自分自身への通信を指す。(INPUTとFORWARDが同じ
)
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
icmp 通信エラー時にエラーメッセージを返すプロトコル。基本許可。
-p 後ろにプロトコル名もしくは番号を指定可能。
icmp --icmp-type これは決まり文句っぽい。
ちなみにany は全部。ここを0~18の数字で指定も可能。pingだけの場合は~とか。詳細&必要ならぐぐる。
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-m iptablesの拡張モジュールを使うための設定。ここではstateを指定しているのでstateモジュールの利用を可能にしている。
state パケットの状態を指定。ESTABLISHED(過去に接続されたことがある)またはRELATED(既存の接続に関係している)と見なされた場合に、接続を許可。
※なお、この一行がないと通信を行うことが出来なくなるので注意。
# SSH(XXXX), HTTP, HTTPS
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport XXXX -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
stateでパケット状態を指定し、NEWの場合であっても、XXXX(sshのポート番号)か80か443の場合は許可する。
ここまでが接続許可。
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
REJECT エラーパケット送信。
すでに接続を許可したいパケットのルールは読み込まれているため、この行を読み込むのは、接続許可のルールに一致しなかったパケットであり、
–reject–with エラーパケットの種類を指定。
今回は「icmp-host-prohibited(ホストによって禁止されました)」というメッセージを送るように指定。
COMMIT
登録する。