iptables入门及基本命令使用

成都创新互联公司服务项目包括兖州网站建设、兖州网站制作、兖州网页制作以及兖州网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,兖州网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到兖州省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

规则的功能:

       四个表

            filter

            nat

            mangle

            raw

      五个内置链:

            PREROUTING

            INPUT

            FORWARD

            OUTPUT

            POSTROUTING

规则的属性:

1、网络层协议属性:

                 ip

2、传输层协议属性:

                 tcp

                 udp

                 icmp

                 iptables

大写字母选项:子命令

小写字母选项:用来匹配标准及其它;

                 -t {filter|nat|mangle|raw}

                 -L: list

                 -n: 数字格式显示IP和PORT;

                 -v: 详细信息, -vv, -vvv其中后面的选项比前面的显示的更详细

                 --line-numbers: 显示链中规则的行号;

                 -x: 显示精确值,不要做单位换算;

规则和默认策略都有两个计数器:

                          packets:

                          bytes:

表和链的对应关系:

filter

INPUT, FORWARD, OUTPUT

nat

PREROUTING, POSTROUTING, OUTPUT

mangle

PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING

raw

PREROUTING, OUTPUT

每个链都有其默认策略:policy ACCEPT

通常只需要修改filter表的默认策略

其它子命令:

管理链:

      -F: 清空链

          iptables -F  表示清空所有链

      -P: 设定默认策略

          iptables -t filter -P INPUT {DROP|ACCEPT}

      -N: 新建一条自定义链;

          iptables -N FILTER_WEB

      -X: 删除自定义的空链;

      -Z: 计算器清零;

          iptables -Z

      -E: 重命名自定义链

管理规则:

      -A: append  :在链的最后追加一条规则

      -I [n]: 插入为第n条规则

      -D [n]: 删除第n条规则

      -R [n]: 替换第n条规则

编写规则语法:

      iptables [-t 表]大写选项子命令[规则号]链名 匹配标准-j目标

目标:

      DROP:丢弃

      REJECT:拒绝

      ACCEPT:允许

      RETURN:返回跳转

      REDIRECT: 端口重定向

      DNAT:目标地址转换

      SNAT:源地址转换

      LOG:记录日志

      MARK:打标记

      自定义链

匹配标准:

通用匹配

 -s|--src|--source [!] IP/NETWORK

 -d|--dst|--destination [!] IP/NETWORK

    #iptables -t filter -A INPUT -s 172.16.0.0/16 -d 172.16.100.1 -j ACCEPT

 -i incoming_interface: 指定数据报文流入接口; INPUT, PREROUTING, FORWARD

 -o outing_interface: 指定数据报文流出接口;OUTPUT, POSTROUTING, FORWARD

 -p {tcp|udp|icmp}

扩展匹配:要使用“-m扩展名称”来引用,而每个扩展模块一般都会有自己特有的专用选项;这些选项中,有些是必备的;  

隐含扩展

 -p tcp

 --sport 指定源端口

 --dport 指定目标端口

 --tcp-flags 要检查的标志 必须为1标记

 --tcp-flags SYN,ACK,RST,FIN SYN 表示:tcp三次握手的第一次

  ALL:所有标志位

  NONE:没有标志位

       --tcp-flags ALL SYN,FIN非法报文

       --syn

练习:放行对web服务的访问:

    #iptables -A INPUT -d 172.16.100.1 -p tcp --dport 80 -j ACCEPT

    #iptables -A OUTPUT -s 172.16.100.1 -p tcp --sport 80 -j ACCEPT

因为报文在接收和发送时都要经过防火墙,所以我们需要设定INPUT和OUTPUT两个方面的访问控制

 --sport

 --dport

例如:本机DNS服务器,要为本地客户端做递归查询;iptables的INPUT, OUTPUT默认为DROP;本机地址:172.16.100.1

# iptables -A INPUT -d 172.16.100.1 -p udp --dport 53 -j ACCEPT

# iptables -A OUTPUT -s 172.16.100.1 -p udp --sport 53 -j ACCEPT

# iptables -A OUTPUT -s 172.16.100.1 -p udp --dport 53 -j ACCEPT

# iptables -A INPUT -d 172.16.100.1 -p udp --sport 53 -j ACCEPT

 -p icmp

 --icmp-type

请求:8

响应:0

例子:本机172.16.100.1,能ping 172.16.0.0/16中的所有主机;

显式扩展:

  -m state --state

NEW, ESTABLISHED, RELATED, INVALID

ftp服务需要装载:nf_conntrack_ftp模块,可以使用modprobe命令,也可编辑/etc/sysconfig/iptables-config文件实现。

 -m mulitport: 可以指定15个以内的离散端口;比如,21-23,80

 --source-ports    源端口

 --destination-ports 目标端口

 --ports

 -m iprange: 指定匹配的IP地址范围,如172.16.100.1-172.16.109.254

 -m iprange

    --src-range源ip地址

    --dst-range 目标ip地址

  -m limit

  --limit 20/min  限制每分钟最多允许请求的次数

  --limit-burst 2 搜集多少个令牌桶

  -m string

  --string ""  引号里面填写需要匹配的字符串

  --algo {bm|kmp}

  -m time

 --datestart

 --datestop

 --timestart

 --timestop

 --weekdays

 --monthdays

保存规则:

    #service iptables save

保存至/etc/sysconfig/iptables

    #iptables-save > /path/to/iptables.rules

生效规则文件中的规则:

    #iptables-restore < /path/to/ipables.rules

子命令:

链:-N, -X, -Z, -F, -P, -E

规则:-A, -I, -D, -R

练习:INPUT和OUTPUT默认策略为DROP;

1、限制本地主机的web服务器在周一不允许访问;新请求的速率不能超过100个每秒;web服务器包含了admin字符串的页面不允许访问;web服务器仅允许响应报文离开本机;

  # iptables -I INPUT 1 -m state --state ESTABLISHED -j ACCEPT

  # iptables -A INPUT -d 172.16.100.1 -p tcp --dport 80 -m time --weekdays Tue,Wed,Thu,Fri,Sat,Sun

-m limit --limit 100/sec -m string --algo kmp ! --string "admim" -m state --state NEW -j ACCEPT

其中对于周一不允许访问还可以表达为 -m time!--weekdays Mon

  # iptables -I OUTPUT 1 -m state --state ESTABLISHED -j ACCEPT

2、在工作时间,即周一到周五的8:30-18:00,开放本机的ftp服务给172.16.0.0网络中的主机访问;数据下载请求的次数每分钟不得超过5个;

  # iptables -A INPUT -s 172.16.0.0/16 -d 172.16.100.1 -p tcp --dport 21 -m time --weekdays Mon,Tue,Wed,Thu,Fri --timestart 08:30:00 --timestop 18:00:00 -j ACCEPT

  # iptables -A INPUT -s 172.16.0.0/16 -d 172.16.100.1 -p tcp -m state --state RELATED -m limit --limit 5/min -j ACCEPT

3、开放本机的ssh服务给172.16.x.1-172.16.x.100中的主机,x为你的座位号,新请求建立的速率一分钟不得超过2个;仅允许响应报文通过其服务端口离开本机;

  # iptables -A INPUT -m iprange --src-range 172.16.100.1-172.16.100.100 -m limit --limit 2/min -p tcp --dport 22 -d 172.16.100.1 -i eth0 -m state --state NEW -j ACCEPT

4、拒绝TCP标志位全部为1及全部为0的报文访问本机;

  # iptables -N clean_in

  # iptables -A clean_in -p tcp --tcp-flags ALL ALL -j DROP

  # iptables -A clean_in -p tcp --tcp-flags ALL NONE -j DROP

  # iptables -A clean_in -d 172.16.100.1 -j RETURN

  # iptables -I INPUT 1 -d 172.16.100.1 -j clean_in

5、允许本机ping别的主机;但不开放别的主机ping本机;

  # iptables -A OUTPUT -s 172.16.100.1 -p icmp --icmp-type 8 -j ACCEPT

  # iptables -A INPUT -i lo -j ACCEPT

  # iptables -A OUTPUT -o lo -j ACCEPT


名称栏目:iptables入门及基本命令使用
当前链接:http://hbruida.cn/article/jjpisd.html