小白也能看懂的 iptables 防火墙

本文涉及的产品
云防火墙,500元 1000GB
公网NAT网关,每月750个小时 15CU
简介: iptables是Linux中功能最为强大的防火墙软件之一是一个在 Linux 系统上常用的防火墙工具,用于配置和管理网络数据包过滤规则。它可以通过定义规则集来控制进出系统的网络流量,实现网络安全策略

一、介绍

iptables是Linux中功能最为强大的防火墙软件之一


是一个在 Linux 系统上常用的防火墙工具,用于配置和管理网络数据包过滤规则。它可以通过定义规则集来控制进出系统的网络流量,实现网络安全策略


可以定义多种类型的规则,包括过滤、转发、网络地址转换(NAT)、端口转发等。每个规则由一系列匹配条件和对应的动作组成。匹配条件可以包括源/目标 IP 地址、协议、端口等信息。动作可以是接受、拒绝、重定向等。


在centos7 之后,firewalld 防火墙正式取代了 iptables 防火墙,firewalld自身并不具备防火墙的功能,而是和iptables一样需要通过内核的netfilter来实现,firewalld是iptables的一个封装,可以让你更容易地管理iptables规则。


防火墙的分类:双宿主主机防火墙、基于代理型防火墙和基于屏蔽子网的防火墙


二、参数


iptables [-t tbl] -COMMAND 链名 匹配条件 相应操作 #[-t tbl]为可选参数,-t用来指定具体操作那张表,不指定的话默认是Filter表

COMMAND 说明

参数 作用
-P 设置默认策略
-F 清空规则链
-L 查看规则链
-A 在规则链的末尾加入新规则
-I num 在规则链的头部加入新规则
-D num 删除某一条规则
-s 匹配来源地址IP/MASK,加叹号“!”表示除这个IP外
-d 匹配目标地址
-i 网卡名称 匹配从这块网卡流入的数据
-o 网卡名称 匹配从这块网卡流出的数据
-p 匹配协议,如TCP、UDP、ICMP
--dport num 匹配目标端口号
--sport num 匹配来源端口号
-j 执行的操作,例如:REJECT,DROP,ACCEPT

匹配条件

匹配条件用来实现更为精细和具体的条件,如网络接口名称,协议名称,源目的端口号等,高频匹配条件如下:

-i:网络接口名称 #指定数据包从哪个网络接口进入
-m:匹配的模块 #指定数据包规则所使用的过滤模块
-o:网络接口名称 #指定数据包从哪个网络接口输出
-p:协议名称 #指定数据包匹配的协议,如TCP、UDP和ICMP等
-s:源地址或子网地址 #指定数据包匹配的源地址
-state:数据包当前状态 #指定ESTABLISHED,RELATED等
-sport:源端口号 #指定数据包匹配的源端口号
-dport:目的端口号 #指定数据包匹配的目的端口号iptables规则的动作

相应操作

对于符合过滤规则或条件的数据包,需要进行相应的操作,如下:


-ACCEPT:接受数据包
-DNAT:目标地址转换,即改变数据包的目的地址。例如:将的广域网IP(222.101.98.54/24) ==> 局域网的IP(.1/24),且在NAT表的PREROUTING链上进行该动作
-DROP:丢弃数据包
-LOG:日志功能,将符合规则的数据包的相关信息记录在日志中,便于分析和排错
-MASQUERADE:IP伪装,改写数据包来源IP为防火墙的IP及端口,和SNAT不同的是,当进行IP伪装时,不需指定要伪装成哪个IP,IP会从网卡直接读取
-EDIRECT:与DROP基本一样,区别在于它除了阻塞包之外,还向发送者返回错误信息
-SNAT:源地址转换,即改变数据包的源地址

三、样例使用


  1. 查看所有规则
    iptables -L -n --line-number
  2. 禁用某个ip的ICMP协议(禁ping)
    iptables -I INPUT -s 172.168.0.1 -p icmp -j DROP
  3. 封禁某个ip
    iptables -I INPUT -s 172.168.0.1 -j DROP
  4. 允许外部访问指定端口(3306)
    sudo iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
  5. 只允许指定 IP 访问指定端口
    需要注意的是,使用iptables时,规则添加的顺序至关重要。


# 只允许指定ip(192.168.1.123、192.168.1.124)访问指定端口(50079)
# 第一步:在tcp协议中,禁止所有的ip访问本机的50070端口。
iptables -I INPUT -p tcp --dport 50070 -j DROP
# 第二步:允许192.168.1.123访问本机的50070端口
iptables -I INPUT -s 192.168.1.123 -p tcp --dport 50070 -j ACCEPT
# 第三步:允许192.168.1.124访问本机的50070端口
iptables -I INPUT -s 192.168.1.124 -p tcp --dport 50070 -j ACCEPT
# 注意以上3条命令的顺序不能错。
  1. 封杀指定网段
    要添加IP段到封停列表中,使用下面的命令:


sudo iptables -I INPUT -s 192.168.1.0/24 -j DROP  #DROP掉所有来自192.168.1.0网段的数据包
sudo iptables -I INPUT -s 123.0.0.0/8 -j DROP      #封整个段即从123.0.0.1到123.255.255.254的数据包
sudo iptables -I INPUT -s 124.45.0.0/16 -j DROP    #封IP段即从123.45.0.1到123.45.255.254的数据包
sudo iptables -I INPUT -s 123.45.6.0/24 -j DROP    #封IP段即从123.45.6.1到123.45.6.254的数据包
  1. 允许SSH服务


sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
  1. 拒绝其它数据包
    需要的端口和协议都开启了,最后就需要iptables绝对拒绝上面规则之外的数据包内容,参考操作如下:


sudo iptables -A INPUT -j REJECT
sudo iptables -A FORWARD -j REJECT
sudo iptables -A OUTPUT -j REJECT
  1. 删除某条规则


# 展示带编号的所有iptables规则
sudo iptables -L -n --line-number
# 对指定编号规则进行删除
sudo iptables -D INPUT {num}
# 比如要删除INPUT里序号为8的规则,执行:
sudo iptables -D INPUT 8
  1. 或直接
iptables -D INPUT -s ***.***.***.*** -j DROP

四、总结提高


以上学习了iptables的一些操作,可以封杀部分IP,禁用某个协议,更加详细的操作请看

参考网站

  1. blog.csdn.net/weixin_4656…
  2. www.muouseo.com/topic/z64y9…
目录
相关文章
|
安全 Linux 网络安全
百度搜索:蓝易云【linux iptables安全技术与防火墙】
请注意,iptables的具体使用方法和配置选项可能会有所不同,取决于Linux发行版和版本。管理员应该参考相关文档和资源,以了解适用于其特定环境的最佳实践和配置方法。
490 0
百度搜索:蓝易云【linux iptables安全技术与防火墙】
|
网络协议 关系型数据库 Linux
Linux iptables 防火墙软件命令详解
Linux iptables 防火墙软件命令详解
335 0
|
安全 Linux 网络安全
在Linux中,如何列出和删除 Iptables 防火墙规则?
在Linux中,如何列出和删除 Iptables 防火墙规则?
1113 0
|
网络协议 Linux 网络安全
Linux系列——关于防火墙iptables的常用命令
Linux系列——关于防火墙iptables的常用命令
|
2月前
|
机器学习/深度学习 安全 网络协议
Linux防火墙iptables命令管理入门
本文介绍了关于Linux防火墙iptables命令管理入门的教程,涵盖了iptables的基本概念、语法格式、常用参数、基础查询操作以及链和规则管理等内容。
230 73
|
3月前
|
存储 网络协议 Ubuntu
如何在 Ubuntu 14.04 上使用 Iptables 实现基本防火墙模板
如何在 Ubuntu 14.04 上使用 Iptables 实现基本防火墙模板
46 0
|
3月前
|
网络协议 Ubuntu Linux
Iptables 防火墙的工作原理
Iptables 防火墙的工作原理
44 0
|
6月前
|
网络协议 Linux 网络安全
iptables 与 firewalld 防火墙
iptables 与 firewalld 防火墙
|
安全 Linux 网络安全
百度搜索:蓝易云【服务器安全设置Centos7 防火墙firewall与iptables】
CentOS 7使用的默认防火墙是firewall,它是一种基于Netfilter的用户空间工具,用于管理Linux内核中的iptables规则。为了加强服务器的安全性,可以通过配置CentOS 7防火墙和iptables规则来保护服务器。
138 0
|
6月前
|
存储 网络协议 Linux
Linux加强篇008-使用Iptables与Firewalld防火墙
山重水复疑无路,柳暗花明又一村
942 0
Linux加强篇008-使用Iptables与Firewalld防火墙