

3回に渡って書いてきたOS設定。ConoHa VPSにCentOS7.4をインストールして、Word Pressが起動するところまでを中心に書いてきました。
このままの設定でも動作はしますが、グローバル環境にサーバーを持つということは、全世界からそのサーバーを見る事ができるという事です。
設定の中で、sshでサーバーにログインして設定を行うという事を実施してきましたが、自分以外の人でも、同じことができてしまうという事になります。
OS設定の中で、Rootユーザでのログインを禁止する設定を行いましたが、不正アクセス対策を行わないと、知らないうちにサーバーが乗っ取られているという事も起きないとは言いきれません。
今回は、サーバー側でできる、ファイアーウォール対策として、iptablesの設定について、記述していきます。CentOSでは、7系以降はfirewalldが標準で入っていますが、ポート、IPベースで設定するには、iptablesの方が設定しやすいところがありますので、こちらでの設定を実施していきます。
まず、iptablesが入っているか、確認します。
入っていない場合は、yumコマンドで追加を行って下さい。
1 2 3 4 5 |
#whichコマンドでiptablesの有無を確認 which iptables #no iptablesと返ってきた場合は、インストールを実施 yum -y install iptables |
iptablesは、以下の3つの通信に対して、通信制限を行う事ができます。
- INPUT・・・自サーバーに来る通信
- OUTPUT・・・自サーバーから出る通信
- FORWARD・・・受信したデータを転送する通信
まず最初に、基本となる動作を設定します。INPUTについては、全てをDROPとして、許可するものを設定します。FORWARDについても、基本をDROPに設定します。
OUTPUTについては、基本をACCEPTにします。
1 2 3 4 |
# ポリシー設定 iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT |
次にINPUTに対して、許可をする接続の設定を行います。
SSHについては、接続元のIPを制限できた方が良いのですが、固定IPを取得している方は少ないかと思いますので、今回の設定では開けてしまっています。
固定IPが取れない場合、セキュリティ対策としては、SSHの接続ポートを変更するといった事を実施した方が、望ましいです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
#ローカルループバックの接続を許可する。 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 |
上記の内容の追加が完了したら、設定内容を確認します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#現在の登録内容を確認 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の修正を行って下さい。
1 2 3 4 5 |
#iptablesの内容を現在の値で保存 service iptables save #iptablesの再起動 service iptables restart |
また、iptablesの追加したルールを削除する場合は、管理番号を指定して削除を行います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
#管理番号付きで登録内容を表示 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接続が可能な環境でサーバーを運用する場合、極力不要な通信は排除した方が良い場合が多いです。
導入時は、用途以外のポートは塞いでおき、必要に応じてポートを開けていく事を実施していってください。

スポンサードリンク
