iptables:允许某些 ip 并阻止所有其他连接

iptables:允许某些 ip 并阻止所有其他连接

如何在 iptables 中允许某些 ip 并阻止所有其他连接?

答案1

我写了一个有关桌面用户基本 Iptables 规则的博客文章很久以前,你可能应该阅读它,以及它的链接文章状态防火墙设计。但是内核 2.6.39 之前的版本(其中包括,ipset如果您有超过 10 个要列入白名单的 IP(其中 10 个是任意的),您可能希望将其用于白名单 IP)。

首先处理我们想要接受或丢弃的状态和接口。

iptables -P FORWARD DROP # we aren't a router
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -s 192.168.1.1 -j ACCEPT
iptables -P INPUT DROP # Drop everything we don't accept

如果您只想仅通过 IP 进行允许,无需状态

iptables -A INPUT -s 192.168.1.1 -j ACCEPT
iptables -A OUTPUT -d 192.168.1.1 -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT DROP

不过,这样做可能会遇到问题,我建议使用状态来让您的生活更轻松。例如,不允许-i lo并且-o lo肯定会给某些应用程序带来问题。

答案2

这是一个(未经测试!)的示例,它会阻止传入仅连接。允许通过环回接口从 192.168.3.x、ICMP 或 SSH 端口进行连接。所有其他连接都被拒绝。

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -s 192.168.3.0/24 -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -j REJECT

答案3

以下规则将仅允许您的 IP 并阻止通过端口 22 或 ssh 的所有其他 IP。断开连接之前使用新终端进行测试。

iptables -I INPUT -p tcp ! -s yourIPaddress --dport 22 -j DROP

答案4

这是完整的工作示例。
也使应用程序正常工作(回复:我关于keepass未启动的评论)

https://github.com/skironDotNet/linux-allow-only-single-ip

相关内容