おまえらが俺様にUbuntuを教えて下さるスレ
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001ジャイアン ◆7w1Xnh.8wI
2008/05/10(土) 02:58:36ID:RB9kW1040937ジャイアン ◆J1N3P2v8mu/2
2010/04/22(木) 21:23:34ID:+O0KR6R810.0.2.0へ(DHCP、DNSとか)
TCPでポート80へ(WWW)
TCPでポート443へ(WWW)
UDPでポート123から123へ(時刻合わせ)
他にメールとかLAN内部からとか
を許可したら事足りるだろうか。
0938ジャイアン ◆J1N3P2v8mu/2
2010/04/23(金) 21:40:16ID:bRUp7oK4Gufwでは機能が不足しているだろうから、
他のものを使うことになりそうだな。
例えば、「ジャイ子がp2pファイル共有で同人漫画を集めたりできないようにしたい」とか、
「通信帯域を制限したい。特に、httpで大きなファイルを転送するのを妨害したい」とか。
0939login:Penguin
2010/04/23(金) 22:51:35ID:sQAbnDPfただものではないだろjk
0940login:Penguin
2010/04/24(土) 02:58:42ID:rcjdpk520941ジャイアン ◆J1N3P2v8mu/2
2010/04/24(土) 21:31:24ID:vAABxVVLhttps://help.ubuntu.com/community/UFW
pingを通す方法が書いてあるみたいだな。
ルールは上にあるものほど優先されるから
順番に気をつけろというようなことが書いてあるようだ。
どうせコマンドラインでやるならiptablesの方がいいだろ。
同じやり方でFedoraとかでも通用するだろうし。
0942login:Penguin
2010/04/24(土) 22:01:18ID:CBvLasudrm@v21g-ubuntu:~$ gnometris
(gnometris:2279): ClutterGLX-CRITICAL **: Unable to find suitable GL visual.
Failed to initialise clutter: Unable to realize the default stage
ってなって起動できないんですけど。
0943login:Penguin
2010/04/24(土) 22:22:17ID:iRoOTI1f0944ジャイアン ◆J1N3P2v8mu/2
2010/04/25(日) 22:32:10ID:JcQ6doaPhttps://help.ubuntu.com/community/IptablesHowTo
http://manpages.ubuntu.com/manpages/lucid/man8/iptables.8.html
難しいうえにやたらと長いな。
やる気がなくなるぜ。
iptablesのスレも見てるんだが、iptablesコマンドを使うことだけは分かった。
のび太、ご苦労だったな。
iptablesをいじる前に、Gufwで作ったルールを無効にしておかないといけないな。
「有効にする」のチェックを外して再起動するだけでいいみたいだ。
0945ジャイアン ◆J1N3P2v8mu/2
2010/04/26(月) 21:22:58ID:Qb5zDx8Qこれを実行すると現在の状態が表示されるとか。
実際にやってみると
INPUT、FORWARD、OUTPUTというチェインがあって、
それぞれでポリシーは許可、ルールなし
となっているようだな。
0946ジャイアン ◆J1N3P2v8mu/2
2010/04/27(火) 20:42:21ID:ylKXayBp「チェイン」の概念はなんだかよく分からんが、
「特定のルールの集合」みたいな感じか。
受信のルールをINPUTチェインに
送信のルールをOUTPUTチェインに追加すればいいみたいだな。
0947login:Penguin
2010/04/27(火) 22:58:16ID:EcVh2KoA0948login:Penguin
2010/04/27(火) 23:05:19ID:R0QkNSP2まぁ、ぃぬ板有数の良スレに育て上げたおぬしに今更な事だが。
0949login:Penguin
2010/04/27(火) 23:12:24ID:7tMw3Ate>>236あたり参照
0950ジャイアン ◆J1N3P2v8mu/2
2010/04/28(水) 20:57:53ID:MlpD3Q+Dこれの例外となるルールを追加していくわけだな。
必要な通信だけを通すようにするには、
ポリシーで全部遮断して個別のルールで通すものを指定する
ということになるな。
次はiptablesコマンドの使い方を調べるか。
0951ジャイアン ◆J1N3P2v8mu/2
2010/04/29(木) 21:00:36ID:yAMyzSoIsudo iptables -P チェイン ターゲット
「チェイン」はINPUT、FORWARD、OUTPUTのいずれかだな。
「ターゲット」は通信をどうするかということらしい。
ACCEPTは通す。DROPはこっそり遮断する。
だから、通信を全部遮断するには
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT DROP
だな。
0952ジャイアン ◆J1N3P2v8mu/2
2010/04/30(金) 21:10:33ID:m+ldm6Hcsudo iptables -A チェイン ルールの仕様
「チェイン」はINPUT、FORWARD、OUTPUTのいずれかだな。
「ルールの仕様」はうんざりするな。ドキュメントにも「憶えなくていいお」って書いてある。
後で見て分かるようにしておくのが大事だな。
-p プロトコルを指定する。tcp、udp、icmp、allのいずれか。allが既定値。
-s 送信元を指定する。IPアドレスで。「! -s」は「指定したアドレス以外」という意味。
-d 送信先を指定する。同上。
-j パケットが条件に合った場合のターゲットを指定する。ACCEPTかDROP。他のは知らん。
-i 受信することになるインターフェイス名を指定する。省略した場合、任意のインターフェイス。
-o 送信することになるインターフェイス名を指定する。
-m 条件をもっと詳しく指定する。後回し。
0953login:Penguin
2010/04/30(金) 21:22:04ID:EaQXy4cC0954ジャイアン ◆J1N3P2v8mu/2
2010/04/30(金) 22:09:09ID:m+ldm6Hc例えば
sudo iptables OUTPUT -d 10.0.2.0/255.255.255.0 -j ACCEPT
とすると、送信先がLAN内部ならば通すというルールを
OUTPUTチェインに追加するわけだな。
さらにポート番号を指定したいとかいうような場合は
-mで条件を拡張するわけだが、数が多くてやってられん。
頭が混乱しないように使いそうなやつだけメモしておくか。
0955login:Penguin
2010/05/01(土) 14:48:32ID:8PzX/j98ネットで探せば例が転がっているんじゃないかと
0956ジャイアン ◆J1N3P2v8mu/2
2010/05/03(月) 21:30:34ID:1CX8aWeJ実行すべきコマンドを列挙したテキストファイルのことだそうだな。
シェルスクリプトを実行すると、書いてあるコマンドが順に実行されるらしい。
ファイヤーウォールを設定するには
iptablesコマンドを何度も実行することになるから、
シェルスクリプトを作ると都合がいいみたいだな。
0957ジャイアン ◆J1N3P2v8mu/2
2010/05/04(火) 21:11:35ID:HLpsuDls-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は無効な接続。
0958ジャイアン ◆J1N3P2v8mu/2
2010/05/04(火) 22:26:13ID:HLpsuDlssudo iptables -A OUTPUT -p tcp -m conntrack --ctstate NEW -m multiport --dports 80,443 ACCEPT
を実行すれば、TCPでポート80または443への新規接続を許可するルールを
OUTPUTチェインに追加することになるだろう。
なるべく接続の状態も指定した方が安全になるらしい。
ブロードバンドルーターに「SPI」という機能がついてるんだが、
「-m conntrack --ctstate」はこれと同じようなことのような感じだな。
0959login:Penguin
2010/05/04(火) 22:36:22ID:dVx748niサーバならINPUTチェインを、ルーティングもするなら
FORWARDチェインを弄ることになる。
0960ジャイアン ◆J1N3P2v8mu/2
2010/05/05(水) 20:33:48ID:VmXl8nxkよく知らんが、UPnPとかいう仕組みでポートを勝手に使えるらしいから
INPUTチェインでの制限だけでは十分じゃないかもしれないぞ。
0961ジャイアン ◆J1N3P2v8mu/2
2010/05/05(水) 21:09:17ID:VmXl8nxk-m connbytes、-m connlimit、-m quota
転送量や接続数を制限する。
-m limit、-m hashlimit
ルールが適用される頻度を制限する。
-m mac
送信元のMACアドレスを指定する。
-m owner
通信しようとしているユーザーを指定する。
-m recent
悪いことをしようとした奴らを締め出すのに使えるらしい。
-m time
時間を指定する。
0962ジャイアン ◆J1N3P2v8mu/2
2010/05/05(水) 21:27:49ID:VmXl8nxksudo 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内部以外とは通信できなくなるのかな。
0963ジャイアン ◆J1N3P2v8mu/2
2010/05/06(木) 20:49:17ID:wRsOF2vt/etc/network/interfacesを見ればだいたい分かるだろう。
ifconfigコマンドを実行すると
稼働中のネットワークインターフェイスが表示されるので
これも参考になるだろう。
0964ジャイアン ◆J1N3P2v8mu/2
2010/05/08(土) 20:54:40ID:LQrEbcm1-Fオプションでチェイン内の全ルールを消去する。
何かおかしくなったときに使えそうだな。
-Zオプションですべてのチェインのパケットカウンタ、バイトカウンタを0にする。
各ルールが適用されたパケット数、バイト数を記録してるんだな。
カウンタの数値は「-L -v」オプションで見られるらしい。
0965ジャイアン ◆J1N3P2v8mu/2
2010/05/09(日) 21:06:00ID:IU09vcKg>>962のようなやつは、通信を許可するルールよりも
上にしておかないと意味がないらしい。
よく使うルールはなるべく上の方にしておくと
CPUの仕事が少し減るとかなんとかで、
パケットカウンタも参考にして順番を決めるんだとか。
0966ジャイアン ◆J1N3P2v8mu/2
2010/05/09(日) 21:53:40ID:IU09vcKg>>955にあるとおり、シェルスクリプトを使うのが普通みたいだな。
送信は
既存の接続とこれに関連のある接続を通す
DNS、DHCP、NTP、webとメール、ループバック、pingの新規接続を通す
他は通さない
受信は
既存の接続とこれに関連のある接続を通す
ループバック、LAN内部からのpingの新規接続を通す
他は通さない
という方針でやってみよう。
DHCPサーバーとDNSサーバーのアドレスは>>927だ。
0967ジャイアン ◆J1N3P2v8mu/2
2010/05/10(月) 20:47:26ID:c5Akoipn× 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から全部読み返してみて、どこがどう間違っているか指摘しろ。
0968login:Penguin
2010/05/10(月) 20:52:45ID:o8QQ0v0D0969ジャイアン ◆J1N3P2v8mu/2
2010/05/14(金) 21:06:05ID:c090gNNJほとんど全部、誰かが作ったやつのコピペだ。
のび太はよく検証しておかしなところがあったらおしえろ。
INPUTもOUTPUTも、やりとりするパケットの大半はESTABLISHEDになるみたいだから、
これを通すルールを一番上にした。
manによるとRELATEDはFTPデータ転送とかICMPエラーとかで使われるらしいが、
他にどんなのがRELATEDとして扱われるか、RELATEDを通さないとどんな問題があるか
のび太はよく調べて報告しろ。
0970ジャイアン ◆J1N3P2v8mu/2
2010/05/14(金) 21:08:49ID: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
0971ジャイアン ◆J1N3P2v8mu/2
2010/05/14(金) 21:12:56ID:c090gNNJ#既存の接続とそれに関連する接続を通す
/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
0972ジャイアン ◆J1N3P2v8mu/2
2010/05/14(金) 21:14:20ID:c090gNNJ#既存の接続とそれに関連する接続を通す
/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
---ここまで
0973login:Penguin
2010/05/15(土) 12:11:57ID:GGpTElO6頻繁に使う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
0974ジャイアン ◆J1N3P2v8mu/2
2010/05/15(土) 21:24:32ID:1+V3dTpu確かにそうしている例が多かったな。
シェルスクリプトについては、まだ知らないことがたくさんあるから、
今回は単純にコマンドを並べただけにした。
知識が増えるにつれて、少しづつ改良できるようになるといいな。
チェインの初期化についても、のび太の言う通りだが、
こんな風にしている奴が多かったから、俺も真似してみた。
-Fオプションはルールを消すだけでポリシーはそのままだから
なんとかかんとかって言ってた奴がいたが、やっぱり要らないよな。
ログの取り方はドキュメントに少し書いてあった。
同じ内容であふれないように「-m limit」で頻度を調整するみたいだな。
-jオプションで指定するターゲットもたくさんあって訳が分からんのだが、
LOGターゲットについては後で余裕があったら調べてみようかな。
0975ジャイアン ◆J1N3P2v8mu/2
2010/05/17(月) 21:56:00ID:s3cgTh1ePCを再起動するとその設定は失われてしまうので
起動する度にスクリプトを実行しないといけないらしい。
0976login:Penguin
2010/05/18(火) 10:26:57ID:cIfMJtXpttps://forums.ubuntulinux.jp/viewtopic.php?pid=26906
ちょっと古いけど参考になりそうな記事。
もしかするとufwに挑戦しないといけないのかもしれない。
0977login:Penguin
2010/05/18(火) 10:46:30ID:rcU8yBdM0978ジャイアン ◆J1N3P2v8mu/2
2010/05/18(火) 21:13:58ID:e42ouVj1/etc/network/if-pre-up.dにスクリプトを置いておくと
ネットワークインターフェイスが起動するときに
それを自動で実行すると書いてある。
これにはrun-partsというのを使っているそうだが、
http://manpages.ubuntu.com/manpages/lucid/en/man8/run-parts.8.html
ファイル名に制約があるらしい。
大文字、小文字、数字、アンダースコア、ハイフン
だけにしろというようなことが書いてある。
0979ジャイアン ◆J1N3P2v8mu/2
2010/05/18(火) 21:52:34ID:e42ouVj1ドキュメントにも書いてあったんだが、
>>976の奴の場合は、他に原因があったみたいだな。
ドキュメントの記述が古いのだろうか。
いずれにせよ、俺はnetwork-managerをインストールしてないから関係なさそうだな。
0980野比 のび太
2010/05/18(火) 22:19:29ID:vVeBSaym0981ジャイアン ◆J1N3P2v8mu/2
2010/05/19(水) 21:05:40ID:wnbKF00Rsudo cp load-firewall-rules /etc/network/if-pre-up.d
スクリプトとして実行可能にする
sudo chmod 744 /etc/network/if-pre-up.d/load-firewall-rules
これで起動時に自動でload-firewall-rulesが実行されて
ファイヤーヲールが設定されるだろう。
0982ジャイアン ◆J1N3P2v8mu/2
2010/05/19(水) 21:20:42ID:wnbKF00Rsudo iptables -L -v -n
で確認したところ、ルールが重複しているのに気づいた。
ネットワークインターフェイスはloとeth0の2つがあるから、
load-firewall-rulesが2回実行されるせいだろうか。
のび太は原因を調べて報告しろ。
ルールの初出の順番が変わらなければたいした影響もないだろうが、
気に入らないのでどうにかしたいところだ。
0983login:Penguin
2010/05/20(木) 00:40:47ID:dmWfHf7xジャイアンと共に歩んできたこの2年
お前はずっと「心の友」だったんだぜ!
これからも細く、長く、うぶんちゅと共にあらんことを
0984login:Penguin
2010/05/20(木) 02:05:02ID:YqDTyTR20985ジャイアン ◆J1N3P2v8mu/2
2010/05/20(木) 21:48:26ID:DPZTmPfyドキュメントに書いてあるから、これを試してみよう。
http://manpages.ubuntu.com/manpages/lucid/man8/iptables-save.8.html
http://manpages.ubuntu.com/manpages/lucid/man8/iptables-restore.8.html
iptablesのルールを保存、復元するのに使うコマンドらしい。
iptables-saveでルールをファイルに保存しておいて、
そのファイルを使ってルールを復元するスクリプトを
/etc/network/if-preup.dに置いておくわけだな。
>>976と同じ方法だ。これはうまくいったみたいだから期待できそうだな。
0986ジャイアン ◆J1N3P2v8mu/2
2010/05/21(金) 20:39:39ID:uh6zHexKsudo mv /etc/network/if-pre-up.d/load-firewall-rules ~/
改めてファイヤーヲールを設定する。
sudo load-firewall-rules
その設定をsaved-firewall-rulesに保存して
sudo iptables-save > saved-firewall-rules
これを/etc/networkにコピーする
sudo cp saved-firewall-rules /etc/network
/etc/network/saved-firewall-rulesから設定を復元するスクリプトを作って
それを/etc/network/pre-up.dにコピーして実行可能にする。
このスクリプトの内容は
#!/bin/sh
/sbin/iptables-restore < /etc/network/saved-firewall-rules
0987ジャイアン ◆J1N3P2v8mu/2
2010/05/21(金) 21:08:39ID:uh6zHexK何だか知らんが、とりあえずよしとするか。
ここまでの内容をまとめると
・iptablesコマンドでルールを設定する。(>>945,951-952,957,961,964,965,970-972)
・再起動するとルールは消えてしまうので、シェルスクリプトで起動時に自動でルールを設定する。(>>975)
・/etc/network/if-pre-up.dにルールを復元するスクリプトを置いておくと
インターフェイスが起動するときに実行される。(>>978)
・iptables-saveコマンドでiptablesの設定を書き出してファイルに保存できる。(>>985-986)
これには「リダイレクト」という機能を使うといい。
・このファイルとiptables-restoreコマンドでルールを復元できる。リダイレクトを使う。(>>985-986)
レス数が950を超えています。1000を超えると書き込みができなくなります。