【Linux防火墙】iptables基础用法及高级用法
文章目录
- 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基础用法及高级用法相关推荐
- Linux防火墙iptables基础详解
一.前言 防火墙,其实说白了讲,就是用于实现Linux下访问控制的功能的,它分为硬件的或者软件的防火墙两种.无论是在哪个网络中,防火墙工作的地方一定是在网络的边缘.而我们的任务就是需要去定义到底防火墙 ...
- linux防火墙常用控制协议,Linux防火墙iptables的基础
一.网络访问控制 1.Linux一般都是作为服务器系统使用,对外提供一些基于网络的服务 2.通常我们都需要对服务器进行一些网络访问控制,类似防火墙的功能 3.常见的访问控制包括:哪些IP可以访问服务器 ...
- linux防火墙策略文件夹,Linux防火墙iptables的策略
iptables策略 iptables -L #查看现有防火墙所有策略 iptables -F #清除现有防火墙策略 只允许特定流量通过,禁用其他流量 1.允许SSH流量(重要) iptables - ...
- linux防火墙ip黑名单,【转】Linux防火墙(iptables)之黑名单
iptables删除规则 So if you would like to delete second rule : iptables -D INPUT 2 ---------------------- ...
- Linux防火墙iptables学习
http://blog.chinaunix.net/uid-9950859-id-98277.html 要在网上传输的数据会被分成许多小的数据包,我们一旦接通了网络,会有很多数据包进入,离开,或者经过 ...
- linux 防火墙iptables简明教程
前几天微魔部落再次遭受到个别别有用心的攻击者的攻击,顺便给自己充个电,复习了一下linux下常见的防火墙iptables的一些内容,但是无奈网上的很多教程都较为繁琐,本着简明化学习的目的,微魔为大家剔 ...
- 共创Linux防火墙,Linux防火墙iptables简明教程
前几天微魔部落再次遭受到个别别有用心的攻击者的攻击,顺便给自己充个电,复习了一下linux下常见的防火墙iptables的一些内容,但是无奈网上的很多教程都较为繁琐,本着简明化学习的目的,微魔为大家剔 ...
- linux防火墙--iptables(三)
七.SNAT源地址转换 ·Source Network Address Translation ·修改数据包的源地址 ·仅用于nat表的POSTROUTING链 Example:局域网共享公网IP上网 ...
- linux 防火墙 iptables的简单使用
linux 防火墙 iptables的简单使用 [root@web web]# uname -a Linux web 2.6.9-67.ELsmp #1 SMP Wed Nov 7 13:58:04 ...
最新文章
- kubernetes-1.11.0集群部署之master集群 (二)
- master-worker常驻型程序代码修改哪些需要重启master或者worker
- linux下默认有哪些语言支持,修改
Linux操作系统下的显示默认支持语言
- 数据结构——线性表之链式存储结构
- java对象的内存结构_JAVA 对象内存结构
- 有粉丝想转行推荐算法,我觉得......
- java gzipoutputstream_java – GZIPInputStream逐行读取
- 大数据 数据库 评测_为什么腾讯QQ的大数据平台选择了这款数据库?
- Robot Framework自动化测试(五)--- 开发系统关键字
- MAC修改保存bash_profile文件
- java命令行参数args_Args4J (Java 命令行参数控制开源项目) 使用指南
- python实现创建数据表并写入数据
- 青少年学习python有什么用_青少年为什么要学习Python
- co-wechat 微信公众平台消息接口服务中间件
- 决策模型(二):风险决策法
- 好用的数据恢复软件EasyRecovery2023最新版
- 通达oa与php环境冲突,迁移通达OA过程中所遇到的数据库问题
- 腾讯视频开启硬件加速
- python微妙级sleep
- 高斯混合模型(matlab代码+注释)