CentOSでファイアウォール設定~VPSのセキュリティ対策!

シェアする

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

iptablesの基本的な設定

まず、全体的なポリシーを設定します。

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
ただし、SSH接続のポート番号を変更している場合は、デフォルトの22番ではなく、変更後のポート番号を設定するようにして下さい。

次に、自分のサーバの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」となったことを確認して下さい。

スポンサーリンク
レクタングル大
レクタングル大

シェアする

フォローする