パケットフィルタリング(Netfilter)の流れ
1.パケットの検査(Checksum and sanity)
チェックサムを調査。ここで引っかかるとパケットは破棄される
2.PREROUTING
パケットのリダイレクト等、ネットワークインターフェースから送られて来たパケットに対して、アドレスの変換などの処理を行う
3.ROUTING
ルーティングを行う。パケットの終点アドレスを調べて、それに従ってパケットの送り先を決定する
4.FORWARD
ネットワークインターフェースから渡されたパケットの転送を行う
5.INPUT
ローカルプロセスへのパケット配送を行う
6.OUTPUT
ローカルプロセスからネットワークインターフェースへパケット送信。
7.POSTROUTING
ネットワークに出力されるパケットに対しての処理を行う。アドレス変換など
チェックサムを調査。ここで引っかかるとパケットは破棄される
2.PREROUTING
パケットのリダイレクト等、ネットワークインターフェースから送られて来たパケットに対して、アドレスの変換などの処理を行う
3.ROUTING
ルーティングを行う。パケットの終点アドレスを調べて、それに従ってパケットの送り先を決定する
4.FORWARD
ネットワークインターフェースから渡されたパケットの転送を行う
5.INPUT
ローカルプロセスへのパケット配送を行う
6.OUTPUT
ローカルプロセスからネットワークインターフェースへパケット送信。
7.POSTROUTING
ネットワークに出力されるパケットに対しての処理を行う。アドレス変換など
フィルタリングの範囲
- 通信元のホスト
- 通信先のホスト
- 利用するプロトコル(サービス)
- パケットが届いた物理インターフェース
iptablesインストール
#yum
- y install iptables iptables-ipv6 ←IPv6版
iptables概要
Service Name | iptables | ip6tables |
Control Program | /sbin/iptables | /sbin/ip6tables |
Configuration files | /etc/sysconfig/iptables /etc/sysconfig/iptables-config |
/etc/sysconfig/ip6tables /etc/sysconfig/ip6tables-config |
Document files | /user/share/doc/iptables-1.4.7 | |
Lock File | /var/lock/subsys/iptables | /var/lock/subsys/iptables |
Control script | /etc/init.d/iptables | /etc/init.d/ip6tables |
Script parameters | start stop restart fore^reload condrestart try-restart status panic save | |
Startup | 2 3 4 5 / 08 92 |
設定
/etc/sysconfig/iptables
*filter (1) :INPUT ACCEPT [0:0] (2) :FORWARD ACCEPT [0:0] (3) :OUTPUT ACCEPT [0:0] (4) -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT (5) -A INPUT -p icmp -j ACCEPT (6) -A INPUT -i lo -j ACCEPT (7) -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT (8) -A INPUT -j REJECT --reject-with icmp-host-prohibited (9) -A FORWARD -j REJECT --reject-with icmp-host-prohibited (10) COMMIT (11)
/etc/sysconfig/ip6tables
*filter (1) :INPUT ACCEPT [0:0] (2) :FORWARD ACCEPT [0:0] (3) :OUTPUT ACCEPT [0:0] (4) -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT (5) -A INPUT -p icmp -j ACCEPT (6) -A INPUT -i lo -j ACCEPT (7) -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT (8) -A INPUT -j REJECT --reject-with icmp-host-prohibited (9) -A FORWARD -j REJECT --reject-with icmp-host-prohibited (10) COMMIT (11)
(1)(11)設定の開始と終了
(2)〜(4)ポリシーの設定
(2)はINPUT,(3)はFORWAED,(4)はOUTPUTの各ポリシー許可
(5)〜(7)標準で許可する通信の設定
(5)コネクションを管理するstateモジュールに対する設定で、いったんコネクションを解説を許可した通信は、その後の通信を継続的に許可する事をさしている
(6)icmp,icmpv6パケットを許可しています
(7)ネットワークインタフェースloに送られて来たパケッットへのアクセス、ローカルループバックアドレスを許可している
(8)通信許可の設定
自身で動作しているSSHサービスに対して通信許可を設定
(9)(10)INPUTとFORWARDの実質的なポリシー
(9)は自身に向けた通信のうち、ここまでに定義していないサービスに対する者にはエラーパケットを返す事を指定しています。サービスの公開はこれ以前に設定する必要があります。
(10)このサーバーをルータとして転送されるパケットのうち、ここまでに定義していないサービスに対する者にはエラーパケットを返す事を指定しています。
(2)〜(4)ポリシーの設定
(2)はINPUT,(3)はFORWAED,(4)はOUTPUTの各ポリシー許可
(5)〜(7)標準で許可する通信の設定
(5)コネクションを管理するstateモジュールに対する設定で、いったんコネクションを解説を許可した通信は、その後の通信を継続的に許可する事をさしている
(6)icmp,icmpv6パケットを許可しています
(7)ネットワークインタフェースloに送られて来たパケッットへのアクセス、ローカルループバックアドレスを許可している
(8)通信許可の設定
自身で動作しているSSHサービスに対して通信許可を設定
(9)(10)INPUTとFORWARDの実質的なポリシー
(9)は自身に向けた通信のうち、ここまでに定義していないサービスに対する者にはエラーパケットを返す事を指定しています。サービスの公開はこれ以前に設定する必要があります。
(10)このサーバーをルータとして転送されるパケットのうち、ここまでに定義していないサービスに対する者にはエラーパケットを返す事を指定しています。
TCPの特定ポートへの接続許可
-A INPUT -m state --state NEW -m tcp -p tcp --dport [port番号] -j ACCEPT
特定の相手からの、TCPの特定ポートへの接続許可
-A INPUT -m state --state NEW -m tcp -p tcp -s [addr] --dport [port番号] -j ACCEPT
UDPの特定ポートへの接続許可
-A INPUT -m state --state NEW -m tcp -p udp --dport [port番号] -j ACCEPT
特定の相手からの、UDPの特定ポートへの接続許可
-A INPUT -m state --state NEW -m udp -p tcp -s [addr] --dport [port番号] -j ACCEPT
iptablesコマンド
チェインの作成
# iptables -t <filter|nat|mangle>-N <chain>
チェインの削除
# iptables -t <filter|nat|mangle>-X <chain>
チェイン名の変更
# iptables -t <filter|nat|mangle>-E <chain>
ルールの削除
# iptables -t <filter|nat|mangle>-F <chain> 省略した場合全て削除
全体ポリシーの設定
# iptables -t <filter|nat|mangle>-p <chain> <target>
ルールの追加
# iptables -t <filter|nat|mangle>-A <chain> <rule> [<option>]
TCP/UDPルールの追加
# iptables -A INPUT -m state --state NEW -m tcp -p tcp -s 192.168.10.5 --deport 22 -j
ルールの挿入
ルールの一覧確認
# iptables -L -n | -v | --line-number
ルールの追加
# iptables -I
ルールの削除
# iptables -D
ルールの修正
# iptables -R
ルールの保存
# service iptables save
TCP Wrapper
- アクセス許可ファイル /etc/hosts.allow
- アクセス拒否ファイル /etc/hosts.deny
sshd: 192.168.1.10