iptables/netfilter进阶

  在上一章当中我们介绍了iptables的介绍以及它的基本使用,下面我们开始介绍iptables的命令用法以及iptables是如何工作的。

1、回顾

  我们回顾一下上一章节的内容,在上一章节中我们讲述的是iptables的基本概念以及命令格式,同时讲述规则链与表的概念,那么现在我们就要说一下iptables的相关命令。

2、iptables的相关命令

  其实使用iptables命令,都要遵从"四表五链",那么在前一章我们说过,iptables的格式如下

# iptables [-t table] COMMAND [chain] [PARAMETERS] [-m matchname [per-match-options]] [-j targetname [per-target-options]]

  那么下面我们依据这个命令的格式,来用实例熟悉iptables命令。
  (1) 开放本机为192.168.1.16的80端口,然后我们拒绝3306端口进行响应。

# iptables -A INPUT -d 192.168.1.16 -p tcp --dport 80 -j ACCEPT# iptables -A INPUT -d 192.168.1.16 -p tcp --dport 3306 -j DROP

  以上的命令是很简单的,那么为什么在INPUT上将80,3306端口写上去呢?这是因为别人发请求的时候,我响应给客户端时,我变成了"目标",而我并不知道源地址,更别说客户端用那个端口给我进行响应了,但是我知道目标IP和目标端口是谁,只要在入栈报文处进行处理给它实施拦截,就可以得到有效的控制。
不过以上的规则当中,我们可以使用显式扩展-m当中的multiport以离散或连续的方式指定多个端口,最多达到15个,不过必须要统一起来,要么就放行,要么就拦截。

[!] --source-ports, --sports port[,port|,port:port]...  指定多个端口
[!] --destination-ports, --ports port[,port|,port:port]...  指定多个目标端口

  示例如下:

# iptables -A INPUT -d 192.168.1.16 -p tcp -m multiport --dports 80,3306 -j ACCEPT

  同样,在OUTPUT链上,我们可以不允许放行,即使在INPUT链中能进来,但不响应也是不行···的。

# iptables -A OUTPUT -s 192.168.1.15 -p tcp -m multiport --sports 22,80 -j DROP

  注意:这样的实验还是并不推荐,因为这样会把远程回话给拒绝掉,如果说要做这个实验的话,还是把22号端口放行,如果真的做了这个事情,需要在实体机上执行清空规则命令

# iptables -F

  (2) 拒绝从192.168.1.20-30范围的IP地址拒绝访问192.168.1.15的80端口

# iptables -A INPUT -d 192.168.1.15 -p tcp --dport 80 -m iprange --src-range 192.168.1.20-192.168.1.30 -j DROP

  在显示扩展中,iprange是匹配ip的范围,是以连续的方式来指明多个ip地址的匹配条件,一般有两种方式:

[!] --src-range from[-to]
[!] --dst-range from[-to]

  (3) 在周六周日的两点半到六点半期间,所有来源于192.168.24.0/24的范围网段禁止访问192.168.1.15的80端口。

# iptables -A INPUT -s 192.168.24.0/24 -d 192.168.1.15 -p tcp --dport 80 -m time --timestart 14:30 --timestop 18:30 --weekdays 6,7 -j DROP# iptables -A INPUT -s 192.168.24.0/24 -d 192.168.1.15 -p tcp --dport 80 -m time --timestart 14:30 --timestop 18:30 --weekdays 6,7 --kerneltz -j DROP

  以上这两种命令的意思大致是一样的,time就是显示扩展之一的选项,--timestart是开始的时间,那么--timestop是停止的时间,--weekdays表示日期,可以用数字表示或者是单词,与众不同的是第二个是多个--kerneltz,那么这个意思是转换成内核所设置的时间,也就是说,第一段命令使用的是UTC时间。
  (4) 带有凡事从192.168.1.15响应为"gay"字符串,从80端口响应出去的全部屏蔽掉。

# iptables -A OUTPUT -s 192.168.1.15 -p tcp --sport 80 -m string --algo bm --string "gay" -j DROP

  显示扩展string是报文中的应用层数据作为字符串模式的匹配检测,以上的命令中如果匹配到的话就丢弃掉,其中--algo是指明算法的,算法共有两个,一个是bm,另一个是kmp;检测的模式也有两种,一个是检测字符串的模式,另一个是要检测字符串的模式,但是是16进制的,如下以此显示:

[!] --string pattern    要检测的字符串模式[!] 
--hex-string pattern    要检测字符串模式,16进制

  (5) ping请求最少达到3个,最多不能达到5个。

# iptables -A INPUT -d 192.168.1.15 -p icmp --icmp-type 8 -m limit --limit 3/minute --limute-burst 5 -j ACCEPT

  这是limit扩展,基于收发报文的速率匹配,在这里面,还有令牌桶过滤器,有了这个过滤器,我们可以限制它的数量,以这段命令为例,从iptables的角度看,就是开始的时候,有五个通行证,用完之后每20秒增加一个,以用户的角度看,就是每一分钟增加三个或每分钟只能过三个,要是想20分钟过一个,只能写成–limit 3/hour –limit-burst 5。所以,以下子命令的显示为:

--limit rate[/second|/minute|/hour|/day]
--limit-burst number

  (6) 访问192.168.1.15的22号端口和80端口的NEW状态以及ESTABLISHED状态进入,之后只能允许ESTABLISHED放行。

# iptables -A INPUT -d 192.168.1.26 -p tcp -m multiport --dports 22,80 -m state --state NEW,ESTABLISHED -j ACCEPT# iptables -A OUTPUT -s 192.168.1.26 -p tcp -m multiport --sports 22,80 -m state --state ESTABLISHED -j ACCEPT# iptables -P INPUT DROP# iptables -P FORWARD DROP# iptables -P OUTPUT DROP

  这属于是state扩展,这才使得让iptables拥有带状态控制的防火墙功能,它是根据"连接追踪机制"去检查防火墙的状态,我们称之为conntrack机制,它是去检查连接状态,去追踪本机上的请求和响应之间的关系,状态有如下几种:

NEW 发出新请求,连接追踪模版中不存在此连接的相关信息条目;因此,将其识别为第一次发出请求(新连接请求)
ESTABLISHED 这是NEW状态之后,连接追踪模版中为其建立的条目失败之前期间内所进行的通信状态(已建立的连接)
INVALID 无法识别的连接
RELATED 相关联的连接,当前是一个新请求,但附属于某个已存在的连接
UNTRACKED   未追踪的连接

原创文章,作者:刘 祥宇,如若转载,请注明出处:http://www.178linux.com/67487

(0)
刘 祥宇刘 祥宇
上一篇 2017-02-03 20:52
下一篇 2017-02-04 11:43

相关推荐

  • 第三周作业

    1.列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 [root@localhost ~]# who | cut -d' ' -f1 | sort -u 2.取出最后登录到当前系统的用户的相关信息。 […

    Linux干货 2017-01-04
  • Linux磁盘管理 and 文件系统管理

     磁盘管理     主要有以下几部分:        磁盘结构        分区类型        管理分区        管理文件系统     &…

    Linux干货 2016-09-01
  • 配置使用基于mysql存储rsyslog日志信息

    配置使用基于mysql存储rsyslog日志信息   日志对于我们来说,肯定不会陌生。每个系统应用,只要有人访问,每时每刻都会产生大量的日志,用来记录服务器应用的运行信息。以便于我们在服务有异常时进行查看,或是从日志记录中提取出应用系统的运行信息。某些电商Web网站甚至会利用日志记录去对用户的购买行为作分析,以便更好的服务于客户。 &nb…

    Linux干货 2016-09-05
  • LVS产生背景、原理及LVS-DR应用实例(一)

    一、什么是lvs? 它产生的背景,使用场景是什么?      LVS(Linux Virtual Server) 可以理解为一个虚拟服务器系统。       Internet的飞速发展,网络带宽的增长,Web服务中越来越多地使用CGI、动态主页等CPU密集型应用,这对服务器的性能…

    Linux干货 2016-10-29
  • RHCE系列之备份工具—-镜像备份Rsync

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://nolinux.blog.51cto.com/4824967/1431426     我一哥们最近在搞备份,需要用到rsync。因此,鄙人就简单总结了下rsync,也就有了这篇博文,希望对51…

    Linux干货 2016-08-15
  • 0805作业

    课堂练习 1.找出ifconfig 命令结果中本机的所有IPv4 地址   ifconfig|tr -cs '[0-9].' '\n'|sort -ut '.' -k3 2.查出分区空间使用率的最大百分比值   df|tr -s ' '|cut -d&quot…

    Linux干货 2016-08-07