如何在 CentOS 上配置 iptables 防火墙

在本教程中,我们将向您展示如何在 CentOS 上配置 Iptables 防火墙。 对于那些不知道的人,Iptables 是一个用户空间应用程序,它允许系统管理员配置 Linux 内核防火墙提供的表(实现为不同的 Netfilter 模块)以及它存储的链和规则。 目前不同的内核模块和程序用于不同的协议; iptables 适用于 IPv4,ip6tables 适用于 IPv6,arptables 适用于 ARP,ebtables 适用于以太网帧。

本文假设您至少具备 Linux 的基本知识,知道如何使用 shell,最重要的是,您将网站托管在自己的 VPS 上。 安装非常简单,假设您在 root 帐户下运行,如果不是,您可能需要添加 ‘sudo‘ 到命令以获取 root 权限。 我将向您展示如何在 CentOS 服务器上逐步配置 Iptables 防火墙。

先决条件

  • 运行以下操作系统之一的服务器:CentOS Linux。
  • 建议您使用全新的操作系统安装来防止任何潜在问题。
  • 一种 non-root sudo user或访问 root user. 我们建议充当 non-root sudo user,但是,如果您在充当 root 时不小心,可能会损害您的系统。

在 CentOS 上配置 iptables 防火墙

设置 iptables

您可以使用以下过程来验证 iptables 是否已安装并查看 iptables 的状态。 打开终端并输入以下命令:

# iptables -V # yum info iptables

如果没有出现上述信息,可以键入以下命令安装 iptables:

# yum -y install iptables

了解防火墙,目前一共有四个链条:

  • INPUT :默认链用于寻址到系统的数据包。
  • OUTPUT :系统生成的默认链。
  • FORWARD :当数据包通过另一个接口发送时使用默认链。
  • RH-Firewall-1-INPUT :用户定义的自定义链。

目标含义

  • 目标 接受 表示允许数据包。
  • 目标 拒绝 意味着丢弃数据包并向远程主机发送错误消息。
  • 目标 降低 意味着丢弃数据包并且不向远程主机或发送主机发送错误消息。

CentOS 上的默认 iptables 配置不允许访问 Nginx Web 服务器使用的 HTTP(TCP PORT #80)和 HTTPS(TCP PORT #443)端口。 您可以逐步进行配置:

第 1 步:刷新所有 iptables 规则

# iptables -F # iptables -X # iptables -t nat -F # iptables -t nat -X # iptables -t mangle -F # iptables -t mangle -X

第 2 步:设置默认规则

# iptables -P INPUT DROP # iptables -P FORWARD ACCEPT # iptables -P OUTPUT ACCEPT

第 3 步:允许访问 HTTP(端口 80)和 HTTPS(端口 443)

# iptables -A INPUT -i lo -j ACCEPT  # iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT  # iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT  # iptables -A INPUT -p icmp -j ACCEPT # iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT # iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT

打开并保存 iptables

键入以下两个命令以打开防火墙:

# chkconfig iptables on # service iptables save

恭喜! 您已成功配置防火墙。 感谢您使用本教程在 CentOS 系统中配置 Iptables 防火墙。 如需更多帮助或有用信息,我们建议您查看 CentOS 官方网站.