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