文章目录

    • iptables命令简介
      • 1.语法
      • 2.iptables命令选项输入顺序
      • 3.选项讲解
      • 4.基础用法示例
        • 1.清除规则相关操作
        • 2.查看相关规则及序列号
        • 3.通过查看后的序列号删除规则
        • 4.开放指定的端口
        • 5.屏蔽IP
        • 6.保存配置
      • 5.高级用法之模块
        • 1.连续匹配多个端口(multiport)
        • 2.指定一段连续的ip地址范围(iprange)
        • 3.匹配指定字符串(string)
        • 4.根据时间段匹配报文(time)
        • 5.禁ping, 默认本机无法ping别人 、别人无法ping自己
        • 6.限制链接数,并发连接数(connlimit)
        • 7.针对 报文速率 进行限制。 秒、分钟、小时、天。
      • 6.实现共享上网案例
        • 1.nat表
        • 2.共享上网
        • 3.为什么用POSTROUTING
        • 4.iptables常用企业案例
  • 总结

iptables命令简介

其实Iptables服务不是真正的防火墙,只是用来定义防火墙规则功能的"防火墙管理工具",将定义好的规则交由内核中的netfilter即网络过滤器来读取,从而真正实现防火墙功能。


1.语法

iptables(选项)(参数)

2.iptables命令选项输入顺序

iptables -t 表名 <-A/I/D/R> 规则链名 [规则号] <-i/o 网卡名> -p 协议名 <-s 源IP/源子网> --sport 源端口 <-d 目标IP/目标子网> --dport 目标端口 -j 动作

表名包括:

  • raw:高级功能,如:网址过滤。
  • mangle:数据包修改(QOS),用于实现服务质量。
  • net:地址转换,用于网关路由器。
  • filter:包过滤,用于防火墙规则。

规则链名包括:

  • INPUT链:处理输入数据包。
  • OUTPUT链:处理输出数据包。
  • PORWARD链:处理转发数据包。
  • PREROUTING链:用于目标地址转换(DNAT)。
  • POSTOUTING链:用于源地址转换(SNAT)。

动作包括:

  • accept:接收数据包。
  • DROP:丢弃数据包。
  • REDIRECT:重定向、映射、透明代理。
  • SNAT:源地址转换。
  • DNAT:目标地址转换。
  • MASQUERADE:IP伪装(NAT),用于ADSL。
  • log:日志记录。

3.选项讲解

-t<表>:指定要操纵的表;
-A:向规则链中添加条目;
-D:从规则链中删除条目;
-i:向规则链中插入条目;
-R:替换规则链中的条目;
-L:显示规则链中已有的条目;
-F:清楚规则链中已有的条目;
-Z:清空规则链中的数据包计算器和字节计数器;
-N:创建新的用户自定义规则链;
-n: 表示不对 IP 地址进行反查,加上这个参数显示速度将会加快;
-v: 表示输出详细信息,包含通过该规则的数据包数量、总字节数以及相应的网络接口;
-P:定义规则链中的默认目标;
-h:显示帮助信息;
-p:指定要匹配的数据包协议类型;
-s:指定要匹配的数据包源ip地址;
-j<目标>:指定要跳转的目标;
-i<网络接口>:指定数据包进入本机的网络接口;
-o<网络接口>:指定数据包要离开本机所使用的网络接口。

4.基础用法示例

1.清除规则相关操作
iptables -F #清除所有规则,只留下默认规则
iptables -N #创建用户自定义的链
iptables -X #清除用户自定义的链
iptables -Z #链的计数器清零
2.查看相关规则及序列号
iptables -nvL --line-number #查看iptables规则(列出序号)
3.通过查看后的序列号删除规则
iptables -nvL --line-number #查看iptables规则(列出序号)
iptables -D INPUT 1         #删除序列号为1的规则(或者原添加规则命令中直接-A/-I换成-D也可删除)
4.开放指定的端口
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT    #允许已建立的或相关连的通行
iptables -A OUTPUT -j ACCEPT                     #允许所有本机向外的访问,相反则把ACCEPT换成DROP
iptables -A INPUT -p tcp --dport 22 -j ACCEPT    #允许访问22端口,相反则把ACCEPT换成DROP
iptables -A INPUT -p tcp --dport 80 -j ACCEPT    #允许访问80端口,相反则把ACCEPT换成DROP
iptables -A INPUT -p tcp --dport 21 -j ACCEPT    #允许ftp服务的21端口,相反则把ACCEPT换成DROP
iptables -A INPUT -p tcp --dport 20 -j ACCEPT    #允许FTP服务的20端口,相反则把ACCEPT换成DROP
iptables -A INPUT -j reject                      #禁止其他未允许的规则访问
iptables -A FORWARD -j REJECT                    #禁止其他未允许的规则访问
5.屏蔽IP

注意:-A 添加规则到链的结尾,最后一条 -I 插入规则到链的开头,第一条。 越靠前的规则优先级越高。

iptables -I INPUT -s 123.45.6.7 -j DROP       #屏蔽单个IP的命令
iptables -I INPUT -s 123.0.0.0/8 -j DROP      #封整个段即从123.0.0.1到123.255.255.254的命令
iptables -I INPUT -s 124.45.0.0/16 -j DROP    #封IP段即从123.45.0.1到123.45.255.254的命令
iptables -I INPUT -s 123.45.6.0/24 -j DROP    #封IP段即从123.45.6.1到123.45.6.254的命令是
6.保存配置
#保存iptables配置,2种保存方式
/etc/init.d/iptables save
iptables-save > /etc/sysconfig/iptables

5.高级用法之模块

注意:这里讲用模块的形式进行添加规则

  • 拓展iptables的功能的
  • -m : 指定模块
1.连续匹配多个端口(multiport)

--dports : 指定多个端口(不同端口之间以逗号分割,连续的端口使用冒号分割)

要求将22,80,443以及30000-50000之间所有的端口向外暴露,其他端口拒绝:iptables -t filter -A INPUT -p TCP -m multiport --dports 22,80,443,30000:50000 -j ACCEPTiptables -f filter -A INPUT -p TCP -j DROP
2.指定一段连续的ip地址范围(iprange)

--src-range from[-to]: 源地址范围
--dst-range from[-to]: 目标地址范围

要求192.168.15.1 - 192.168.15.10之间的所有IP能够连接192.168.15.81,其他拒绝:iptables -t filter -A INPUT -p TCP -m iprange --src-range 192.168.15.1-192.168.15.10 -j ACCEPT iptables -f filter -A INPUT -p TCP -j DROP
  • 指定一段连续的ip地址不允许访问指定端口
要求192.168.15.1 - 192.168.15.10之间的所有IP不能访问8080端口,其他放行:iptables -t filter -A INPUT -p TCP -m iprange --src-range 192.168.15.1-192.168.15.10  --dport 8080 -j DROP
3.匹配指定字符串(string)

--string pattern # 指定要匹配的字符串
--algo {bm|kmp} # 匹配的查询算法

要求访问数据包中包含HelloWorld的数据不允许通过:iptables -t filter -A INPUT -p TCP -m string --string "HelloWorld" --algo kmp -j DROP
4.根据时间段匹配报文(time)
--timestart hh:mm[:ss]       # 开始时间
--timestop hh:mm[:ss]       # 结束时间
--monthdays day[,day...]    # 指定一个月的某一天
--weekdays day[,day...]     # 指定周 还是  周天
要求每天的12到13之间,不允许访问:iptables -t filter -A INPUT -p TCP -m time  --timestart 4:00   --timestop 5:00 -j DROP必须使用UTC时间
5.禁ping, 默认本机无法ping别人 、别人无法ping自己
--icmp-type {type[/code]|typename}echo-request  (8) 请求 echo-reply    (0) 回应
要求别人不能ping本机,但是本机可以ping别人:iptables -t filter -A INPUT -p TCP -m icmp --icmp-type "echo-request" -j DROP
6.限制链接数,并发连接数(connlimit)
--connlimit-upto n       #  如果现有连接数小于或等于  n  则 匹配
--connlimit-above n     #  如果现有连接数大于n 则匹配
要求主机连接最多有2个:iptables -t filter -A INPUT -p TCP --dport 22 -m connlimit --connlimit-above 2 -j DROP
7.针对 报文速率 进行限制。 秒、分钟、小时、天。
--limit rate[/second|/minute|/hour|/day] # 报文数量
--limit-burst number  # 报文数量(默认:5)
要求限制速率在500k/s左右:iptables -t filter -A OUTPUT -p TCP -m limit --limit 333/s -j ACCEPTiptables -t filter -A OUTPUT -p TCP -j DROP

6.实现共享上网案例

1.nat表
核心功能:IP及端口的映射转换,主要应用于以下2点:
1.共享上网
2.端口映射首先说说局域网内封包的传送:
1. 先经过 NAT table 的 PREROUTING 链;
2. 经由路由判断确定这个封包是要进入本机与否,若不进入本机,则下一步;
3. 再经过 Filter table 的 FORWARD 链;
4. 通过 NAT table 的 POSTROUTING 链,最后传送出去。NAT 主机的重点就在于上面流程的第 1,4 步骤,也就是 NAT table 的两条重要的链:PREROUTING 与POSTROUTING。 那这两条链重要功能在于修改IP,而这两条链修改的IP又是不一样的,POSTROUTING在修改来源IP,PREROUTING则在修改目标IP 。由于修改的 IP 不一样,所以就称为来源NAT (Source NAT, SNAT) 及目标 NAT (Destination NAT, DNAT)。
2.共享上网
#载入内核模块
modprobe ip_tables
modprobe iptables_filter
modprobe iptables_nat
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ipt_state#局域网共享
#方法1: 适合于有固定外网IP的,在有固定外网IP的服务器执行:
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 10.0.0.7
#192.168.1.0/24是内网地址段(办公室或IDC内网段),10.0.0.7是外网IP#方法2:适合变化的外网地址(ADSL)
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE
#MASQUERADE 表示伪装,外网IP地址不稳定的情况即可使用MASQUERADE(动态伪装),能够自动的寻找外网地址并改为当前正确的外网IP地址
3.为什么用POSTROUTING
企业共享上网1.办公室共享上网。网管要有外网IP,否则用路由
2.IDC内网机器上网
端口映射#场景:浏览器中访问 13.32.4.61:8088,能够映射转换到13.32.161.250:8088
#在13.32.4.61上执行
iptables -t nat -A PREROUTING -d 13.32.4.61 -p tcp --dport 8088 -j DNAT --to 13.32.161.250:8088
iptables -t nat -A POSTROUTING -d 13.32.161.250 -p tcp --dport 8088 -j SNAT --to 13.32.4.61#还可以使用REDIRECT单独进行端口转换
#例:将 80 端口的封包转递到 8080端口
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
# 使用 8080 这个 port 来启动 WWW ,但是别人都用80来联机
4.iptables常用企业案例

linux主机防火墙(表:filter 链:INPUT)局域网机器共享上网(表:nat 链:POSTROUTING)外部地址和端口,映射为内部地址和端口(表:nat 链:PREROUTING)

#实现外网IP 124.42.34.112 一对一映射到内部 10.0.0.8
#网关IP eth0:124.42.60.109 eth1:10.0.0.254
#首先在路由网关上绑定VIP 124.42.34.112,可以是别名的方式。
iptables -t nat -A POSTROUTING -s 10.0.0.0/255.255.240.0 -d 124.42.34.112 -j SNAT --to-source 10.0.0.254
iptables -t nat -A PREROUTING -d 124.42.34.112 -j DNAT --to-destination 10.0.0.8
iptables -t nat -A POSTROUTING -s 10.0.0.8 -o eth0 -j SNAT --to-source 124.42.34.112

总结

以上iptables整体介绍,涵盖了基础以及高级,相信对你能有所帮助。

【Linux防火墙】iptables基础用法及高级用法相关推荐

  1. Linux防火墙iptables基础详解

    一.前言 防火墙,其实说白了讲,就是用于实现Linux下访问控制的功能的,它分为硬件的或者软件的防火墙两种.无论是在哪个网络中,防火墙工作的地方一定是在网络的边缘.而我们的任务就是需要去定义到底防火墙 ...

  2. linux防火墙常用控制协议,Linux防火墙iptables的基础

    一.网络访问控制 1.Linux一般都是作为服务器系统使用,对外提供一些基于网络的服务 2.通常我们都需要对服务器进行一些网络访问控制,类似防火墙的功能 3.常见的访问控制包括:哪些IP可以访问服务器 ...

  3. linux防火墙策略文件夹,Linux防火墙iptables的策略

    iptables策略 iptables -L #查看现有防火墙所有策略 iptables -F #清除现有防火墙策略 只允许特定流量通过,禁用其他流量 1.允许SSH流量(重要) iptables - ...

  4. linux防火墙ip黑名单,【转】Linux防火墙(iptables)之黑名单

    iptables删除规则 So if you would like to delete second rule : iptables -D INPUT 2 ---------------------- ...

  5. Linux防火墙iptables学习

    http://blog.chinaunix.net/uid-9950859-id-98277.html 要在网上传输的数据会被分成许多小的数据包,我们一旦接通了网络,会有很多数据包进入,离开,或者经过 ...

  6. linux 防火墙iptables简明教程

    前几天微魔部落再次遭受到个别别有用心的攻击者的攻击,顺便给自己充个电,复习了一下linux下常见的防火墙iptables的一些内容,但是无奈网上的很多教程都较为繁琐,本着简明化学习的目的,微魔为大家剔 ...

  7. 共创Linux防火墙,Linux防火墙iptables简明教程

    前几天微魔部落再次遭受到个别别有用心的攻击者的攻击,顺便给自己充个电,复习了一下linux下常见的防火墙iptables的一些内容,但是无奈网上的很多教程都较为繁琐,本着简明化学习的目的,微魔为大家剔 ...

  8. linux防火墙--iptables(三)

    七.SNAT源地址转换 ·Source Network Address Translation ·修改数据包的源地址 ·仅用于nat表的POSTROUTING链 Example:局域网共享公网IP上网 ...

  9. linux 防火墙 iptables的简单使用

    linux 防火墙 iptables的简单使用 [root@web web]# uname -a Linux web 2.6.9-67.ELsmp #1 SMP Wed Nov 7 13:58:04 ...

最新文章

  1. kubernetes-1.11.0集群部署之master集群 (二)
  2. master-worker常驻型程序代码修改哪些需要重启master或者worker
  3. linux下默认有哪些语言支持,修改 Linux操作系统下的显示默认支持语言
  4. 数据结构——线性表之链式存储结构
  5. java对象的内存结构_JAVA 对象内存结构
  6. 有粉丝想转行推荐算法,我觉得......
  7. java gzipoutputstream_java – GZIPInputStream逐行读取
  8. 大数据 数据库 评测_为什么腾讯QQ的大数据平台选择了这款数据库?
  9. Robot Framework自动化测试(五)--- 开发系统关键字
  10. MAC修改保存bash_profile文件
  11. java命令行参数args_Args4J (Java 命令行参数控制开源项目) 使用指南
  12. python实现创建数据表并写入数据
  13. 青少年学习python有什么用_青少年为什么要学习Python
  14. co-wechat 微信公众平台消息接口服务中间件
  15. 决策模型(二):风险决策法
  16. 好用的数据恢复软件EasyRecovery2023最新版
  17. 通达oa与php环境冲突,迁移通达OA过程中所遇到的数据库问题
  18. 腾讯视频开启硬件加速
  19. python微妙级sleep
  20. 高斯混合模型(matlab代码+注释)

热门文章

  1. php实现视频转gif,一种在线视频转GIF的方法与流程
  2. 矩阵初等行变换的技巧
  3. 2020年数学建模国赛A题题目和解题思路
  4. 数据库备份与恢复,全备份、增量备份
  5. OnCreate()与PreCreateWindow()
  6. form表单数据回填
  7. Java RPC 分布式框架性能大比拼,Dubbo排老几?
  8. Win10 上使用 MSYS 开发 Android NDK 程序
  9. 使用KDevelop 怎么就那么难
  10. 网络安全入门:什么是防火墙,防火墙有哪些功能