我想阻止除我自己的家庭 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
来指定对服务器的访问权限。
但上面不会处理httpd
ICMP请求,你可以试试这个:
# 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