すべての接続をブロックしますが、iptablesを持つポートはわずか数個だけ許可してください。

すべての接続をブロックしますが、iptablesを持つポートはわずか数個だけ許可してください。

私に必要なルールは次のとおりです。

  1. すべての着信トラフィックをブロックし(インターネット>サーバー)、発信トラフィックを許可し(サーバー>インターネット)、ローカルサービスの実行を許可します。

  2. 目的のポートからの着信トラフィックのみを許可してください。

また、SSHセッション内でもこれを行う必要があります(以前はロックされていません)。

私が尋ねる理由は、私のVPSプロバイダと一緒にUFWを使用できないからです...明らかに彼らのカーネル/ OpenVZのために...

コマンドを直接学びようとすると、ツールの使い方を学んで家を建てるのと同じです。この問題を解決しようとして時間を費やすのではなく、今日より生産的に働くことができれば幸いです。誰でも私を助けることができればとても感謝します。

答え1

まず、特定のポートを許可してから、すべての着信トラフィックをブロックします。

# iptables -A INPUT -p tcp --dport 22 -j ACCEPT

デモポートのうち22個は必要に応じて変更できます。

すべての着信トラフィックをブロック

# iptables -A INPUT -j REJECT

発信するすべてのパケットを許可します。

# iptables -A OUTPUT -j ACCEPT
# iptables -A OUTPUT -o lo -j ACCEPT

答え2

@Rakibは良い答えを提供しており、それを受け入れるべきだと思います。私が与えた答えは単に彼の答えを補完しました。 OSの起動時に自動的に実行するか、要求に応じて再入力せずに実行できるようにシェルスクリプトを作成することをお勧めします。

#!/bin/sh

IPT = iptables

#allowing the specific port
$IPT -A INPUT -p tcp --dport 22 -j ACCEPT

#block all incoming traffic
$IPT -A INPUT -j REJECT

#ALLOW ALL OUTGOING PACKETS
$IPT -A OUTPUT -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT

#same thing for ip6tables (IPv6)
IPT = ip6tables
$IPT -A INPUT -p tcp --dport 22 -j ACCEPT
$IPT -A INPUT -j REJECT
$IPT -A OUTPUT -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT

私もスクリプトを2回実行しましたが、唯一の違いはIP6テーブル@Rakibの答えに対するコメントで、@Michael Molが言ったように含まれているので、IPv6でも動作します。

関連情報