おまえらが俺様にUbuntuを教えて下さるスレat LINUX
おまえらが俺様にUbuntuを教えて下さるスレ - 暇つぶし2ch952:ジャイアン ◆J1N3P2v8mu/2
10/04/30 21:10:33 m+ldm6Hc
-Aオプションでルールを追加する。


sudo iptables -A チェイン ルールの仕様

「チェイン」はINPUT、FORWARD、OUTPUTのいずれかだな。
「ルールの仕様」はうんざりするな。ドキュメントにも「憶えなくていいお」って書いてある。
後で見て分かるようにしておくのが大事だな。

-p プロトコルを指定する。tcp、udp、icmp、allのいずれか。allが既定値。
-s 送信元を指定する。IPアドレスで。「! -s」は「指定したアドレス以外」という意味。
-d 送信先を指定する。同上。
-j パケットが条件に合った場合のターゲットを指定する。ACCEPTかDROP。他のは知らん。
-i 受信することになるインターフェイス名を指定する。省略した場合、任意のインターフェイス。
-o 送信することになるインターフェイス名を指定する。
-m 条件をもっと詳しく指定する。後回し。

953:login:Penguin
10/04/30 21:22:04 EaQXy4cC
何かジャイアンじゃないw

954:ジャイアン ◆J1N3P2v8mu/2
10/04/30 22:09:09 m+ldm6Hc
書き忘れたが、>>952の-pとか-sはルールの仕様に関するオプションだ。

例えば

sudo iptables OUTPUT -d 10.0.2.0/255.255.255.0 -j ACCEPT

とすると、送信先がLAN内部ならば通すというルールを
OUTPUTチェインに追加するわけだな。
さらにポート番号を指定したいとかいうような場合は
-mで条件を拡張するわけだが、数が多くてやってられん。
頭が混乱しないように使いそうなやつだけメモしておくか。

955:login:Penguin
10/05/01 14:48:32 8PzX/j98
そこはシェルスクリプトにするのが定石だと思う
ネットで探せば例が転がっているんじゃないかと

956:ジャイアン ◆J1N3P2v8mu/2
10/05/03 21:30:34 1CX8aWeJ
シェルスクリプトのことを出木杉にきいてきたぞ。
実行すべきコマンドを列挙したテキストファイルのことだそうだな。
シェルスクリプトを実行すると、書いてあるコマンドが順に実行されるらしい。
ファイヤーウォールを設定するには
iptablesコマンドを何度も実行することになるから、
シェルスクリプトを作ると都合がいいみたいだな。

957:ジャイアン ◆J1N3P2v8mu/2
10/05/04 21:11:35 HLpsuDls
>>954の続きだ。

-m tcp
TCPに関係する条件を詳しく指定できるようにする。
「-p tcp」が指定された場合、「-m tcp」は省略できる。
--source-port 送信元のポートを指定する。省略して「--sport」でもいい。「:」で範囲。
--destination-port 送信先のポートを指定する。「--dport」でいい。

-m udp
UDPに関係する(ry。-m tcpに準じる。

-m multiport
送信元・送信先のポートを「,」で区切って15個まで指定できるようにする。
--source-ports 送信元のポートを指定する。省略して「--sports」。
--destinaton-ports 送信先のポート。「--dports」。

-m conntrack
接続の状態とかを指定できるようにする。-m stateよりも強力。
--ctstate 接続の状態を指定する。NEWは新規接続。ESTABLISHEDは既存の接続。RELATEDは既存の接続に関係のある新規接続、INVALIDは無効な接続。

958:ジャイアン ◆J1N3P2v8mu/2
10/05/04 22:26:13 HLpsuDls
例えば

sudo iptables -A OUTPUT -p tcp -m conntrack --ctstate NEW -m multiport --dports 80,443 ACCEPT

を実行すれば、TCPでポート80または443への新規接続を許可するルールを
OUTPUTチェインに追加することになるだろう。

なるべく接続の状態も指定した方が安全になるらしい。
ブロードバンドルーターに「SPI」という機能がついてるんだが、
「-m conntrack --ctstate」はこれと同じようなことのような感じだな。

959:login:Penguin
10/05/04 22:36:22 dVx748ni
OUTPUTチェインを弄ることは、現実的にはあまり無いよ。
サーバならINPUTチェインを、ルーティングもするなら
FORWARDチェインを弄ることになる。

960:ジャイアン ◆J1N3P2v8mu/2
10/05/05 20:33:48 VmXl8nxk
せっかくあるんだからOUTPUTチェインも使おうぜ。
よく知らんが、UPnPとかいう仕組みでポートを勝手に使えるらしいから
INPUTチェインでの制限だけでは十分じゃないかもしれないぞ。

961:ジャイアン ◆J1N3P2v8mu/2
10/05/05 21:09:17 VmXl8nxk
>>957の他に使えそうなやつ

-m connbytes、-m connlimit、-m quota
転送量や接続数を制限する。

-m limit、-m hashlimit
ルールが適用される頻度を制限する。

-m mac
送信元のMACアドレスを指定する。

-m owner
通信しようとしているユーザーを指定する。

-m recent
悪いことをしようとした奴らを締め出すのに使えるらしい。

-m time
時間を指定する。

962:ジャイアン ◆J1N3P2v8mu/2
10/05/05 21:27:49 VmXl8nxk
例えば

sudo iptables -A OUTPUT ! -d 10.0.2.0/255.255.255.0 -m owner --uid-owner jaiko -m time --timestart 21:00:00 --timestop 05:00:00 -j DROP

を実行すると、
jaikoは夜の9時から朝の5時までの間、
LAN内部以外とは通信できなくなるのかな。

963:ジャイアン ◆J1N3P2v8mu/2
10/05/06 20:49:17 wRsOF2vt
-iや-oで指定するインターフェイス名は
/etc/network/interfacesを見ればだいたい分かるだろう。

ifconfigコマンドを実行すると
稼働中のネットワークインターフェイスが表示されるので
これも参考になるだろう。


964:ジャイアン ◆J1N3P2v8mu/2
10/05/08 20:54:40 LQrEbcm1
-Dオプションでルールを削除する。

-Fオプションでチェイン内の全ルールを消去する。
何かおかしくなったときに使えそうだな。

-Zオプションですべてのチェインのパケットカウンタ、バイトカウンタを0にする。
各ルールが適用されたパケット数、バイト数を記録してるんだな。
カウンタの数値は「-L -v」オプションで見られるらしい。

965:ジャイアン ◆J1N3P2v8mu/2
10/05/09 21:06:00 IU09vcKg
ルールは上にあるものほど優先されるから、順番が大切だ。
>>962のようなやつは、通信を許可するルールよりも
上にしておかないと意味がないらしい。
よく使うルールはなるべく上の方にしておくと
CPUの仕事が少し減るとかなんとかで、
パケットカウンタも参考にして順番を決めるんだとか。

966:ジャイアン ◆J1N3P2v8mu/2
10/05/09 21:53:40 IU09vcKg
いよいよファイヤーウォールの設定を始めるわけだが、
>>955にあるとおり、シェルスクリプトを使うのが普通みたいだな。

送信は
 既存の接続とこれに関連のある接続を通す
 DNS、DHCP、NTP、webとメール、ループバック、pingの新規接続を通す
 他は通さない

受信は
 既存の接続とこれに関連のある接続を通す
 ループバック、LAN内部からのpingの新規接続を通す
 他は通さない

という方針でやってみよう。

DHCPサーバーとDNSサーバーのアドレスは>>927だ。

967:ジャイアン ◆J1N3P2v8mu/2
10/05/10 20:47:26 c5Akoipn
>>954
× sudo iptables OUTPUT -d 10.0.2.0/255.255.255.0 -j ACCEPT
○ sudo iptables -A OUTPUT -d 10.0.2.0/255.255.255.0 -j ACCEPT

>>958
× sudo iptables -A OUTPUT -p tcp -m conntrack --ctstate NEW -m multiport --dports 80,443 ACCEPT
○ sudo iptables -A OUTPUT -p tcp -m conntrack --ctstate NEW -m multiport --dports 80,443 -j ACCEPT

よく見てみたら、けっこう間違ってるじゃないか。
iptablesは複雑で難しいな。
のび太は1から全部読み返してみて、どこがどう間違っているか指摘しろ。

968:login:Penguin
10/05/10 20:52:45 o8QQ0v0D
なんというできるジャイアン

969:ジャイアン ◆J1N3P2v8mu/2
10/05/14 21:06:05 c090gNNJ
以下の内容でload-firewall-rulesというシェルスクリプトを作った。
ほとんど全部、誰かが作ったやつのコピペだ。
のび太はよく検証しておかしなところがあったらおしえろ。

INPUTもOUTPUTも、やりとりするパケットの大半はESTABLISHEDになるみたいだから、
これを通すルールを一番上にした。
manによるとRELATEDはFTPデータ転送とかICMPエラーとかで使われるらしいが、
他にどんなのがRELATEDとして扱われるか、RELATEDを通さないとどんな問題があるか
のび太はよく調べて報告しろ。

970:ジャイアン ◆J1N3P2v8mu/2
10/05/14 21:08:49 c090gNNJ
---ここから

#!/bin/sh

#各チェインを初期化する
/sbin/iptables -F
/sbin/iptables -X
/sbin/iptables -Z
/sbin/iptables -P INPUT ACCEPT
/sbin/iptables -P OUTPUT ACCEPT
/sbin/iptables -P FORWARD ACCEPT


#各チェインのポリシーを設定する
/sbin/iptables -P INPUT DROP
/sbin/iptables -P OUTPUT DROP
/sbin/iptables -P FORWARD DROP


971:ジャイアン ◆J1N3P2v8mu/2
10/05/14 21:12:56 c090gNNJ
#OUTPUTチェインにルールを追加する

#既存の接続とそれに関連する接続を通す
/sbin/iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

#DNSサーバーへの新規接続を通す
/sbin/iptables -A OUTPUT -p udp -d 10.0.2.3 -m udp --dport 53 -m conntrack --ctstate NEW -j ACCEPT

#WWWサーバーへの新規接続を通す
/sbin/iptables -A OUTPUT -p tcp -m multiport --dports 80,443 -m conntrack --ctstate NEW -j ACCEPT

#NTPサーバーへの新規接続を通す
/sbin/iptables -A OUTPUT -p udp -m udp --sport 123 --dport 123 -m conntrack --ctstate NEW -j ACCEPT

#DHCPサーバーへの新規接続を通す
/sbin/iptables -A OUTPUT -p udp -d 10.0.2.2 -m udp --sport 68 --dport 67 -m conntrack --ctstate NEW -j ACCEPT

#メールサーバーへの新規接続を通す
/sbin/iptables -A OUTPUT -p tcp -m multiport --dports 25,110 -m conntrack --ctstate NEW -j ACCEPT

#自分自身への新規接続(loopback)を通す
/sbin/iptables -A OUTPUT -o lo -s 127.0.0.0/255.0.0.0 -d 127.0.0.0/255.0.0.0 -m conntrack --ctstate NEW -j ACCEPT

#pingを通す
/sbin/iptables -A OUTPUT -p icmp -m icmp --icmp-type 8 -m conntrack --ctstate NEW -j ACCEPT

972:ジャイアン ◆J1N3P2v8mu/2
10/05/14 21:14:20 c090gNNJ
#INPUTチェインにルールを追加する

#既存の接続とそれに関連する接続を通す
/sbin/iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

#自分自身からの新規接続(loopback)を通す
/sbin/iptables -A INPUT -i lo -s 127.0.0.0/255.0.0.0 -d 127.0.0.0/255.0.0.0 -m conntrack --ctstate NEW -j ACCEPT

#LAN内部からのpingを通す
/sbin/iptables -A INPUT -p icmp -s 10.0.2.0/255.255.255.0 -m icmp --icmp-type 8 -m conntrack --ctstate NEW -j ACCEPT

---ここまで

973:login:Penguin
10/05/15 12:11:57 GGpTElO6
>970
頻繁に使うIPアドレスはわかりやすい名前の変数に入れておくと、後々メンテするときにパッと見てどんなルールなのか理解しやすいかもしれない。
 SELF=`ifconfig eth0 | grep "inetアドレス" | awk '{print $1}' | sed 's/.*://'`
 DNS='192.168.0.1'
 BCAST='255.255.255.255'
 ANY='0.0.0.0/0'
こんな風に書いておけば$SELFとか$ANYで参照すればいいし。

|#各チェインを初期化する
直後にDROPしているからACCEPTしている3行は必要ないと思う。

あとは以下を最後に入れておくとdmesgでDROPしたログが取れて便利かもしれない。
 iptables -N LOGGING
 iptables -A LOGGING -j LOG --log-level warning --log-prefix "DROP:" -m limit
 iptables -A LOGGING -j DROP
 iptables -A INPUT -j LOGGING
 iptables -A OUTPUT -j LOGGING

974:ジャイアン ◆J1N3P2v8mu/2
10/05/15 21:24:32 1+V3dTpu
$がついてるのは変数というものか。
確かにそうしている例が多かったな。
シェルスクリプトについては、まだ知らないことがたくさんあるから、
今回は単純にコマンドを並べただけにした。
知識が増えるにつれて、少しづつ改良できるようになるといいな。

チェインの初期化についても、のび太の言う通りだが、
こんな風にしている奴が多かったから、俺も真似してみた。
-Fオプションはルールを消すだけでポリシーはそのままだから
なんとかかんとかって言ってた奴がいたが、やっぱり要らないよな。

ログの取り方はドキュメントに少し書いてあった。
同じ内容であふれないように「-m limit」で頻度を調整するみたいだな。
-jオプションで指定するターゲットもたくさんあって訳が分からんのだが、
LOGターゲットについては後で余裕があったら調べてみようかな。

975:ジャイアン ◆J1N3P2v8mu/2
10/05/17 21:56:00 s3cgTh1e
>>970-972のスクリプトでファイヤーヲールを設定できるわけだが、
PCを再起動するとその設定は失われてしまうので
起動する度にスクリプトを実行しないといけないらしい。

976:login:Penguin
10/05/18 10:26:57 cIfMJtXp
>975
URLリンク(forums.ubuntulinux.jp)
ちょっと古いけど参考になりそうな記事。
もしかするとufwに挑戦しないといけないのかもしれない。

977:login:Penguin
10/05/18 10:46:30 rcU8yBdM
もう2年か。DVD再生できなかったとか言ってた頃よりずいぶんスキルアップしたなwwww

978:ジャイアン ◆J1N3P2v8mu/2
10/05/18 21:13:58 e42ouVj1
URLリンク(manpages.ubuntu.com)

/etc/network/if-pre-up.dにスクリプトを置いておくと
ネットワークインターフェイスが起動するときに
それを自動で実行すると書いてある。

これにはrun-partsというのを使っているそうだが、

URLリンク(manpages.ubuntu.com)

ファイル名に制約があるらしい。
大文字、小文字、数字、アンダースコア、ハイフン
だけにしろというようなことが書いてある。

979:ジャイアン ◆J1N3P2v8mu/2
10/05/18 21:52:34 e42ouVj1
network-managerを使ってると都合が悪いというようなことが
ドキュメントにも書いてあったんだが、
>>976の奴の場合は、他に原因があったみたいだな。
ドキュメントの記述が古いのだろうか。
いずれにせよ、俺はnetwork-managerをインストールしてないから関係なさそうだな。

980:野比 のび太
10/05/18 22:19:29 vVeBSaym
g


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch