新手的iptables,好奇,感兴趣(第二部分)

何时 DesdeLinux 我当时只有几个月大,我写了一个非常简单易懂的关于 iptables 的教程: 面向新手的iptables,好奇,感兴趣(第1部分) 。 我使用比喻来比较我们的计算机和房屋,防火墙和房屋的门以及其他示例,在没有太多技术或复杂概念的情况下,我以一种有趣的方式解释了什么是防火墙,什么是iptables以及如何开始使用它以及配置。 这是先前iptables教程的第二部分的延续

发生在几天前,我使用Linksys AP(接入点)在女友家里放了一个Wifi,尽管本地人在技术上不是最了解,也就是说,并不是存在很多开裂的危险,但总是在Wifi和计算机中均具有出色的安全性是一个好主意。

我不会在这里评论Wi-Fi安全,因为这不是发布的目标,我将重点介绍我当前在笔记本电脑上使用的iptables配置。

以下命令在终端中执行,它们需要以管理员权限执行,我将在每个命令之前添加sudo,您可以通过以root身份直接执行命令来执行相同操作或避免使用sudo

在上一篇文章中,我曾解释过,在防火墙中有必要首先拒绝所有传入流量,为此:

sudo iptables -P INPUT DROP

然后,我们必须允许我们自己的计算机具有输入数据的权限:

sudo iptables -A INPUT -i lo -j ACCEPT

以及接受来自我们计算机的请求数据包:

sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

为了更好地理解这些行,我建议阅读上一篇文章的前半部分: 面向新手的iptables,好奇,感兴趣(第1部分)

到目前为止,我们的计算机可以毫无问题地浏览Internet,但是任何其他环境(LAN,Internet,Wifi等)都无法以任何方式访问我们的计算机。 我们将根据需要开始配置iptables。

使用ulogd将iptables日志输出到另一个文件:

默认情况下,iptables日志进入内核日志,系统日志或类似的文件...默认情况下,在Arch中,现在我什至不记得它们的去向,这就是为什么我使用 乌洛格德 以便iptables日志位于另一个文件中。

sudo iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j ULOG

允许访问我的私有服务器:

我不使用VirtualBox或类似虚拟化的工具,而是使用 Qemu + KVM 它必须能够像我刚才在上面指定的iptables规则那样连接到我的笔记本电脑,所以这就是为什么我必须授予我的虚拟服务器IP的权限以便它可以访问我的笔记本电脑的原因:

sudo iptables -A INPUT -i virbr0 -p tcp -s 192.168.122.88 -j ACCEPT

我们将详细介绍这一行,理解每个参数的含义很重要,因为从现在开始,它们将被重复很多次:

-输入 :我是说要声明入站流量规则

-i virbr0 :我声明接受流量的接口不是etho(LAN)或wlan0(Wifi),我具体说这是我的virbr0接口,即笔记本电脑通过其进行通信的虚拟网络接口(内部)。我的虚拟服务器(反之亦然)

-p TCP :我指定了协议,最常用的是UDP和TCP,在这里真的不用放了,但是...习惯上是指定要接受的协议类型

-s 192.168.122.88 :软件包的来源,来源。 换句话说,该规则指的是专门来自IP 192.168.122.88的数据包

-j接受 :在这里,我已经说过要处理与上述匹配的软件包,在这种情况下,请接受。

换句话说,作为总结,我将接受来自IP 192.168.122.88的数据包,但是如果您要输入来自该IP BUT的数据包! 他们从不是virbr0的接口进入,也就是说,他们尝试从IP 192.168.122.88输入数据包,但它们是从我们Wifi网络中的计算机输入的,如果是这种情况,数据包将被拒绝。 为什么? 因为我们明确指定为yes,所以我们接受来自192.168.122.88的数据包,但是(仅)但是,如果数据包来自另一个接口(LAN,RAS,Wifi和其他),它们还必须从virbr0接口(内部,虚拟网络接口)进入等等),那么它们将不被接受。 通过指定接口,您可以看到我们可以进一步限制它,从而可以更好地控制输入(或不输入)计算机的内容。

从家庭Wifi的任何IP接受ping:

从其他连接到Wifi的计算机上,如果您尝试ping我的笔记本电脑,我想允许它。 原因? 想法还在于,在接下来的几周内将隔壁房屋中的PC链接到网络,因此共享信息将变得更简单,更流畅,当我开始进行测试以将台式机链接到Wifi时,我将需要ping通便携式计算机以检查连接性,如果我的便携式计算机不能ping通我,我可以认为AP出现故障,或者访问Wifi时出错,这就是为什么我希望允许ping通。

sudo iptables -A INPUT -i wlo1 -p icmp -s 192.168.1.0/24 -d 192.168.1.51 -j ACCEPT

-输入 :和以前一样,我指的是传入流量

-i wlo1 :与以前相似。 在前一种情况下,我指定了虚拟接口,在本例中,我指定了另一个接口,即我的wifi接口:wlo1

-p icmp :icmp协议,icmp = ping。 也就是说,我不允许SSH或类似的东西,我仅允许ping(icmp)

-s 192.168.1.0/24 :数据包的来源,即,只要数据包来自IP 192.168.1。 将被接受

-d 192.168.1.51 :目标IP,即我的IP。

-j接受 :我指出如何处理与以上匹配的软件包,请接受。

也就是说,为了以一种运行方式进行解释,我接受它们可以ping通我(icmp协议),其目的地专门是我的IP,只要它们来自诸如192.168.1 .__之类的IP,而且它们也不能来自任何网络接口,他们必须专门从我的Wifi网络界面(wlo1)输入

仅对一个IP接受SSH:

有时我需要通过 通过我的智能手机进行SSH控制笔记本电脑,这就是为什么我必须为此从Wifi的IP允许SSH访问笔记本电脑的原因:

sudo iptables -A INPUT -i wlo1 -p tcp -s 192.168.1.0/24 -d 192.168.1.51 --dport 22 -j ACCEPT

与此行唯一不同或值得强调的是: –Dport 22 (我使用的SSH端口)

换句话说,我接受通过端口22连接到我的笔记本电脑的尝试,只要它们来自我的wifi的IP,它们还必须具有我的IP作为特定的目的地,并且还必须通过wlo1接口进行,即,我的wifi(不是局域网等)

允许他们查看您的网站:

这不是我的情况,但是如果你们中的任何一个拥有托管网站,并且不想拒绝任何人的访问,也就是说,任何地方的每个人都可以访问该网站,这比您想象的要简单得多:

sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT

换句话说,这里它们允许通过端口80的所有传入流量(tcp)。如您所见,我没有指定允许访问的IP或网络,没有指定允许的IP范围,iptables假定我想要允许访问所有现有的IP范围,即整个世界🙂

其他组合:

我还有许多其他规则,例如,从我的家庭LAN接受ping IP(为此,它基本上与上述相同,更改IP范围),这与我上面刚刚解释的...像这样的笔记本电脑,我不使用真正复杂的东西,例如限制连接,抗DDoS,我将其留给服务器使用,在我的笔记本电脑上,我不需要它🙂

无论如何,到目前为止,这篇文章。

如您所见,使用iptables并没有那么复杂,也没有那么简单,一旦构建了一个可以在其中编写规则的脚本,然后对其进行修改,向防火墙添加或删除规则就非常简单。

我认为自己不是这个主题的专家,尽管您可能有任何疑问,但他们在这里评论,我将尽我所能。

问候


发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责数据:MiguelÁngelGatón
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。

  1.   冒险

    很好,很好解释,很好。
    我喜欢这种类型的帖子。

    1.    KZKG ^ Gaara

      非常感谢您的评论🙂

      这篇文章是我长期以来的债务,最终能够偿还这笔钱令人愉快。^ _ ^

      问候

      1.    飞思康

        你在古巴有问题吗?
        …几天前,我使用Linksys AP(接入点)在我女友的家里放了一个Wifi。

        1.    KZKG ^ Gaara

          是的,我当然是在古巴出生和生活的。 为什么这样问?

        2.    山姆·伯格斯

          @FIXOCONN:朋友您好,请原谅问题的旁白,但是如何定义Cinnamon在用户代理中显示为桌面环境? 我将Mint 13与Cinnamon一起使用,但每次在此站点上发表评论时,都不会在用户代理中显示Cinnamon徽标

          如果不太麻烦,您是否愿意将我的用户代理详细信息传递给我? 我想知道这些数据可以自己放置)

          我在页面上留下一个页面,以便您可以对其进行查看并提供信息。 谢谢和管理员,请原谅本信息中的“拖钓”(如果可以这样称呼)-> http://user-agent-string.info/

          1.    KZKG ^ Gaara

            在UserAgent的任何部分添加“肉桂”(不带引号),然后徽标应出现在以后的注释中🙂

  2.   布鲁诺·卡西欧(Bruno Cascio)

    很好的帖子! 很清楚😀

    1.    KZKG ^ Gaara

      感谢您的阅读和感谢您的评论comment

  3.   凭单

    谢谢,对我有帮助!

  4.   奥斯卡·格拉纳达(Oscar Granada)

    您好,首先祝贺您的博客,我认为那太好了。
    可能要提到的一点是,使用ULOG登录的选项在具有ulogd2的操作系统中不起作用,在这种情况下,规则应为:
    sudo iptables -A INPUT -p tcp -m tcp –tcp-flags FIN,SYN,RST,ACK SYN -j NFLOG

    1.    KZKG ^ Gaara

      首先,非常感谢您对博客的评价🙂

      在Arch中,我安装了ulogd v2.0.2-2,并且放置的行没有问题(我必须在/etc/ulogd.conf中放入loglevel = 1,但是它将日志无问题地转移到另一个文件中。

      您是否使用ulogd v2或更高版本,我留下的那一行对您来说是否有问题?

      致谢,并感谢您的评论。

  5.   城市

    我一直在等待第二部分,记得当我读第一部分时(这是我对防火墙的入门)。 谢谢@ KZKG ^ Gaara,问候🙂

    1.    KZKG ^ Gaara

      感谢您阅读我😀
      嘿,是的,我说的是...这篇文章是我很久以前的一笔债务^ _ ^

  6.   何塞路易斯冈萨雷斯

    问候。 很好的帖子。 我正在尝试配置iptables规则,以将流量从鱿鱼重定向到dansguardian,但仍无法实现目标。 我希望在这方面有所帮助。

    1.    KZKG ^ Gaara

      iptables的? 这不是直接用Squid中的ACL完成的吗?

  7.   无名

    “我还有很多其他规则,例如..”
    这就是我所谓的偏执狂,男孩
    再多一点,您就在调制解调器/路由器的每个开放端口中放了一包Rotwailer'

    1.    KZKG ^ Gaara

      哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈

  8.   伊万

    问候的朋友,碰巧我需要帮助来配置IPTables,这样当我在自定义名称服务器的浏览器中键入地址时(例如,当我键入ns80.mydomain.com和ns1.mydomain。com(这是我的名称服务器)IPtables拒绝访问端口2,以便浏览器尝试加载该页面,但过了一段时间却永不加载,这是因为我已经尝试使用以下命令:

    iptables -A输入-d ns1.midomini.com -p tcp –dport 80 -j DROP
    iptables -A输入-d ns2.midomini.com -p tcp –dport 80 -j DROP

    但是它唯一要做的就是拒绝所有域中的端口80进入(因为它们与虚拟主机共享相同的IP),我希望它只能出现在我的名称服务器的网址和我的名称服务器指向的IP上,也就是说,IP表在以下位置拒绝访问端口80:

    ns1.midomini.com(指向A)-> 102.887.23.33
    ns2.midomini.com(指向A)-> 102.887.23.34

    以及域名服务器指向的IP

    102.887.23.33
    102.887.23.34

    具有此系统的公司的示例是:Dreamhost
    他们的名称服务器:ns1.dreamhost.com和ns2.dreamhost.com,它们指向的IP在浏览器的地址栏中键入时没有响应

    提前非常感谢您的关注,我非常希望您能对此给予帮助,我真的很需要它,迫切需要!

    美好的一天 !!

    1.    KZKG ^ Gaara

      嗨伊万,

      通过电子邮件联系我 (kzkggaara[at]desdelinux[dot]net)更冷静地谈论它并更好地解释它,明天我一定会回答你(今天我路过)

      您想做的事情很简单,我不知道为什么您告诉我的行对您不起作用,但您必须检查日志和其他可能在此处过长的内容。

      问候,我在等你的电子邮件

  9.   涅森夫

    从理论上讲,使用iptables可以避免从aircrack之类的程序收到断开连接请求。 我是正确的??? 好吧,我会做测试,但是如果您告诉我,您会让我非常高兴XDDD

    1.    KZKG ^ Gaara

      从理论上讲,我想是这样,现在,我不知道该怎么做,我从未做过……但我再说一遍,从理论上讲,我认为可以。

  10.   Alex

    应用iptables规则后,我无法访问本地网络上的共享Windows文件夹。 我应该应用什么规则来解决它?
    谢谢。

    1.    KZKG ^ Gaara

      您应用了哪些iptables规则?
      这是“新手iptables”的第二部分,您读过第一部分吗? 我想知道您是否应用了上一篇文章中的规则

      1.    Alex

        是的,我已经阅读了这两部分。 对于脚本,我以您发布的另一篇有关systemd启动规则的文章为基础。

        #!/斌/庆典
        #-UTF 8-

        #iptables二进制
        iptables =»/ usr / bin / iptables»

        扔出去 ””

        ##清理桌子##
        $ iptables -F
        $ iptables -X
        $ iptables -Z
        #echo»-将FLUS制作为iptables»&& echo»»

        ##使用ULOGD建立日志##
        $ iptables -A INPUT -p tcp -m tcp –tcp-flags FIN,SYN,RST,ACK SYN -j ULOG

        ##定义默认的DROP策略##
        $ iptables -P输入滴
        $ iptables -P FORWARD DROP
        #echo»-默认情况下定义的DROP策略»&& echo»»

        ##一切都允许localhost ##
        $ iptables -A输入-i lo -j接受
        $ iptables -A输出-o lo -j接受
        #echo»-允许所有本地主机»&& echo»»

        ##允许输入我发起的连接的数据包##
        $ iptables -A输入-m状态–状态已建立,相关-j接受
        #echo»-允许由我发起的连接数据包»&& echo»»

        扔出去 ” ##############################”
        echo»## IPTABLES配置好了! ##»
        扔出去 ” ##############################”

        我在互联网上阅读过,对于samba,您应该在脚本中具有以下规则:

        $ iptables -A输入-p tcp –dport 139 -j接受
        $ iptables -A输入-p tcp –dport 445 -j接受
        $ iptables -A INPUT -p udp –sport 137 -j ACCEPT
        $ iptables -A输入-p udp –dport 137 -j接受
        $ iptables -A输入-p udp –dport 138 -j接受

        但是,没有他们,我看不到Windows工作组。 :S

      2.    Alex

        问题解决了。 修改工作组,主机允许samba配置文件中的参数。

  11.   奥特曼兹

    很棒的文章,太棒了!
    我只是读过它,我既喜欢您解释它的方式,也喜欢iptables的真正有用的用法,我真的很想学习如何更深入地使用它。
    问候和精彩的文章,希望您能发表有关Iptables的更多信息! ^^

  12.   LEO

    亲;

    我有一个带iptables的代理,我的网络之一无法ping通 http://www.google.cl 因此,我阻塞了端口,并尝试了千种方法来打开端口,但没有任何反应。 如果无法ping通,则无法连接Outlook

  13.   博尔哈

    恭喜您! 很好。 但是我有一个问题。 有时,网络中分配给您的IP地址可以更改(如果确实可以为我们的MAC地址分配IP),但是Iptables是否有可能允许通过MAC地址通过SSH访问我们的服务器?

    我希望我已经很好地解释了自己。

    致谢,非常感谢!

  14.   费尔南多·马丁·甘

    嗨,您知道我已经配置了linux服务器,并且在放置了这些命令后,我阻止了所有操作并失去了访问权限,我几乎可以恢复所有操作,但是我丢失了两件事。 *如果通过ip,2进行通信,我将无法再通过Web浏览器通过cname«服务器»进行访问,另一方面,在放置\\服务器和服务器之前,我看不到网络上Windows资源管理器的共享资源。看了所有共享资源。 希望您能帮助我,我知道这很愚蠢,但我无法解决,谢谢

  15.  

    我逐字引用:

    icmp协议,icmp = ping。 也就是说,我不允许SSH或类似的东西,我仅允许ping(icmp)

    ICMP和PING不相同。 Ping是ICMP协议的一部分,但还不是全部。 ICMP(Internet控制消息协议)协议具有更多用途,其中一些存在一定的危险。 并且您正在接受所有ICMP流量。 您将只限于ping。

    Saludos!

  16.   奥克

    我必须进行实习,但是对iptables的了解不多,请您帮我一下。
    谢谢!!!!!!!