Linux安全之---防火墙iptables

简介:

iptables是与最新的 2.6.x 版本Linux 内核集成的 IP 信息包过滤系统。如果 Linux 系统连接到因特网或LAN、服务器或连接 LAN 和因特网的代理服务器, 则该系统有利于在 Linux 系统上更好地控制 IP 信息包过滤和防火墙配置。iptables 的一个重要优点是,它使用户可以完全控制防火墙配置和信息包过滤。您可以定制自己的规则来满足您的特定需求,从而只允许您想要的网络流量进入系统。另外,iptables 是免费的,这对于那些想要节省费用的人来说十分理想,它可以代替昂贵的防火墙解决方案,并且其性能不输于一些专业的硬件防火墙。

iptables的管理命令介绍:
1、iptables中含有五个钩子函数:
INPUT
OUTPUT
FORWARD
PREROUTING
POSTROUTING

2、iptables中的表:
filter:过滤,可以有的链:INPUT、OUTPUT、FORWARD
nat:转换,可以有的链:OUTPUT、PREROUTING、POSTROUTING
mangle:拆开,可以有的链:INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING
raw:可以有的链:OUTPUT、PREROUTING
表的优先级:先mangle后filter,先mangle后nat最后filter,其中raw的优先级最高


3、iptables命令的操作对象包括:
规则表(table):由规则链的集合组成,不同的规则表用于实现不同的功能
规则链(chain):由规则的集合组成,保存在规则表中;不同规则链代表了不同的数据包流向。
规则(rule):用于对防火墙策略进行设置,流经某个数据链的数据将按照先后顺序进行过滤。


一条完整的iptables命令由以下几个部分组成:

iptables [-t 表名] <命令> [链名] [规则号] [规则] [-j 目标]

-t选项用于指定所使用的表,iptables防火墙默认有filter、nat和mangle这3张表,也可以是用户自定义的表。表中包含了分布在各个位置的链,iptables命令所管理的规则就是存在于各种链中的。该选项不是必需的,如果未指定一个具体的表,则默认使用的是filter表。命令选项是必须要有的,它告诉iptables要做什么事情,是添加规则、修改规则还是删除规则。有些命令选项后面要指定具体的链名称,而有些可以省略,此时,是对所有的链进行操作。还有一些命令要指定规则号。具体的命令选项名称及其与后续选项的搭配形式如下所示。

针对规则链<命令>的操作有:
-L 列出链中所有的规则
-F 清除链中的所有规则
-P 设置链的默认动作(ACCEPT/REJECT/DROP)
-Z 计数器清零每一条规则都有两个计数器,一个用于记录被本条规则所匹配到的包的个数,另一个用于记录所有匹配到包的体积之和)
-N 定义一个新的规则链
-X 删除定义的规则链
-E 重命名一条链

针对规则<命令>的操作有:
-A 追加一个规则
-I 插入一个规矩
-D 删除一个规则
-R 在指定的链中用新的规则置换掉某一规则号的旧规则 

针对视图<命令>的操作有:
-L 列出显示出来
   查看时的子命令和专用选项
       -n 加速,不反向解析,类似route -n
       -v 详细信息[也可-vv,-vvv]
       -x 显示精确值,不做单位换算
       --line-numbers 显示行号    


  
  
  1. #iptables -t filter -L                                 显示filter表的规则 
  2. #iptables -t filter -L INPUT                        显示filter表中的INPUT链的规则 
  3. #iptables -t filter -L INPUT -v                        显示filter表中的INPUT链的规则详细信息 
  4. #iptables -t filter -L INPUT -v -x                显示filter表中的INPUT链的规则详细信息并且不做单位换算 


针对目标<命令>的操作有:
-j ACCEPT
    ACCEPT:允许
    DROP:拒绝
    RELATED:有关联的,有联系的(用于FTP协议)
    INVALID:无法识别的状态

针对规则<命令>的操作有:

通用匹配:源地址,端口,协议
    -s ! IP/NETWORK:指定源地址或ip地址,可取反
    -d ! IP/NETWORK:指定目标地址
    -p {四层协议:tcp|udp|icmp}:定义匹配的协议
    -i (input interface):网络接口,一般不用在output和postrouting
    -o (output interface):不能用到INPUT和prerouting


  
  
  1. #iptables -A INPUT -s !172.16.4.0/16 -d 172.16.4.1 -p tcp --dport 80 -j DROP                 
  2. 在INPUT链上插入一条拒绝非172.16.4.0/16网络内的主机访问172.16.4.1主机上的监听在tcp协议的80端口的服务的规则 


扩展匹配:
隐式扩展一般指对-p选项中指定的协议进行的扩展
    -p tcp 
        --sport 源端口
        --dport 目标端口
        --tcpflags 要检查的标记,必须为1 的标记(剩余的位必须为0)
                  用法:--tcpflags SYN,ACK,RST,FIN (检查4个,只SYN为1)
        --syn 同--tcpflags一样,在TCP三次握手中的标志位:syn=1;ack=syn=1;ack=1
    -p udp
        --sport
        --dport(可跟连续端口如80-90)
    -p icmp
        --icmp-type
            常用类型:echo-reply:0响应
                  echo-request:8请求


  
  
  1. #iptables -A -I INPUT 1 -s 172.16.0.0/16 -d 172.16.4.1 -p icmp --icmp-type 8 -j ACCEPT         
  2. 在INPUT链上插入位置为1的一条规则:允许来自于172.16.0.0/16网络内的主机对172.16.4.1主机发起ping请求。 


显示扩展:一般指必须适应-m选项明确指定要加载扩展
-m state
    --state
        NEW:新发起的请求
        ESTABLISHED:表示所有已经建立的连接


  
  
  1. #iptables -A OUTPUT -o eth1 -m state --state NEW -j DROP         
  2. 拒绝从eth1网卡出的所有新的网络请求 
  3. #iptables -P OUTPUT DROP                修改OUTPUT链默认规则为DROP 
  4. #iptables -A OUTPUT -s 172.16.100.1 -p tcp --dport 80 -m state --state ESTABLISHED -j ACCEPT                         
  5. 仅允许来自于172.16.100.1发起的tcp协议80端口已经建立的网络连接     

          
-m(mport|multiport)  不连续的多端口的匹配,可以使用!取反
    --source-ports  源端口
    --destination-ports  目的端口
    --ports  即指源也指目的


  
  
  1. #iptables -A OUTPUT -s 172.16.100.1 -p tcp -m multiport --destination 80,22,23,110,143 -j ACCEPT                 
  2. 允许来自于172.16.100.1发起的在TCP协议的80,22,23,110,143的连接 


-m iprange  IP地址范围的扩展,可以使用!取反
    --src-range ip-ip
    --dst-range ip-ip


  
  
  1. #iptables -A INPUT -d 172.16.100.1 -m iprange --src-range 192.168.1.10-192.168.1.200 -p tcp -m state --state NEW ESTABLISHED -j ACCEPT 
  2. 允许来自于源地址是192.168.1.10--192.168.1.200范围内的主机对172.16.100.1主机的TCP协议的新的建立请求和已经建立的请求 


-m connlimit  --connlimit-above <n>用于限制客户端到一台主机的TCP并发连接总数,n是一个数值。限制某个地址上并发连接的请求的个数
    --connlimit-above n 超过n个并发请求,一般取反使用

-m limit   limit  做数据包的发送速率限制,流控:令牌桶过滤器
    --limit rate  1/sec   /minute /hour /day
    --limit-burst number    峰值,一次性处理的上限


  
  
  1. #iptables -A INPUT -d 172.16.100.1 -p tcp -dport 80 -m limit --limit 1/sec --limit-burst 3 -j ACCEPT 
  2. 允许172.16.100.1主机上的TCP协议80端口上的访问每秒只能1个请求,最大同时处理3个请求 


-m time    指定某个时间段生效的审计
    --timestart value
    --timestop value
    --days Mon,Tue,Wed....
    --datestart date
    --datestop date    YY:MM:DD:HH:MM:SS


  
  
  1. #iptables -A INPUT -d 172.16.4.1 -p tcp -dport 22 -m time --timestart 09:00 --timestop 18:00 ! -days sat,sun -j ACCEPT                 
  2. 允许每周的周1到周5的09:00-18:00到172.16.4.1主机的TCP协议的22号端口发起请求 


-m string 做字符串的匹配,一起使用
    --algo bm|kmp   编码算法
    --string pattern


由于iptables其实是内核中的一个模块,因此其生效时间是立即生效,而当关机后,定义的所有规则就不存在了。
因此我们可以将其保存起来:
#service iptables save  将定义的规则保存起来,默认保存至/etc/sysconfig/iptables文件
也可自定义保存的位置:
#iptbales-save > /etc/sysconfig/iptables-test1 
导出保存的iptables规则
#iptbales-restore < /etc/sysconfig/iptables-test1








本文转自 向阳草米奇 51CTO博客,原文链接:http://blog.51cto.com/grass51/822491,如需转载请自行联系原作者
目录
相关文章
|
4月前
|
安全 Linux iOS开发
SonarQube Server 2025 Release 5 (macOS, Linux, Windows) - 代码质量、安全与静态分析工具
SonarQube Server 2025 Release 5 (macOS, Linux, Windows) - 代码质量、安全与静态分析工具
253 0
SonarQube Server 2025 Release 5 (macOS, Linux, Windows) - 代码质量、安全与静态分析工具
|
5月前
|
安全 Linux C++
PVS‑Studio 7.38 for macOS, Linux & Windows - 代码质量安全静态分析
PVS‑Studio 7.38 for macOS, Linux & Windows - 代码质量安全静态分析
234 0
PVS‑Studio 7.38 for macOS, Linux & Windows - 代码质量安全静态分析
|
6月前
|
安全 应用服务中间件 网络安全
在Linux环境部署Flask应用并启用SSL/TLS安全协议
至此,你的Flask应用应该能够通过安全的HTTPS协议提供服务了。记得定期更新SSL证书,Certbot可以帮你自动更新证书。可以设定cronjob以实现这一点。
433 10
|
6月前
|
安全 Linux iOS开发
Burp Suite Professional 2025.7 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
Burp Suite Professional 2025.7 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
621 0
Burp Suite Professional 2025.7 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
|
8月前
|
安全 Linux iOS开发
PVS‑Studio 7.36 for macOS, Linux & Windows - 代码质量安全静态分析
PVS‑Studio 7.36 for macOS, Linux & Windows - 代码质量安全静态分析
192 1
PVS‑Studio 7.36 for macOS, Linux & Windows - 代码质量安全静态分析
|
11月前
|
人工智能 Linux iOS开发
Burp Suite Professional 2025.2 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
Burp Suite Professional 2025.2 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
543 12
Burp Suite Professional 2025.2 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
|
10月前
|
安全 大数据 数据挖掘
课时9:阿里云Web应用防火墙:全面保障网站的安全与可用性
阿里云Web应用防火墙(WAF)基于阿里巴巴十年攻防经验,提供全面的网站安全防护。它通过Web应用防护、CC攻击防护和业务风控,有效应对各类网络威胁,确保网站的安全与可用性。智能双引擎技术降低误报率,实时数据分析和虚拟补丁更新保障系统安全。WAF已成功护航多个重大活动,为企业提供高效、简便的安全解决方案。
296 0
|
网络协议 Linux 网络安全
Linux系列——关于防火墙iptables的常用命令
Linux系列——关于防火墙iptables的常用命令
|
机器学习/深度学习 安全 网络协议
Linux防火墙iptables命令管理入门
本文介绍了关于Linux防火墙iptables命令管理入门的教程,涵盖了iptables的基本概念、语法格式、常用参数、基础查询操作以及链和规则管理等内容。
508 73
|
网络协议 Linux 网络安全
百度搜索:蓝易云【Linux 防火墙配置(iptables和firewalld)详细教程。】
以上只是一些常见的iptables和firewalld命令示例,你可以根据自己的需求进行修改和扩展。请注意,在配置防火墙时务必小心,确保不会阻塞你所需要的合法流量,并确保保存和加载配置以使其永久生效。另外,建议在配置防火墙之前备份现有的防火墙规则以防止意外情况发生。
711 2