Word Press サーバーOSの設定 iptables編

このエントリーをはてなブックマークに追加

3回に渡って書いてきたOS設定。ConoHa VPSにCentOS7.4をインストールして、Word Pressが起動するところまでを中心に書いてきました。

このままの設定でも動作はしますが、グローバル環境にサーバーを持つということは、全世界からそのサーバーを見る事ができるという事です。
設定の中で、sshでサーバーにログインして設定を行うという事を実施してきましたが、自分以外の人でも、同じことができてしまうという事になります。

OS設定の中で、Rootユーザでのログインを禁止する設定を行いましたが、不正アクセス対策を行わないと、知らないうちにサーバーが乗っ取られているという事も起きないとは言いきれません。

今回は、サーバー側でできる、ファイアーウォール対策として、iptablesの設定について、記述していきます。CentOSでは、7系以降はfirewalldが標準で入っていますが、ポート、IPベースで設定するには、iptablesの方が設定しやすいところがありますので、こちらでの設定を実施していきます。

まず、iptablesが入っているか、確認します。
入っていない場合は、yumコマンドで追加を行って下さい。

#whichコマンドでiptablesの有無を確認
which iptables

#no iptablesと返ってきた場合は、インストールを実施
yum -y install iptables


iptablesは、以下の3つの通信に対して、通信制限を行う事ができます。

  • INPUT・・・自サーバーに来る通信
  • OUTPUT・・・自サーバーから出る通信
  • FORWARD・・・受信したデータを転送する通信

まず最初に、基本となる動作を設定します。INPUTについては、全てをDROPとして、許可するものを設定します。FORWARDについても、基本をDROPに設定します。
OUTPUTについては、基本をACCEPTにします。

# ポリシー設定
iptables -P INPUT   DROP
iptables -P FORWARD DROP
iptables -P OUTPUT  ACCEPT


次にINPUTに対して、許可をする接続の設定を行います。
SSHについては、接続元のIPを制限できた方が良いのですが、固定IPを取得している方は少ないかと思いますので、今回の設定では開けてしまっています。
固定IPが取れない場合、セキュリティ対策としては、SSHの接続ポートを変更するといった事を実施した方が、望ましいです。

#ローカルループバックの接続を許可する。
iptables -A INPUT -i lo -j ACCEPT

#こちらから求めたパケットは許可する。
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

#ICMP許可
iptables -I INPUT -p icmp --icmp-type 0 -j ACCEPT
iptables -I INPUT -p icmp --icmp-type 8 -j ACCEPT

#SSH接続は許可
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
##FromのIPを指定できる場合は、以下の記述
iptables -A INPUT -s 157.xxx.xxx.xxx/32 -p tcp --dport 22 -j ACCEPT


#80ポートを許可 【http接続】
iptables -A INPUT -p tcp --dport 80 -j ACCEPT

#443ポートを許可 【https接続】
iptables -A INPUT -p tcp --dport 443 -j ACCEPT


上記の内容の追加が完了したら、設定内容を確認します。

#現在の登録内容を確認
iptables -L --line-number

Chain INPUT (policy DROP)
num  target     prot opt source               destination         
1    ACCEPT     icmp --  anywhere             anywhere             icmp echo-request
2    ACCEPT     icmp --  anywhere             anywhere             icmp echo-reply
3    ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
4    ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh
5    ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http
6    ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:https

Chain FORWARD (policy DROP)
num  target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination


正しく登録できたならば、一旦保存を行い、再起動を実施します。
もし内容に不備があった場合、再起動後はブロックされてしまい、接続できなくなる事があります。
その場合は、VPSの管理コンソールよりログインを行い、iptablesの修正を行って下さい。

#iptablesの内容を現在の値で保存
service iptables save

#iptablesの再起動
service iptables restart


また、iptablesの追加したルールを削除する場合は、管理番号を指定して削除を行います。

#管理番号付きで登録内容を表示
iptables -L --line-number

Chain INPUT (policy DROP)
num  target     prot opt source               destination         
1    ACCEPT     icmp --  anywhere             anywhere             icmp echo-request
2    ACCEPT     icmp --  anywhere             anywhere             icmp echo-reply
3    ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
4    ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh
5    ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http
6    ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:https

Chain FORWARD (policy DROP)
num  target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination

#INPUTのnum5を削除する場合
iptables -D INPUT 5


web接続が可能な環境でサーバーを運用する場合、極力不要な通信は排除した方が良い場合が多いです。
導入時は、用途以外のポートは塞いでおき、必要に応じてポートを開けていく事を実施していってください。

このエントリーをはてなブックマークに追加

スポンサードリンク