サーバーが接続できるようにするIP範囲と、ユーザーが接続するIP範囲がいくつかあります。それ以外はすべてブロックする必要があります。
Iptablesでどうすればよいですか?
私のOSはDebianベースのLinuxディストリビューションです。
Firestarter などのファイアウォール構成ツールを入手して、そこから移行することをお勧めします。ただし、ここではいくつかの基本事項を示します。
#Flush existing rules
iptables -F
# Set up default DROP rule for eth0
iptables -P INPUT DROP
# Allow existing connections to continue
iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
# Accept everything from the 192.168.1.x network
iptables -A INPUT -i eth0 -s 192.168.1.0/24 -j ACCEPT
# Allow connections from this Host to 192.168.2.10
iptables -A OUTPUT -o eth0 -d 192.168.2.10 -j ACCEPT
iptables -I INPUT -s <allowed_ip> -j ACCEPT #(repeat this line as needed)
iptables -P INPUT DROP
これにより、システムが許可されていないコンピュータ用の存在しないシステムに変わります。
サブネット全体ではなく任意の範囲を許可する場合は、「iprange」iptablesモジュールを使用できます。
iptables -P INPUT DROP
iptables -A INPUT -m iprange --src-range 192.168.1.30-50 -j ACCEPT
たとえば、192.168.1.30から192.168.1.50までのアドレスを持つすべてのマシンからのトラフィックを許可します。
同じ範囲のIPへの着信トラフィックと発信トラフィックを許可する場合は、特定のチェーンを作成して、そのIPを許可し、そのIPへのすべての入出力ターゲットをターゲットにすることをお勧めします。
-デフォルトポリシーを定義して、everithingを削除します。
iptables -P INPUT DROP
iptables -P OUTPUT DROP
-新しいチェーンを作成します。
iptables -N allowed_ips
-ソースが許可された範囲の一部である場合は、受け入れます
iptables -A allowed_ips -m iprange --src-range 192.168.1.30-50 -j ACCEPT
-そうでない場合は、呼び出しチェーンに戻って処理を続行します。
iptables -A allowed_ips -j RETURN
-マシンに出入りするすべてのトラフィックが新しいチェーンを通過するようにします。
iptables -A INPUT -j allowed_ips
iptables -A OUTPUT -j allowed_ips
以上です!もちろん、loインターフェースとの間のすべてのトラフィックを許可するルールなど、追加のルールが必要になる場合があります。
ルールに満足したら、 おそらくルールを保存したい です。このリンクのコメントには、その方法に関するいくつかのオプションがあります。
単純なニーズのための使いやすいiptablesルールジェネレーターは fw です。パッケージは、debian不安定版で入手できます。
Firestarter も試してください。レニーで利用可能。
ferm を使用することもできます。これは、昨年も使用していて、条件付きファイアウォールルールなどのケースで非常に役立ちました。