デフォルトゾーンの変更

09.11.2020

FirewallD は、CentOS 7 サーバーでデフォルトで利用できるファイアウォール管理ツールです。これは基本的に IPTables のラッパーであり、グラフィカル構成ツール、firewall-config、および firewall-config ツールが付属しています。 コマンドラインファイアウォール-cmd。 IPtables サービスでは、変更ごとに古いルールを削除し、ファイル内に新しいルールを作成する必要があります。 /etc/sysconfig/iptables`、firewalld の場合は相違点のみが適用されます。

ファイアウォールDゾーン

FirewallD は、Iptables のルールやチェーンの代わりにサービスとゾーンを使用します。 デフォルトでは、次のゾーンが使用可能です。

  • 落とす– すべての受信メッセージを破棄します ネットワークパケット応答なし、送信のみ ネットワーク接続利用可能。
  • ブロック– icmp-host-prohibited というメッセージを含むすべての受信ネットワーク パケットを拒否し、送信ネットワーク接続のみが許可されます。
  • 公共– 公共エリアでの使用のために、選択された受信接続のみが受け入れられます
  • 外部の– マスカレードのある外部ネットワークの場合、選択された受信接続のみが受け入れられます。
  • DMZ– 非武装地帯DMZ、から公的にアクセス可能 アクセスが制限されている内部ネットワーク、選択された受信接続のみが受け入れられます。
  • 仕事
  • – ホーム ゾーンのコンピュータの場合、選択された受信接続のみが受け入れられます。
  • 内部– 内部ネットワーク上のコンピュータの場合、選択された受信接続のみが受け入れられます。
  • 信頼できる– すべてのネットワーク接続が受け入れられます。

すべてのリストを取得するには 利用可能なゾーン:

# firewall-cmd --get-zones ワークドロップ内部外部の信頼できるホーム dmz パブリックブロック

デフォルトゾーンのリストを表示するには:

# firewall-cmd --get-default-zone public

デフォルトのゾーンを変更するには:

ファイアウォールサービス

FirewallD サービスは、firewalld のサービス エントリ情報を含む XML 構成ファイルです。 利用可能なすべてのサービスのリストを取得するには:

# firewall-cmd --get-services amanda-client amanda-k5-client bacula bacula-client ceph ceph-mon dhcp dhcpv6 dhcpv6-client dns docker-registry Dropbox-lansync freeipa-ldap freeipa-ldaps freeipa-replication ftp high-availability http https imap imap ipp ipp-client ipsec iscsi-target kadmin kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mosh mountd ms-wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis Pop3 Pop3s postgresql privoxy proxy-dhcp ptp Puppetmaster radi us rpc バインドrsyncd samba samba-client sane smtp smtps snmp snmptrapquid ssh synergy syslog syslog-tls telnet tftp tftp-client tintor-socks 伝送クライアント vdsm vnc-server wbem-https xmpp-bosh xmpp-client xmpp-local xmpp-server

構成 XMLファイルディレクトリに保存される /usr/lib/firewalld/services/そして /etc/firewalld/サービス/.

FirewallD を使用したファイアウォールのセットアップ

例として、Web サーバー、ポート 7022 の SSH、およびメール サーバーを実行している場合に、FirewallD を使用してファイアウォールを構成する方法を次に示します。

まず、DMZ のデフォルト ゾーンを設定します。

# ファイアウォール-cmd --set-default-zone=dmz # ファイアウォール-cmd --get-default-zone dmz

DMZ に HTTP および HTTPS の永続的なサービス ルールを追加するには、次のコマンドを実行します。

# firewall-cmd --zone=dmz --add-service=http --permanent # firewall-cmd --zone=dmz --add-service=https --permanent

ポート 25 (SMTP) とポート 465 (SMTPS) を開きます。

ファイアウォール-cmd --zone=dmz --add-service=smtp --permanent ファイアウォール-cmd --zone=dmz --add-service=smtps --permanent

オープン、IMAP、IMAPS、POP3、POP3S ポート:

ファイアウォール-cmd --zone=dmz --add-service=imap --permanent firewall-cmd --zone=dmz --add-service=imaps --permanent firewall-cmd --zone=dmz --add-service= Pop3 --permanent firewall-cmd --zone=dmz --add-service=pop3s --permanent

SSH ポートが 7022 に変更されているため、SSH サービス (ポート 22) を削除し、ポート 7022 を開きます。

ファイアウォール-cmd --remove-service=ssh --permanent ファイアウォール-cmd --add-port=7022/tcp --permanent

変更を実装するには、ファイアウォールを再起動する必要があります。

ファイアウォール-cmd --reload

最後に、ルールをリストすることができます。

今日は、一般的な OS 上でのユニバーサル サーバーの初期構成に関する私のビジョンを紹介します。 Centos サーバーをインストール後すぐに、任意の容量で使用できるように基本セットアップを行う方法について説明します。 与えられた 実践的なアドバイスサーバーのセキュリティと使いやすさが向上します。 この記事は、2 つの最新の Centos リリース (7 および 8) に関連します。

  1. 新しくインストールしたサーバー上で実行した centos の初期設定をリストします。
  2. 一般的なセットアップで使用する構成の例を示します。
  3. システムの経験に基づいて、centos のセットアップに関するアドバイスを提供します。
  4. サーバーの管理に役立つ一般的なプログラムとユーティリティのリストを提供します。

この記事は、サーバーに関する一連の記事の一部です。

導入

新しい Centos 8 リリースのリリース後、単一の記事で説明するのが難しくなりました 初期設定両方のサーバーにありましたが、記事には別の場所からのリンクが多数含まれているため、記事を分割したくありませんでした。 両方のリリースで一般的な内容を維持する方が便利なので、私はそうするつもりです。 同時に、2 つのバージョンの違いが明確にわかります。centos 8 のリリース後の数年間は、両方が関連し、状況に応じて両方のバージョンを使用する必要があります。

Centos 7 はパッケージマネージャーを使用します うーん、Centos 8では - DNF。 同時に彼らは去った シンボリックリンク yum から dnf までなので、最初の名前と 2 番目の名前の両方を書くことができます。 一貫性を保つために、全体を通して yum を使用しますが、なぜこのようにするのかを理解していただくために警告しておきます。 実際、CentOS 8 は dnf を使用します。これは、別のより最新のパッケージ マネージャーであり、 異なるバージョン同じソフトウェアです。 この目的のために、centos 8 用に登場した別のリポジトリが使用されます。

CentOSの初期設定

個人的には、centos であれ別のシステムであれ、インストール後にシステムを完全に更新してセットアップを開始します。 インストール イメージが新しい場合、またはインストールがネットワーク経由で実行された場合、ほとんどの場合、更新は行われません。 ほとんどの場合、そうなります。 設置イメージ必ずしも定期的に更新されるわけではありません。

システムのアップデート

# おいしいアップデート

管理を容易にするために、私は常に Midnight Commander をインストールするか、単に mc をインストールします。

# yumインストールMC

そしてすぐに、ファイル内で明示的にマークされていないすべてのファイルの構文の強調表示をオンにします /usr/share/mc/syntax/シンタックス sh および bash スクリプトの構文。 この汎用構文は、サーバー上で最も頻繁に作業する必要がある構成ファイルに適しています。 ファイルを上書きする 不明な構文。 これは、.conf ファイルと .cf ファイルに明示的な構文が付加されていないため、これらのファイルに適用されるパターンです。

# cp /usr/share/mc/syntax/sh.syntax /usr/share/mc/syntax/unknown.syntax

次に役立つのはネットワーク ユーティリティです。 システムのインストール時に選択した初期パッケージのセットに応じて、1 つまたは別のネットワーク ユーティリティのセットが必要になります。 以下は、私が個人的によく使用しているもののリストです - ifconfig、netstat、nslookup、その他。 私と同じように必要な場合は、まだインストールされていない場合は個別にインストールすることをお勧めします。 特に必要がなく、使用しない場合は、インストールをスキップできます。 現時点でシステムに何があるか確認してみましょう

# ifconfig

答えが表示された場合:

Bash: ifconfig: コマンドが見つかりません

これは、ユーティリティがインストールされていないことを意味します。 CentOS の ifconfig の代わりにユーティリティが登場しました。 ip。 これはセントスだけに当てはまります。 これは、ほとんどすべての人気のある最新の Linux ディストリビューションの図です。 私は長い間 ifconfig に慣れてきましたが、 最近ほとんど使いません。 私は、異なる Linux ディストリビューションでもすべてがほぼ同じであることを常に気に入っていました。 ifconfig を使用すると、Linux だけでなく freebsd でもネットワークを構成できます。 便利ですね。 そして、各ディストリビューションが独自のツールを持っている場合、これは不便です。 現在では、これはあまり関係ありませんが、私は Freebsd を使用しなくなり、ip ユーティリティはすべての環境で利用できるようになりました。 Linuxディストリビューション。 ただし、ifconfig が必要な場合は、パッケージをインストールできます。 ネットツール、これには以下が含まれます:

# yum でネットツールをインストール

nslookup やホスト コマンドなどを機能させるには、パッケージをインストールする必要があります。 バインドユーティリティ。 これが行われていない場合は、次のコマンドを使用します。

#nslookup

出力は次のようになります。

Bash: nslookup: コマンドが見つかりません

それでは、bind-utils をインストールしましょう。

# yum でバインドユーティリティをインストールします

SELinuxを無効にする

SELinuxを無効にします。 その使用と構成は別の問題です。 今はやりません。 それでは、それをオフにしましょう:

# mcedit /etc/sysconfig/selinux

値を変更する

SELINUX=無効

変更を有効にするために再起動できます。

# 再起動

再起動せずに SELinux を無効にする場合は、次のコマンドを実行します。

#セットテンフォース0

SELinux の無効化に関して、私は常に多くの批判を受けています。 それがどのように機能するのか、設定する方法を知っています。 実際にはそれほど複雑ではなく、マスターするのは難しくありません。 これは私の意識的な選択ですが、時々微調整することもあります。 私のシステムの操作方法では、ほとんどの場合 SELinux が必要ないので、SELinux に時間を浪費したり、基本セットアップで centos を無効にしたりすることはありません。 システム セキュリティは、特に次の分野では複雑な取り組みです。 現代世界 Web 開発では、マイクロサービスとコンテナーが主力となります。 SELinux はニッチなツールであり、いつでもどこでも必要になるわけではありません。 したがって、 この記事彼の居場所はない。 必要な方は別途SELinuxを有効にして設定してください。

ネットワークパラメータの指定

インストール後、centos の基本構成を続けます。 何らかの理由でインストール中にこれを実行しなかった場合、または変更する必要がある場合に実行します。 一般に、Centos のネットワークは次を使用して構成されます。 ネットワークマネージャーとそのコンソールユーティリティ nmtui。 システムの基本インストールが付属しています。 シンプルでわかりやすいグラフィカルインターフェイスなので、何も言うことはありません。 私は、ネットワーク スクリプト構成ファイルを使用してネットワークを構成することに慣れています。 Centos バージョン 7 にはデフォルトでこれらが含まれていますが、バージョン 8 では削除されました。 これらを使用してネットワークを構成するには、パッケージを個別にインストールする必要があります ネットワークスクリプト.

# yum ネットワークスクリプトをインストールします

これでネットワークを設定できるようになりました。 これを行うには、ファイルを開きます /etc/sysconfig/network-scripts/ifcfg-eth0

# mcedit /etc/sysconfig/network-scripts/ifcfg-eth0

受け取った場合 ネットワーク設定 dhcp 経由の場合、構成ファイルの最小設定セットは次のようになります。

TYPE="イーサネット" BOOTPROTO="dhcp" DEFROUTE="はい" IPV4_FAILURE_FATAL="いいえ" NAME="eth0" DEVICE="eth0" ONBOOT="はい"

静的IPアドレスを設定する場合、以下の設定となります。

TYPE="イーサネット" BOOTPROTO="none" DEFROUTE="yes" IPV4_FAILURE_FATAL="no" NAME="eth0" DEVICE="eth0" ONBOOT="yes" IPADDR=192.168.167.117 DNS1=192.168.167.113 PREFIX=28 ゲートウェイ= 192.168.167.113

IPADDRフィールドにアドレス、PREFIXにネットワークマスク、GATEWAYにゲートウェイ、DNSサーバーのDNSアドレスを入力します。 ファイルを保存し、ネットワークを再起動して設定を適用します。

# systemctl ネットワークを再起動します

ファイアウォールの設定

リポジトリの追加

Centos をセットアップする場合、標準のカブには含まれていないソフトウェアが必要になることがよくあります。 設置用 追加パッケージ必要 。 最も人気のあるのはEPELです。 以前は rpmforge がありましたが、数年前に閉鎖されました。 誰もが彼のことを忘れていました。 EPEL リポジトリに接続します。 すべてがシンプルで、標準のカブから追加されます。

# yum インストール epel-release

また、CentOS 7 の場合、REMI リポジトリは非常に便利で、標準リポジトリとは異なり、より新しいバージョンの php をインストールできます。 これはバージョン PHP 5.4 であることを思い出してください。このバージョンはもう役に立たず、サポートから削除されました。

# rpm -Uhv http://rpms.remirepo.net/enterprise/remi-release-7.rpm

Centos 8 の場合、remi はまだ関連性がありませんが、一時的なものだと思います。 原則として、一般的なケースでは、centos のこれら 2 つのリポジトリで十分です。 その他は、さまざまなソフトウェアをインストールするための特定のニーズに応じて接続されます。

bash_history での履歴ストレージの設定

セットアップを進めましょう セントスシステムサーバー上で。 コマンド履歴を保存するための標準メカニズムにいくつかの変更を加えると便利です。 以前に入力したコマンドの 1 つを覚えておく必要がある場合に役立ちます。 標準設定にはいくつかの制限があり、不便です。 彼らのリストは次のとおりです。

  1. デフォルトでは、最後の 1000 個のコマンドのみが保存されます。 それ以上ある場合は、古いものが削除され、新しいものに置き換えられます。
  2. コマンドには実行日はなく、実行順にリストされているだけです。
  3. コマンドリストファイルはセッション終了後に更新されます。 並列セッション中に、一部のコマンドが失われる可能性があります。
  4. 一部のコマンドは保存しても意味がありませんが、絶対にすべてのコマンドが保存されます。

最近実行されたコマンドのリストは、ユーザーのホーム ディレクトリのファイルに保存されます。 .bash_history(先頭にドット)。 任意のエディタで開いて表示できます。 リストをより簡単に表示するには、コンソールに次のコマンドを入力します。

#歴史

番号付きリストを参照してください。 たとえば次のように、必要な行のみをフィルタリングすることで、特定のコマンドをすばやく見つけることができます。

#歴史 | grep うむ

こうすることで、yum コマンドを実行するためのすべてのオプションが表示され、履歴に保存されます。 CentOS でコマンド履歴を保存するための標準設定のリストされた欠点を修正しましょう。 これを行うには、ファイルを編集する必要があります .bashrc、履歴ファイルと同じディレクトリにあります。 次の行をそれに追加します。

エクスポート HISTSIZE=10000 エクスポート HISTTIMEFORMAT="%h %d %H:%M:%S " PROMPT_COMMAND="history -a" エクスポート HISTIGNORE="ls:ll:history:w:htop"

最初のオプションでは、ファイル サイズが 10,000 行に増加します。 通常はこのサイズで十分ですが、さらにたくさん作ることもできます。 2 番目のパラメーターは、コマンドが実行された日付と時刻を保存することを指定します。 3 行目は、コマンドの実行直後に強制的に履歴に保存します。 最後の行では、履歴に記録する必要のないコマンドの例外のリストを作成します。 最も単純なリストの例を示しました。 ご自身の判断で追加することができます。

変更を適用するには、ログアウトして再度接続するか、次のコマンドを実行する必要があります。

# ソース ~/.bashrc

コマンド履歴ストレージの設定については以上です。 .bashrc ファイルには興味深い設定がたくさんあります。 一時は夢中になって実験したこともありましたが、意味がわからずすべて放棄してしまいました。 顧客サーバーを扱うときはデフォルトの bash をよく見るので、それに慣れて作業するほうがよいでしょう。 個別の設定や装飾もたくさんあります パーソナルコンピュータそしてサーバー。 労働者ではありません。 したがって、この点に関しては、centos サーバーの標準に従って他に何も設定しません。

自動システムアップデート

サーバーのセキュリティを適切なレベルに維持するには、カーネル自体とシステム ユーティリティ、およびその他のパッケージの両方を、少なくともタイムリーに更新する必要があります。 これは手動で行うこともできますが、さらに多くのことを行うには 効率的な仕事自動実行を設定しておくと良いでしょう。 更新を自動的にインストールする必要はありませんが、少なくとも更新を確認してください。 私は通常この戦略に従っています。

ヤムクロン

Centos 7 のアップデートを自動的に確認するには、このユーティリティが役に立ちます。 ヤムクロン。 これは従来通り、標準リポジトリから yum を介してインストールされます。

# yum インストール yum-cron

yum-cron をインストールすると、ユーティリティを実行するための自動タスクが作成されます。 /etc/cron.dailyそして /etc/cron.hourly。 デフォルトでは、ユーティリティは見つかったアップデートをダウンロードしますが、適用しません。 代わりに、ローカルの管理者が メールボックス更新の通知は root に送信されます。 次に、手動モードに切り替えて、都合の良い時間に更新プログラムをインストールするかどうかを決定します。 私はこの操作モードが最も便利だと思うので、これらの設定は変更しません。

yum-cron は、次の場所にある設定ファイルを通じて設定できます。 /etc/yum/yum-cron.confそして yum-cron-hourly.conf。 しっかりと解説されているので、詳しい説明は必要ありません。 このセクションに注目してください , ここで、メッセージを送信するためのパラメーターを指定できます。 デフォルトでは、メールはローカル ホスト経由で送信されます。 ここで設定を変更し、サードパーティ経由でメッセージを送信できます。 メールサーバー。 しかし、その代わりに、個人的には、別の SMTP サーバーでの承認を通じてローカル ルート メールを外部メールボックスに転送するようにサーバー全体をグローバルに構成することを好みます。

DNF-自動

前に述べたように、Centos 8 は別のパッケージ マネージャー dnf を使用します。 パッケージ更新の構成はユーティリティを通じて行われます dnf-自動。 インストールして設定してみましょう。

# yum インストール dnf-automatic

スケジュールされた起動を管理するのは cron ではなくなり、組み込みのスケジューラーを使用して systemd になります。 タイマーを表示する 自動スタート次のコマンドを使用できます。

# systemctl リストタイマー *dnf-*

そこにタスクがない場合は、タイマーを手動で追加できます。

# systemctl を有効にする --now dnf-automatic.timer

デフォルトのタイマーは、サーバーが起動してから 1 時間後に dnf-automatic を開始し、毎日繰り返すように設定されています。 タイマー設定はここにあります - /etc/systemd/system/multi-user.target.wants/dnf-automatic.timer.

dnf-automatic の設定は次の場所にあります。 /etc/dnf/automatic.conf。 デフォルトでは、アップデートはダウンロードされるだけで、適用されません。 設定には十分なコメントが付けられているため、必要に応じてカスタマイズできます。 特別な説明は必要ありません。 システム パッケージの更新はご自身の判断で設定してください。 すでに述べたように、それらは自動的にダウンロードされるだけです。 私は常に手動制御で設置を管理しています。

/var/log/messages でのメッセージ フラッディングを無効にする

centos の設定を続けますが、小さな不都合が 1 つ修正されます。 システムの第 7 バージョンのデフォルトのインストールでは、システム全体のログが /var/log/messagesしばらくすると、サーバーは次のレコードで詰まります。

Oct 16 14:01:01 xs-files systemd: スライス user-0.slice を作成しました。 Oct 16 14:01:01 xs-files systemd: user-0.slice を開始しています。 Oct 16 14:01:01 xs-files systemd: ユーザー root のセッション 14440 を開始しました。 Oct 16 14:01:01 xs-files systemd: ユーザー root のセッション 14440 を開始します。 Oct 16 14:01:01 xs-files systemd: スライス user-0.slice を削除しました。 Oct 16 14:01:01 xs-files systemd: user-0.slice を停止しています。 Oct 16 15:01:01 xs-files systemd: スライス user-0.slice を作成しました。 Oct 16 15:01:01 xs-files systemd: user-0.slice を開始しています。 Oct 16 15:01:01 xs-files systemd: ユーザー root のセッション 14441 を開始しました。 Oct 16 15:01:01 xs-files systemd: ユーザー root のセッション 14441 を開始します。 Oct 16 15:01:01 xs-files systemd: ユーザー root のセッション 14442 を開始しました。 Oct 16 15:01:01 xs-files systemd: ユーザー root のセッション 14442 を開始します。 Oct 16 15:01:01 xs-files systemd: スライス user-0.slice を削除しました。 Oct 16 15:01:01 xs-files systemd: user-0.slice を停止しています。 Oct 16 16:01:01 xs-files systemd: スライス user-0.slice を作成しました。 Oct 16 16:01:01 xs-files systemd: user-0.slice を開始しています。 Oct 16 16:01:01 xs-files systemd: ユーザー root のセッション 14443 を開始しました。 Oct 16 16:01:01 xs-files systemd: ユーザー root のセッション 14443 を開始します。 Oct 16 16:01:01 xs-files systemd: スライス user-0.slice を削除しました。

Centos 8 ではそれらに気付かなかったので、何もする必要はありません。 メッセージには実際的なメリットがないため、オフにします。 このために、私たちは作成します 別ルール rsyslog では、切り取るすべてのメッセージ テンプレートをリストします。 このルールを別のファイルに置きましょう /etc/rsyslog.d/ignore-systemd-session-slice.conf.

# cd /etc/rsyslog.d && mceditignore-systemd-session-slice.conf if $programname == "systemd" and ($msg に「開始中のセッション」が含まれる、または $msg に「開始されたセッション」が含まれる、または $msg に「作成済み」が含まれるスライス」、または $msg に「開始ユーザー -」が含まれる、または $msg に「開始ユーザー スライスの」が含まれる、または $msg に「削除されたセッション」が含まれる、または $msg に「削除されたスライス ユーザー スライスの」が含まれる、または $msg に「停止中のユーザー スライス」が含まれる)その後停止します

ファイルを保存し、rsyslog を再起動して設定を適用します。

# systemctl rsyslog を再起動する

ということを理解する必要がある この場合ログ ファイルのフラッディングを無効にするのは次の場合のみです。 ローカルサーバー。 ログを保存する場合、 このルールその上で設定する必要があります。

CentOS への iftop、atop、htop、lsof のインストール

最後に、セットアップを完了するために、サーバーの操作中に役立つ可能性のあるいくつかの便利なユーティリティを追加します。

iftop はネットワーク インターフェイスの読み込みをリアルタイムで表示し、さまざまなキーで起動できます。これについては詳しく説明しませんが、このトピックに関する情報はインターネット上にあります。 私たちは以下を入れます:

# yum インストール iftop

そして 2 つの興味深いタスク マネージャーです。私は htop をよく使いますが、時には atop が便利です。 両方をインストールして、自分の目で見て、何が一番気に入っているか、何が自分に合っているかを見つけてみましょう。

# yum install htop # yum install atop

どのファイルがどのプロセスで使用されているかに関する情報を表示するには、ユーティリティをインストールすることをお勧めします。 lsof。 これは、サーバーを診断するときに遅かれ早かれ役立つ可能性があります。

# yum install wget bzip2 traderoute gdisk

以上です。 基本的なセットアップ CentOS が完成したので、主要な機能のインストールと構成を開始できます。

システムメールの設定

CentOS サーバーのセットアップを完了するには、ローカル ルート宛てのメールが外部メール サーバー経由で選択したメールボックスに送信されることを確認しましょう。 これが行われていない場合は、ローカルでファイルにコンパイルされます。 /var/スプール/メール/ルート。 そして重要な事があるかもしれない 役立つ情報。 システム管理者のメールボックスに送信されるように設定しましょう。

これについては別の記事で詳しくお話しました-。 ここでは、コマンドと簡単なセットアップのみを説明します。 必要なパッケージをインストールします。

# yum install mailx cyrus-sasl cyrus-sasl-lib cyrus-sasl-plain postfix

postfix にこのような設定を描画しましょう。

Cat /etc/postfix/main.cf ## デフォルト設定の開始 ###################### キューディレクトリ = /var/spool/postfix コマンドディレクトリ = /usr/sbin daemon_directory = /usr/libexec/postfix data_directory = /var/lib/postfix mail_owner = postfix inet_interfaces = localhost inet_protocols = all known_local_recipient_reject_code = 550 alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases debug_peer_level = 2 debugger _command = PATH =/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin ddd $daemon_directory/$process_name $process_id & sleep 5 sendmail_path = /usr/sbin/sendmail.postfix newaliases_path = /usr/bin / newaliases.postfix mailq_path = /usr/bin/mailq.postfix setgid_group = postdrop html_directory = no manpage_directory = /usr/share/man sample_directory = /usr/share/doc/postfix-2.10.1/samples readme_directory = /usr/share / doc/postfix-2.10.1/README_FILES ## DEFAULT CONFIG END ###################### # コマンドによる出力としてのサーバー名 hostname myhostname = centos- test.xs.local # ここでは、論理的にはドメインを離れるだけで済みますが、この場合は離れる方が良いでしょう。 フルネーム# これにより、サービス メッセージの解析がより便利になります。 mydomain = centos-test.xs.local mydestination = $myhostname myorigin = $mydomain # 送信者フィールドにサーバーのフル ネームが表示されるようにします。メールを送信します

認証用のユーザー名とパスワードに関する情報を含むファイルを作成します。

# mcedit /etc/postfix/sasl_passwd mailsrv.mymail.ru:25 [メールで保護されています]:パスワード

dbファイルを作成します。

# ポストマップ /etc/postfix/sasl_passwd

これで、postfix を再起動して、動作するかどうかを確認できます。

# systemctl 再起動ポストフィックス

root の標準エイリアスへ /etc/エイリアス、root 宛てのメールが複製される外部アドレスを追加します。 これを行うには、指定したファイルを編集して、最後の行を変更します。

#ルート: マーク

ルート: ルート、 [メールで保護されています]

証明書データベースを更新します。

#newaliases

コンソール経由でローカル ルートにレターを送信してみましょう。

# df -h | mail -s "ディスク使用量" root

手紙は外部のメールボックスに送られるはずです。 Yandex のメールボックスを使用している場合、メール サーバー ログにエラーが記録される可能性が高く、レターは送信されません。

Relay = smtp.yandex.ru:25、遅延 = 0.25、遅延 = 0/0/0.24/0.01、dsn = 5.7.1、ステータス = バウンス (ホスト smtp.yandex.ru が言った: 553 5.7.1 送信者アドレスが拒否されました:認証ユーザーによって所有されていません (MAIL FROM コマンドへの応答))

このエラーは、メール送信者が認証に使用したメールボックスと同じではないことを意味します。 これを修正する方法は別の記事で説明します。 このようなチェックがない他のメール システムでは、すべてがそのままで問題ありません。

これでローカルメールの設定は完了です。 これで、ローカル ルートに宛てられたすべての手紙 (cron からのレポートなど) が外部のメールボックスに複製され、本格的なメール サーバー経由で送信されます。 そのため、レターはスパムに分類されることなく、正常に配信されます (必ずしもそうではありませんが、ヒューリスティック フィルターもあります)。

結論

CentOS サーバーをセットアップするための初期手順をいくつか実行しました。これは、インストール直後にサーバーを準備するときに通常行うことです。 私は絶対的な真実であるふりをしているわけではありません。おそらく、私は何かを見逃しているか、完全に正しくないことをしているのかもしれません。 合理的で有意義なコメントや提案をいただければ幸いです。

..
  • Linux 上に構築されたネットワークの展開、構成、保守の詳細についての理解。
  • 新たな問題を迅速に解決し、システムの安定した中断のない動作を保証する能力。
  • 入学テストで自分自身をテストし、詳細についてはプログラムを参照してください。

    CentOS 7 には、CentOS 6 とは異なり、データベースに新しいファイアウォール、firewalld が付属しています。 これを無効にして古き良き iptables に置き換えることもできますが、そのための直接の前提条件がない場合は、古いものに依存するよりも新しいものに慣れる方が良いでしょう。 これは Windows 10 を意味するものではありません Windowsよりも優れています 7 であり、Windows XP は Windows 7 よりも優れています ;) このトピックの良い例は selinux です。 最初はほぼ全員(私を含む)がそれをオフにし、少し叱ったことさえありましたが、今ではほとんど誰もそれをアドバイスしません。 それどころか、多くの人はすでに semanage の使用に慣れています (または慣れ始めています)。 firewalld をすぐに無効にするわけではありませんが、どうなるか試してみましょう。

    Firewalld は根本的に異なるファイアウォールではありません。 これは netfilter へのもう 1 つのアドオンであるため、iptables の経験がある場合は、少し苦労した後、簡単に新しいツールを使い始めることができます。

    ファイアウォールの起動と停止

    firewalld が実行されているかどうかを確認してみましょう。

    # systemctl ステータスファイアウォール

    詳細については、こちらをご覧ください。 簡単に「はい (機能します)」または「いいえ」を言うには、次のようにします。

    # ファイアウォール-cmd --state
    走っている

    わかりました、うまくいきます。

    ファイアウォールを停止しています:

    # systemctl ファイアウォールを停止します

    自動起動禁止:

    # systemctl ファイアウォールを無効にする

    ファイアウォールを開始します。

    # systemctl ファイアウォールを開始します

    自動起動を有効にする:

    # systemctl ファイアウォールを有効にする

    ファイアウォールゾーン

    Firewalld はゾーンの概念を広範囲に利用しています。 デフォルトで有効なすべてのゾーンのリスト:

    # ファイアウォール-cmd --get-zones
    ブロック dmz ドロップ外部ホーム内部パブリック信頼できる作業

    ゾーンの目的 (もちろん条件付き):

    • ドロップ - すべての着信パケットは応答なしで破棄 (ドロップ) されます。 送信接続のみが許可されます。
    • block - 着信接続は拒否され、応答 icmp-host-prohibited (または icmp6-adm-prohibited) で拒否されます。 システムによって開始された接続のみが許可されます。
    • 公共 - デフォルトゾーン。 名前から、このゾーンが次のような場所で作業することを目的としていることがわかります。 パブリックネットワーク。 私たちはこのネットワークを信頼しておらず、特定の受信接続のみを許可しています。
    • external - ルーターの外部インターフェイスのゾーン (いわゆるマスカレード)。 定義した受信接続のみが許可されます。
    • dmz - DMZ ゾーン。特定の受信接続のみが許可されます。
    • 職場 - 職場ネットワーク ゾーン。 私たちはまだ誰も信頼していませんが、以前ほどではありません:) 特定の受信接続のみが許可されます。
    • ホーム - ホームゾーン。 環境を信頼しますが、特定の受信接続のみが許可されます
    • 内部 - 内部ゾーン。 環境を信頼しますが、特定の受信接続のみが許可されます
    • 信頼できる - すべてが許可されます。

    すべてのアクティブなゾーンのリスト:

    # firewall-cmd --get-active-zones
    公共
    インターフェース: enp1s0

    はい、enp1so ネットワーク インターフェイスが接続されているパブリック ゾーンです。 次に、sshd がハングするパブリック ゾーンに新しいポートを追加します。

    ネットワーク インターフェイスの名前 (enp1s0 など) がわかれば、それがどのゾーンに属しているかを確認できます。

    # firewall-cmd --get-zone-of-interface=enp1s0
    公共

    どのインターフェイスが特定のゾーンに属しているかを確認できます。

    # firewall-cmd --zone=public --list-interfaces
    enp1s0

    例: 非標準ポートでの SSH の許可

    デフォルトの 22/tcp ではなく、ポート 2234/tcp で ssh 経由でサーバーへのアクセスを許可しましょう。 途中で、selinux についても少し触れてみましょう。

    まず、サーバーで一般に何が許可されているかを見てみましょう。

    # firewall-cmd --permanent --list-all
    パブリック (デフォルト)
    インターフェース:
    情報源:
    サービス: ssh dhcpv6-client
    マスカレード:いいえ
    フォワードポート:
    icmp ブロック:
    豊富なルール:

    ipv6 はまだ使用していないので、対応するものをすぐに削除します。 ファイアウォールからのルール:

    # firewall-cmd --permanent --zone=public --remove-service=dhcpv6-client

    ポート 2234/tcp への接続を (再起動後に失われないように) 永続的に許可しましょう (それに sshd をハングします)。

    # firewall-cmd --permanent --zone=public --add-port=2234/tcp

    ルールをリロードしましょう:

    # ファイアウォール-cmd --reload

    確認してみましょう:

    # firewall-cmd --zone=public --list-ports
    2234/tcp

    OK、ポートは開いています。 sshd 構成を編集します。

    # nano /etc/ssh/sshd_config
    ...
    ポート2234
    ...

    # systemctl sshd.service を再起動します

    ただし、無効にしていないことが望ましい SELinux では、非標準ポート (sshd のポート 2234/tcp は非標準) で ssh に接続することはできません。 この手順をスキップして SELinux 保護がどのように機能するかを確認することも、すぐにすべてを構成することもできます。

    # yum はセマネージを提供します
    # yum インストールpolicycoreutils-python
    # semanage port -a -t ssh_port_t -p tcp 2234

    今はすべて問題ありません。 新しいポートで ssh 接続を確認します。 すべて問題なければ、ポート 22 へのアクセスを閉じます。

    # firewall-cmd --permanent --zone=public --remove-service=ssh
    # ファイアウォール-cmd --reload

    何が起こったのか見てみましょう:

    # ファイアウォール-cmd --list-all
    public (デフォルト、アクティブ)
    インターフェース:
    情報源:
    サービス:
    ポート: 2234/tcp
    マスカレード:いいえ
    フォワードポート:
    icmp ブロック:
    豊富なルール:

    それでおしまい。

    さまざまな便利なコマンド:

    すべての送受信パケットに対してブロック モードを有効にします。

    # ファイアウォール-cmd --パニック-オン

    すべての送受信パケットのブロッキング モードを無効にします。

    # ファイアウォール-cmd --パニック-オフ

    すべての送受信パケットのブロック モードが有効になっているかどうかを確認します。

    # ファイアウォール-cmd --クエリ-パニック

    現在の接続を失わずに firewalld ルールをリロードします。

    # ファイアウォール-cmd --reload

    firewalld ルールをリロードしてリセットする 現在の接続(問題が発生した場合にのみ推奨):

    # ファイアウォール-cmd --complete-reload

    ネットワーク インターフェイスをゾーンに追加します。

    # firewall-cmd --zone=public --add-interface=em1

    ネットワーク インターフェイスをゾーンに追加します (ファイアウォールの再起動後に保存されます)。

    # firewall-cmd --zone=public --permanent --add-interface=em1

    ifcfg-enp1s0 設定で、このインターフェイスがどのゾーンに属するかを指定できます。 これを行うには、ZONE=work をファイル /etc/sysconfig/network-scripts/ifcfg-enp1s0 に追加します。 ZONE パラメータが指定されていない場合は、デフォルトのゾーン (/etc/firewalld/firewalld.conf ファイルの DefaultZone パラメータ) が割り当てられます。

    許可するポート範囲:

    # ファイアウォールcmd --zone=public --add-port=5059-5061/udp

    マスカレード (マスカレード、別名、別名...):

    ステータスを確認します:

    # firewall-cmd --zone=external --query-masquerade

    オンにする:

    # firewall-cmd --zone=external --add-masquerade

    ここで、たとえばパブリック ゾーンのマスカレードを有効にできることに注意してください。

    ポート 22 で受信したメッセージを別のホストにリダイレクトします。

    # firewall-cmd --zone=external --add-forward-port=port=22:proto=tcp:toaddr=192.168.1.23

    宛先ポートを変更して (22 から 192.168.1.23:2055)、ポート 22 の受信メッセージを別のホストにリダイレクトします。

    # ファイアウォール-cmd --zone=external /
    --add-forward-port=port=22:proto=tcp:toport=2055:toaddr=192.168.1.23

    ここで終わります、なぜなら... 例は無限にある可能性があります。 付け加えておきますが、私個人としては、firewalld のイノベーションについて完全に自分の意見をまとめていないのです。なぜなら... 構文に慣れるまでに時間がかかりますし、動物園内に異なる OS Linux が存在する場合、そもそも慣れの問題が発生する可能性があります。 しかし、firewalld をマスターすると視野が広がります。多くの場合、努力する価値はあります。

    ファイアウォールの利点

    主な利点は、iptables チェーンから少し抽象化されているため、ポート転送を有効にするために、FORWARD に加えて PREROUTING や POSTROUTING について考える必要がないことです。 「製造元からの IPtables API」のようなものが提供されます。 nat を有効にしている場合は、ルールが正確にどこにあるか (現在のルールのシリアル番号の下にあるか) は関係ありません。 eth0 で nat を有効にすることを指定するだけです。 ナンセンスではありません;) これは、ファイアウォールを管理するための Web インターフェイスを整理する必要がある場合に便利です。

    ステータス(nat が有効かどうかなど)を確認することができます。 また、これをスクリプトやアプリケーションのロジックなどでも使用します。 iptables でステータスリクエスト (オン/オフ) を作成する方法がわかりません。 もちろん、 iptables -L -t nat | のようなこともできます。 grep "..." ですが、これは "firewall-cmd --zone=external --query-masquerade" の実行とは少し異なることを認めなければなりません。 たとえば、CentOS を搭載した VM が数百個あり、WAN インターフェイスなどの名前が若干異なる場合があります。 これで、さまざまなマシンで期待どおりの結果が得られるユニバーサル コマンドレットが完成しました。

    ファイアウォールのデメリット

    私の意見では、主な欠点は、慣れてくると、Debian、Ubuntu、CentOS、そして一般的にどこにでもある「純粋な」iptables に慣れ始めることです。 ちなみに、Mikrotik でも、構文とチェーンのタイプは iptables に似ています。 もちろん、これはすべての人に当てはまるわけではありません。 そして、専門家は、特定の条件がある場合、何を扱うかは気にしません。彼は自分が持っているもので仕事をします。 しかし...私は逆行性の人間で、各大手企業が独自に導入する新製品には(明らかなメリットがない場合に)必死に抵抗します。 RedHat は、より多くの新しいスペシャリストがファイアウォールのエースになることで利益を得るでしょう。

    そして、firewalld に切り替えた場合、純粋な iptables 構文は邪魔になるだけです。標準の firewalld 構文を使用せずにルールの変更や追加を開始すると、混乱が生じるか、ファイアウォールが単に故障するだけです。

    ファイアウォールはいらない! 古い iptables を返してください!

    それでも過去に戻って、firewalld を iptables に置き換えたい場合は、それを行うのはまったく難しいことではありません。

    ここは初心者向けの場所ではありません:

    # systemctl ファイアウォールを無効にする
    # systemctl ファイアウォールを停止します

    古き良き iptables をインストールします。

    # yum iptables サービスをインストールします

    ファイアウォールを起動します。

    # systemctl で iptables を開始します
    # systemctl は ip6tables を開始します

    オンにすると自動起動します:

    # systemctl で iptables を有効にする
    # systemctl で ip6tables を有効にする

    再起動後に iptables ルールを保存するには:

    # /sbin/iptables-save > /etc/sysconfig/iptables
    # /sbin/ip6tables-save > /etc/sysconfig/ip6tables

    または、昔ながらの方法:

    # サービス iptables の保存

    現在のルールは次のファイルにあります。
    /etc/sysconfig/iptables
    /etc/sysconfig/ip6tables

    iptables を再起動します (たとえば、変更を加えた後):

    # systemctl iptables.service を再起動します


    CentoOS 7 以降、トラフィック フィルタリング ルールを構成するための新しいツールが登場しました ファイアウォール。 iptables ルールを管理するためにこれを使用することをお勧めします。 CentOS 8 では、標準の iptables フィルタリング パッケージの代わりに、nftables フレームワークが使用されるようになり、firewalld を通じてファイアウォール ルールを構成するとき、実際には nftables を構成することになります。 この記事では、CentOS 8 を実行しているサーバー上での firewalld のインストール、基本概念、構成について説明します (CentOS 7 も同様です)。


    ファイアウォールD– 動的ルール管理 (再起動なし) と永続的なファイアウォール ルールの実装をサポートし、不要なトラフィックからサーバーを保護するファイアウォール。 および nftables のインターフェイスとして機能します。 FirewallD は、ほぼすべての Linux ディストリビューションで使用できます。

    ファイアウォールの基本的な概念、ゾーン、ルール

    インストールと構成を始める前に ファイアウォールでは、さまざまな接続の信頼レベルを定義するために使用されるゾーンの概念を紹介します。 さまざまなゾーン用 ファイアウォールさまざまなフィルタリング ルールを適用したり、事前定義されたサービス、プロトコルとポート、ポート転送、リッチ ルールの形式でアクティブなファイアウォール オプションを指定したりできます。

    ファイアウォールフィルター 受信トラフィックゾーンに適用されるルールに応じてゾーンごとに異なります。 もし IP- リクエスト送信者のアドレスが特定のゾーンのルールに一致すると、パケットはこのゾーンを通じて送信されます。 アドレスがサーバー上に構成されているゾーンのいずれにも一致しない場合、パケットはデフォルト ゾーンによって処理されます。 取り付けるとき ファイアウォールデフォルトゾーンは呼ばれます 公共.

    firewalld には、権限が事前に設定されているゾーンがあります さまざまなサービス。 これらの設定を使用することも、独自のゾーンを作成することもできます。 firewalld のインストール時に作成されるデフォルト ゾーンのリスト (/usr/lib/firewalld/zones/ ディレクトリに保存されます):

    落とす 最低限の信頼レベル。 すべての着信接続は応答なしでブロックされ、発信接続のみが許可されます。
    ブロック ゾーンは前のゾーンと似ていますが、受信リクエストが拒否されると、Ipv4 の場合は icmp-host-prohibited メッセージ、Ipv6 の場合は icmp6-adm-prohibited メッセージが送信されます。
    公共 信頼できないパブリックネットワークを表します。 選択した受信接続を個別に許可できます。
    外部の ファイアウォールをゲートウェイとして使用する場合は外部ネットワーク。 NAT マスカレード用に構成されているため、内部ネットワークはプライベートのままですがアクセス可能です。
    内部 外部ゾーンの対義語。 ホストには十分なレベルの信頼があり、多数の追加サービスが利用可能です。
    DMZ DMZ (ネットワークの他の部分にアクセスできない隔離されたコンピューター) 内にあるコンピューターに使用されます。 特定の受信接続のみが許可されます。
    仕事 作業用マシンのゾーン (ネットワーク上のほとんどのコンピュータは信頼されています)。
    ゾーン ホームネットワーク。 ほとんどの PC は信頼できますが、サポートされるのは特定の受信接続のみです。
    信頼できる ネットワーク上のすべてのマシンを信頼します。 すべての中で最もオープンな 利用可能なオプション、意識的に使用する必要があります。

    ファイアウォール永続的なルールと一時的なルールの 2 つのルール セットが使用されます。 一時ルールは、サーバーが再起動されるまで機能します。 デフォルトでは、ルールを追加する場合、 ファイアウォール、ルールは一時的なものとみなされます ( ランタイム)。 ルールを永続的に追加するには、フラグを使用する必要があります。 - 永続。 このようなルールは、サーバーの再起動後に適用されます。

    CentOS での firewalld のインストールと有効化

    CentOS 7/8 では、OS にデフォルトで firewalld がインストールされます。 これを削除し、firewalld をインストールする場合は、標準の /dnf マネージャーを使用できます。

    # yum install firewalld -y - Centos 7 の場合
    # dnf install firewalld -y - Centos 8 の場合

    悪魔に ファイアウォールサーバーの起動時に自動的に開始される場合は、次の場所に追加する必要があります。

    # systemctl ファイアウォールを有効にする

    そして実行します:

    # systemctl ファイアウォールを開始します

    サービスのステータスを確認します。

    # systemctl ステータスファイアウォール

    ● firewalld.service - firewalld - 動的ファイアウォール デーモン ロード済み: ロード済み (/usr/lib/systemd/system/firewalld.service; 有効; ベンダー プリセット: 有効) Active: 2019-10-14 月 14:54 以降アクティブ (実行中) :40 +06; 22 秒前 ドキュメント: man:firewalld(1) メイン PID: 13646 (firewalld) CGroup: /system.slice/firewalld.service └─13646 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopid 10 月 14 日 14:54:40 server.vpn.ru systemd: firewalld を開始しています - 動的ファイアウォール デーモン...10 月 14 日 14:54:40 server.vpn.ru systemd: firewalld - 動的ファイアウォール デーモンを開始しました。

    または次のコマンドを使用します。

    # ファイアウォール-cmd --state

    firewall-cmd コマンドは、nftables/iptables への firewalld フロントエンドです。

    # ファイアウォール-cmd --state

    ファイアウォールルールの操作

    デフォルトのルール:

    firewalld ルールを設定する前に、デフォルトでどのゾーンが使用されるかを確認する必要があります。

    # ファイアウォール-cmd --get-default-zone

    firewalld をインストールしたばかりでまだ構成していないため、デフォルトのゾーンがあります。 公共.

    アクティブゾーンを確認してみましょう。 パブリックも 1 つあります。

    # firewall-cmd --get-active-zones

    パブリックインターフェース: eth0

    ご覧のとおり、eth0 ネットワーク インターフェイスはゾーンによって制御されています。 公共.

    コアルールを表示するには、次のように入力します。

    # ファイアウォール-cmd --list-all

    パブリック (アクティブ) ターゲット: デフォルト icmp-block-inversion: なし インターフェイス: eth0 ソース: サービス: dhcpv6-client ssh ポート: プロトコル: マスカレード: フォワードポートなし: ソースポート: icmp-blocks: 豊富なルール:

    リストから、DHCP クライアントと SSH に関連する通常の操作がこのゾーンに追加されていることがわかります。

    利用可能なゾーン

    すべてのゾーンのリストを表示するには、次のコマンドを実行する必要があります。

    # ファイアウォール-cmd --get-zones

    次のリストを取得しました。

    ブロック dmz ドロップ外部ホーム内部パブリック信頼できる作業

    特定のゾーンのルールを確認するには、フラグ - ゾーンを追加する必要があります。

    # firewall-cmd --zone=home --list-all

    ホーム ターゲット: デフォルト icmp-block-inversion: いいえ インターフェイス: ソース: サービス: dhcpv6-client mdns samba-client ssh ポート: プロトコル: マスカレード: いいえ forward-ports: ソース ポート: icmp-blocks: 豊富なルール:

    すべてのゾーンのルールは、次のコマンドで表示できます。

    # firewall-cmd --list-all-zones

    多くのゾーンが存在する可能性があるため、リストは非常に大きくなります。

    デフォルトのゾーンを変更します。

    デフォルトでは、すべてのネットワーク インターフェイスはゾーン内に配置されます。 公共ただし、次のコマンドを使用して任意のゾーンに転送できます。

    # firewall-cmd --zone=home -change-interface=eth0

    パラメータの後 --ゾーン=希望のゾーンを指定します。

    デフォルトのゾーンを変更するには、次のコマンドを使用する必要があります。

    # firewall-cmd --set-default-zone=home

    アプリケーションルールの追加

    アプリケーションのポートを開くには、サービスを例外に追加します。 利用可能なサービスのリストを表示します。

    出力には以下が含まれます 多数のサービス。 詳細情報サービスについては、 XMLファイル。 これらのファイルはディレクトリにあります /usr/lib/firewalld/services。

    例えば:

    # cd /usr/lib/firewalld/services

    メール(SMTP) このオプションでは、受信 SMTP メール配信が許可されます。 リモート ホストがマシンに直接接続してメールを配信できるようにする必要がある場合は、このオプションを有効にします。 POP3 または IMAP によって ISP のサーバーからメールを収集する場合、または fetchmail などのツールを使用する場合は、これを有効にする必要はありません。SMTP サーバーが不適切に構成されていると、リモート マシンがサーバーを使用して送信できる可能性があることに注意してください。スパム。

    XML ファイルには、firewalld で開かれるサービス、プロトコル、およびポート番号の説明が含まれています。

    ルールを追加するときは、パラメータを使用できます --add-service特定のサービスへのアクセスを開くには:

    # firewall-cmd --zone=public --add-service=http

    # firewall-cmd --zone=public --add-service=https

    ルールを追加した後、指定したゾーンにサービスが追加されているかどうかを確認できます。

    # firewall-cmd --zone=public --list-services

    Dhcpv6-client http https ssh

    これらのルールを永続的にしたい場合は、追加時にパラメータを追加する必要があります。 -永続.

    ゾーンからサービスを削除するには:

    # firewall-cmd --permanent --zone=public --remove-service=http

    Dhcpv6-client https ssh テスト

    サービスを例外に追加したい場合は、ファイルを作成できます。 XML自分で記入してください。 任意のサービスからデータをコピーしたり、名前、説明、ポート番号を変更したりできます。

    ファイルをコピーしましょう smtp.xmlユーザー サービスを操作するためのディレクトリに移動します。

    # cp /usr/lib/firewalld/services/smtp.xml /etc/firewalld/services

    ファイル内のサービスの説明を変更します。

    XML ファイル自体も、サービスの名前に応じて名前を変更する必要があります。 その後、firewalld を再起動し、サービスがリストにあるかどうかを確認する必要があります。

    サービスに電話しました テストそしてそれがリストに現れました:

    Syslog-tls Telnet テスト TFTP

    これで、作成したサービスを任意のゾーンに追加できるようになります。

    # firewall-cmd --zone=public --add-service=test --permanent

    # firewall-cmd --zone=public --permanent --list-services

    Dhcpv6-client http https ssh テスト

    必要なサービスがリストに見つからない場合は、次のコマンドを使用して firewalld で必要なポートを開くことができます。

    # firewall-cmd --zone=public -add-port=77/tcp - ポート 77 を開きます tcp
    # firewall-cmd --zone=public -add-port=77/udp - ポート 77 を開きます udp
    # firewall-cmd --zone=public -add-port=77-88/udp - ポート範囲 77-88 を開きます udp
    # firewall-cmd --zone=public -list-ports - 許可されたポートのリストを確認します。

    ICMP 応答をブロック/許可します。

    # firewall-cmd --zone=public --add-icmp-block=echo-r​​eply
    # firewall-cmd --zone= public --remove-icmp-block=echo-r​​eply

    追加されたポートを削除します。

    # firewall-cmd --zone=public -remove-port=77/udp - 一時ルール 77 を削除します udp

    # firewall-cmd --permanent --zone=public -remove-port=77/udp - 永続的なルールを削除します

    独自のゾーンを追加する

    独自のゾーンを作成できます(これをゾーンと呼びます) 私たちの):

    # firewall-cmd --permanent --new-zone=our

    新しいゾーンの作成後、およびサービスの作成後は再起動が必要です ファイアウォール:

    # ファイアウォール-cmd --reload

    # ファイアウォール-cmd --get-zones

    ブロック dmz ドロップ外部ホーム内部私たちの公共の信頼できる仕事

    ゾーン 私たちの利用可能。 サービスを追加したり、特定のポートを開いたりできます。

    Firewalld: IP アドレスのブロック、例外の作成

    信頼できる IP アドレスをファイアウォールの例外に追加したり、不要な IP アドレスをブロックしたりできます。

    特定の IP アドレス (8.8.8.8 など) をサーバーに追加するには、次のようにします。 ファイアウォール、次のコマンドを使用します。

    # firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" 送信元アドレス="8.8.8.8" accept"

    エリアを確認して確認してください IP豊富なルールの例外に追加:

    パブリック (アクティブ) ターゲット: デフォルト icmp-block-inversion: なし インターフェイス: eth0 ソース: サービス: dhcpv6-client http https ssh テスト ポート: プロトコル: マスカレード: なし 転送ポート: ソース ポート: icmp ブロック: 豊富なルール:ルールファミリー="ipv4" 送信元アドレス="8.8.8.8" 受け入れます

    ブロックするには IP、交換する必要があります 受け入れるの上 拒否する:

    # firewall-cmd --zone=public --add-rich-rule="ルールファミリー="ipv4" 送信元アドレス="8.8.4.4" 拒否"

    # firewall-cmd --zone=public --list-all

    パブリック (アクティブ) ターゲット: デフォルト icmp-block-inversion: なし インターフェイス: eth0 ソース: サービス: dhcpv6-client http https ssh テスト ポート: プロトコル: マスカレード: なし 転送ポート: ソース ポート: icmp ブロック: 豊富なルール:ルールファミリー="ipv4" ソースアドレス="8.8.8.8" 受け入れルールファミリー="ipv4" ソースアドレス="8.8.4.4" 拒否

    特定の IP アドレスからのリクエストに対してのみ特定のサービスを許可できます。

    #firewall-cmd --permanent --add-rich-rule "rule family="ipv4" 送信元アドレス="10.10.1.0/24" サービス名="https" accept"

    サーバーへのすべてのリクエストを緊急にブロックする必要がある場合は、panic コマンドを使用します。

    # ファイアウォール-cmd --パニック-オン

    次のコマンドのいずれかを使用して、パニック モードを無効にできます。

    # ファイアウォール-cmd --パニック-オフ

    またはサーバーを再起動します。

    firewalld 構成をブロックして、ローカル サービスが ルート権作成したファイアウォール ルールを変更できませんでした:

    # ファイアウォール-cmd --lockdown-on

    ブロックモードを無効にします。

    # ファイアウォール-cmd --lockdown-off

    ファイアウォールでのポート転送

    firewalld でポート転送ルールを作成できます。 ポート 443 を 9090 に転送するには:

    # firewall-cmd --zone=public --add-forward-port=port=443:proto=tcp:toport=9090 --permanent

    ポート転送ルールを削除するには:

    # firewall-cmd --zone=public --remove-forward-port=port=443:proto=tcp:toport=9090

    FirewallD は、CentOS 7 サーバーでデフォルトで利用できるファイアウォール管理ツールです。これは基本的に IPTables のラッパーであり、グラフィカル構成ツール firewall-config とコマンド ライン ツール firewall-cmd が付属しています。 IPtables サービスでは、変更ごとに古いルールを削除し、ファイル内に新しいルールを作成する必要があります。 /etc/sysconfig/iptables`、firewalld の場合は相違点のみが適用されます。

    ファイアウォールDゾーン

    FirewallD は、Iptables のルールやチェーンの代わりにサービスとゾーンを使用します。 デフォルトでは、次のゾーンが使用可能です。

    • 落とす– 応答なしで受信ネットワーク パケットをすべてドロップし、送信ネットワーク接続のみが使用可能になります。
    • ブロック– icmp-host-prohibited というメッセージを含むすべての受信ネットワーク パケットを拒否し、送信ネットワーク接続のみが許可されます。
    • 公共– 公共エリアでの使用のために、選択された受信接続のみが受け入れられます
    • 外部の– マスカレードのある外部ネットワークの場合、選択された受信接続のみが受け入れられます。
    • DMZ– 非武装地帯 DMZ。内部ネットワークへのアクセスは制限されているが公的にアクセス可能で、選択された受信接続のみが受け入れられます。
    • 仕事
    • – ホーム ゾーンのコンピュータの場合、選択された受信接続のみが受け入れられます。
    • 内部– 内部ネットワーク上のコンピュータの場合、選択された受信接続のみが受け入れられます。
    • 信頼できる– すべてのネットワーク接続が受け入れられます。

    利用可能なすべてのゾーンのリストを取得するには:

    # firewall-cmd --get-zones ワークドロップ内部外部の信頼できるホーム dmz パブリックブロック

    デフォルトゾーンのリストを表示するには:

    # firewall-cmd --get-default-zone public

    デフォルトのゾーンを変更するには:

    ファイアウォールサービス

    FirewallD サービスは、firewalld のサービス エントリ情報を含む XML 構成ファイルです。 利用可能なすべてのサービスのリストを取得するには:

    # firewall-cmd --get-services amanda-client amanda-k5-client bacula bacula-client ceph ceph-mon dhcp dhcpv6 dhcpv6-client dns docker-registry Dropbox-lansync freeipa-ldap freeipa-ldaps freeipa-replication ftp high-availability http https imap imap ipp ipp-client ipsec iscsi-target kadmin kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mosh mountd ms-wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis Pop3 Pop3s postgresql privoxy proxy-dhcp ptp Puppetmaster radi us rpc バインドrsyncd samba samba-client sane smtp smtps snmp snmptrapquid ssh synergy syslog syslog-tls telnet tftp tftp-client tintor-socks 伝送クライアント vdsm vnc-server wbem-https xmpp-bosh xmpp-client xmpp-local xmpp-server

    XML 設定ファイルはディレクトリに保存されます /usr/lib/firewalld/services/そして /etc/firewalld/サービス/.

    FirewallD を使用したファイアウォールのセットアップ

    例として、Web サーバー、ポート 7022 の SSH、およびメール サーバーを実行している場合に、FirewallD を使用してファイアウォールを構成する方法を次に示します。

    まず、DMZ のデフォルト ゾーンを設定します。

    # ファイアウォール-cmd --set-default-zone=dmz # ファイアウォール-cmd --get-default-zone dmz

    DMZ に HTTP および HTTPS の永続的なサービス ルールを追加するには、次のコマンドを実行します。

    # firewall-cmd --zone=dmz --add-service=http --permanent # firewall-cmd --zone=dmz --add-service=https --permanent

    ポート 25 (SMTP) とポート 465 (SMTPS) を開きます。

    ファイアウォール-cmd --zone=dmz --add-service=smtp --permanent ファイアウォール-cmd --zone=dmz --add-service=smtps --permanent

    オープン、IMAP、IMAPS、POP3、POP3S ポート:

    ファイアウォール-cmd --zone=dmz --add-service=imap --permanent firewall-cmd --zone=dmz --add-service=imaps --permanent firewall-cmd --zone=dmz --add-service= Pop3 --permanent firewall-cmd --zone=dmz --add-service=pop3s --permanent

    SSH ポートが 7022 に変更されているため、SSH サービス (ポート 22) を削除し、ポート 7022 を開きます。

    ファイアウォール-cmd --remove-service=ssh --permanent ファイアウォール-cmd --add-port=7022/tcp --permanent

    変更を実装するには、ファイアウォールを再起動する必要があります。

    ファイアウォール-cmd --reload

    最後に、ルールをリストすることができます。