您的位置:

Linux防火墙配置详解

一、iptables基本介绍

iptables是一个重要的Linux内核中网络安全系统,通过设置iptables规则,可以对进入和离开Linux服务器的数据进行过滤。

iptables规则是一系列指令,用于决定数据包如何转发和处理,可以将数据包放行或丢弃,还可以修改数据包头的一些字段。

以下是一个简单的iptables规则:

iptables -A INPUT -p tcp --dport 80 -j ACCEPT
这条规则表示允许TCP协议的80端口数据包通过输入方向(即到达服务器)。

二、iptables基本语法

iptables的命令格式如下:

iptables [-t 表名] 插入规则链 操作选项 规则限制条件 -j 动作
其中,选项-t用于指定表名,常用的是filter表,表示过滤器策略。插入规则链可以是INPUT、OUTPUT或FORWORD,表示规则作用的方向。操作选项常用的有-A(添加)、D(删除)、I(插入)和R(替换)。规则限制条件包括协议类型、端口号、源IP和目标IP等。动作包括ACCEPT(接受)、DROP(丢弃)和REJECT(拒绝)等。

三、iptables常用操作

(一)允许或拒绝所有流量

需要在iptables中设置默认规则,以确定如何处理没有匹配到指定规则的数据包。以下是两个示例:

iptables -P INPUT ACCEPT
iptables -P INPUT DROP
第一个示例表示允许所有输入流量,而第二个示例表示禁止所有输入流量。

(二)开启和关闭端口

可以使用iptables开启或关闭服务端口,下面以80端口为例:

iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j DROP
第一条规则表示允许TCP协议的80端口数据包通过输入方向,而第二条规则表示禁止TCP协议的80端口数据包通过输入方向。

(三)限制IP访问

可以使用iptables来阻止特定的IP地址访问系统,下面以192.168.1.100为例:

iptables -A INPUT -s 192.168.1.100 -j DROP
以上命令表示禁止192.168.1.100的IP地址通过INPUT规则链访问系统。

(四)限制IP段访问

可以使用iptables来阻止特定的IP地址段访问系统,下面以192.168.1.0/24为例:

iptables -A INPUT -s 192.168.1.0/24 -j DROP
以上命令表示禁止192.168.1.0/24的IP地址段通过INPUT规则链访问系统。

(五)限制访问协议

可以使用iptables来阻止特定的协议访问系统,下面以FTP协议为例:

iptables -A INPUT -p tcp --dport 21 -j DROP
以上命令表示禁止使用FTP协议通过INPUT规则链访问系统。

四、iptables保存和恢复规则

iptables的规则在重启后会失效,需要手动保存并恢复规则。规则的保存可以使用iptables-save命令将当前iptables规则保存到一个文件中:

iptables-save > /etc/iptables.rules

规则的恢复可以在系统启动时使用iptables-restore命令,从保存的文件中还原规则:

iptables-restore < /etc/iptables.rules

五、iptables实用技巧

(一)多条规则操作

可以使用分号将多条规则合并在一起,例如:

iptables -A INPUT -s 192.168.1.100 -j DROP;iptables -A INPUT -p tcp --dport 80 -j ACCEPT

(二)规则链操作

可以使用自定义规则链,以便集合相似的规则。为了避免规则过于复杂,应该尽量将相同的规则放到一起,例如:

iptables -N sshguard
iptables -A sshguard -m recent --name ssh --set --rsource
iptables -A sshguard -m recent --name ssh --rcheck --seconds 60 --hitcount 4 --rttl -j DROP
iptables -A INPUT -p tcp --dport ssh -m state --state NEW -j sshguard

(三)使用ipv6防火墙

Linux内核中也支持IPv6防火墙,称为ip6tables。ip6tables的语法与iptables相同,只是选项和限制条件略有不同。

以下是一个开启http服务的IPv6防火墙规则:

ip6tables -A INPUT -p tcp --dport 80 -j ACCEPT

六、总结

本文介绍了Linux防火墙配置的基本概念和iptables常用操作,包括开启和关闭端口、限制IP访问、限制IP段访问、限制访问协议等。同时提供了实用技巧,如多条规则操作、规则链操作和ipv6防火墙的使用。

作为一名全能编程开发工程师,理解和掌握iptables规则和防火墙配置是必不可少的技能。