RedHat系のiptablesに関する資料は書店に行けば山程あるのですが、Slackwareでiptablesの資料は、 書店やインターネットで調査しても皆無でした。
手探り状態で、iptablesの設定を行った為か、かなりの時間をかけてしまいました。
IPアドレスの説明 グローバルIPアドレスの追加 カーネルの再構築 設定の確認 Firewallルールの設計 iptablesの設定 ◆IPアドレスの説明 Firewall(iptables)とは、グローバルIPアドレス(インターネット用のアドレス)とプライベートIPアドレス (インターネットに接続できないIPアドレス)の変換を行なう機能の一種です。 プライベートIPアドレスはローカルネットワークの中で使用する意味のものですから、インターネットでは使用できません インターネットにアクセスする場合はグローバルIPアドレスが必要です。Firewallは限られたグローバルIPアドレスを 複数のコンピュータで共用することで、グローバルIPアドレスの制限を超えてインターネットに接続する方法です。 Firewallが必要な場合 @グローバルIPアドレスが少ない場合、 Aローカルネットワークをインターネットに接続したい場合、 Bローカルネットワークを手間暇かけずに保護したい場合、(セキュリティ) CローカルネットワークのIPアドレスを変更しないでドメインサーバを構築したい。 D外部からのアクセスからローカルネットワークを保護したい、 Firewallを設定しては駄目な場合、 ◆御使用のルータ等で、Firewallの機能を持っている場合は、そちらを御使用してください。 hero-islandの例 hero-islandで使用している、プライベートIPアドレス、グローバルIPアドレスは以下の通りです。 これらのIPアドレスを使用して説明します。 インターネット(JPNICに登録してある)に接続するIPアドレスを設定します。 グローバルIPアドレスローカルIPアドレス IPアドレス123.234.123.45〜123.234.123.60192.168.0.0〜192.168.0.255 サブマスク255.255.255.240255.255.255.0 ホスト名youyou-gw ドメイン名ドメイン名ドメイン名 (1) ネットワーク構成 以下にネットワーク構成図を示します ( Internet ) | | | | External [eth0] | 123.234.123.45〜123.234.123.60 +------+--------------+ | F/W (Slackware-11.0) | +------+--------------+ | Internal [eth1] | 192.168.0.254/24 | | | | Local Network (192.168.0.0/24) +---------+---------+----------------- | | | +--+-+ +--+-+ +--+-+ | PC | | PC | | PC | +----+ +----+ +----+ トップへ戻る ◆グローバルIPアドレスの追加 グローバルIPアドレスは、以下の要領で追加します。 # vi /etc/rc.d/rc.inet1.conf[enter] ←rc.inet1.confを開きます。 赤字部分を追加します。 # /etc/rc.d/rc.inet1.conf # # This file contains the configuration settings for network interfaces. # If USE_DHCP[interface] is set to "yes", this overrides any other settings. # If you don't have an interface, leave the settings null (""). # Config information for eth0: IPADDR[0]="192.168.0.1" NETMASK[0]="255.255.255.0" USE_DHCP[0]="" DHCP_HOSTNAME[0]="" # Config information for eth1: IPADDR[1]="123.234.123.47" ←DNSサーバのIPアドレス NETMASK[1]="255.255.255.240" USE_DHCP[1]="" DHCP_HOSTNAME[1]="" # Config information for eth2: IPADDR[2]="" NETMASK[2]="" USE_DHCP[2]="" DHCP_HOSTNAME[2]="" # Config information for eth3: IPADDR[3]="" NETMASK[3]="" USE_DHCP[3]="" DHCP_HOSTNAME[3]="" # Default gateway IP address: GATEWAY="123.234.123.46" ←ルータのIPアドレス # Change this to "yes" for debugging output to stdout. Unfortunately, # /sbin/hotplug seems to disable stdout so you'll only see debugging output # when rc.inet1 is called directly. DEBUG_ETH_UP="no" トップへ戻る ◆カーネルの再構築 カーネルの中身を調査しました結果、カーネルの再構築をしなくてもiptablesに必要なmodulesは組み込まれていました。カーネルの再構築は不要です。どうしてもチャレンジしたい方は以下に示します。 # cd /usr/src/linux そして、 # make menuconfig ネットワークオプションの設定 「Networking options」を選択してください。 Networking options Network packet filtering * Network packet filtering debugging* IP netfilter configuration→ Connection tracking (required for masq/NAT)* FTP protocol supportM IRC protocol supportM IP tables support (required for filtering/masq/NAT)* limit match supportM MAC address match supportM netfilter MARK match supportM Multiple port match supportM TOS match support M tcpmss match supportM Connection state match supportM Unclean match support (EXPERIMENTAL)M Owner match support (EXPERIMENTAL)M Packet filtering* REJECT target supportM MIRROR target support (EXPERIMENTAL)M Full NATM MASQUERADE target support* REDIRECT target supportM Packet manglingM TOS target supportM MARK target supportM LOG target support* ipchains (2.2-style) supportM # make dep # make clean # make bzImage # make modules # make modules_install 再起動をおこないます。 トップへ戻る ◆設定の確認 再起動したら、フィルタリング機能とナット機能、グローバルIPの設定を確認します。 # 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 -t nat と入力して、以下のように表示されるか確認します。 Chain PREROUTING (policy ACCEPT) target prot opt source destination Chain POSTROUTING (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination 次にグローバルIPアドレス設定の確認をします。 # ifconfig eth0 Link encap:Ethernet HWaddr 52:54:00:D9:60:14 inet addr:192.168.0.1 Bcast:192.168.0.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 以下省略 lo Link encap:Local Looppack inet addr:127.0.0.1 Mask:255.0.0.0 UP BROADCAST LOOKBACK RUNNING MTU:3584 Metric:1 RX packets:20 errors:0 overruns:0 frame:0 TX packets:20 errors:0 overruns:0 frame:0 collision:0 eth1 Link encap:Ethernet HWaddr 52:54:00:D9:60:14 inet addr:123.234.123.47 Bcast:123.234.123.60 Mask:255.255.255.254 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 以下省略 lo Link encap:Local Looppack inet addr:127.0.0.1 Mask:255.0.0.0 UP BROADCAST LOOKBACK RUNNING MTU:3584 Metric:1 RX packets:20 errors:0 overruns:0 frame:0 TX packets:20 errors:0 overruns:0 frame:0 collision:0 routeの確認 # routeを力すると以下のように表示されます。赤色の部分を確認してください。 # route Kernel routing table Destinnation Gateway Genmask Flages Metric Ref Use Iface 123.234.123.45 * 255.255.255.240 U 0 0 0 eth0 localnet * 255.255.255.0 U 0 0 0 eth0:0 (カードが2枚の場合はeth1) loopback * 255.255.255.0 U 0 0 1 lo default 123.234.123.46 0.0.0.0 UG 1 0 0 eth0 トップへ戻る ◆Firewallルールの設計 以上で、Firewaallの環境設定は完了です。 これから、Firewallを円滑に運用するためにルールの設計をしなければなりません。 ルールの設計が不十分だと、Firewallも無意味になってしまいます。また、ルールが強すぎると 必要なサービスまで使えなくなってしまい不便な環境となってしまいます。 何を何から守るべきか、必要なものと不必要なものを明確にする必要があります。 hero-islandのルールは、以下のとおりです。 ★フィルタリングのルール PORT80のwebサーバは、誰にでも、どこからでもアクセスを許可する。 PORT53のDNSサーバは、誰にでも、どこからでもアクセスを許可する。 PORT25のMailサーバは、誰にでも、どこからでもアクセスを許可する。 各サーバからのFirewallを介したSYNパケットのみでは外部に出さない。 各サーバは同一セグメント上のホストに直接アクセスできない。必ずFirewallを通過させる。 上記以外は、全て許可しない。 トップへ戻る ◆iptablesの設定 基本的な説明 赤字の部分を実際に入力してください。 vi /etc/iptables.sh ←/etc/iptables.shを開きます。 #!/bin/bash iptables -P INPUT ACCEPT ←INPUT は、全てを許可( ACCEPT)します。 iptables -P FORWARD DROP ←FORWARD は使わないので放棄(DROP)します。 iptables -P OUTPUT ACCEPT ←OUTPUT は、全てを許可(ACCEPT)します。 # iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT ←loopback自分自身は許可(ACCEPT) iptables -A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT ←loopback自分自身は許可(ACCEPT) iptables -A INPUT -i eth1 -s 192.168.0.0/24 -j ACCEPT ←eth1(内部)からのアクセスはすべて許可します。 iptables -A OUTPUT -o eth1 -d 192.168.0.0/24 -j ACCEPT ←eth1(内部)からのアクセスはすべて許可します。 # iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT ←接続が確立したパケットの応答は許可します。 # iptables -A INPUT -p udp --sport 53 -j ACCEPT ←DNSへの問合せはすべて許可します。 iptables -A OUTPUT -p udp --dport 53 -j ACCEPT ←DNSへの問合せはすべて許可します。 # iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE ←マスカレードを定義します。 echo 1 > /proc/sys/net/ipv4/ip_forward # echo 1 > /proc/sys/net/ipv4/tcp_syncookies iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT ←SYN FLOOD攻撃対策 # echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter ←IP Spoofing防御用 # echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts ←BroadcastへのPingの無視 # echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses ←偽のエラーレスポンスを無視 # iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -j ACCEPT ←PORT-SCAN対策 # iptables -A FORWARD -p icmp --icmp-typep echo-request -m limit --limit 1/s -j ACCEPT ←ping of death対策 # iptables -A INPUT -p tcp --dport 113 -j REJECT --reject-with tcp-reset ←113PORTのレスポンス低下防止 # iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT ←接続が確立したパケットの応答は許可します。 # iptables -A FORWARD -i eth1 -p icmp -j ACCEPT ←外部へのpingを許可します。 # iptables -A FORWARD -i eth0 -p tcp --dport 80 -j ACCEPT←wwwの通過および応答を許可します。 iptables -A FORWARD -i eth0 -p tcp --dport 25 -j ACCEPT←mail(smtp)の通過および応答を許可します。 iptables -A FORWARD -i eth0 -p tcp --dport 110 -j ACCEPT←mail(pop3)の通過および応答を許可します。 iptables -A FORWARD -i eth0 -p tcp --dport 143 -j ACCEPT iptables -A INPUT -i eth1 -p udp --dport 137 -j ACCEPT←ローカルネットワーク内からのSAMBAへのアクセスをすべて許可します。 iptables -A INPUT -i eth1 -p udp --dport 138 -j ACCEPT iptables -A INPUT -i eth1 -p tcp --dport 139 -j ACCEPT iptables -A INPUT -i eth1 -p tcp --dport 445 -j ACCEPT iptables -A INPUT -s 192.168.0.0/24 -p tcp --dport 10000 -j ACCEPT←ローカルネットワーク内からのWebmin(10000番ポート)への接続を許可します。 iptables -P INPUT DROP←上記以外のパケットは全て無視します。 #iptables -A FORWARD -i eth0 -j LOG←うまくサービスが動作しない時には、コメントを外し/var/log/messages を見ます。 wqでセーブします。 設定をSAVEする。 以前は、全てコマンドで打ち込んでいましたが、入力ミスが多発した為にシェルを作成した次第です。 以下の例ではシェルを実行してセーブをしていますが、面倒な場合は/etc/rc.d/rc.localでシェルを実行させても問題はありません。 # chmod 755 /etc/iptables.sh # cd /etc /etc# ./iptables.sh /etc# iptables-save > /etc/iptables.rules restoreの追加 vi /etc/rc.d/rc.local /etc/rc.d/rc.localに以下の行を追加します。 if [ -f /etc/iptables.rules ]; then echo "Starting IPTABLES: /etc/iptables.rules" /usr/sbin/iptables-restore < /etc/iptables.rules fi ここで、REBOOTをします。 iptablesの確認 iptables -L Chain INPUT (policy DROP) target ACCEPT tcp -- anywhere anywhere tcp dpt:http ACCEPT tcp -- anywhere anywhere tcp dpt:domain ACCEPT udp -- anywhere anywhere tcp dpt:domain ACCEPT tcp -- anywhere anywhere tcp dpt:smtp ACCEPT tcp -- anywhere anywhere tcp spt:smtp ACCEPT tcp -- anywhere anywhere tcp dpt:pop3 ACCEPT tcp -- anywhere anywhere tcp spt:pop3 ACCEPT tcp -- localnet anywhere tcp dpt:10000 ACCEPT tcp -- localnet anywhere tcp spt:10000 ACCEPT tcp -- anywhere anywhere tcp flags:SYM,RST,ACK/SYM limit avg 1/sec burst 5 ACCEPT icmp -- anywhere anywhere limit: avg 1/sec burst 5 icmp echo-request Chain FORWADR (policy DROP) target prot opt source destination Chain OUPUT (policy ACCEPT) target prot opt source destination lsmodによるmodulesの確認 Iptablesを実行すると以下のmodulesの存在を確認します。 lsmod ←lsmodコマンドを投入します。 Module Size Use by Not trainted ipt_REJECT 3288 1 (autoclean) ←存在を確認します。 ipt_limit 888 3 (autoclean) ←存在を確認します。 ipt_MASQUERADE 2368 1 (autoclean) ←存在を確認します。 iptable_nat 26374 1 (autoclean) [ipt_MASQUERADE] ←存在を確認します。 ipt_state 536 2 (autoclean) ←存在を確認します。 ipt_conntrack 31256 0 (autoclean) [ipt_MASQUERADE iptable_nat ipt_state] ←存在を確認します。 iptable_filter 1708 1 (autoclean) ←存在を確認します。 ip_tables 15360 0 (autoclean) [ipt_REJECT ipt_limit ipt_MASQUERADE iptable_nat ipt_state iptable_filter] ←存在を確認します。 私が作成したiptables.shを実行すると上記のmodulesがloadされる筈ですが、 上記のmodulesが存在しない場合は、カーネルの再構築が上手くいっていないことになります。 iptableが実行されていない状態では当然loadされていませんので勘違いしないでください。 iptablesが動作しない!あるいは部分的に動作しない原因の多くは、これならの問題だと思います。 トップへ戻る 前ページへ戻る ご質問・お問い合わせ - 免責事項 Copyright (C) 1998 hero-island. All Rights Reserved.
◆IPアドレスの説明
Firewall(iptables)とは、グローバルIPアドレス(インターネット用のアドレス)とプライベートIPアドレス
(インターネットに接続できないIPアドレス)の変換を行なう機能の一種です。
プライベートIPアドレスはローカルネットワークの中で使用する意味のものですから、インターネットでは使用できません
インターネットにアクセスする場合はグローバルIPアドレスが必要です。Firewallは限られたグローバルIPアドレスを
複数のコンピュータで共用することで、グローバルIPアドレスの制限を超えてインターネットに接続する方法です。
@グローバルIPアドレスが少ない場合、
Aローカルネットワークをインターネットに接続したい場合、
Bローカルネットワークを手間暇かけずに保護したい場合、(セキュリティ)
CローカルネットワークのIPアドレスを変更しないでドメインサーバを構築したい。
D外部からのアクセスからローカルネットワークを保護したい、
◆御使用のルータ等で、Firewallの機能を持っている場合は、そちらを御使用してください。
hero-islandで使用している、プライベートIPアドレス、グローバルIPアドレスは以下の通りです。
これらのIPアドレスを使用して説明します。 インターネット(JPNICに登録してある)に接続するIPアドレスを設定します。
(1) ネットワーク構成 以下にネットワーク構成図を示します
( Internet ) | | | | External [eth0] | 123.234.123.45〜123.234.123.60 +------+--------------+ | F/W (Slackware-11.0) | +------+--------------+ | Internal [eth1] | 192.168.0.254/24 | | | | Local Network (192.168.0.0/24) +---------+---------+----------------- | | | +--+-+ +--+-+ +--+-+ | PC | | PC | | PC | +----+ +----+ +----+
トップへ戻る
◆グローバルIPアドレスの追加
グローバルIPアドレスは、以下の要領で追加します。
# vi /etc/rc.d/rc.inet1.conf[enter] ←rc.inet1.confを開きます。
赤字部分を追加します。
# /etc/rc.d/rc.inet1.conf # # This file contains the configuration settings for network interfaces. # If USE_DHCP[interface] is set to "yes", this overrides any other settings. # If you don't have an interface, leave the settings null (""). # Config information for eth0: IPADDR[0]="192.168.0.1" NETMASK[0]="255.255.255.0" USE_DHCP[0]="" DHCP_HOSTNAME[0]="" # Config information for eth1: IPADDR[1]="123.234.123.47" ←DNSサーバのIPアドレス NETMASK[1]="255.255.255.240" USE_DHCP[1]="" DHCP_HOSTNAME[1]="" # Config information for eth2: IPADDR[2]="" NETMASK[2]="" USE_DHCP[2]="" DHCP_HOSTNAME[2]="" # Config information for eth3: IPADDR[3]="" NETMASK[3]="" USE_DHCP[3]="" DHCP_HOSTNAME[3]="" # Default gateway IP address: GATEWAY="123.234.123.46" ←ルータのIPアドレス # Change this to "yes" for debugging output to stdout. Unfortunately, # /sbin/hotplug seems to disable stdout so you'll only see debugging output # when rc.inet1 is called directly. DEBUG_ETH_UP="no"
◆カーネルの再構築
カーネルの中身を調査しました結果、カーネルの再構築をしなくてもiptablesに必要なmodulesは組み込まれていました。カーネルの再構築は不要です。どうしてもチャレンジしたい方は以下に示します。
# cd /usr/src/linux
そして、
# make menuconfig
ネットワークオプションの設定
「Networking options」を選択してください。
# make dep
# make clean
# make bzImage
# make modules
# make modules_install
再起動をおこないます。
◆設定の確認
再起動したら、フィルタリング機能とナット機能、グローバルIPの設定を確認します。 # 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 -t nat と入力して、以下のように表示されるか確認します。
Chain PREROUTING (policy ACCEPT) target prot opt source destination Chain POSTROUTING (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination
次にグローバルIPアドレス設定の確認をします。 # ifconfig
eth0 Link encap:Ethernet HWaddr 52:54:00:D9:60:14 inet addr:192.168.0.1 Bcast:192.168.0.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 以下省略 lo Link encap:Local Looppack inet addr:127.0.0.1 Mask:255.0.0.0 UP BROADCAST LOOKBACK RUNNING MTU:3584 Metric:1 RX packets:20 errors:0 overruns:0 frame:0 TX packets:20 errors:0 overruns:0 frame:0 collision:0 eth1 Link encap:Ethernet HWaddr 52:54:00:D9:60:14 inet addr:123.234.123.47 Bcast:123.234.123.60 Mask:255.255.255.254 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 以下省略 lo Link encap:Local Looppack inet addr:127.0.0.1 Mask:255.0.0.0 UP BROADCAST LOOKBACK RUNNING MTU:3584 Metric:1 RX packets:20 errors:0 overruns:0 frame:0 TX packets:20 errors:0 overruns:0 frame:0 collision:0
# routeを力すると以下のように表示されます。赤色の部分を確認してください。
# route Kernel routing table Destinnation Gateway Genmask Flages Metric Ref Use Iface 123.234.123.45 * 255.255.255.240 U 0 0 0 eth0 localnet * 255.255.255.0 U 0 0 0 eth0:0 (カードが2枚の場合はeth1) loopback * 255.255.255.0 U 0 0 1 lo default 123.234.123.46 0.0.0.0 UG 1 0 0 eth0
◆Firewallルールの設計
以上で、Firewaallの環境設定は完了です。 これから、Firewallを円滑に運用するためにルールの設計をしなければなりません。 ルールの設計が不十分だと、Firewallも無意味になってしまいます。また、ルールが強すぎると 必要なサービスまで使えなくなってしまい不便な環境となってしまいます。 何を何から守るべきか、必要なものと不必要なものを明確にする必要があります。 hero-islandのルールは、以下のとおりです。
★フィルタリングのルール
◆iptablesの設定
vi /etc/iptables.sh ←/etc/iptables.shを開きます。 #!/bin/bash iptables -P INPUT ACCEPT ←INPUT は、全てを許可( ACCEPT)します。 iptables -P FORWARD DROP ←FORWARD は使わないので放棄(DROP)します。 iptables -P OUTPUT ACCEPT ←OUTPUT は、全てを許可(ACCEPT)します。 # iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT ←loopback自分自身は許可(ACCEPT) iptables -A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT ←loopback自分自身は許可(ACCEPT) iptables -A INPUT -i eth1 -s 192.168.0.0/24 -j ACCEPT ←eth1(内部)からのアクセスはすべて許可します。 iptables -A OUTPUT -o eth1 -d 192.168.0.0/24 -j ACCEPT ←eth1(内部)からのアクセスはすべて許可します。 # iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT ←接続が確立したパケットの応答は許可します。 # iptables -A INPUT -p udp --sport 53 -j ACCEPT ←DNSへの問合せはすべて許可します。 iptables -A OUTPUT -p udp --dport 53 -j ACCEPT ←DNSへの問合せはすべて許可します。 # iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE ←マスカレードを定義します。 echo 1 > /proc/sys/net/ipv4/ip_forward # echo 1 > /proc/sys/net/ipv4/tcp_syncookies iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT ←SYN FLOOD攻撃対策 # echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter ←IP Spoofing防御用 # echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts ←BroadcastへのPingの無視 # echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses ←偽のエラーレスポンスを無視 # iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -j ACCEPT ←PORT-SCAN対策 # iptables -A FORWARD -p icmp --icmp-typep echo-request -m limit --limit 1/s -j ACCEPT ←ping of death対策 # iptables -A INPUT -p tcp --dport 113 -j REJECT --reject-with tcp-reset ←113PORTのレスポンス低下防止 # iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT ←接続が確立したパケットの応答は許可します。 # iptables -A FORWARD -i eth1 -p icmp -j ACCEPT ←外部へのpingを許可します。 # iptables -A FORWARD -i eth0 -p tcp --dport 80 -j ACCEPT←wwwの通過および応答を許可します。 iptables -A FORWARD -i eth0 -p tcp --dport 25 -j ACCEPT←mail(smtp)の通過および応答を許可します。 iptables -A FORWARD -i eth0 -p tcp --dport 110 -j ACCEPT←mail(pop3)の通過および応答を許可します。 iptables -A FORWARD -i eth0 -p tcp --dport 143 -j ACCEPT iptables -A INPUT -i eth1 -p udp --dport 137 -j ACCEPT←ローカルネットワーク内からのSAMBAへのアクセスをすべて許可します。 iptables -A INPUT -i eth1 -p udp --dport 138 -j ACCEPT iptables -A INPUT -i eth1 -p tcp --dport 139 -j ACCEPT iptables -A INPUT -i eth1 -p tcp --dport 445 -j ACCEPT iptables -A INPUT -s 192.168.0.0/24 -p tcp --dport 10000 -j ACCEPT←ローカルネットワーク内からのWebmin(10000番ポート)への接続を許可します。 iptables -P INPUT DROP←上記以外のパケットは全て無視します。 #iptables -A FORWARD -i eth0 -j LOG←うまくサービスが動作しない時には、コメントを外し/var/log/messages を見ます。 wqでセーブします。
wqでセーブします。
以下の例ではシェルを実行してセーブをしていますが、面倒な場合は/etc/rc.d/rc.localでシェルを実行させても問題はありません。 # chmod 755 /etc/iptables.sh
# cd /etc
/etc# ./iptables.sh
/etc# iptables-save > /etc/iptables.rules
/etc/rc.d/rc.localに以下の行を追加します。
if [ -f /etc/iptables.rules ]; then echo "Starting IPTABLES: /etc/iptables.rules" /usr/sbin/iptables-restore < /etc/iptables.rules fi
ここで、REBOOTをします。
Chain INPUT (policy DROP) target ACCEPT tcp -- anywhere anywhere tcp dpt:http ACCEPT tcp -- anywhere anywhere tcp dpt:domain ACCEPT udp -- anywhere anywhere tcp dpt:domain ACCEPT tcp -- anywhere anywhere tcp dpt:smtp ACCEPT tcp -- anywhere anywhere tcp spt:smtp ACCEPT tcp -- anywhere anywhere tcp dpt:pop3 ACCEPT tcp -- anywhere anywhere tcp spt:pop3 ACCEPT tcp -- localnet anywhere tcp dpt:10000 ACCEPT tcp -- localnet anywhere tcp spt:10000 ACCEPT tcp -- anywhere anywhere tcp flags:SYM,RST,ACK/SYM limit avg 1/sec burst 5 ACCEPT icmp -- anywhere anywhere limit: avg 1/sec burst 5 icmp echo-request Chain FORWADR (policy DROP) target prot opt source destination Chain OUPUT (policy ACCEPT) target prot opt source destination
Module Size Use by Not trainted ipt_REJECT 3288 1 (autoclean) ←存在を確認します。 ipt_limit 888 3 (autoclean) ←存在を確認します。 ipt_MASQUERADE 2368 1 (autoclean) ←存在を確認します。 iptable_nat 26374 1 (autoclean) [ipt_MASQUERADE] ←存在を確認します。 ipt_state 536 2 (autoclean) ←存在を確認します。 ipt_conntrack 31256 0 (autoclean) [ipt_MASQUERADE iptable_nat ipt_state] ←存在を確認します。 iptable_filter 1708 1 (autoclean) ←存在を確認します。 ip_tables 15360 0 (autoclean) [ipt_REJECT ipt_limit ipt_MASQUERADE iptable_nat ipt_state iptable_filter] ←存在を確認します。
上記のmodulesが存在しない場合は、カーネルの再構築が上手くいっていないことになります。
iptableが実行されていない状態では当然loadされていませんので勘違いしないでください。
iptablesが動作しない!あるいは部分的に動作しない原因の多くは、これならの問題だと思います。
前ページへ戻る