[初心者向け]iptablesコマンドでアクセス制限をかける/かけない方法


こんにちは! システムソリューション部の讃岐です。
入社してから3ヶ月が経過しましたが未だに分からないことばかりであたふたしています。
しかしbeyondの先輩方がとても親切で日々、様々な「気づき」を与えて下さります。
本当に皆さんに感謝です。

本日はCentOS6系で使われているiptablesコマンドを使ったアクセス制限についてザックリと簡単に記載しようと思います。

iptablesとは

Linuxに実装されているパケットフィルタですね。
所謂、ファイアウォールのことです。
特定のアクセスを制限したり、逆に許可したりできる機能です。
簡単に言うと、

  • 悪い人からのアクセスはお断りする。
  • いい人からのアクセスは歓迎する。

ということですね!!
そしてiptablesを操作するコマンドがiptablesコマンドということです!
そのままですね。

iptablesで制限をかける

まずは以下をご覧ください。

[root@localhost vagrant]# iptables -L
Chain INPUT (policy ACCEPT)
target  prot opt source    destination

Chain FORWARD (policy ACCEPT)
target  prot opt source   destination

Chain OUTPUT (policy ACCEPT)
target  prot opt source    destination

上記は【iptables -L】コマンドの実行結果です。

上から3つのフィールドに分かれているのを確認できると思うのですが、順に
[INPUT]は入力、[FORWARD]は転送、[OUTPUT]は出力に関わるチェインです。
チェインとはパケットを検査するルールだと思ってください。

Chain INPUTの横を見てください。
(policy ACCEPT)とあります。
これは「ポリシー」といいます。
ポリシーとはチェイン全体に適応されるルールのことです。
ACCEPTはすべての入力を許可することを意味します。

逆に制限したい時はこちらをDROPに変えます。
コマンドは、

iptables -P INPUT DROP

でOKです!!
(自分自身のSSH接続もできなくなります。下部に記載しているiptablesでアクセスを許可するコマンドを先に実行してください)

【iptables -L】コマンドで確認してみましょう!

[root@localhost vagrant]# iptables -L
Chain INPUT (policy DROP)
target  prot opt source    destination

Chain FORWARD (policy ACCEPT)
target  prot opt source    destination

Chain OUTPUT (policy ACCEPT)
target  prot opt source    destination

DROPに変わりましたね。

これで外部からのすべてのアクセスを制限できました!!

iptablesでアクセスを許可する

以下をご覧ください。

[root@localhost vagrant]# iptables -L
Chain INPUT (policy DROP)
target  prot opt source    destination
ACCEPT  all -- 192.168.33.1    anywhere

Chain FORWARD (policy ACCEPT)
target  prot opt source    destination

Chain OUTPUT (policy ACCEPT)
target  prot opt source    destination

【ACCEPT all — 192.168.33.1 anywhere】

という記述が増えていますね!
こちらは「192.168.33.1からのアクセスは全て許可するよ」という意味になります。
これを「ルール」といいます。

アクセスを許可するルールを追加するには以下のコマンドを実行してください。

iptables -A INPUT -s [アクセスを許可するIPアドレス] -j ACCEPT

これで全てのアクセスを禁止した上で特定のIPアドレスからのアクセスを許可できました。

ちなみに「ある特定のポートへのアクセスを許可する」なんていう設定も可能です。

iptables -A INPUT -p tcp --dport 80 -j ACCEPT

こちらは80番ポート(WEBサーバ)のアクセスを許可するコマンドになります。
–dportの後の数字を変えることで他のポートに変更することも可能です!!

これらの設定の変更はマシンを再起動すると元に戻ってしまいます。
永続的に設定を行いたい場合は、

service iptables save

こちらのコマンドで設定を保存してください。

こういった全てのアクセスを禁止した上で特定のアクセスのみを許可することを
「ホワイトリスト方式」といいます。

まとめ

かなりザックリ簡潔に記載しましたが以上が簡単なiptablesコマンドの使い方になります。
iptablesコマンドを使わない設定方法だったり、もっと細かな設定方法があったりもするのですが今回は割愛させていただきます。

みなさんも是非iptablesコマンドを使ってよきパソコンライフを!


この記事をかいた人

About the author