资料下载

配置Linux充当防火墙-Linux IPTables基础

由管理员撰写。发表于 的Linux系统和网络服务

4.125 1 1 1 1 1 评分4.13(8投票)
压住他

防火墙到底是什么?与在非计算机世界中一样,防火墙充当物理屏障,以防止火灾蔓延。在计算机世界中,防火墙也以类似的方式起作用,只有它们阻止蔓延的火焰才是攻击,这些攻击是计算机在Internet上时产生的。因此,防火墙也可以称为数据包过滤器,它位于计算机和Internet之间,用于控制和调节信息流。

当今使用的大多数防火墙都是过滤防火墙。它们位于计算机和Internet之间,并且仅限制对网络上的特定计算机的访问。还可以对其进行编程以限制通信类型,并有选择地允许或拒绝几种Internet服务。

组织从其ISP接收其可路由的IP地址。但是,给定的IP地址数量是有限的。因此,必须找到共享Internet服务的替代方法,而LAN上的每个节点都不会获得公共IP地址。通常,这是通过使用专用IP地址来完成的,以便所有节点都能够正确访问外部和内部网络服务。

防火墙用于接收来自Internet的传入传输,并将数据包路由到LAN上的预期节点。同样,防火墙也用于将传出的请求从LAN上的节点路由到远程Internet服务。

当现代的破解工具可以欺骗内部IP地址并允许远程攻击者充当LAN上的节点时,这种转发网络流量的方法可能证明是危险的。为了防止这种情况,iptables提供路由和转发策略,可以将其实现以防止网络资源的异常使用。例如,FORWARD链使管理员可以控制数据包在LAN中的路由位置。

LAN节点可以相互通信,并且可以使用其内部IP地址接受来自防火墙的转发数据包。但是,这没有给他们提供与外部世界和Internet进行通信的便利。

为了允许具有私有IP地址的LAN节点与外界通信,必须配置防火墙以伪装IP。然后,LAN节点发出的请求将被防火墙外部设备的IP地址(例如eth0)掩盖。

 

如何使用IPtables配置防火墙

每当数据包到达防火墙时,都会对其进行处理或忽略。忽略的数据包通常是那些以某种方式变形或以某种技术方式无效的数据包。根据被处理数据包的活动,数据包被放入三个内置“表”之一中。第一个表是mangle表。这会更改TCP标头中的服务位。第二个表是过滤器队列,它负责处理数据包的实际过滤。它由三个链组成,您可以将防火墙策略规则放在这些链中(如下图所示):

- 前锋 链:过滤要转发到受防火墙保护的网络的数据包。

- 输入值 链:过滤到达防火墙的数据包。

- 输出量 链:过滤离开防火墙的数据包。

第三个表是 NAT 表。在此处执行网络地址转换或NAT。其中有两个内置链:

- 预先路由 chain:对需要更改目的地址的报文进行NAT处理。

- 路由后 链:对需要更改其源地址的数据包进行NAT。

只要设置了规则,就必须指定它所属的表。 “过滤器”表是唯一的例外。这是因为大多数“ iptables”规则都是过滤器规则。因此,筛选器表是默认表。

下图显示了过滤器表中的数据包流。进入Linux系统的数据包遵循特定的逻辑路径,并根据其特性做出决策。下面显示的路径与它们进入或退出的网络接口无关:

筛选器队列表

linux-ip-filter-table表


 每个链基于以下内容过滤数据包:

  • 源和目标IP地址
  • 源和目标端口号
  • 网络接口(eth0,eth1等)
  • 封包状态 
规则的目标:接受,删除,拒绝,排队,返回和记录

 

如前所述,NAT规则表主要包括两个链:依次检查每个规则,直到一个匹配。这两个链称为 展示 (对于目标NAT,因为数据包先进入),并且 后伸 (对于源NAT,随着数据包的离开)。

 

NAT 表

linux-nat-table

 

在以上每个点,当数据包通过时,我们都会查找与之关联的连接。如果是新连接,我们将在NAT表中查找相应的链,以查看如何处理。它给出的答案将应用于该连接上所有将来的数据包。

这里最重要的选项是表选择选项`-t'。对全部 NAT 操作,您将需要使用`-t nat'表示NAT表。使用的第二个最重要的选项是-A在链的末尾附加一个新规则(例如-A 后伸),或-I在其开头插入一个规则(例如-I 展示) )。

以下命令为所有传出数据包启用NAT。 Eth0是我们的WAN接口:
# iptables -t nat -A 后伸 -o eth0 -j伪装

 

如果您宁愿实现静态NAT,将内部主机映射到公共IP,则命令应如下所示:

# iptables -A 后伸 -t nat -s 192.168.0.3 -o eth0 -d 0/0 -j SNAT-至203.18.45.12

使用上述命令,从内部IP 192.168.0.3发送的所有传出数据包都将映射到外部IP 203.18.45.12。

换句话说,下面的命令用于启用从WAN接口到内部主机的端口转发。目标端口(dport)为80的外部接口(eth0)上的所有传入数据包都将转发到内部主机(192.168.0.5)的端口80:

# iptables -t nat -A 展示 -p tcp -i eth0 --dport 80 -j DNAT-至192.168.0.5:80

 

FORWARD链如何允许数据包转发

LAN内的数据包转发由iptables防火墙中的FORWARD链控制。如果为防火墙分配了内部IP地址eth2和eth0上的外部IP地址,则允许对整个LAN进行转发的规则将是:

# iptables -A转发-i eth2 -j接受
# iptables -A转发-o eth0 -j接受

这样,防火墙可以访问具有内部IP地址的LAN节点。数据包通过网关的eth2设备进入。然后将它们从一个LAN节点路由到其预期的目标节点。

 

动态防火墙

默认情况下,Fedora内核中的IPv4策略禁用对IP转发的支持。这样可以防止运行Fedora的计算机充当专用防火墙。此外,从Fedora 16开始,默认的防火墙解决方案现在由“防火墙”。尽管声称它是默认设置,但Fedora 16仍随附传统防火墙iptables。要在Fedora中启用动态防火墙,您将需要禁用传统防火墙并安装新的动态防火墙。两者之间的主要区别在于,firewalld更智能,因为它不必每次更改策略决策时都必须停止并重新启动,这不同于传统的防火墙。

要禁用传统防火墙,有两种方法,图形和命令行。对于图形方法,可以从“应用程序”菜单中打开系统配置防火墙的GUI。> Other >防火墙。现在可以禁用防火墙。 

对于命令行,将需要以下命令:

# systemctl stop iptables.service
# systemctl stop ip6tables.service

 

要从系统中完全删除iptables:

# systemctl禁用iptables.service

rm'/etc/systemd/system/basic.target.wants/iptables.service'

# systemctl禁用ip6tables.service

rm'/etc/systemd/system/basic.target.wants/ip6tables.service'


用于安装 防火墙,您可以使用Yum:

# 百胜安装firewalld防火墙小程序

启用然后开始 防火墙 您将需要以下命令:

# systemctl启用firewalld.service
# systemctl启动firewalld.service

 

可以从“应用程序”菜单启动防火墙小程序> Other > Firewall Applet

将鼠标悬停在顶部面板上的防火墙小程序上方时,您可以看到已启用的端口,服务等。通过单击小程序,可以启动或停止不同的服务。但是,如果更改状态并且applet崩溃以重新获得控制权,则必须使用以下命令杀死applet:

# ps -A | grep防火墙*

它会告诉您正在运行的applet的PID,您可以使用以下命令将其终止:

# 杀-9<pid>

可以从“应用程序”菜单中重新启动小程序,现在可以看到已启用的服务。

为了解决这个问题,可以使用命令行选项:

使用firewall-cmd启用,例如ssh: 

# 防火墙-cmd-启用--service = ssh

启用samba 10秒钟:启用samba 10秒钟:

# 防火墙-cmd-启用--service = samba --timeout = 10

启用ipp-client:

# 防火墙-cmd-启用--service = ipp-client

禁用ipp-client:

# 防火墙-cmd-禁用--service = ipp-client

要再次使用lokkit还原静态防火墙,只需使用(停止并禁用Firewalld之后):

# lokkit-已启用

 

压住他

文章 阅读下一篇:

CCENT / CCNA

思科公司 路由器

  • SSL WebVPN
  • 保护路由器
  • 基于策略的路由
  • 棒上路由器

虚拟专用网安全

  • 了解DMVPN
  • GRE / IPSec配置
  • 站点到站点IPSec 虚拟专用网
  • IPSec模式

思科公司 救命

  • 视窗 8 虚拟专用网客户端
  • 视窗 7的VPN客户端
  • CCP显示问题
  • 思科支持应用程序。

视窗 2012

  • 新的功能
  • 发牌
  • Hyper-V / VDI
  • 安装Hyper-V

的Linux

  • 文件权限
  • Webmin
  • 群组-用户
  • Samba设置