【奇技淫巧】Linux | 安全保障防火墙-iptables

3,262 阅读2分钟

虽然说Linux在安全方面确实相当于windows要更加可靠一些,但一般使用其作为服务器的我们,也不能大意,也是需要严格限制网络传输过程中的出入规则。上篇文章我们有聊到统计网络的信息,这篇文章来学习一下比较著名的防火墙iptables,它已经有十几年的历史了,算是不折不扣的Linux系统的功臣。

一、命令介绍

iptables 命令可以制定一些规则,规定其它电脑可以使用哪些端口来连接你的电脑(对应入),以及你的电脑可以连接哪些端口(对应出),如果粒度更细,甚至也可以通过 IP 地址来进行过滤。

Linux-Firewall-rules.jpg

比较常见的操作有,拦截Mysql的出入网络,那么可以用 iptables 封锁 3306 端口等。一般来说系统都会默认安装iptables,如果没有安装,安装下面的指令完成安装。

# in Centos
$sudo yum install iptables

#in Ubuntu/Debian
$sudo apt install iptables

在接下来的实际操作时,需要注意的是,使用这个命令,需要使用到root权限。

二、操作实例

iptables -L 显示所有的防火墙规则。

$iptables -L

图片.png 图上可以清晰的看到,对于我的服务器,明显防火墙规则分了好几个区域,包括:

  • Chain INPUT : 对应控制“进入”的网络传输的规则
  • Chain FORWARD : 对应控制“转发”的网络传输的规则
  • Chain OUTPUT : 对应控制“出去”的网络传输的规则
  • Chain DOCKER : 对应控制Docker的网络传输的规则,包括其它以Docker开头的块区域,都是Docker具体细分的规则,比如用户,隔离等等。
    这个命令让我们认识到了目前的防火墙过滤的规则,那么我们CRUD这些规则呢?

清除所有的规则

$iptables -F 
$iptables -X 
$iptables -Z

屏蔽IP

# 屏蔽单个 IP
$iptables -I INPUT -s 121.45.6.7 -j DROP
# 封整个段
$iptables -I INPUT -s 121.0.0.0/8 -j DROP

删除指定规则

# 将所有 iptables 以序号标记显示
$iptables -L -n --line-numbers
#执行删除 INPUT 里序号为 10 的规则
$iptables -D INPUT 10

其功能很强大,可以阅读官方语法深入操作。

三、扩展

在使用过程中,iptables 的配置和使用规则相当繁复,普通用户学习成本上是相当的高。另外一个命令可以帮助到我们,那就是UFW(Uncomplicated Firewall),顾名思义,就是简单的防火墙。很多Linux的发行版本并不支持,可以去官方UFW去学习使用。 进一步说,如果你的系统支持图形界面,建议使用GUFW
iptables已经有这么多年的历史了,从 Linux 3.13 开始,官方实际上已经推出了新的命令nftables以取代前者,这个新命令是新的防火墙子系统 / 包过滤引擎,提供了一个更简单的 Kernel ABI (Application Binary Interface),减少重复代码,改进错误报告,更有效支持过滤规则。