iptables 基本命令使用举例

一、链的基本操作

1、清除所有的规则。
1)清除预设表filter中所有规则链中的规则。
# iptables -F

-F, --flush [chain]Flush the selected chain (all the chains in the table if none is given).  This is equivalent to deleting all  the  rules  one by one.

2)清除预设表filter中使用者自定链中的规则。

#iptables -X

-X 是删除使用者自订 table 项目,一般使用 iptables -N xxx 新增自订 chain 后,可以使用 iptables -X xxx 删除之。

-X, --delete-chain [chain]Delete the optional user-defined chain specified.  There must be no  references  to  the chain.  If there are, you must delete or replace the referring rules before the chain can be deleted.  If no  argument  is  given,  it  will  attempt to delete every nonbuiltin chain in the table.

2、设置链的默认策略。一般有两种方法。
1)首先允许所有的包,然后再禁止有危险的包通过放火墙。
#iptables -P INPUT ACCEPT
#iptables -P OUTPUT ACCEPT
#iptables -P FORWARD ACCEPT
2)首先禁止所有的包,然后根据需要的服务允许特定的包通过防火墙。
#iptables -P INPUT DROP
#iptables -P OUTPUT DROP
#iptables -P FORWARD DROP
3、列出表/链中的所有规则。默认只列出filter表。
#iptables -L
4、向链中添加规则。下面的语句用于开放网络接口:
#iptables -A INPUT -i lo -j ACCEPT
#iptables -A OUTPUT -o lo -j ACCEPT
#iptables -A INPUT -i eth0 -j ACEPT
#iptables -A OUTPUT -o eth1 -j ACCEPT
#iptables -A FORWARD -i eth1 -j ACCEPT
#iptables -A FORWARD -0 eth1 -j ACCEPT
注意:由于本地进程不会经过FORWARD链,因此回环接口lo只在INPUT和OUTPUT两个链上作用。
5、使用者自定义链。
#iptables -N custom
#iptables -A custom -s 0/0 -d 0/0 -p icmp -j DROP
#iptables -A INPUT -s 0/0 -d 0/0 -j DROP
二、设置基本的规则匹配
1、指定协议匹配。
1)匹配指定协议。
#iptables -A INPUT -p tcp
2)匹配指定协议之外的所有协议。
#iptables -A INPUT -p !tcp
2、指定地址匹配。
1)指定匹配的主机。
#iptables -A INPUT -s 192.168.0.18
2)指定匹配的网络。
#iptables -A INPUT -s 192.168.2.0/24
3)匹配指定主机之外的地址。
#iptables -A FORWARD -s !192.168.0.19
4)匹配指定网络之外的网络。
#iptables -A FORWARD -s ! 192.168.3.0/24
3、指定网络接口匹配。
1)指定单一的网络接口匹配。
#iptables -A INPUT -i eth0
#iptables -A FORWARD -o eth0
2)指定同类型的网络接口匹配。
#iptables -A FORWARD -o ppp+
4、指定端口匹配。
1)指定单一端口匹配。
#iptables -A INPUT -p tcp --sport www
#iptables -A INPUT -p udp –dport 53
2)匹配指定端口之外的端口。
#iptables -A INPUT -p tcp –dport !22
3)匹配端口范围。
#iptables -A INPUT -p tcp –sport 22:80
4)匹配ICMP端口和ICMP类型。
#iptables -A INOUT -p icmp –icimp-type 8
5)指定ip碎片。

个网络接口都有一个MTU(最大传输单元),这个参数定义了可以通过的数据包的最大尺寸。如果一个数据包大于这个参数值时,系统会将其划分成更小的数据包
(称为ip碎片)来传输,而接受方则对这些ip碎片再进行重组以还原整个包。这样会导致一个问题:当系统将大数据包划分成ip碎片传输时,第一个碎片含有
完整的包头信息(IP+TCP、UDP和ICMP),但是后续的碎片只有包头的部分信息(如源地址、目的地址)。因此,检查后面的ip碎片的头部(象有
TCP、UDP和ICMP一样)是不可能的。假如有这样的一条规则:
#iptables -A FORWARD -p tcp -s 192.168.1.0/24 -d 192.168.2.100 –dport 80 -j ACCEPT
并且这时的FORWARD的policy为DROP时,系统只会让第一个ip碎片通过,而余下的碎片因为包头信息不完整而无法通过。可以通过—fragment/-f 选项来指定第二个及以后的ip碎片解决上述问题。
#iptables -A FORWARD -f -s 192.168.1.0/24 -d 192.168.2.100 -j ACCEPT
注意现在有许多进行ip碎片攻击的实例,如DoS攻击,因此允许ip碎片通过是有安全隐患的,对于这一点可以采用iptables的匹配扩展来进行限制。
三、设置扩展的规则匹配(举例已忽略目标动作)
1、多端口匹配。
1)匹配多个源端口。
#iptables -A INPUT -p tcp -m multiport –sport 22,53,80,110
2)匹配多个目的端口。
#iptables -A INPUT -p tcp -m multiport –dpoort 22,53,80
3)匹配多端口(无论是源端口还是目的端口)
#iptables -A INPUT -p tcp -m multiport –port 22,53,80,110
2、指定TCP匹配扩展
使用 –tcp-flags 选项可以根据tcp包的标志位进行过滤。
#iptables -A INPUT -p tcp –tcp-flags SYN,FIN,ACK SYN
#iptables -A FROWARD -p tcp –tcp-flags ALL SYN,ACK
上实例中第一个表示SYN、ACK、FIN的标志都检查,但是只有SYN匹配。第二个表示ALL(SYN,ACK,FIN,RST,URG,PSH)的标志都检查,但是只有设置了SYN和ACK的匹配。
#iptables -A FORWARD -p tcp --syn
选项—syn相当于”--tcp-flags SYN,RST,ACK SYN”的简写。
3、limit速率匹配扩展。
1)指定单位时间内允许通过的数据包个数,单位时间可以是/second、/minute、/hour、/day或使用第一个子母。
#iptables -A INPUT -m limit --limit 300/hour
2 )指定触发事件的阀值。
#iptables -A INPUT -m limit –limit-burst 10 
用来比对一次同时涌入的封包是否超过10个,超过此上限的包将直接丢弃。
3)同时指定速率限制和触发阀值。
#iptables -A INPUT -p icmp -m limit –-limit 3/m –limit-burst 3
表示每分钟允许的最大包数量为限制速率(本例为3)加上当前的触发阀值burst数。任何情况下,都可保证3个数据包通过,触发阀值burst相当于允许额外的包数量。 
4)基于状态的匹配扩展(连接跟踪)
每个网络连接包括以下信息:源地址、目标地址、源端口、目的端口,称为套接字对(socket pairs);协议类型、连接状态(TCP协议)
和超时时间等。防火墙把这些信息称为状态(stateful)。状态包过滤防火墙能在内存中维护一个跟踪状态的表,比简单包过滤防火墙具有更大的安全性,命令格式如下: 
iptables -m state –-state [!]state [,state,state,state]
其中,state表是一个逗号分割的列表,用来指定连接状态,4种:
>NEW: 该包想要开始一个新的连接(重新连接或连接重定向)
>RELATED:该包是属于某个已经建立的连接所建立的新连接。举例:
FTP的数据传输连接和控制连接之间就是RELATED关系。
>ESTABLISHED:该包属于某个已经建立的连接。
>INVALID:该包不匹配于任何连接,通常这些包被DROP。
例如:
(1)在INPUT链添加一条规则,匹配已经建立的连接或由已经建立的连接所建立的新连接。即匹配所有的TCP回应包。
#iptables -A INPUT -m state –state RELATED,ESTABLISHED
(2)在INPUT链链添加一条规则,匹配所有从非eth0接口来的连接请求包。
#iptables -A INPUT -m state -–state NEW -i !eth0
又如,对于ftp连接可以使用下面的连接跟踪:
(1)被动(Passive)ftp连接模式。
#iptables -A INPUT -p tcp --sport 1024: --dport 1024: -m state –-state ESTABLISHED -j ACCEPT
#iptables -A OUTPUT -p tcp --sport 1024: --dport 1024: -m 
state -–state ESTABLISHED,RELATED -j ACCEPT
(2)主动(Active)ftp连接模式
#iptables -A INNPUT -p tcp --sport 20 -m state –-state ESTABLISHED,RELATED -j ACCEPT
#iptables -A OUTPUT -p tcp –OUTPUT -p tcp –dport 20 -m state --state ESTABLISHED -j ACCEPT

转载于:https://www.cnblogs.com/lilidun/p/5547829.html

iptables (2) 基本配置相关推荐

  1. linux——Firewalld与iptables的基本配置

    Firewalld Firewalld概述 动态防火墙后台程序 firewalld 提供了一个动态管理的防火墙,用以支持网络 " zones" ,以分配对一个网络及其相关链接和界面 ...

  2. linux web服务器,防火墙iptables最简配置

    配置防火墙(服务器安全优化) 安全规划:开启 80  22 端口并 打开回路(回环地址 127.0.0.1) # iptables –P INPUT ACCEPT # iptables –P OUTP ...

  3. iptables白名单配置

    白名单配置总结 1.        操作系统 [root@localhost ~]# uname -r 2.6.32-279.el6.x86_64 [root@localhost ~]# cat /e ...

  4. Linux笔记-ftp主动和被动模式下iptables的规则配置

    服务端准备 首先安装vsftpd: yum -y install vsftpd 启动服务: systemctl start vsftpd.service 配置文件目录在:/etc/vsftpd/vsf ...

  5. iptables 限制ip配置

    介绍 很多时候我们都叫他防火墙但是其实iptables不算是真正的防火墙,我们其实可以把它理解为一个客户端代理,用户通过iptables这个代理,将用户的安全设定执行到对应的安全框架中,而这个安全框架 ...

  6. iptables+ipset安装配置完全指南

    系统版本:CentOS 6.9 64位 ipset版本:ipset-7.3 1.下载ipset最新版本 ipset官网:http://ipset.netfilter.org/install.html ...

  7. linux 5 防火墙,CentOS 5 Linux iptables防火墙的配置

    设置防火墙对于你的Linux服务器来说非常重要.但是默认情况下CentOS的设置通常不能满足我们的需要.你可以通过如下步骤简单设置iptables防火墙: 首先要禁用掉SELinux,通常来说SELi ...

  8. iptables配置-Linux系统安全防火墙

    iptables是用来设置.维护和检查Linux内核的IP分组过滤规则的.作为Linux下的一款防火墙,它的功能十分强大,它有3个表,每个表内有规则链. iptables是用来设置.维护和检查Linu ...

  9. 9个常用iptables配置实例

    2019独角兽企业重金招聘Python工程师标准>>> iptables命令可用于配置Linux的包过滤规则,常用于实现防火墙.NAT.咋一看iptables的配置很复杂,掌握规律后 ...

最新文章

  1. “智慧城市”背后的安全隐患
  2. python适合做后端开发吗-用Python做后台开发,看这一篇就够了
  3. ecshop goods.php,重命名ecshop的商品页goods.php为shangpin.php
  4. winsw将命令部署为服务(比如springboot)
  5. 1 分钟记住 docker 镜像和容器常用基本命令
  6. node ajax validator,node/express 4:在ajax post上使用express-validator显示错误
  7. 执行计划有时不准确_生产计划四个层次和解决方案
  8. Android重力感应示例
  9. 微信小程序生成海报分享:canvas绘制文字溢出如何换行
  10. python2和python3(导包)自定义包并导入之
  11. Java集合类源码分析汇总
  12. 【黑盒测试用例设计方法5】正交试验法及其示例
  13. Python和MD5网站挂马检测程序
  14. 石油大学计算机课程,2018年石油高校计算机类课程MOOC共建研讨会在我校召开
  15. 春林文件批量改名系统
  16. 2020-05-13
  17. 计算机上画正比例函数,信息技术应用 用计算机画函数图象教案1
  18. 移植华为LiteOS
  19. 一个球从100m高度自由落下,每次落地后反跳回原高度的一半,再落下,再反弹。求它在第10次落地时,共经过多少米,第10次反弹多高
  20. 新人成长:新人在前端团队如何快速成长为技术骨干

热门文章

  1. 定义DO/DTO/VO等POJO类时,不要设定任何属性默认值
  2. 分布式事务Seata中的三个角色
  3. docker镜像和容器区别
  4. 电脑操作系统维护10条实用建议!
  5. 收集Java 性能优化的44个建议
  6. C# 操作IIS服务器Demo
  7. java float f1=0.5_Java Math类静态float copySign(float f1,float f2)与示例
  8. python框架django的使用_Django框架的基本使用,若依框架
  9. 嵌入式C语言基础链表
  10. 祖父元素_帮助祖父母建立Skype帐户的UX经验教训