linux--iptables学习总结

关系

pkts:对应规则匹配到的报文的个数。

bytes:对应匹配到的报文包的大小总和。

target:规则对应的target,往往表示规则对应的"动作",即规则匹配成功后需要采取的措施。

prot:表示规则对应的协议,是否只针对某些协议应用此规则。

opt:表示规则对应的选项。

in:表示数据包由哪个接口(网卡)流入,我们可以设置通过哪块网卡流入的报文需要匹配当前规则。

out:表示数据包由哪个接口(网卡)流出,我们可以设置通过哪块网卡流出的报文需要匹配当前规则。

source:表示规则对应的源头地址,可以是一个IP,也可以是一个网段。

destination:表示规则对应的目标地址。可以是一个IP,也可以是一个网段。

iptables --line-numbers -nvL -t filter 
iptables --line-numbers -nvL -t filter FORWARD
添加
iptables -t filter -I INPUT -s 192.168.1.2,192.68.1.1 -j DROP #向前添加
iptables -t filter -I INPUT 2 -s 192.168.1.2,192.68.1.1 -j DROP #向前添加
iptables -t filter -A INPUT 2 -s 192.168.1.2 -j DROP #向后添加
iptables -t filter -A INPUT ! -s 192.168.1.2 -j ACCEPT #取反,表示除了这个ip的都接受,但是这个ip依然能ping通,因为未指定此ip的规则,系统会默认匹配默认规则
删除
iptables --line-numbers -nvL #查询序号
iptables -D INPUT 1
iptables -D INPUT -s 192.168.1.2 -j DROP
删除表所有规则
iptables -t 表明 -F 链名
修改规则
iptables -t filter -R INPUT 1 -s 192.168.1.2 -j REJECT	
修改默认规则
iptables -t filter -P FORWARD DROP

保存
iptables-save > /etc/iptables.rules
或者直接编辑 /etc/iptables.rules后
iptables-restore < /etc/iptables.rules
首次保存时需添加
vim /etc/network/if-pre-up.d/iptables #打开
#!/bin/bash
iptables-restore < /etc/iptables.rules
chmod +x /etc/network/if-pre-up.d/iptables

扩展模块

#添加目的地址
iptables -t filter -I INPUT -s 192.168.1.1 -d 192.168.255.129 -j DROP #从192.168.1.1发生至192.168.255.129的报文将丢弃
iptables -t filter -I INPUT -s 192.168.1.1 -d 192.168.255.129 -p tcp -j DROP #从192.168.1.1发生至192.168.255.129的tcp协议会被丢弃,-p后参数为tcp, udp, udplite, icmp, icmpv6,esp, ah, sctp, mh
-i 指定流入网卡 -o指定流出网卡
-m 指定扩展匹配条件,若不指定,默认和-p相同 --dport 指定目标端口,--sport 指定源端口,必须和-p,-m配合使用
指定端口可使用22:25形式,表示22,23,24,25,或:80,表示从1到80端口所有端口
#若指定多个离散端口,则需要使用 -m multiport模块,如
iptables -t filter -I INPUT -s 192.168.255.1 -p tcp -m multiport -dport 22,36,80 -j DROP
  1. iprange扩展模块
    可以指定连续范围的ip,有–src-range,–dst-range选项

    iptables -t filter -I INPUT -m iprange --src-range 192.168.1.127-192.168.1.255 -j DROP
    
  2. string
    指定要匹配的字符串,如果报文中包含对应的字符串,则符合匹配条件
    需配合–algo(参数为bm和kmp,为匹配不同算法,随便选一个)和–string使用,如

iptables -I INPUT -t filter -m string --algo bm --string "HELLO" -j REJECT
#如果报文中含有HELLO,则丢弃
  1. time
    配置限制时间,指定某一时间某一策略,主要有

–timestart 00:00:00 开始时间

–timestop 00:00:00 结束时间

–weekdays 6,7 星期,可取反

–monthdays 29,30 每个月多少号,可取反

–datestart 2020-07-27 开始日期

–datestop 2020-10-20 结束日期

  1. connlimit
    限制每个IP地址同时链接到server端的链接数量

    –connlimit-above 10 限制每个ip最多有十个连接,

    –connlimit-mask 27 在255.255.255.224 网段中,表示最多有多少个连接,比如27则最多有30个连接

  2. limit

    对"报文到达速率"进行限制,如:可以以秒为单位进行限制,也可以以分钟、小时、天作为单位进行限制。比如,限制每秒中最多流入3个包,或者限制每分钟最多流入30个包,都可以

    “–limit-burst"指定"空闲时可放行的包的数量”

    –limit 10/minute 表示每分钟10个,即6秒钟一个,同理

    /second

    /minute

    /hour

    /day

    –limit-burst 3 指定闲时最多三个连接

扩展匹配条件之’–tcp-flags’

https://www.zsythink.net/archives/1578

ICMMP扩展

https://www.zsythink.net/archives/1588

state扩展

http://www.zsythink.net/archives/1597

自定义链

http://www.zsythink.net/archives/1625

作为边缘主机网络防火墙

http://www.zsythink.net/archives/1663

NAT

root@cjs-virtual-machine:~# iptables -t nat -nvL
Chain PREROUTING (policy ACCEPT 9 packets, 922 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    3   180 DOCKER     all  --  *      *       0.0.0.0/0            0.0.0.0/0            ADDRTYPE match dst-type LOCAL

Chain INPUT (policy ACCEPT 7 packets, 802 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 85 packets, 6070 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 DOCKER     all  --  *      *       0.0.0.0/0           !127.0.0.0/8          ADDRTYPE match dst-type LOCAL

Chain POSTROUTING (policy ACCEPT 85 packets, 6070 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 MASQUERADE  all  --  *      !docker0  172.17.0.0/16        0.0.0.0/0           

Chain DOCKER (2 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 RETURN     all  --  docker0 *       0.0.0.0/0            0.0.0.0/0       
    
    
    
root@cjs-virtual-machine:~# iptables -t nat -nvL
Chain PREROUTING (policy ACCEPT 1 packets, 67 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    5   284 DOCKER     all  --  *      *       0.0.0.0/0            0.0.0.0/0            ADDRTYPE match dst-type LOCAL

Chain INPUT (policy ACCEPT 1 packets, 67 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 10 packets, 793 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 DOCKER     all  --  *      *       0.0.0.0/0           !127.0.0.0/8          ADDRTYPE match dst-type LOCAL

Chain POSTROUTING (policy ACCEPT 12 packets, 897 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 MASQUERADE  all  --  *      !docker0  172.17.0.0/16        0.0.0.0/0           
    0     0 MASQUERADE  tcp  --  *      *       172.17.0.2           172.17.0.2           tcp dpt:55555

Chain DOCKER (2 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 RETURN     all  --  docker0 *       0.0.0.0/0            0.0.0.0/0           
    2   104 DNAT       tcp  --  !docker0 *       0.0.0.0/0            0.0.0.0/0            tcp dpt:55555 to:172.17.0.2:55555

  1. SNAT
    内部的主机可以借助SNAT隐藏自己的IP地址,同时还能够共享合法的公网IP,让局域网内的多台主机共享公网IP访问互联网。

    iptables -t nat -A POSTROUTING -s 内部ip -j SNAT --to-source 外部ip
    
  2. DNAT
    将公网客户端发送过来的报文的目标地址与端口号做了映射,将访问web服务的报文转发到了内网中的C主机中,将访问远程桌面的报文转发到了内网中的D主机中。

    iptables -t nat -I PREROUTING -d 外部ip -p tcp --dport 外部端口 -j DNAT --to-destination 内部ip:内部端口
    
  3. MASQUERADE

    与SNAT相似,只不过不用绑定外部ip,绑定对应的物理interface就行

    iptables -t nat -A POSTROUTING -s 内部ip -j MASQUERADE -o 出口interface
    
  4. REDIRECT

    将本机的端口映射到另外一个端口

    iptables -t nat -A PREROUTING -p tcp --dport 源端口 -j REDIRECT --to-ports 目标端口
    

ubuntu保存

#若是第一次使用iptables
vim /etc/network/if-pre-up.d/iptables

#!/bin/bash
iptables-restore < /etc/iptables.rules
#保存后
iptables-save > /etc/iptables.rules 

#之后保存只需
iptables-save > /etc/iptables.rules
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值