- 追加された行はこの色です。
- 削除された行はこの色です。
*iptables [#v463bb39]
RIGHT:更新日&lastmod();
**pptpパススルー [#t0ef8f43]
iptablesでは内部LANのpptpクライアントから外部のpptpサーバに接続するためのpptpパススルーがipマスカレードと併用して利用できる。しかし、Vine4.xではGREプロトコルを通すモジュール&color(red){「ip_nat_pptp」};をつけ加えなくてはいけない
''構成図''
----------------- eth0:1----------
|pptpクライアント|==============| GW |
------------------ |eth0 | |
| ---------- ------------ -------------
|======================|WAN |====|pptpサーバ |
------------ -------------
''設定方法''
# /sbin/ifconfig eth0:1 10.99.99.98
# /sbin/modprobe iptable_nat
# /sbin/modprobe ip_nat_pptp <==このモジュール(pptpパススルー)が必要
# echo 1 > /proc/sys/net/ipv4/ip_forward
# /sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
''確認''
# /sbin/lsmod
Module Size Used by
ipt_MASQUERADE 7680 1
ip_nat_pptp 10244 0
ip_conntrack_pptp 14736 1 ip_nat_pptp
iptable_nat 12036 1
ip_nat 21548 3 ipt_MASQUERADE,ip_nat_pptp,iptable_nat
ip_tables 17108 1 iptable_nat
ip_conntrack 52568 5 ipt_MASQUERADE,ip_nat_pptp,ip_conntrack_pptp,iptable_nat,ip_nat
nfnetlink 10520 2 ip_nat,ip_conntrack
x_tables 16644 3 ipt_MASQUERADE,iptable_nat,ip_tables
(略)
**ファイアウォール [#q5c0284c]
Vine4.xでは、iptablesがファイアウォールとしてインストールされる。~
設定は/etc/sysconfig/iptablesにあるのでそれを以下のように編集しiptablesを再起動すればOK~
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:http
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:https <==追加
しかしこれだけだとX上のユーティリティに反映されないので以下も変更しておく
/etc/sysconfig/system-config-securitylevel
# system-config-securitylevel config written out by anaconda
-f
--enabled
--port=22:tcp
--port=80:tcp
--port=443:tcp <==追加
--port=25:tcp
**環境 [#m73e8b55]
インストールするマシンは以下ようなネット接続で G/Wおよび、各種サーバ (WWW,Mail 等)として利用する~
よって、ローカル側からはipマスカレードを利用しインターネットにアクセスしインターネット側からはローカルネットへのアクセス禁止とG/W内部へのアクセスも必要以外のポートを禁止する。
---------
(インターネット)<------>(eth1)| G/W |(eth0)<----->(ローカルネット)
---------
**ipchainsの停止 [#q2093208]
ipchainsが動作しているときはこれを停止する
# /sbin/lsmod (確認コマンド)
sis900 11264 1 (autoclean)
ipchains 38976 0 (unused)
^^^^^^^^<-ipchainsが動作している
usb-uhci 20720 0 (unused)
# /sbin/rmmod ipchains (停止コマンド)
起動時に動作させないようように
# /sbin/chkconfig --list (確認コマンド)
apmd 0:オフ 1:オフ 2:オン 3:オン 4:オン 5:オン 6:オフ
ipchains 0:オフ 1:オフ 2:オン 3:オン 4:オン 5:オン 6:オフ
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^これをオフにする
iptables 0:オフ 1:オフ 2:オン 3:オン 4:オン 5:オン 6:オフ
identd 0:オフ 1:オフ 2:オフ 3:オフ 4:オフ 5:オフ 6:オフ
# /sbin/chkconfig --del ipchains (起動時起動しないようにする)
**iptablesの起動および設定 [#z8c62fc3]
以下のようなスクリプトを実行
#!/bin/sh
##モジュールをロードする
/sbin/modprobe iptable_nat
echo 1 > /proc/sys/net/ipv4/ip_forward
##テーブルの条件を初期化する(ただしポリシーは変更できない)
|テーブル名 |チェイン名 |
|filter |INPUT |
|~|OUTPUT |
|~|FORWARD |
|nat |OUTPUT |
|~|PREROUTING |
|~|POSTROUTING |
|チェイン名 |説明 |
|INPUT |受信したパケットに対するチェイン |
|OUTPUT |送信したパケットに対するチェイン |
|FORWARD |対象サーバを経由するパケットに対するチェイン |
|PREROUTING |受信時にパケットのアドレス変換をするチェイン |
|POSTROUTING |送信時にパケットのアドレス変換をするチェイン |
# /sbin/iptables -t filter -F FORWARD <--FORWARDの初期化
# /sbin/iptables -t filter -F INPUT <--INPUTの初期化
# /sbin/iptables -t nat -F POSTROUTING <--POSTROUTINGの初期化
全ての初期化なら
/sbin/iptables -F
でよい
##ipマスカレードの設定($color(red){LAN側[eth0]に別ネットワークがあった場合route addされているとマスカレードされないで元IPでアクセスに行く};)
/sbin/iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
(指定IPだけNAT: /sbin/iptables -t nat -A POSTROUTING -o eth1 -s 10.0.0.0/8 -j MASQUERADE)
&color(red){注1)マスカレードの設定をしても、filterテーブルのFORWARDチェインのポリシーがDROPだと、パケットがforwardされない.};
##ポリシーを決める(通過およびマシンが応答するパケットは基本的に禁止)
/sbin/iptables -t filter -P FORWARD DROP
/sbin/iptables -t filter -P INPUT DROP
## 確立しているコネクションのFORWARDを許可$color(red){---(1)};
## 確立しているコネクションのFORWARDを許可&color(red){---(1)};
/sbin/iptables -t filter -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
ESTABLISHED: このパケットは、過去双方向にパケットがやり取りされた接続に属するパケットである。 ~
NEW: このパケットが新しい接続を開始したか、 双方向にはパケットがやり取りされていない接続に属するパケットである。
RELATED: このパケットが新しい接続を開始しているが、 FTP データ転送や ICMP エラーのように、既存の接続に関係している。
&color(red){注)NEWを入れると、WAN側からも新しいも入ってくるので、WAN側からLAN側にも接続できるようになる.};
## pingの通過および応答を許可
/sbin/iptables -t filter -A FORWARD -i eth0 -p icmp -j ACCEPT
(注1で一切パケットをWAN側に流さないのでicmpだけインターフェイスeth0(LAN)だけ
許可する。両方許可するとWANからもicmpが流れてくる)
/sbin/iptables -t filter -A INPUT -i eth1 -p icmp -j ACCEPT
## DNS問い合わせの通過および応答を許可
/sbin/iptables -t filter -A FORWARD -i eth0 -p udp --dport 53 -j ACCEPT
/sbin/iptables -t filter -A INPUT -i eth1 -p udp --dport 53 -j ACCEPT
## wwwの通過および応答を許可
/sbin/iptables -t filter -A FORWARD -i eth0 -p tcp --dport 80 -j ACCEPT
/sbin/iptables -t filter -A INPUT -i eth1 -p tcp --dport 80 -j ACCEPT
## POPの通過および応答を許可
/sbin/iptables -t filter -A FORWARD -i eth0 -p tcp --dport 110 -j ACCEPT
/sbin/iptables -t filter -A INPUT -i eth1 -p tcp --dport 110 -j ACCEPT
## SMTPの通過および応答を許可
/sbin/iptables -t filter -A FORWARD -i eth0 -p tcp --dport 25 -j ACCEPT
/sbin/iptables -t filter -A INPUT -i eth1 -p tcp --dport 25 -j ACCEPT
&color(red){(全てをLAN側からのみ通過させるには[ipマスカレードを使用時:};~
&color(red){マスカレード使用しないと戻りパケットがLAN側のみの場合は通過しない。また、};~
&color(red){確立しているコネクションのFORWARDを許可(1)[SPI(ステートフルインスペクション)]を設定する必要がある]};~
&color(red){/sbin/iptables -t filter -A FORWARD -i eth0 -j ACCEPT};~
&color(red){とすればよい)};~
## ftp通信用モジュールのロード(FTPの通過および応答を許可)
/sbin/iptables -t filter -A FORWARD -i eth0 -p tcp --dport 21 -j ACCEPT
/sbin/iptables -t filter -A INPUT -i eth1 -p tcp --dport 21 -j ACCEPT
/sbin/modprobe ip_nat_ftp
/sbin/modprobe ip_conntrack_ftp
&color(red){注)};~
filterで自分自身を許可する場合は自分のIPではなく127.0.0.1でしか有効にならない場合もあるようだ。
**IPファイルタ [#j5cc9437]
''条件の追加''~
ポリシはすべてACCEPT、ポート21を192.168.10.0/24以外からのアクセスを拒否
# /sbin/iptables -A INPUT -p tcp --dport 21 -s ! 192.168.10.0/24 -j DROP
''設定状況の表示''~
# /sbin/iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP tcp -- !192.168.10.0/24 anywhere tcp dpt:ftp
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
''NATの表示は''~
# /sbin/iptables -t nat -n -L
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
許可するアドレスが1つしか設定できないので許可するアドレスを羅列して
その後それ以外を拒否
''全てを拒否''~
# /sbin/iptables -A INPUT -p tcp --dport 21 -s 0.0.0.0/0 -j DROP
# /sbin/iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP tcp -- anywhere anywhere tcp dpt:ftp
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
''許可するアドレスを追加''~
DROPより先に追加する必要があるので、-I INPUT 1(<=1行目に追加の意味)
# /sbin/iptables -I INPUT 1 -p tcp --dport 21 -s 192.168.10.24 -j ACCEPT
^^^^^^^^^^^順番に注意(チェイン名の後にNoを指定)
# /sbin/iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- 192.168.10.24 anywhere tcp dpt:ftp
DROP tcp -- anywhere anywhere tcp dpt:ftp
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
***設定の削除 [#i12ba62a]
''条件の指定''~
# /sbin/iptables -D INPUT -p tcp --dport 21 -s 192.168.10.24 -j ACCEPT
''行数の指定''~
# /sbin/iptables -D INPUT 2
''Logの表示''~
/sbin/iptables -I INPUT 1 -j LOG --log-prefix "iptables_log: "
/var/messagesにiptables_log:の文字列とともにlogがとれる~
ただし、入力されるパケットが全て記録されるので、デバッグ以外使用しないほうが~
いいかも?これも1行目であれば全て記録するが、適用な行のときはその行の以前に~
適用されたルールは記録されない。~
うまくいったら、/etc/rc.d/rc.localにでも書けばOK
または、
# /sbin/service iptables save
で
/etc/sysconfig/iptablesに保存される
/etc/sysconfig/iptables
*filter <---(1)
:INPUT ACCEPT [325:26749]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [306:44475]
[0:0] -A INPUT -s ! 192.168.10.0/255.255.255.0 -p tcp -m tcp --dport 21 -j DROP
^^^^^^^^^^^保存された内容
COMMIT
(1)は-tオプションで指定されるテーブルで、filter,nat,mangleがある。デフォルトは~
filterで,~
filter: INPUT,OUTPUT,FORWARDがある~
nat:このテーブルは新しい接続を開くようなパケットに対して参照される。~
PREROUTING, OUTPUT がある~
mangle: このテーブルは特別なパケット変換に使われる。~
詳しくはman参照。~
/sbin/service iptables saveでsaveしてもよいが~
直接編集しても良い。~
[0:0]部分はなくても動作するようだ~
編集後~
/etc/rc.d/init.d/iptables restart
でiptablesを再起動
--------------------------------------------------------------------------------
RIGHT:[[元ページ:http://wwwism.dyndns.org/hp/linux/iptables.htm]]