読者です 読者をやめる 読者になる 読者になる

MyController

WEB業界素人の僕がまた見返しそうなことのメモです。

サーバ契約後の設定(Apacheインストール、iptablesなど)

centos

サーバー取得後にやること。

とりあえず最低限必要なことは下記かと。

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

 

設定ファイル

/etc/ssh/sshd_config

→ここにポート番号を書く

 

PermitRootLogin no
PasswordAuthentication no
PermitEmptyPasswords no

コメントアウトして上記に変更する。

 

sshdの場所(デーモン)

/etc/init.d/sshd restart

 

Apacheインストール

yum -y install httpd

 

起動

/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 つくる。

→別ページに記載しました

hiromode.hatenablog.com

 

 

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

登録する。