iptables 的常见用法

iptables 的常见用法

初学iptables,自己归纳的笔记,可能有错,不喜勿喷

四表五链

四表:
filter : 过滤表
nat : 地址转换表
mangle: 拆解,修改,封装报文表
raw : 关闭nat表的连接追踪机制
*优先级 raw > mangle > nat > filter

五链:
五链

iptables 命令

查看 iptables 的规则:

iptables  [-t filter] -vL --line-numbers       //-t filter  指定表,缺省为filter表。
											  //--line-number 显示序号,方便插入或删除。  

在这里插入图片描述


添加规则:iptables -A INPUT 【匹配规则】 【执行目标】
插入规则:iptables -I INPUT 5 【匹配规则】 【执行目标】
修改规则:iptables -R INPUT 5 【匹配规则】 【执行目标】
删除规则:iptables -D INPUT 5

【匹配规则】
查看帮助文档
centos6----------------man iptables
centos7----------------man iptables-extensions

-s 192.168.1.0/24 ----------------- 源地址
-d 172.16.1.1 ---------------------- 目的地址
-i in-face -----------------------------流入接口
-o out-face ------------------------- 流出接口

-p tcp/udp/icmp 连接协议
-p tcp --sport 80 --dport 80
-p tcp --tcp-flags STN,ACK,FIN,RST SYN-------------------------------tcp报文SYN标记为1,其余为0的报文(即tcp链接的第一次握手)
-p tcp --syn---------------------------------同上
-p icmp --icmp-type 8 ------------------ ping报文
-p icmp --icmp-type 0 ----------------- 回应ping报文

多端口匹配

-m multiport --dport 21:22,80

iptables -I INPUT -s 172.16.0.0/16 -d 192.168.1.1 -p tcp -m multiport -dport 21,22,80 -j ACCEPT

多地址匹配

-m iprange --src-range 192.168.1.1-192.168.1.100 --dst-range 102.168.2.1-192.168.2.100

iptables -I INPUT -d localhost -p tcp --dport 80 -m iprange --src-range 192.168.1.1-192.168.1.100 -j DROP

字符串匹配

-m string --algo bm/kmp --string ‘abc’ [ --from 10 --to 80 ]
--------------------- --algo bm/kmp 为检测算法

iptables -I OUTPUT -m string --algo bm --string 'abcdefg' -j DROP

时间匹配

-m time --weekdays Mo,Tu,We
-m time --datestart 2019-09-11 --datestop 2019-9-30
-m time --datestart 2019-09-11T8:00 --datestop 2019-9-11T18:00
-m time --timestart 10:00 --timestop 18:00
-m time --weekdays Sa,Su --monthdays 1,2,3,4,5,6,7

iptables -I INPUT -d localhost -p tcp --dport 80 -m time --weekdays Mo,Tu,We,Th,Fr --timestart 8:00 --timestop 18:00 -j ACCEPT 

并发连接限制

-m connlimit --connlimit-above 6 --connlimit-upto 10

iptables -I INPUT -d localhost -p tcp --dport 22 -m connlimit --connlimit-above 7 -j DROP 

报文速率限制

-m limit --limit-burst 5 --limit 30/minute

iptables -I INPUT -d localhost -p icmp --icmp-type 8 -m limit --limit-burst 5 --limit 30/minute -j ACCEPT

状态检测

-m state --state NEW,ESTABLISHED,RELATED,INVALIED
*NEW ------------------------------ 新建立的连接,仅第一次建立时的报文状态
*ESTABLISHED -----------------已连接状态 (包括响应报文)
*RELATED-------------------------相关连接(如ftp的命令连接和数据连接)
*INVALIED-------------------------无法识别的连接

*追踪功能所能记录的最大数: /proc/sys/net/nf-conntrack-max
*已记录的连接: /proc/net/nf-conntrack
*不同协议的连接追踪时长: /proc/sys/net/netfilter/

iptables -I INPUT -d localhost -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -I INPUT -d localhost -p tcp  -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -I OUTPUT -s localhost -p tcp -m state --state ESTABLISHED  -j ACCEPT

【执行目标】

-j ACCEPT-----------------------------接受访问
-j DROP--------------------------------丢弃
-j REJECT-----------------------------拒绝访问
-j chain-name ----------------------- 转向自定义链
-j RETURN ---------------------------返回调用链
-j REDIRECT--------------------------端口重定向
-j LOG-----------------------------------记录日志
-j MARK -------------------------------做防火墙标记
-j DNAT ---------------------------------目标地址转换
-j SNAT----------------------------------源地址转换
-j MASQUERADE--------------------地址伪装(适用于出口地址变换的场景)


iptables的规则保存--------------------iptables-save > /tmp/iptables
iptables的重载--------------------------iptables-restore < /tmp/iptables


实例

例一:拒绝172.16.0.0/16网段主机访问本地的web服务

iptables -A INPUT -s 172.16.0.0/24 -d localhost -p tcp --dport 80 -j DROP 

在这里插入图片描述

例二:开放本机的ssh,http,ftp服务端口
用到多端口匹配机制

iptables -A INPUT -d localhost -p tcp -m multiport --dport 21,22,80 -j ACCEPT

在这里插入图片描述

例三:拒绝其他主机ping本地主机,但允许本地ping外部网络

iptables -A INPUT -d localhost -p icmp --icmp-type 8 -j DROP
iptables -A OUTPUT -s localhost -p icmp --icmp-type 0 -j DROP
iptables -A OUTPUT -s localhost -p icmp --icmp-type 8 -j ACCEPT
iptables -A INPUT -d localhost -p icmp --icmp-type 0 -j ACCEPT

在这里插入图片描述

例四:开放被动模式的ftp服务

①装载ftp追踪时的专用模块nf_conntract_ftp
方法一:手动装载

modprobe nf_conntrack_ftp

方法二:自动装载

vim /etc/sysconfig/iptables-config
IPTABLES_MODULES="nf_conntrack_ftp"

②放行请求报文(命令连接&数据连接)和响应报文

iptables -I INPUT -d localhost -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -I INPUT -d localhost -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -I OUTPUT -s localhost -m state --state ESTABLISHED -j ACCEPT

在这里插入图片描述




网络防火墙

在这里插入图片描述
首先需要开启转发功能:
方法一:临时开启

sysctl -w net.ipv4.ip_forward=1

方法二:永久开启

echo "net.ipv4.ip_forward=1"  >> vim /etc/sysct.conf
sysctl -p

首先拒绝所有外来访问,然后允许对应访问通过

iptables -P FORWARD DROP
iptables -A FORWARD -m state --state ESTABLISHED -j ACCEPT
iptables -A FORWARD -d 172.16.0.0/16 -s 1.1.1.0/24 -p tcp --dport 22 -m state --state NEW -j  ACCEPT

在这里插入图片描述
NAT的地址转换

①源地址转换SNAT

iptables -t nat -A POSTROUTING -s 172.16.0.0/16 ! -d 172.16.0.0/16 -j SNAT --to-source 2.2.2.2

在这里插入图片描述
②目的地址转换DNAT

iptables -t nat -A PREROUTING -d 1.1.1.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.2

在这里插入图片描述
③PAT端口映射

iptables -t nat -A PREROUTING -d 1.1.1.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.2:8080

在这里插入图片描述

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值