如何拒绝IP地址连接到我的系统?

努克斯

有没有办法拒绝IP地址连接到我的PC?

有没有一种方法可以阻止IP连接到特定端口?

托马斯·沃德

在继续进行之前,请先注意几件事。

  1. Internet的大多数没有静态IP地址。因此,可以使用代理,Tor等来尝试绕过单个IP块。
  2. 通常,相反的做法比较安全,它可以阻止端口上的所有流量,并且仅接受某些地址。在大多数面向Web的情况下,这是不可行的,但它仍然是公认的安全实践。
  3. 我们通常不会在Internet上进行任何过滤-我们不会在第1点中考虑以下答案,并且您必须考虑如果您阻止一个IP,他们会找到解决方法,并且获得访问其他IP的权限,并继续进行攻击。

之前有人评论说,ufw比不那么复杂iptables,我用iptables在这里是因为OP使用回答了这个问题iptables的命令,这使我认为他们想要的答案是有iptables命令,而不是ufw命令/


良好的iptables防火墙配置将拒绝您在系统上需要的“可接受的连接”以外的最低要求,并且仅接受规则中明确允许的连接。

为此,默认情况下,我们必须配置iptables AND ip6tables以阻止流量,但您从计算机内部发起的流量(例如来自Firefox的网络流量等)(如果您使用的是系统)或wget要下载软件流,或允许apt更新软件包)。我们还必须允许您能够为您想要到达系统的流量添加可接受的规则。

为了使这些规则保持不变,以便它们在每次重新启动时始终有效,您应该安装该iptables-persistent软件包,该软件包将允许您保存这些规则,然后在系统启动时自动加载它们。sudo apt-get install iptables-persistent首先运行,然后添加您的规则。创建规则集后,我们将确保更新在引导时加载的规则集。

假设我们从空白处开始iptables并进行ip6tables设置(这是Ubuntu中的默认设置),则需要添加一堆规则。我将从开始iptables,然后我们将与之合作ip6tables


iptables

以下是一个基本规则集,它将限制所有尝试访问系统的数据和数据包,无论您处于何种连接状态:

接受localhost数据
iptables -A INPUT -i lo -j ACCEPT-接受LocalHost上的所有流量,该流量仅在计算机内部是本地流量。这是计算机正常运行所必需的。

接受与系统已启动的出站连接相关的数据
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT-接受与出站方向上的连接相关的所有流量,包括来自远程服务器(例如apt镜像或您正在访问的任何网站)的响应。

ICMP规则
请注意,我不会过滤掉ICMP数据包,因为通常可以接受这些数据包,除非您偏执。如果您确实要阻止ICMP,则需要使用以下规则来接受一些关键数据包:

接受“时间超出” ICMP-
iptables -A INPUT -p icmp -m icmp --icmp-type 11 -j ACCEPT接受“时间超出”数据包,这对于某些时间限制的连接设置是必需的。

接受“目标不可达” ICMP-
iptables -A INPUT -p icmp -m icmp --icmp-type 3/4 -j ACCEPT接受来自远程服务器的“目标不可达” ICMP响应。这使系统可以在您无法访问的远程站点上正常运行。

接受PING请求/响应(“ Echo” ICMP)
iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT -接受“ Echo”(又名“ Ping”)请求。这样可以很好地解决问题,因为您的系统与某些站点和/或服务的连接可能需要PING才能发出保持活动请求。

创建一个iptables表以容纳可接受的流量端口/规则
iptables -N acceptable_traffic
iptables -A INPUT -j acceptable_traffic

这样,您就有了一个表格,您可以在其中放置规则,以决定要从外部连接在系统上接受哪些流量。如果您拥有SSH服务器,则可以这样做iptables -A acceptable_traffic -p tcp --dport 22 -j ACCEPT(或将22替换为SSH服务器端口)。您也可以在此处添加其他可接受的流量规则。

拒绝所有未设置规则的流量。
有两个选项。

iptables -A INPUT -j REJECT --reject-with icmp-host-unreachable -这是第一种选择,我认为是一种更合理的阻止流量的方法,当个人尝试访问服务器时,他们将收到“主机无法访问” ICMP数据包,该数据包将终止连接尝试。

iptables -A INPUT -j DROP-这是第二个选择。这将自动丢弃所有发送到系统的,与ACCEPT规则不匹配的传入数据包。这意味着数据包将被完全忽略。来自远程位置的连接尝试将自行超时,而连接的系统没有响应。


ip6tables

iptablesIPv4一样,您必须ip6tables为IPv6配置规则相似,但不同。*如果您的系统上没有IPv6,则可能不必担心这一点,但是在系统中使用规则不会受到影响。

接受localhost数据
ip6tables -A INPUT -i lo -j ACCEPT-接受LocalHost上的所有流量,该流量仅在计算机内部是本地流量。这是计算机正常运行所必需的。

接受与系统已启动的出站连接相关的数据
ip6tables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT-接受与出站方向上的连接相关的所有流量,包括来自远程服务器(例如apt镜像或您正在访问的任何网站)的响应。

ICMPv6规则
ip6tables -A INPUT -p icmpv6 -j ACCEPT-我不会阻止IPv6 ICMP数据包,因为与IPv4不同,您应该接受十亿个以上的IPv6 ICMP数据包(即全部)。为此,您可以执行此操作以接受所有这些。

创建一个ip6tables表以容纳可接受的流量端口/规则
ip6tables -N acceptable_traffic
ip6tables -A INPUT -j acceptable_traffic

这样,您就有了一个表格,您可以在其中放置规则,以决定要从外部连接在系统上接受哪些流量。如果您拥有SSH服务器,则可以这样做ip6tables -A acceptable_traffic -p tcp --dport 22 -j ACCEPT(或将22替换为SSH服务器端口)。您也可以在此处添加其他可接受的流量规则。

拒绝所有未设置规则的流量。
有两个选项。

ip6tables -A INPUT -j REJECT --reject-with icmp6-addr-unreachable -这是第一种选择,我认为是一种更合理的阻止流量的方法,当个人尝试访问服务器时,他们将收到“地址无法访问” ICMPv6数据包,该数据包将终止连接尝试。

ip6tables -A INPUT -j DROP-这是第二个选择。这将自动丢弃所有发送到系统的,与ACCEPT规则不匹配的传入数据包。这意味着数据包将被完全忽略。来自远程位置的连接尝试将自行超时,而连接的系统没有响应。


保存所有规则

自从我之前告诉您安装iptables-persistent软件包以来,您实际上需要保存规则,以便以后可以加载它们。

注意:这组命令实际上使您进入超级用户外壳程序。除了我在此处声明的这些命令外,您在此外壳中不应做任何其他事情!

执行以下命令:

sudo -s
iptables-save > /etc/iptables/rules.v4
ip6tables-save > /etc/iptables/rules.v6
exit

这将保存规则,以便可以在每次重新启动时加载它们。如果您以后编辑规则,则需要重新运行这些命令以保存规则。


如果我实际上希望阻止不良IP列表怎么办?

我们仍然可以这样做!您可能需要针对“不良”流量的阻止列表。因此,这是我的解决方案,就像之前将其分为两部分一样,iptablesip6tables


iptables

创建一个表 prohibited_traffic

现在,我们需要创建一个prohibited_traffic表。您将在此处添加“错误IP”。然后,我们需要将prohibited_traffic规则插入INPUT表中。(在下面的示例中,我使用2表示插入此规则的规则编号位置,将其放置在以下规则之后ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED

iptables -N prohibited_traffic
iptables -I INPUT 2 -j prohibited_traffic

添加规则以阻止某些IP

现在,我们添加IP以阻止该prohibited_traffic表。这是模板:

iptables -A prohibited_traffic -s SourceIPAddress -j DROP

将“ SourceIPAddress”替换为您要阻止的IP地址。如果要阻止的IP范围较大,则需要采用“范围”并确定包含所有IP地址的CIDR范围,然后使用该格式IPV4ADDRESS/cidr来阻止包含IP的CIDR范围。如果没有CIDR或一个接一个地添加很多IP,就无法完成范围限制。


ip6tables

这几乎与 iptables

创建一个表 prohibited_traffic

现在,我们需要创建一个prohibited_traffic表。您将在此处添加“错误IP”。然后,我们需要将prohibited_traffic规则插入INPUT表中。(在下面的示例中,我使用2表示插入此规则的规则编号位置,将其放置在以下规则之后ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED

ip6tables -N prohibited_traffic
ip6tables -I INPUT 2 -j prohibited_traffic

添加规则以阻止某些IP

现在,我们添加IP以阻止该prohibited_traffic表。这是模板:

ip6tables -A prohibited_traffic -s SourceIPAddress -j DROP

将“ SourceIPAddress”替换为您要阻止的IP地址。如果要阻止的IP范围较大,则需要采用“范围”并确定包含所有IP地址的CIDR范围,然后使用该格式IPV6ADDRESS/cidr来阻止包含IP的CIDR范围。如果没有CIDR或一个接一个地添加很多IP,就无法完成范围限制。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何拒绝IP地址连接到我的系统?

来自分类Dev

如何获得将访问者连接到我的网站的IP地址/位置,并向我显示其地址?

来自分类Dev

如何在没有来自另一个网络的外部 IP 地址的情况下连接到我的服务器?

来自分类Dev

如何找到我以前的IP地址

来自分类Dev

如何通过静态本地IP远程SSH连接到我的Raspberry Pi?

来自分类Dev

如何使用路由器的公共IP连接到我的个人计算机?

来自分类Dev

如何在保护我的IP地址的同时从外部连接到SSH服务器

来自分类Dev

我如何找到我的内部IP地址?

来自分类Dev

OpenSSL errno 10054,尝试连接到我们的服务器时,连接被拒绝

来自分类Dev

为什么我不能通过 SSH 连接到我可以成功 ping 的 IP 地址?(mssfix 不能作为解决方案)

来自分类Dev

如何找到我计算机的IP地址?

来自分类Dev

有没有更好的方法可以连接到我的NAS驱动器,然后使用Lubuntu smb:// [IP地址]?

来自分类Dev

如何连接到我的远程SQL Server

来自分类Dev

如何找到我连接到的WDS接入点?

来自分类Dev

如何从网络外部通过SSH连接到我的VM

来自分类Dev

如何通过SSH连接到我的Web主机

来自分类Dev

如何将此功能连接到我的 connectButton?

来自分类Dev

如何知道哪些设备连接到我的 UbuntuOne 帐户?

来自分类Dev

如何将运费价格连接到我的程序?

来自分类Dev

如何将“名字”表单连接到我的函数?

来自分类Dev

如何使用 DBeaver 连接到我的本地 kubernetes CockroachDB?

来自分类Dev

如何检查特定的IP地址是否连接到网络

来自分类Dev

如何连接到IP地址未知的无头Windows盒?

来自分类Dev

如何通过名称而不是IP地址连接到libvirt VM

来自分类Dev

拒绝连接到同一台机器的本地IP地址(192.68 ....)

来自分类Dev

拒绝连接到同一台机器的本地 IP 地址 (192.68....)

来自分类Dev

查找连接到我的计算机的设备的MAC地址

来自分类Dev

分配公共IP后我无法连接到我的rasbian

来自分类Dev

检查某些USB闪存是否已连接到我的系统

Related 相关文章

  1. 1

    如何拒绝IP地址连接到我的系统?

  2. 2

    如何获得将访问者连接到我的网站的IP地址/位置,并向我显示其地址?

  3. 3

    如何在没有来自另一个网络的外部 IP 地址的情况下连接到我的服务器?

  4. 4

    如何找到我以前的IP地址

  5. 5

    如何通过静态本地IP远程SSH连接到我的Raspberry Pi?

  6. 6

    如何使用路由器的公共IP连接到我的个人计算机?

  7. 7

    如何在保护我的IP地址的同时从外部连接到SSH服务器

  8. 8

    我如何找到我的内部IP地址?

  9. 9

    OpenSSL errno 10054,尝试连接到我们的服务器时,连接被拒绝

  10. 10

    为什么我不能通过 SSH 连接到我可以成功 ping 的 IP 地址?(mssfix 不能作为解决方案)

  11. 11

    如何找到我计算机的IP地址?

  12. 12

    有没有更好的方法可以连接到我的NAS驱动器,然后使用Lubuntu smb:// [IP地址]?

  13. 13

    如何连接到我的远程SQL Server

  14. 14

    如何找到我连接到的WDS接入点?

  15. 15

    如何从网络外部通过SSH连接到我的VM

  16. 16

    如何通过SSH连接到我的Web主机

  17. 17

    如何将此功能连接到我的 connectButton?

  18. 18

    如何知道哪些设备连接到我的 UbuntuOne 帐户?

  19. 19

    如何将运费价格连接到我的程序?

  20. 20

    如何将“名字”表单连接到我的函数?

  21. 21

    如何使用 DBeaver 连接到我的本地 kubernetes CockroachDB?

  22. 22

    如何检查特定的IP地址是否连接到网络

  23. 23

    如何连接到IP地址未知的无头Windows盒?

  24. 24

    如何通过名称而不是IP地址连接到libvirt VM

  25. 25

    拒绝连接到同一台机器的本地IP地址(192.68 ....)

  26. 26

    拒绝连接到同一台机器的本地 IP 地址 (192.68....)

  27. 27

    查找连接到我的计算机的设备的MAC地址

  28. 28

    分配公共IP后我无法连接到我的rasbian

  29. 29

    检查某些USB闪存是否已连接到我的系统

热门标签

归档