私の家のIP以外のすべてのIPをブロックしたいです。これを行う何もない私のサーバーに。
iptablesでどうすればいいですか?たとえば、私の家のIPが1.2.3.4であるとします。
私のサーバーはまださまざまなIPに接続できるはずです。また、これを行うと一般的な問題が発生しますか?
このような? (動作しない)
/sbin/iptables -A INPUT -s 1.2.3.4 -j ACCEPT
iptables -A INPUT -s 0.0.0.0/0 -j DROP
iptables -A OUTPUT -d 0.0.0.0/0 -j DROP
答え1
OUTPUT
チェーンを静かに保ちます。これをあなたのINPUT
チェーンに入れる
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -s 1.2.3.4 -j ACCEPT
iptables -A INPUT -j DROP # or REJECT
最初のルールを使用すると、構成iptables
で確立された接続へのトラフィック(つまり、自分のサーバーから開始して別の宛先に向かうトラフィック)を許可できます。
答え2
/etc/hosts.deny
とを使用できます/etc/hosts.allow
。
/etc/hosts.allow
:
ALL: allowed_ip
/etc/hosts.deny
:
ALL: ALL
この設定は許可されたIPからのみサーバーにアクセスします(一部の場合は問題になる可能性があります)。おそらくfirewall
サーバーへのアクセスを指定するには、一部を使用する必要があります。
ただし、上記の方法はICMP要求を処理しませんhttpd
。次のことを試すことができます。
# Allow your server to other destinations
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Default Policy to DROP all incoming traffic
iptables -P INPUT DROP
# Allow traffic from source 1.2.3.4
# Add an additional rule for each allowed source
iptables -A INPUT -s 1.2.3.4 -j ACCEPT