[初心者向け]iptablesコマンドでアクセス制限をかける/かけない方法
こんにちは! システムソリューション部のしめじです。
入社してから3ヶ月が経過しましたが未だに分からないことばかりであたふたしています。
しかし beyond の先輩方がとても親切で日々、様々な「気づき」を与えて下さります。
本当に皆さんに感謝です。
本日は CentOS6 系で使われている iptables コマンドを使ったアクセス制限についてザックリと簡単に記載しようと思います。
iptablesとは
Linux に実装されているパケットフィルタですね。
所謂、ファイアウォールのことです。
特定のアクセスを制限したり、逆に許可したりできる機能です。
簡単に言うと、
- 悪い人からのアクセスはお断りする。
- いい人からのアクセスは歓迎する。
ということですね!!
そして iptables を操作するコマンドが iptables コマンドということです!
そのままですね。
iptables で制限をかける
まずは以下をご覧ください。
1 2 3 4 5 6 7 8 9 | [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 に変えます。
コマンドは、
1 | iptables -P INPUT DROP |
で OK です!!
(自分自身の SSH 接続もできなくなります。下部に記載している iptables でアクセスを許可するコマンドを先に実行してください)
【iptables -L】コマンドで確認してみましょう!
1 2 3 4 5 6 7 8 9 | [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 でアクセスを許可する
以下をご覧ください。
1 2 3 4 5 6 7 8 9 10 | [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からのアクセスは全て許可するよ」という意味になります。
これを「ルール」といいます。
アクセスを許可するルールを追加するには以下のコマンドを実行してください。
1 | iptables -A INPUT -s [アクセスを許可するIPアドレス] -j ACCEPT |
これで全てのアクセスを禁止した上で特定のIPアドレスからのアクセスを許可できました。
ちなみに「ある特定のポートへのアクセスを許可する」なんていう設定も可能です。
1 | iptables -A INPUT -p tcp --dport 80 -j ACCEPT |
こちらは80番ポート(WEBサーバ)のアクセスを許可するコマンドになります。
--dport の後の数字を変えることで他のポートに変更することも可能です!!
これらの設定の変更はマシンを再起動すると元に戻ってしまいます。
永続的に設定を行いたい場合は、
1 | service iptables save |
こちらのコマンドで設定を保存してください。
こういった全てのアクセスを禁止した上で特定のアクセスのみを許可することを
「ホワイトリスト方式」といいます。
まとめ
かなりザックリ簡潔に記載しましたが以上が簡単な iptables コマンドの使い方になります。
iptables コマンドを使わない設定方法だったり、もっと細かな設定方法があったりもするのですが今回は割愛させていただきます。
みなさんも是非 iptables コマンドを使ってよきパソコンライフを!