GNU/Linux >> Linux の 問題 >  >> Linux

ファイアウォールでLinuxを強化する

たとえテレビのサイバー犯罪ドラマのプロットデバイスとしてだけであっても、ファイアウォールについては誰もが耳にします。多くの人は、自分のコンピュータが(おそらく)ファイアウォールを実行していることも知っていますが、必要に応じてファイアウォールを制御する方法を理解している人はほとんどいません。

ファイアウォールは不要なネットワークトラフィックをブロックしますが、ネットワークが異なれば脅威レベルも異なります。たとえば、自宅にいる場合は、公共のWiFiを使用して地元のカフェにいるときよりも、ネットワーク上の他のコンピューターやデバイスを信頼している可能性があります。コンピュータが信頼できるネットワークと信頼できないネットワークを区別することを期待できます。または、セキュリティ設定を自分で管理するか、少なくとも確認する方法を学ぶことができます。

ファイアウォールの仕組み

その他のLinuxリソース

  • Linuxコマンドのチートシート
  • 高度なLinuxコマンドのチートシート
  • 無料のオンラインコース:RHELの技術概要
  • Linuxネットワーキングのチートシート
  • SELinuxチートシート
  • Linuxの一般的なコマンドのチートシート
  • Linuxコンテナとは何ですか?
  • 最新のLinux記事

ネットワーク上のデバイス間の通信は、ポートと呼ばれるゲートウェイを介して行われます。 。このコンテキストでは、ポートはUSBポートやHDMIポートのような物理的な接続を意味するものではありません。ネットワーク用語では、ポートは完全に仮想的な概念であり、特定の種類のデータがコンピューターに到着したり、コンピューターから出発したりするための経路を表します。このシステムは、「接続」や「出入り口」など、何とでも呼ばれる可能性がありますが、少なくとも1981年にはポートと呼ばれ、現在使用されている名前です。重要なのは、どのポートにも特別なことは何もないということです。これらは、データ転送が発生する可能性のあるアドレスを指定するための単なる方法です。

1972年に、ポート番号(当時は「ソケット」と呼ばれていました)のリストが公開され、それ以降、特定の種類のトラフィックの管理に役立つ有名な標準ポート番号のセットに進化しました。たとえば、Webサイトにアクセスすると、ポート80と443に毎日アクセスします。これは、インターネット上のほとんどの人が、暗黙的または明示的に、データがこれらのポートを介してWebサーバーから転送されることに同意しているためです。この理論をテストするには、Webブラウザーを開き、URLに非標準のポートが追加されたWebサイトに移動します。たとえば、 example.com:42に移動した場合 、example.comがポート42でウェブサイトを提供していないため、リクエストは拒否されました。

ポート80で同じWebサイトに再度アクセスすると、期待どおりにWebサイトが表示されます。 :80でポート80を指定できます URLの最後にありますが、ポート80はHTTPトラフィックの標準ポートであるため、Webブラウザはデフォルトでポート80を想定しています。

Webサーバーのように、コンピューターが特定のポートでのトラフィックを予期している場合、トラフィック用にポートを開いておくことが許容されます(必要です)。危険なのは、トラフィックを期待する理由がないポートを開いたままにしておくことです。これこそがファイアウォールの目的です。

firewalldをインストール

ファイアウォール構成には多くのインターフェースがあります。この記事では、 firewalldについて説明します。 、デスクトップ上のNetworkManagerおよびfirewall-cmdと統合します ターミナルで。多くのLinuxディストリビューションには、これらのツールがインストールされた状態で出荷されます。そうでない場合は、この記事をファイアウォール管理の一般的なアドバイスとして使用するものに適用するか、ファイアウォールをインストールすることができます。 。

たとえば、Ubuntuでは、ユニバースを有効にする必要があります リポジトリ、デフォルトの ufwを非アクティブ化します ファイアウォールを設定してから、ファイアウォールをインストールします :

$ sudo systemctl disable ufw
$ sudo add-apt-repository universe
$ sudo apt install firewalld

Fedora、CentOS、RHEL、OpenSUSE、およびその他の多くには、 firewalldが含まれます デフォルトで。

ディストリビューションに関係なく、ファイアウォールを有効にするには、ファイアウォールがアクティブであり、起動時にロードされるように設定されている必要があります。ファイアウォールのメンテナンスについて考える必要が少ないほど、優れています。

$ sudo systemctl enable --now firewalld
ネットワークマネージャーでゾーンを選択

あなたはおそらく毎日多くの異なるネットワークに接続しています。あなたは職場のネットワーク、カフェのネットワーク、そして自宅のネットワークにいます。パソコンは、他のネットワークよりも頻繁に使用しているネットワークを検出できますが、信頼できるネットワークはわかりません。

ファイアウォールゾーン 開閉するポートを決定するプリセットが含まれています。ゾーンを使用すると、現在使用しているネットワークに最も適したポリシーを選択できます。

利用可能なゾーンのリストを表示するには、[アプリケーション]メニューにあるNetwork Manager接続エディタを開くか、 nm-connection-editor&を使用して開きます。 コマンド。

ネットワーク接続のリストから、現在のネットワークをダブルクリックします。

表示されるネットワーク構成ウィンドウで、[全般]タブをクリックします。

[全般]パネルで、[ファイアウォールゾーン]の横にあるドロップダウンメニューをクリックして、使用可能なすべてのゾーンのリストを表示します。

この同じリストは、次のターミナルコマンドで取得できます:

$ sudo firewall-cmd --get-zones

ゾーンのタイトルは、設計者が作成時に何を念頭に置いていたかを示していますが、次のターミナルコマンドを使用して任意のゾーンの詳細を取得できます。

$ sudo firewall-cmd --zone work --list-all
work
  target: default
  icmp-block-inversion: no
  interfaces:
  sources:
  services: ssh dhcpv6-client
  ports:
  protocols:
  [...]

この例では、作業 ゾーンは、SSHおよびDHCPv6クライアントの着信トラフィックを許可するように構成されていますが、ユーザーによって明示的に要求されていない他の着信トラフィックはすべてドロップします。 (言い換えれば、仕事 ゾーンは、WebサイトにアクセスしたときにHTTP応答トラフィックをブロックしませんが、ブロックします。 ポート80でHTTPリクエストを拒否します。)

各ゾーンを表示して、各ゾーンで許可されているトラフィックに慣れてください。最も一般的なものは次のとおりです。

  • 仕事: ほとんど信頼できるネットワーク上でこれを使用します。 SSH、DHCPv6、およびmDNSが許可されており、必要に応じてさらに追加できます。このゾーンは、日常のオフィス要件に基づいたカスタム作業環境の開始点となることを目的としています。
  • 公開: 信頼できないネットワークの場合。このゾーンは作業ゾーンと同じですが、おそらく、作業ゾーンと同じ例外を追加することはありません。
  • ドロップ: すべての着信接続は、応答なしでドロップされます。これは、発信ネットワーク接続のみが可能であるため、ネットワークを完全に遮断せずに取得できるステルスモードに限りなく近いです(ただし、カジュアルなポートスキャナーでも発信トラフィックからコンピューターを検出できるため、このゾーンをクローキングと間違えないでください)端末)。これは、パブリックWiFiの場合は間違いなく最も安全なゾーンであり、ネットワークが敵対的であると信じる理由がある場合は間違いなく最高です。
  • ブロック: すべての着信接続は、要求されたポートが禁止されていることを宣言するメッセージとともに拒否されます。開始するネットワーク接続のみが可能です。これはドロップゾーンの「フレンドリー」バージョンです。これは、着信トラフィック用に開いているポートがない場合でも、ポートが開始されていない接続を冗長に拒否するためです。
  • ホーム: ネットワーク上の他のコンピューターを信頼する場合にこれを使用します。選択した着信接続のみが受け入れられ、必要に応じてさらに追加できます。
  • 内部: 作業ゾーンと同様に、これは、他のコンピューターをほとんど信頼している内部ネットワークを対象としています。必要に応じてより多くのポートとサービスを開くことができますが、それでも作業ゾーンとは異なるルールセットを維持できます。
  • 信頼できる: すべてのネットワーク接続が受け入れられます。トラブルシューティングや絶対に信頼できるネットワークでの使用に適しています。
ネットワークへのゾーンの割り当て

作成する任意のネットワーク接続にゾーンを割り当てることができます。さらに、各ネットワークに接続する各ネットワークインターフェイス(イーサネットケーブル、WiFiなど)に異なるゾーンを割り当てることができます。

目的のゾーンを選択し、[保存]ボタンをクリックして変更を確定します。

ゾーンをネットワークインターフェイスに割り当てる習慣を身に付ける最も簡単な方法は、最も頻繁に使用するネットワークを利用することです。ホームゾーンをホームネットワークに割り当て、ワークゾーンをワークネットワークに割り当て、パブリックネットワークをお気に入りの図書館またはカフェネットワークに割り当てます。

通常のすべてのネットワークにゾーンを割り当てたら、新しいカフェであろうと仲間のホームネットワークであろうと、次に参加する新しいネットワークにゾーンを割り当てるように努めます。ゾーンを割り当てることは、ネットワークがすべて平等ではなく、Linuxを実行しているという理由だけで、他の誰よりも安全ではないという自分の認識を強化するための最良の方法です。

デフォルトゾーン

新しいネットワークに参加するたびにゾーンの入力を求めるのではなく、firewalldは不明なネットワークにデフォルトのゾーンを割り当てます。ターミナルを開き、次のコマンドを入力して、デフォルトのゾーンを取得します。

$ sudo firewall-cmd --get-default
public

この例では、パブリックゾーンがデフォルトです。パブリックゾーンは非常に制限されていることが予想されるため、不明なネットワークを割り当てるのは非常に安全なゾーンです。ただし、代わりに独自のデフォルトを設定できます。

たとえば、ほとんどの人よりも妄想的である場合、または頻繁にネットワークに不信感を抱く理由があることがわかっている場合は、デフォルトとして非常に制限の厳しいゾーンを割り当てることができます。

$ sudo firewall-cmd --set-default-zone drop
success
$ sudo firewall-cmd --get-default
drop

これで、参加する新しいネットワークは、手動で制限の少ないものに変更しない限り、ドロップゾーンルールの対象になります。

ポートとサービスを開いてゾーンをカスタマイズする

Firewalldの開発者は、ゾーン定義がすべての異なるネットワークのニーズと存在する信頼のレベルを満たすことを意図していません。これらは、使用およびカスタマイズするための出発点にすぎません。

生成することがわかっているネットワークアクティビティの種類に基づいてポートを開閉できるようにするために、ファイアウォールについて詳しく知る必要はありません。

事前定義されたサービス

ファイアウォールにアクセス許可を追加する最も簡単な方法は、事前定義されたサービスを追加することです。厳密に言えば、ファイアウォールはポート番号とプロトコルタイプを理解しているため、ファイアウォールが知っている限り、「サービス」のようなものはありません。ただし、firewalldは、標準と規則に基づいたポートとプロトコルのコレクションを提供します。

たとえば、Web開発者であり、ローカルネットワーク上でコンピューターを開いて、作成しているWebサイトを同僚が見られるようにする場合は、 httpを追加します。 およびhttps サービス。ゲーマーであり、ギルド用のオープンソースのつぶやきボイスチャットサーバーを実行している場合は、つぶやきを追加します。 サービス。このコマンドで表示できる他の多くのサービスが利用可能です:

$ sudo firewall-cmd --get-services
amanda-client amanda-k5-client bacula bacula-client \
bgp bitcoin bitcoin-rpc ceph cfengine condor-collector \
ctdb dhcp dhcpv6 dhcpv6-client dns elasticsearch \
freeipa-ldap freeipa-ldaps ftp [...]

必要なサービスが見つかったら、それを現在のファイアウォール構成に追加します(例:

)。
$ sudo firewall-cmd --add-service murmur

このコマンドは、デフォルトゾーン内の特定のサービスに必要なすべてのポートとプロトコルを開きます 、ただし、コンピュータを再起動するか、ファイアウォールを再起動するまでのみ。変更を永続的にするには、-永続的を使用します フラグ:

$ sudo firewall-cmd --add-service murmur --permanent

デフォルト以外のゾーンに対してコマンドを発行することもできます:

$ sudo firewall-cmd --add-service murmur --permanent --zone home
ポート

場合によっては、firewalldのサービスで定義されていないもののトラフィックを許可したいことがあります。一般的なサービス用に非標準のポートを設定している場合や、任意のポートを開く必要がある場合があります。

たとえば、オープンソースの仮想卓上ソフトウェアMapToolを実行している可能性があります。 MapToolサーバーを実行していて、MapToolを実行するポートを管理する業界標準がないため、使用するポートを決定してから、ファイアウォールに「穴を開けて」、そのポートでのトラフィックを許可できます。

プロセスは基本的にサービスの場合と同じです:

$ sudo firewall-cmd --add-port 51234/tcp

このコマンドは、ポート51234をデフォルトゾーンの着信TCP接続に開きます 、ただし、コンピュータを再起動するか、ファイアウォールを再起動するまでのみ。変更を永続的にするには、-永続的を使用します フラグ:

$ sudo firewall-cmd --add-port 51234/tcp --permanent

デフォルト以外のゾーンに対してコマンドを発行することもできます:

$ sudo firewall-cmd --add-port 51234/tcp --permanent --zone home

コンピューターを通過するトラフィックを許可することは、ルーターのファイアウォールを通過させるトラフィックを許可することとは異なります。ルーターには、おそらく、この記事の範囲外である、独自の埋め込みファイアウォール用の異なるインターフェイスがあります(原則は同じです)。

> ポートとサービスの削除

--permanent を使用しない限り、サービスまたはポートが不要になった場合は、ファイアウォールを再起動して変更をクリアできます。 フラグ。

変更を永続的にした場合は、-remove-portを使用してください または--remove-service フラグ:

$ sudo firewall-cmd --remove-port 51234/tcp --permanent

コマンドでゾーンを指定することにより、デフォルトゾーン以外のゾーンからポートとサービスを削除できます。

$ sudo firewall-cmd --remove-service murmur --permanent --zone home
カスタムゾーン

Firewalldが提供するデフォルトのゾーンを使用して悪用することができますが、独自のゾーンを作成する自由もあります。たとえば、ゲームに固有のゾーンを作成することが理にかなっている場合は、ゾーンを作成して、ゲーム中にのみそのゾーンに切り替えることができます。

新しい空のゾーンを作成するには、ゲームという新しいゾーンを作成します 新しいゾーンがアクティブになるようにファイアウォールルールをリロードします:

$ sudo firewall-cmd --new-zone game --permanent
success
$ sudo firewall-cmd --reload

作成してアクティブにしたら、ゲームナイトのために開く必要のあるすべてのサービスとポートを使用してカスタマイズできます。

勤勉

今日からファイアウォール戦略について考え始めましょう。ゆっくりと始めて、あなたにとって意味のあるいくつかの正しいデフォルトを構築してください。ファイアウォールについて考え、使用しているネットワークサービスを理解する習慣をつけるまでには時間がかかる場合がありますが、少し調べれば、環境に関係なくLinuxワークステーションを強化できます。


Linux
  1. Linuxファイアウォールの使用を開始する

  2. Linuxコンテナの舞台裏

  3. KaliLinuxでFluxionを使用してネットワークの邪悪なツインを作成する

  1. LinuxでNetworkManagerを使い始める

  2. Linuxサーバーのネットワーク接続をnetstatで表示する

  3. Linuxでncatを使用してポートリダイレクトを設定する

  1. Linux –デーモンをLinuxで起動させますか?

  2. Linux –ポート番号を指定してリモートファイルシステムをマウントする方法は?

  3. Linuxでnloadを使用してネットワークの使用状況を監視する方法は?