ファイアーウォール

【Linux】iptablesによるファイアーウォールの設定方法

記事内に商品プロモーションを含む場合があります

こんにちは、やすです。

この記事では、iptablesを使ったファイアーウォールの設定方法をご紹介します。

RHEL7/CentOS7以降では、「firewalld」がLinux標準のファイアーウォールなのですが、これまでの「iptables」で設定したいという場合もあるかと思いますので、使い方をみていきましょう!

ちなみに「firewalld」と「iptables」は併用できないので、どちらでファイアーウォールを設定するかは選ぶ必要があります。

通信要件を決める

最初はフワッとした依頼なことが多いので、内容を詰める所から始まるんですよねー(笑)
ココが難しかったりします。

パケットフィルタリングの考え方

FWの考え方は、下記の2パターンです。

  • 「基本許可」で特定の通信だけ拒否。
  • 「基本拒否」で特定の通信だけ許可。

※WEBAPサーバのようなたくさんの人に見て欲しい用途のサーバは「基本許可」を、DBサーバのような特定の相手だけと通信をすればいいサーバは「基本拒否」で良いと思います。

通信要件のヒアリングシート

通信要件を話し合う際は、下記の内容をクリアにしましょう。

ポリシー(デフォルト)

INPUT
OUTPUT
FORWARD

ルール

方向
(IN/OUT)
プロトコル
(tcp/udp/icmp/all)
送信元送信元ポート宛先宛先ポートアクション説明

関連キーワード

iptablesを使うにあたって、いくつか理解しておきたいキーワードがあるので、見ていきましょう。

チェイン

チェインとは、フィルタリングの設定をする対象のことです。
外から中への通信なら「INPUT」チェイン、中から外へなら「OUTPUT」チェインに設定をします。

チェイン内容
INPUT外から中への通信
OUTPUT中から外への通信
FORWARD転送

ポリシー

ポリシーとは、チェインの基本方針のことです。
「基本すべての通信を許可する」のか、「基本すべての通信を拒否する」のかといったデフォルトのアクション(ターゲット)を設定するのがポリシーです。

ポリシー内容
ACCEPT
DROP
REJECT

ルール

設定ファイルと関連コマンド

設定ファイル

設定ファイルは主に下記の2つ。

ファイル説明
/etc/sysconfig/iptablesiptablesの設定ファイル(IPv4)
/etc/sysconfig/ip6tablesiptablesの設定ファイル(IPv6)

関連コマンド

iptables関連のコマンドについては、下記の記事を参考にどうぞ。

具体的な設定

1、「iptables-services」パッケージをインストール
 RHEL7、CentOS7以降だとfirewalldが基本なので、デフォルトだと入っていないです。

#「iptables-service」がないことを確認
[root@localhost ~]# rpm -qa | grep iptables
iptables-1.4.21-35.el7.x86_64
[root@localhost ~]#


#このままだと「iptables.serviceがないよ」と言われる。
[root@localhost ~]# systemctl status iptables
Unit iptables.service could not be found.
[root@localhost ~]#

#「iptables-services」をインストール
[root@localhost ~]# yum -y install iptables-services
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.yz.yamagata-u.ac.jp
 * extras: ftp.yz.yamagata-u.ac.jp
 * updates: ftp.yz.yamagata-u.ac.jp
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ iptables-services.x86_64 0:1.4.21-35.el7 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

===================================================================================================================================================
 Package                                   アーキテクチャー               バージョン                            リポジトリー                  容量
===================================================================================================================================================
インストール中:
 iptables-services                         x86_64                         1.4.21-35.el7                         base                          52 k

トランザクションの要約
===================================================================================================================================================
インストール  1 パッケージ

総ダウンロード容量: 52 k
インストール容量: 23 k
Downloading packages:
iptables-services-1.4.21-35.el7.x86_64.rpm                                                                                  |  52 kB  00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : iptables-services-1.4.21-35.el7.x86_64                                                                             1/1
  検証中                  : iptables-services-1.4.21-35.el7.x86_64                                                                             1/1

インストール:
  iptables-services.x86_64 0:1.4.21-35.el7

完了しました!
[root@localhost ~]#

#インストールできましたね。
[root@localhost ~]# rpm -qa | grep iptables
iptables-services-1.4.21-35.el7.x86_64
iptables-1.4.21-35.el7.x86_64
[root@localhost ~]#

#うん、ちゃんと使えるようになった。
[root@localhost ~]# systemctl status iptables
● iptables.service - IPv4 firewall with iptables
   Loaded: loaded (/usr/lib/systemd/system/iptables.service; disabled; vendor preset: disabled)
   Active: inactive (dead)
[root@localhost ~]#

まとめ

今回は、iptablesの設定について紹介してみました。

ではまた、バイバーイ♪