iptables入门及基本命令使用

本文涉及的产品
公网NAT网关,每月750个小时 15CU
简介:

规则的功能:

       四个表

            filter

            nat

            mangle

            raw

      五个内置链:

            PREROUTING

            INPUT

            FORWARD

            OUTPUT

            POSTROUTING

规则的属性:

1、网络层协议属性:

                 ip

2、传输层协议属性:

                 tcp

                 udp

                 icmp

                 iptables

大写字母选项:子命令

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

                 -t {filter|nat|mangle|raw}

                 -L: list

                 -n: 数字格式显示IPPORT;

                 -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

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

 --sport

 --dport

例如:本机DNS服务器,要为本地客户端做递归查询;iptablesINPUT, 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-rangeip地址

    --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

练习:INPUTOUTPUT默认策略为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



本文转自 宋鹏超 51CTO博客,原文链接:http://blog.51cto.com/qidian510/1286686,如需转载请自行联系原作者

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
网络协议 Linux 网络安全
Linux系列——关于防火墙iptables的常用命令
Linux系列——关于防火墙iptables的常用命令
|
Linux 网络安全 开发工具
|
2月前
|
机器学习/深度学习 安全 网络协议
Linux防火墙iptables命令管理入门
本文介绍了关于Linux防火墙iptables命令管理入门的教程,涵盖了iptables的基本概念、语法格式、常用参数、基础查询操作以及链和规则管理等内容。
224 73
|
网络协议 算法 Linux
iptables 常用命令
使用 -t 选项指定了要操作的表,此处指定了操作 filter 表,与之前的查看命令一样,不使用-t 选项指定表时,默认为操作 filter 表。 使用-I 选项,指明将”规则”插入至哪个链中,-I 表示 insert,即插入的意思,所以-I INPUT 表示将规则插入于 INPUT 链中,即添加规则之意。 使用-s 选项,指明”匹配条件”中的”源地址”,即如果报文的源地址属于-s 对应的地址,那么报文则满足匹配条件,-s 为 source 之意,表示源地址。
|
网络协议 Ubuntu 安全
Linux 防火墙 iptables 初学者教程
iptables 是专为 Linux 操作系统打造的极其灵活的防火墙工具。对 Linux 极客玩家和系统管理员来说,iptables 非常有用。本文将向你展示如何配置最通用的 Linux 防火墙。
374 0
Linux 防火墙 iptables 初学者教程
|
网络协议 安全 开发者
iptables 命令使用 | 学习笔记
快速学习iptables 命令使用
iptables 命令使用 | 学习笔记
|
网络协议 Ubuntu 应用服务中间件
Linux防火墙常用命令
1. 通用命令: 查看防火墙版本 iptables -version 2. RHEL6 (1) 查看防火墙状态(如果得到一系列的信息, 说明防火墙处于开启状态) /etc/init.d/iptables status (2) 开启/关闭防火墙, 重启后生效 chkconfig iptables o...
|
Linux 网络安全
iptables简介1及常用命令
第一章:简述 iptables是一个用户态工具,用于操作linux内核部分的netfilter模块(包过滤),用来完成防火墙相关的工作。linux的netfilter工作于2层(开启bridge-nf时刻)和3层(ip层),可以对ip包,二层数据链路包进行操作;而市面上还有一种防火墙是应用层防火墙,可以对应用层包进行检查(过滤)。
1210 0
|
网络协议 Linux 网络安全