ソフトウェアを使用して、どのプログラムがインターネットに接続するかを制御したいと思います。この動作は「ファイアウォール」という言葉に関連していることは知っていますが、誰かがパーソナルファイアウォールを要求すると、一部のLinuxユーザーは非常に怒っています。そのようなプログラムを要求してあなたを怒らせたくありません。
Windowsでパーソナルファイアウォールが約束する「ポートを保護する」などのことはしたくありません。 iptables
を調べましたが、要件に適合していません。
私はここで素晴らしい答えを見ました( "ワインアプリケーションのインターネットアクセスをブロックする方法" )が、これを設定するのは非常に不快です。
インターネットにアクセスできるかどうかを各プログラムに尋ねるソフトウェアはありますか?
ドイツのUbuntuフォーラムには Perlスクリプト があります( Googleに翻訳された英語 )それはそれをしているようです。私はそれを試したことはなく、スクリプトを詳しく調べませんでしたが、多分それはあなたのために動作します。説明はドイツ語のみであるため、翻訳サービス(Google翻訳など。上記を参照)が必要になる場合があります。
あなたがまだこの種のアプリケーションを探している場合、私は現在そのアプリケーションを正確に開発しています: http://douaneapp.com/https://gitlab.com/douaneapp/ Douane
私のアプリケーションは未知のアプリケーションをブロックし(承認されたアプリケーションの新しいバージョンはブロックされます)、トラフィックを許可するか拒否するかを尋ねます。
ウェブサイトを見てください;-)
I found 問題を解決する便利なソリューション。インターネットの使用を決して許可されないグループを作成し、このグループのメンバーとしてプログラムを開始します。
グループno-internet
を作成します。 notこのグループに参加する
Sudo addgroup no-internet
グループno-internet
に属するすべてのプロセスがネットワークを使用するのを防ぐルールをiptablesに追加します(ip6tables
を使用してIPv6トラフィックも防ぎます)
Sudo iptables -A OUTPUT -m owner --gid-owner no-internet -j DROP
YOURCOMMAND
の代わりに Sudo -g no-internet YOURCOMMAND
を実行します。Sudoを使用するラッパースクリプトを簡単に作成できます。以下を追加することにより、パスワードプロンプトを削除できます。
%Sudo ALL=(:no-internet) NOPASSWD: ALL
または、Sudo visudo
と同様の何か
iptables-save
およびiptables-restore
を使用して、ファイアウォールルールを永続化します。
Ubuntuにはファイアウォール ufw
が既にありますが、デフォルトでは無効になっています。コマンドラインまたはフロントエンド gufw で有効にして使用できます。これはUbuntu Software Centerから直接インストールできます。 。
特定のアプリケーションへのインターネットアクセスをブロックする必要がある場合は、 LeopardFlower を試すことができます。これはまだベータ版であり、Ubuntuソフトウェアセンターでは利用できません。
別のユーザーの下でプログラムを実行すると、自分ではなくそのユーザーの構成ファイルが使用されます。
ファイアウォールルールを変更する必要のないソリューションを次に示します。ユーザーがmy_user
で、実行するアプリがmy_app
である環境を変更して、同じユーザー(Sudo
経由)で実行します。
# run app without access to internet
Sudo unshare -n Sudo -u my_user my_app
詳細については、 man unshare
および この回答 を参照してください。
GUIファイアウォールを探している場合、 OpenSnitch で良い結果が得られています。ubuntuリポジトリにはまだ存在せず、実稼働レベルとは呼びませんが、 github ページは私のために働いた。
@psusi:人々が悪い情報や役に立たない情報に手を出さないことを本当に願っています。 IPTablesではこれを行うことができますので、私はそれを「無謀」とはほとんど考えません。ユースケースを理解せずに「NO」と言うだけでは、やや気になりません。 http://www.debian-administration.org/article/120/Application_level_firewalling
Bodhi.zazenの編集
注-このオプションは2005年にIPTABLESから削除され、この回答が投稿される8年前に削除されました
参照- http://www.spinics.net/lists/netfilter/msg49716.html
コミット34b4a4a624bafe089107966a6c56d2a1aca026d4著者:Christoph Hellwig日付:Sun Aug 14 17:33:59 2005 -0700
[NETFILTER]:ipt {、6}所有者のtasklist_lockの不正使用を削除
修正不可能なbroken以来cmd/sid/pidマッチングを削除し、tasklist_lockへの変更をロックする方法を妨げます。
Signed-off-by: Christoph Hellwig <hch@xxxxxx> Signed-off-by: Patrick McHardy <kaber@xxxxxxxxx> Signed-off-by: David S. Miller <davem@xxxxxxxxxxxxx>
私は here が良い解決策として投稿された解決策を見つけました。インターネットアクセスがallowedであるユーザーグループを作成し、このグループに対してのみアクセスを許可するファイアウォールルールを設定する必要があります。アプリケーションがインターネットにアクセスする唯一の方法は、このグループのメンバーによって実行される場合です。 Sudo -g internet -s
を使用してシェルを開くと、このグループの下でプログラムを実行できます。
上記でリンクした投稿の内容を要約すると、
シェルに次を入力して、「インターネット」グループを作成します。Sudo groupadd internet
以下のスクリプトを実行するユーザーが/etc/group
のSudo
グループに追加されていることを確認してください。このファイルを変更することになった場合、以下のスクリプトが機能する前にログアウトしてからログインし直す必要があります。
以下を含むスクリプトを作成して実行します。
#!/bin/sh
# Firewall apps - only allow apps run from "internet" group to run
# clear previous rules
Sudo iptables -F
# accept packets for internet group
Sudo iptables -A OUTPUT -p tcp -m owner --gid-owner internet -j ACCEPT
# also allow local connections
Sudo iptables -A OUTPUT -p tcp -d 127.0.0.1 -j ACCEPT
Sudo iptables -A OUTPUT -p tcp -d 192.168.0.1/24 -j ACCEPT
# reject packets for other users
Sudo iptables -A OUTPUT -p tcp -j REJECT
# open a Shell with internet access
Sudo -g internet -s
上記のスクリプトを実行すると、インターネットにアクセスできるアプリケーションを実行できるシェルが作成されます。
このスクリプトは、ファイアウォールルールを保存および復元することは何もしないことに注意してください。 iptables-save
およびiptables-restore
Shellコマンドを使用するようにスクリプトを変更することもできます。
別のオプションはfirejailです。アプリケーションがネットワークを認識できるかどうかを制御するサンドボックス内でアプリケーションを実行します。
firejail --net=none firefox
このコマンドは、インターネットにアクセスせずにFirefoxブラウザを起動します。 Ubuntuリポジトリのfirejailディストリビューションはoutdatedであることに注意してください-firejailホームページから最新のLTSバージョンをより良くダウンロードしてください。
ヒョウの花 を試してください。 GUIとアプリケーションごとの制限があります。
カーネルバージョン2.6.24までのiptablesにありました。2.x-2.6.24マシンを実行していて、カーネルが準拠している場合は、それを実行できます。何らかの理由で彼らはそれを取り出したので、マイクロソフトではない。 http://cateee.net/lkddb/web-lkddb/IP_NF_MATCH_OWNER.html
良くも悪くも、Linuxは異なるアプローチを使用します。この機能を提供するシンプルなグラフィカルインターフェイスはありません。このトピックに関する多くの議論がインターネット上にあり、グーグル検索で興味深い議論を見つけることができます。議論は興味深いものの、これまでのところ、この機能を記述して維持したいプログラマーの専用グループはいませんでした。
Linuxでこの機能を提供するツールは、Apparmor、Selinux、およびTomoyoです。
これらのツールはどれも簡単に習得できず、すべてに長所と短所があります。 SELinuxの学習曲線は急勾配ですが、個人的にはSELinuxが好きです。
見る:
http://www.linuxbsdos.com/2011/12/06/3-application-level-firewalls-for-linux-distributions/
すでに参照されているアプリケーションleopardflowerがありました(ある)。ステータス/メンテナンスがわかりません。
いいえ、できません。また、ファイアウォールの従来の定義の一部ではありません。これは、Microsoftが根本的に壊れたOSのセキュリティ問題について論文を発表しようとしてかなり最近思いついたものです。許可されていないプログラムは、別のプログラムを実行するだけで、その方法でアクセスできるため、Linuxコミュニティでは無能で実行不能と見なされます。
プログラムを実行するときにネットワーク上でプログラムが実行していることが気に入らない場合は、そのプログラムを実行しないでください。