1、iptables介绍
防火墙分类:从逻辑上分类
分类说明主机防火墙针对单个主机进行防护网络防火墙****处理网络入口或者边缘,针对网络入口进行防护
防火墙分类:从物理上分类
分类说明硬件防火墙在硬件级别实现防火墙功能软件防火墙****应用软件处理逻辑运行于通用硬件平台之上的防火墙
两个概念:
内核空间:也叫内核态,操作系统占据的内存区域
用户空间:也叫用户态,用户进程所在的内存区域
2、iptables四表五链详解
表说明filter表负责过滤功能,防火墙;内核模块:iptable_filternat表网络地址转换功能;内核模块:iptable_natmangle表拆解报文,做出修改;iptable_mangleraw表关闭nat表上启用的追踪机制;iptable_raw链表preroutingraw表,mangle表,nat表inputmangle表,filter表forwardmangle表,filter表outputraw表,mangle表,nat表,filter表postrouting****mangle表,nat表
表和链的关系:
表链rawprerouting,outputmangleprerouting,input,forward,output,postroutingnatprerouting,output,postroutingfilter
input,forward,outpu
优先级次序(由高到低): raw > mangle > nat > filter
3、iptables基本语法
处理动作
动作含义ACCEPT允许数据包通过DROP直接丢弃数据包,不给任何回应信息REJECT拒绝数据包通过,客户端会收到拒绝的信息SNAT源地址转换DNAT****目标地址转换
常用操作命令
常用操作命令**说明-A在指定链尾部添加规则-D删除匹配的规则-R替换匹配的规则-I在指定位置插入规则-F删除所有链的规则
常见设置参数
常见设置参数说明****--dport *指定目标TCP/IP端口 --sport 指定源TCP/IP端口-p tcptcp协议*-p udpudp协议-j DROP拒绝-j ACCEPT允许-s 192.168.150.129指定源地址或地址段-d 192.168.150.130**指定目标地址或地址段
4、实际操作
4.1 增加规则
选项说明:
-t :指定操作的表
-I :指定插入规则到哪个链中
-s :指定“匹配条件”中的源地址
-j :指定“匹配条件”中的动作
拒绝所有来自192.168.150.15的所有报文
iptables -I INPUT -s 192.168.150.15 -j DROP
效果展示:
再允许192.168.150.15的所有报文
iptables -I INPUT -s 192.168.150.15 -j ACCEPT
效果展示:
4.2 删除规则
iptables -D INPUT 1
4.3 修改规则
iptabels -R INPUT 1 -s 192.168.150.15 -j ACCEPT
效果展示:
5、命令语法总结
iptables -t 表名 -A 链名 匹配条件 -j 动作 #在规则尾部追加
iptables -t 表名 -I 链名 匹配条件 -j 动作 #在规则首部增加
iptables -t 表名 -I 链名 规则序号 匹配条件 -j 动作 #在链的指定位置添加
** iptables - t 表名 -D 链名 规则序号 #按照规则序号删除规则**
iptables -t 表名 -D 链名 匹配条件 -j 动作 #按照匹配条件个动作删除规则
iptables - t 表名 -P 链名 动作 #修改指定表的指定链的默认策略
iptables -F #删除所有规则
**iptables -t 表名 -R 链名 规则序号 规则原本的匹配条件 -j 动作 #修改规则 **
6、基本匹配条件
# -s 用于匹配报文的源地址,可以同时指定多个源地址,每个IP之间用逗号隔开,也可以指定为一个网段。
iptables -t filter -I INPUT -s 192.168.150.15,192.168.150.16 -j DROP
# -d 用于匹配报文的目标地址,可以同时指定多个目标地址,每个IP之间用逗号隔开,也可以指定为一个网段。
iptables -t filter -I OUTPUT -d 192.168.150.15,192.168.150.16 -j DROP
# -p 用于匹配报文的协议类型,可以匹配的协议类型tcp,udp,udplite,icmp等等。
iptables -t filter -I INPUT -p tcp -s 192.168.150.15,192.168.150.16 -j DROP
** # -i 用于匹配报文是哪个网卡接口流入本机的,由于匹配条件只是用于匹配报文的流入的网卡,所以OUTPUT链与POSTROUTING链中不能使用此选项。**
iptables -t filter -I INPUT -p tcp -i ens33 -j DROP
7、iptables进阶用法
7.1 iprange扩展模块
使用iprange扩展模块可以指定“一段连续的ip地址范围”,用于匹配报文的源地址或者目标地址。
iprange扩展模块有两个扩展匹配条件可以使用:
- --src-range:源地址范围
- --dst-range:目标地址范围
- -m iprange:表示使用iprange扩展模块
iptables -t filter -I INPUT -m iprange --src-range 192.168.150.15-192.168.150.25 -j DROP
7.2 string扩展模块
使用string扩展模块,可以指定要匹配的字符串,如果报文中包含对应的字符串,则符合匹配条件。
- -m string:表示使用string扩展模块
- --algo:用于指定匹配算法,可选的算法有bm和kmp,此选项为必选。
- --string:用于指定需要匹配的字符串
iptables -t filter -I INPUT -m string --algo kmp --string "bit" -j DROP
# 网站有敏感字符串,用户访问不让响应
8、iptables进行端口转发
实例1:
将本机的8080端口转发至其他主机,主机IP:192.168.150.16,目标主机IP和端口:192.168.150.15:8088,规则如下;
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 8080 -j DNAT --to-destination 192.168.150.15:8088
iptables -t nat -A POSTROUTING -p tcp -m tcp --dport 8088 -j SNAT --to-source 192.168.150.16
echo 1 > /proc/sys/net/ipv4/ip_forward #开启iptables forward转发功能。
实例2:
访问本机的8080端口转发到本地的80端口
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j REDIRECT --to-ports 80
版权归原作者 zcffight 所有, 如有侵权,请联系我们删除。