iptables使用详解( 三 )

拒绝掉对某个ip的回应iptables -A OUTPUT -d 31.13.78.35 -j DROP-d 表示destination , 即所有返回给ip 31.13.78.35的数据包都直接丢掉,不回应 。
清空某个链中的所有规则iptables -t filter -F INPUT所有TCP协议的数据包 , 都丢弃iptables -A INPUT -p tcp -j DROP-p表示protocol
丢弃掉某个ip对端口22的访问iptables -A INPUT -p tcp -m tcp --dport 22 -s 59.45.175.0/24 -j DROP由于要对端口进行精准匹配 , 所以先-m tcp 进行tcp module加载 。
如何对多个端口进行匹配iptables -A INPUT -p tcp -m multiport --dports 22,5901 -s 59.45.175.0/24 -j DROP匹配指定链接状态的数据包链接状态有以下几种:

  • NEW:新创建的连接
  • ESTABLISHED 已经建立的连接
  • RELATED:跟已经创建的连接相关的连接
  • INVALID:非正常状态
  • DNAT:如果一个连接其目标地址被nat表PREROUTING链中的规则修改了 , 即是这个状态
  • SNAT:如果一个连接其源地址被nat表中的规则修改了 , 即是这个状态
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT即只对已经建立的连接和由此产生的相关连接进行放行
有些版本的linux,对应的module不是conntrack,而是state 。对应指定状态的参数不是ctstate 而是--state 。所以,上述写法在有些linux版本中需要替换成
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT一般来讲,这些规则不可能单独出现,如果都不允许任何NEW状态连接建立,那哪来的已建立连接和相关连接?所以正确的做法一般是:
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT //这条规则允许已经建立的连接和相关连接iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT //新建链接如果是访问22号端口,则允许访问改变某个链的默认规则一般每个链都有默认规则,即该链没有任何规则或者没有任何一条规则被匹配的情况下 , 对数据的放行策略是怎么样的 。
Chain INPUT (policy ACCEPT)...Chain FORWARD (policy ACCEPT)...Chain OUTPUT (policy ACCEPT)..以filter表的三个链为例 , 默认是ACCEPT 。但是我们可以改变这个模型规则,比如默认规则就是DROP
iptables -t filter -P INPUT DROP回环地址的访问始终允许iptables -t filter -A INPUT -i lo -j ACCEPT //在本地网络通信的所有包,都放行-i 表示input 输入网口 。lo表示本地的网络接口 。这里没有指定-s-d地址 ,表示在回环网络上通信的所有端口,都放行,这样我们本机的web service,访问本机的mysql数据库才不会有问题 。当然一般INPUT的默认规则是ACCEPT,你不用配置上述的规则,只要没有其它规则去限制,那么本机回环地址之间的端口通信也是放行的,除非你对INPUT链默认开启了拒绝策略
在使用某个网络时,不响应请求iptables -A OUTPUT -o wlan0 -d 121.18.238.0/29 -j DROP上述配置含义:所有发给目标网口是wlan0 且 目标ip是121.18.238.0/29 地址的包,都会被丢弃 。-o 表示 数据包的目标网口 。
在linux命令行中,使用ifconfig,就能看见当前已连接的所有网络接口
iptables使用详解

文章插图
规则的取反配置上述规则配置 , 一般都是满足某某条件 , 做什么动作 。除此之外,我们还可以配置,如果不满足某某条件,则做某个动作 。
iptables -A INPUT -p tcp -m multiport ! --dports 22,80,443 -j DROP这个不满足则的取动作,是通过感叹号来实现的 。上述命令的含义是:非22,80,443的端口,我们直接丢弃 。
当然这条命令之前,应该要配置一条规则:
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT因为通过22或80建立的连接,可能会衍生出一些RELATED的连接,他们的端口可能不是22或80,那样也就被拒掉了 。会导致通信出问题 。
如何将规则持久化上述命令对iptable的操作,并不是永久生效的,机器重启后,对应配置会丢失 。如果需要持久化,则需要以下命令进行保存
centos
  1. 第一步,在修改iptables配置后,将其导出到某个文件,比如:/etc/iptables.conf。命令为:

    推荐阅读