特定のインターフェイスにのみバインドするようにサーバーアプリケーションを構成するにはどうすればよいですか?

特定のインターフェイスにのみバインドするようにサーバーアプリケーションを構成するにはどうすればよいですか?

IP 10.0.0.2のファイアウォールがあり、NTPサーバーがあります。内部ネットワーク10.0.0.0/24のみNTPサーバーにアクセスしたいです。外部ネットワークがNTPサーバーにアクセスすることを許可したくありません。ファイアウォールでこれらの権限を設定したいので、iptablesを使用する必要があります。誰でも私を助けることができますか?

ベストアンサー1

特定のインターフェイスにのみバインドするようにサーバーアプリケーションを構成するにはどうすればよいですか?

これはアプリケーションによって異なります。マニュアルを確認してください。ntpd特定の例では、以下を使用できます。

# excerpt from ntp.conf
interface ignore wildcard
interface listen 127.0.0.1
interface listen 10.0.0.2

構成ファイルから。とにかくサーバーのデフォルト構成を変更することになるので、これが最初の選択でなければならず、ファイアウォールが何らかの方法でバイパスされた場合(たとえば、誤ってすべてを許可するように設定されている場合)、いくつかのセキュリティを提供します。

サーバーアプリケーションが使用するポートを確認するには?

すべてではありませんが、多くのシステムに/etc/services。以下で契約を検索できます。iana-etcfilesystem

$ awk ' $1 == "ntp" ' /etc/services
ntp        123/tcp
ntp        123/udp

これは、NTPプロトコルがTCPとUDPの両方でポート123を使用していることを示しています。たとえば、SSH を使用することもできます。

$ awk ' $1 == "ssh" ' /etc/services
ssh        22/tcp
ssh        22/udp
ssh        22/sctp

SSH がポート 22 にあることを確認します。これはサーバー文書を確認するのと同じくらい信頼できませんが、通常は機能します。

特定のインターフェイスからトラフィックを削除するようにiptablesにどのように指示できますか?

それがあなたの目標なら、あなたは逆さまに向かっているのです。デフォルトでは、すべてが削除され、必要なトラフィックが許可されます。

ここでは、(過度に単純化された)次のような結果が得られます。

# modified excerpt from iptables.rules
# to be sourced by
#    iptables-restore < iptables.rules
*filter
:INPUT DROP [0:0]
:OUTPUT ACCEPT [0:0]

# Allow inputs on non-privileged ports
-A INPUT -p tcp ! --dport 0:1023 -j ACCEPT
-A INPUT -p udp ! --dport 0:1023 -j ACCEPT

# Allow anything on the loopback interface
-A INPUT -i lo -j ACCEPT

# Allow NTP access from the LAN
# you could use
#    -i internal-interface-name
# instead of (or in addition to)
#    -s 10.0.0.0/24
# to filter by interface rather than source address
-A INPUT -p tcp -s 10.0.0.0/24 --dport 123 -j ACCEPT
-A INPUT -p udp -s 10.0.0.0/24 --dport 123 -j ACCEPT

# Allow HTTP from anywhere
-A INPUT -p tcp --dport 80 -j ACCEPT

# Allow SSH from the external interface
# replace external-interface-name with the actual name
-A INPUT -p tcp -i external-interface-name --dport 22 -j ACCEPT

# Maybe explicitly reject and log:
# -A INPUT -j LOG --log-level warning --log-prefix "Rejected input: "
# -A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable
# -A INPUT -p tcp -j REJECT --reject-with tcp-reset
# -A INPUT -j REJECT --reject-with icmp-proto-unreachable
COMMIT

LANでは、NTPアクセス許可ブロックは、ユーザが指定する特定のサーバおよびソースアドレス範囲の例である。また、ビルドできるいくつかの異なる例も提供しました。

この構成では、サービスをアクティブ化するときにサービスへのアクセスを明示的に許可するように注意する必要があります。

おすすめ記事