一、iptables简介
iptables是一个基于Linux内核的防火墙工具,通过过滤和修改网络数据包来达到网络安全控制的目的。
CentOS7默认使用firewalld作为防火墙管理工具,但iptables仍是一种被广泛使用的替代方案。本文将介绍在CentOS7中如何使用iptables进行防火墙的配置。
二、iptables基础命令
iptables的基础命令包括:
iptables -A INPUT -p tcp --dport 22 -j ACCEPT #添加一个允许SSH连接的规则
iptables -A INPUT -j DROP #添加一个拒绝所有其他TCP流量的规则
iptables-save > /etc/sysconfig/iptables #将iptables配置保存到文件中
其中,-A表示添加规则,-p表示协议,--dport表示目标端口,-j表示操作(ACCEPT表示允许,DROP表示拒绝)。
最后一条命令将iptables配置保存到文件中,这样在重启系统后,iptables配置也能生效。
三、iptables配置文件
iptables配置文件位于/etc/sysconfig/iptables,它由一些条目组成,每个条目定义了一条iptables规则。
下面是一个简单的iptables配置文件:
# Generated by iptables-save v1.4.21 on Sat Feb 8 22:01:11 2020
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
其中,filter是iptables的表类型,定义了表中的规则链(INPUT、FORWARD和OUTPUT)。每个规则链由一组规则组成,如-A INPUT表示在INPUT规则链中添加一条规则。规则的-m选项表示使用特定的扩展模块,如m state用于状态匹配。
四、iptables实际应用
(一)开启SSH连接
为了远程访问服务器,需要开启SSH连接。在iptables中添加一条允许SSH连接的规则,如下所示:
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
这条规则将允许TCP流量通过22端口,表示允许SSH连接。
(二)限制HTTP访问
为了限制HTTP访问,需要拒绝所有不必要的HTTP流量和禁止入站HTTP访问。
iptables -A INPUT -p tcp --dport 80 -j DROP #拒绝所有HTTP流量
iptables -A OUTPUT -p tcp --dport 80 -j DROP #拒绝所有HTTP流量
iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT #仅允许入站HTTP访问
这些规则将拒绝所有80端口的流量(即HTTP流量),并允许入站HTTP访问。
(三)禁止ping
在某些情况下,可能需要禁止ping(ICMP)流量,以提高服务器的安全性。
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
iptables -A OUTPUT -p icmp --icmp-type echo-reply -j DROP
这些规则将拒绝所有入站ping请求和所有出站ping回复。
(四)设置防火墙策略
设置防火墙策略是很常见的一种iptables应用。下面是一个简单的iptables配置,它允许SSH和HTTP访问,拒绝所有其他连接:
# 允许SSH连接
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# 允许HTTP访问
iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
# 拒绝所有其他连接
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
其中,-P选项表示设置规则链的默认策略,DROP表示拒绝。