阻止所有 IP 访问服务器上的任何内容

阻止所有 IP 访问服务器上的任何内容

我想阻止除我自己的家庭 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来指定对服务器的访问权限。

但上面不会处理httpdICMP请求,你可以试试这个:

# 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

相关内容