在Linux上使用Iptables

2017-06-12  本文已影响0人  zychen143

本指南将尝试解释如何在易于理解的语言中使用linux上的iptables。

概览

iptables是一个基于规则的防火墙,它将按顺序处理每个规则,直到找到匹配的规则。Todo:包括这里的例子

用法

iptables实用程序通常预先安装在您的linux发行版上,但实际上并没有运行任何规则。大多数发行版都会发现这个实用程序:

/sbin/iptables

阻止单个IP地址

您可以使用-s参数阻止IP,将10.10.10.10替换为您要阻止的地址。在这个例子中你会注意到,我们使用-I参数(或者-insert也是这样),而不是追加,因为我们要确保这个规则首先出现在任何允许规则之前。

/sbin/iptables -I INPUT -s 10.10.10.10 -j DROP

允许来自IP地址的所有流量

您可以通过使用与上述相同的命令来交替地允许来自IP地址的所有流量,但用ACCEPT替换DROP。在任何DROP规则之前,您需要确保此规则首先出现。

/sbin/iptables -A INPUT -s 10.10.10.10 -j ACCEPT

阻止所有地址的端口

您可以通过使用-dport开关并添加要阻止的服务的端口来完全阻止端口通过网络访问。在这个例子中,我们将阻止mysql端口:

/sbin/iptables -A INPUT -p tcp --dport 3306 -j DROP

允许从单个IP单个端口

您可以添加-s命令以及-dport命令来进一步将规则限制在特定端口:

/sbin/iptables -A INPUT -p tcp -s 10.10.10.10 --dport 3306 -j ACCEPT

查看当前规则

您可以使用以下命令查看当前规则:

/sbin/iptables -L

这应该给你一个类似于以下内容的输出:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  192.168.1.1/24  anywhere            
ACCEPT     all  --  10.10.10.0/24       anywhere             
DROP       tcp  --  anywhere             anywhere            tcp dpt:ssh 
DROP       tcp  --  anywhere             anywhere            tcp dpt:mysql

当然,实际的输出会更长一些。

清除当前规则

您可以使用flush参数清除所有当前的规则。如果您需要将规则放在正确的顺序中,或者当您进行测试时,这非常有用

/sbin/iptables --flush

分配特定

虽然大多数Linux发行版都包含一种iptables形式,但其中的一些也包括使管理更容易的包装。这些“插件”通常采用初始化脚本的形式,这些脚本在启动时可以初始化iptables,尽管一些发行版还包括尝试简化常见情况的全面封装应用程序。

Gentoo

Gentoo上的iptables初始化脚本能够处理许多常见的情况。对于初学者,它允许您配置iptables在启动时加载(通常是您想要的):

rc-update add iptables default

使用init脚本,可以使用易于记忆的命令加载和清除防火墙:

/etc/init.d/iptables start
/etc/init.d/iptables stop

init脚本处理在启动/停止时持久保留当前防火墙配置的详细信息。因此,您的防火墙始终处于您离开的状态。如果需要手动保存新的规则,init脚本也可以处理这个:

/etc/init.d/iptables save

此外,您可以将防火墙还原到先前保存的状态(对于您正在尝试使用规则,现在要恢复以前的工作配置):

/etc/init.d/iptables reload

最后,init脚本可以将iptables置于“panic”模式,其中所有传入和传出的流量都被阻止。我不知道为什么这种模式是有用的,但所有的Linux防火墙似乎都有

/etc/init.d/iptables panic

警告:如果通过SSH连接到服务器,请不要启动紧急模式;你将被断开连接!您应该将iptables置于恐慌模式中的唯一时间是您身体在电脑前。

原文地址

上一篇 下一篇

猜你喜欢

热点阅读