VPSは、あらゆるアクセスに対して無防備な状態で提供されます。
VPSの利用を開始するにあたって、悪意あるユーザの攻撃から自分のサーバを守るために、ファイアウォールを設定することをおすすめします。
今回は、CentOSでファイアウォールを設定する方法を説明します。
※以下の環境を例に説明します。
- サーバOS:CentOS6
- クライアントPC:Windows10
- SSH接続ツール:RLogin
1.ファイアウォールとは
ファイアウォールとは、外部からの不正なアクセスから自分のサーバを守るためのソフトウェアやハードウェアのことです。
ファイアウォールは、外部から自分のサーバへの適正なアクセスは許可し、不正なアクセスは遮断するように設定します。
2.iptablesの基本的な設定
CentOSでは、ファイアウォール設定を行うためにiptablesという機能を使います。
iptablesでは、まず、全体的なポリシーを設定し、その後に個別の通信について設定します。
iptablesの全体的なポリシーとしては主に以下の3つがあり、それぞれに対して通信を許可するか(ACCEPT)、遮断するか(DROP)を設定します。
- INPUT(外部から自分のサーバへのアクセス)
- FORWORD(外部から自分のサーバへのアクセスを外部へ転送)
- OUTPUT(自分のサーバから外部へのアクセス)
全体的なポリシーとしては、INPUT、FORWORDはすべて遮断し、OUTPUTはすべて許可するように設定しましょう。
全体的なポリシーを設定した後、SSH、HTTP、HTTPSなどの個別の通信について、許可する設定を行います。
それでは、iptablesの設定を行っていきます。
① まず、サーバにrootユーザでログインします。
[root@ ~]#
② 次に、「iptables」ファイルがある「/etc/sysconfig」フォルダへ移動します。
「cd /etc/sysconfig」と入力してEnterを押します。
- これは、「etc」フォルダ配下の「sysconfig」フォルダへ移動するコマンドです。
- 「cd」はフォルダを移動するコマンドです。
[root@ ~]# cd /etc/sysconfig
「/etc/sysconfig」フォルダへ移動できました。
[root@ sysconfig]#
③ 「iptables」ファイルを既に作成済みの場合は、編集前の「iptables」ファイルをバックアップします。
「cp iptables iptables.yyyymmdd」と入力してEnterを押します。
- これは、「iptables」ファイルをコピーして「iptables.yyyymmdd」ファイルを作成するコマンドです。
- 「cp」はファイルをコピーするコマンドです。
- 「yyyymmdd」は設定変更を行う日など任意の年月日として下さい。(以下は、20170201とした例)
[root@ sysconfig]# cp iptables iptables.20170201
④ 「iptables」ファイルを新規に作成します。「iptables」ファイルを既に作成済みの場合は編集します。
「vim iptables」と入力してEnterを押します。
- これは、「iptables」ファイルを新規に作成するコマンドです。または、「iptables」ファイルが既に存在する場合は「iptables」ファイルを開くコマンドです。
- 「vim」はファイルを新規に作成するコマンドです。または、同名のファイルがある場合はそのファイルを開くコマンドです。
[root@ sysconfig]# vim iptables
「iptables」のファイルの内容が表示されます。
⑤ 以下のように設定します。
*filter :INPUT DROP [0:0] :FORWARD DROP [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -p udp --sport 53 -j ACCEPT -A INPUT -p tcp --dport 22 -j ACCEPT -A INPUT -p tcp --dport 80 -j ACCEPT -A INPUT -p tcp --dport 443 -j ACCEPT COMMIT
まず、全体的なポリシーを設定します。
INPUT、FORWORDを遮断し、OUTPUTは許可します。
*filter :INPUT DROP [0:0] :FORWARD DROP [0:0] :OUTPUT ACCEPT [0:0]
次に、確立済みの通信はすべて許可します。
-A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
次に、サーバ内部の通信(ループバック)を許可します。
-A INPUT -i lo -j ACCEPT
次に、DNS(UDP 53番)から自分のサーバへのアクセスを許可します。
-A INPUT -p udp --sport 53 -j ACCEPT
次に、自分のサーバのSSH(TCP 送信先22番)へのアクセスを許可します。
-A INPUT -p tcp --dport 22 -j ACCEPT
次に、自分のサーバのHTTP(TCP 送信先80番)へのアクセスを許可します。
-A INPUT -p tcp --dport 80 -j ACCEPT
次に、自分のサーバのHTTPS(TCP 送信先443番)へのアクセスを許可します。
-A INPUT -p tcp --dport 443 -j ACCEPT
最後に、設定を確定します。
COMMIT
⑥ 「:wq」と入力してEnterを押します。
- これは、ファイルを保存してvimを終了するコマンドです。
:wq
⑦ 設定した内容を有効化するために、iptablesサーバを再起動します。
「service iptables restart」と入力してEnterを押します。
[root@ sysconfig]# service iptables restart
iptablesサーバの再起動が完了しました。
iptables: チェインをポリシー ACCEPT へ設定中filter [ OK ] iptables: ファイアウォールルールを消去中: [ OK ] iptables: モジュールを取り外し中: [ OK ] iptables: ファイアウォールルールを適用中: [ OK ]
これで、iptablesの設定変更が完了しました。
3.iptablesの設定内容の確認
iptablesの設定内容を確認します。
① 「iptables -nL」と入力してEnterを押します。
- これは、iptablesのポリシーごとの設定内容を確認するコマンドです。
[root@ sysconfig]# iptables -nL
iptablesのポリシーごとの設定内容が表示されます。
設定内容が正しいことを確認して下さい。
Chain INPUT (policy DROP) target prot opt source destination ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp spt:53 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:443 Chain FORWARD (policy DROP) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination
② 現在のSSH接続を切断する前に、新たにSSH接続ツールを立ち上げてサーバにログインできることを確認します。
サーバに無事にログインできたら元のSSH接続を切断しても大丈夫です。
4.iptablesの自動起動設定
サーバを再起動した場合に、iptablesの設定が自動で有効となるように、iptablesの自動起動の設定を行います。
① まず、サーバにrootユーザでログインします。
[root@ ~]#
② 次に、iptablesの自動起動の設定を確認します。
「chkconfig –list iptables」と入力してEnterを押します。
[root@ ~]# chkconfig --list iptables
iptablesの自動起動の設定が表示されます。
iptables 0:off 1:off 2:off 3:off 4:off 5:off 6:off
0~6の項目について「on」と「off」で設定が表示されます。
このうち、2~5の項目が「on」となっていれば自動起動される設定となります。
例えば、上記のような場合は自動起動されません。
③ iptablesが自動起動される設定ではなかった場合、iptablesの自動起動の設定を行います。
「chkconfig iptables on」と入力してEnterを押します。
[root@ ~]# chkconfig iptables on
④ iptablesの自動起動の設定を確認します。
「chkconfig –list iptables」と入力してEnterを押します。
[root@ ~]# chkconfig --list iptables
iptablesの自動起動の設定が表示されます。
iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off
2~5の項目がすべて「on」となったことを確認して下さい。