Netfilter/Iptables(以下简称Iptables)是unix/linux自带的一款优秀且开放源代码的完全自由的基于包过滤的防火墙工具,它的功能十分强大,使用非常灵活,可以对流入和流出服务器的数据包进行很精细的控制.特别是它可以在一台非常低的硬件配置服务器上跑的非常好。iptables是linux2.4及2.6内核中集成的服务,其功能与安全性比其老一蜚ipfwadm,ipchains 强大的多,iptables主要工作在0SI七层的二、三、四层,如果重新编译内核,iptables也可以支持 7 层控制(squid代理+iptables)。

四表五链:

表\链 INPUT FORWARD  OUTPUT  PREROUTING   POSTROUTING
Filter(过滤流入流出主机的数据包) × ×
NAT(负责网络地址转换,即来源与目的的ip地址和port的转换) × ×
Managle(主要负责修改数据包中特殊的路由标记,如TTL、TOS、MARK等)
raw(RAW表可以应用在那些不需要做nat的情况下,以提高性能。如大量访问的web服务器,可以让80端口不再让iptables做数据包的链接跟踪处理,以提高用户的访问速度) × × ×

说明: √表示对应的表有该链,× 表示无。

iptables工作流程小结

1、防火墙是一层层过滤的。实际是按照配置规则的顺序从上到下,从前到后进行过滤的。

2、如果匹配上了规则,即明确表明是阻止还是通过,此时数据包就不在向下匹配新规则了。

3、如果所有规则中没有明确表明是阻止还是通过这个数据包,也就是没有匹配上规则,向下进行匹配,直到匹配默认规则得到明确的阻止还是通过。

4、防火墙的默认规则是对应链的所有的规则执行完以后才会执行的(最后执行的规则)

iptables的优化配置原则

1、尽可能不给服务器配置外网ip ,可以通过代理转发或者通过防火墙映射.并发不是特别大情况有外网ip,可以开启防火墙服务;

2、大并发的情况,不能开iptables,影响性能,利用硬件防火墙提升架构安全。

一般用到的功能

1、NAT功能

  1)局域网上网共享(路由和网关),使用NAT的POSTROUTING链。

  2)外部IP和端口映射为内部IP和端口(DMZ功能),使用NAT的PREROUTING链

2、FILTER功能,即防火墙功能FILTER INPUT FORWARD

  主要应用就是主机服务器防火墙,使用FILTER的INPUT链

iptables参数说明

参数 参数说明
显示相关参数  
-n/--numeric 以数字的方式显示地址或端口信息
-L/ --list 列出一个链或所有链中的规则信息
--list-rules/-S Print the rules in a chain or all chains
--line-number 当列出规则信息时,打印规则行号
-v 显示详细信息,可以叠加
-h 显示帮助信息
初始化相关参数  
iptables -F 清除所有规则,不会处理默认的规则
iptables -X 删除用户自定义的链
iptables -Z 链的计数器清零(数据包计数器与数据包字节计数器)
配置常用参数  
-t 表名称 指定配置哪个表,指定配置表名称。
--append/-A 链名称 附加或追加上相应规则策略,到指定链(链名称必须大写),默认将配置的规则插入到最后一条。
--check/-C Check for the existence of a rule
--insert/-I 链名称 插入相应规则策略,到指定链上,默认将配置的规则插入到第一条(可以根据规则序号插入到指定位置)--封IP地址使用。
--delete/-D 链名称 删除指定的规则(可以根据规则序号进行删除)
--replace/-R Replace rule rulenum (1 = first) in chain
-P  接(大写)链名称 改变链上的最终默认规则策略
--new/-N 创建新的用户定义链
-p 协议名称 指定规则的协议名称 all tcp udp icmp
--dport 指定匹配的目标端口信息
--sport 指定匹配的源端口信息
-j 动作 匹配数据包后的动作
ACCEPT 允许
DROP 丢弃(没有响应)
REJECT 拒绝(回应请求者明确的拒绝)
MASQUERADE 伪装上网时使用
SNAT 共享地址上网
DNAT 目的地址改写
-i    [!] --in-interface 在INPUT链配置规则中,指定从哪一个网卡接口进入的流量(只能配置在INPUT链上)
-o   [!] --out-interface 在OUTPUT链配置规则中,指定从哪一个网接口出去的流量(只能配置在OUTPUT链上)
-s   [!] --source 指定源IP地址或源网段信息
-d   [!] --destination 指定目标IP地址或目标网段信息
扩展参数  
-m 模块 表示增加扩展,匹配功能扩展匹配(可以加载扩展参数)
multiport 实现不连续多端口扩展匹配
icmp 使用icmp的扩展
state 状态模块扩展
--icmp-type 只有类型8是真正会影响ping,或者也可以采用any;了解很多icmp类型iptables -p icmp -h
--limit n/{second/minute/hour} 指定时间内的请求速率”n”为速率,后面为时间分别为:秒分 时
--limit-burst [n] 在同一时间内允许通过的请求”n”为数字,不指定默认为5
--exact/-x 扩展数字(显示精确数值)

配置实例一:配置22/ssh端口访问控制规则

iptables -A INPUT -p tcp --dport 22 -j DROP     # 禁止所有人访问22端口
iptables -I INPUT -p tcp --dport 22 -j ACCEPT   # 恢复连接方法
iptables -I INPUT 2 -p tcp --dport 22 -j ACCEPT # 通过插入指定行号信息,指定将规则插入到第几行
iptables -D INPUT -p tcp --dport 22 -j ACCEPT   # 删除指定规则
iptables -D INPUT 2                             # 根据规则行号,删除相应的规则

只允许10.0.0.1的ip通过ssh连接这台服务器

iptables -I INPUT -s 10.0.0.1 -p tcp --dport 22 -j ACCEPT 

配置实例二:禁止网段连入(禁止172.16.1.0网段访问172.16.1.188)

iptables -A INPUT  -s 172.16.1.0/24 -d 172.16.1.188  -j DROP

配置实例三:禁止某个172.16.1.0网段访问服务器主机的22端口

iptables -A INPUT -s 172.16.1.0/24 -d 172.16.1.188  -p tcp --dport 22 -j DROP

配置实例四:除10.0.0.0网段可以进行连接服务器主机意外,其余网段都禁止

iptables -A INPUT -s 10.0.0.0/24 -d 172.16.1.8  -j ACCEPT

配置实例五:测试匹配列举端口范围

iptables -A INPUT -p tcp --dport 22:80 -j DROP # 设置连续多端口控制策略
iptables -A INPUT -p tcp -m multiport --dport 22,80 -j DROP # 设置不连续多端口控制策略

配置实例六:匹配ICMP类型

指定类型禁止icmp

iptables -A INPUT -p icmp --icmp-type 8
iptables -A INPUT -p icmp --icmp-type 8 -j DROP
iptables -A INPUT -p icmp -m icmp --icmp-type any -j ACCEPT
iptables -A FORWARD -s 192.168.1.0/24 -p icmp -m icmp --icmp-type any -j ACCEPT 

说明:只有类型8是真正会影响ping,或者也可以采用any;了解很多icmp类型iptables -p icmp -h

防火墙之iptables的更多相关文章

  1. Linux防火墙配置(iptables, firewalld)

    netfilter和底层实现 iptables firealld Linux中的防火墙 RHEL中有几种防火墙共存: iptables firewalld ip6tables ebtables 这些软 ...

  2. Linux防火墙:iptables禁IP与解封IP常用命令

    在Linux服务器被攻击的时候,有的时候会有几个主力IP.如果能拒绝掉这几个IP的攻击的话,会大大减轻服务器的压力,说不定服务器就能恢复正常了. 在Linux下封停IP,有封杀网段和封杀单个IP两种形 ...

  3. 实用防火墙(Iptables)脚本分析

    实用防火墙(Iptables)脚本分析 --Redhat,CentOS,Ubuntu等常见Linux发行版中都会预装Iptables防火墙,大多数初学者设置起来由于对这款软件比较陌生,设置起来比较困难 ...

  4. linux防火墙相关 iptables

    1. root用户查看防火墙状态(非root用户无权限查看) 查看防火墙状态: service iptables status 2.开启和关闭防火墙 //开启防火墙: service iptables ...

  5. 企业防火墙之iptables

    1.1 企业中安全优化配置原则 尽可能不给服务器配置外网ip ,可以通过代理转发或者通过防火墙映射.并发不是特别大情况有外网ip,可以开启防火墙服务. 大并发的情况,不能开iptables,影响性能, ...

  6. Linux防火墙简介 – iptables配置策略

    Linux防火墙简介 – iptables配置策略 Netfilter/iptables简介 要想真正掌握Linux防火墙体系,首先要搞清楚Netfilter和iptables的关系,Netfilte ...

  7. linux防火墙之iptables

    linux防火墙之iptables 1.1.1 关于iptables简介 IPTABLES 是与最新的 3.5 版本 Linux 内核集成的 IP 信息包过滤系统.如果 Linux 系统连接到因特网或 ...

  8. Linux防火墙(iptables/firewalld)

    Linux防火墙(iptables/firewalld) 目录 Linux防火墙(iptables/firewalld) 一.iptables 1. iptables概述 2. netfilter和i ...

  9. Linux学习之八--关闭firewall防火墙安装iptables并配置

    CentOS 7之后默认使用的是firewall作为防火墙,这里改为iptables防火墙,并开启80端口.3306端口. 1.关闭firewall: systemctl stop firewalld ...

  10. Centos7 关闭防火墙(Firewalld ),使用防火墙(iptables)

    1.直接关闭防火墙 systemctl stop firewalld.service: #停止firewall systemctl disable firewalld.service: #禁止fire ...

随机推荐

  1. Web界面开发必看!Kendo UI for jQuery编辑功能指南第二弹

    Kendo UI for jQuery最新试用版下载 Kendo UI目前最新提供Kendo UI for jQuery.Kendo UI for Angular.Kendo UI Support f ...

  2. VUE-文本-事件-属性指令

    一.Vue文本指令 文本指令: 1.{{ }} 2.v-text:不能解析html语法的文本,会原样输出 3.v-html:能解析html语法的文本 4.v-once:处理的标签的内容只能被解析一次 ...

  3. guava的一些用法

    package guavaTest; import com.google.common.base.CharMatcher; import com.google.common.base.Joiner; ...

  4. 小程序上传base64的图片,可上传多张

    微信小程序上传图片转化为base64格式 clickimage: function(e) { var index = e.currentTarget.dataset.index; var count ...

  5. 分析 JUnit 框架源代码

    本文转载至http://www.ibm.com/developerworks/cn/java/j-lo-junit-src/ 分析 JUnit 框架源代码 理解 JUnit 测试框架实现原理和设计模式 ...

  6. [HNOI2008][bzoj 1005]明明的烦恼(prufer序列)

    1005: [HNOI2008]明明的烦恼 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 7121  Solved: 2816[Submit][Stat ...

  7. TCP被动打开 之 第一次握手-接收SYN

    假定客户端执行主动打开,服务器执行被动打开,客户端发送syn包到服务器,服务器接收该包,进行建立连接请求的相关处理,即第一次握手:本文主要分析第一次握手中被动打开端的处理流程,主动打开端的处理请查阅本 ...

  8. LeetCode 21. 合并两个有序链表(Merge Two Sorted Lists)

    题目描述 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1->2->4, 1->3->4 输出:1->1-& ...

  9. python 装饰器 (test = submit(test))

    两层的装饰器,这里对于register不需要进行输入 usename, passwd = 'alex', 'abc123' def register(func): def wrapper(*args, ...

  10. Struts2常量_Action配置路径_通配符

    Struts2中常用的常量 指定默认编码集,作用于HttpServletRequest的setCharacterEncoding方法 和freemarker .velocity的输出 <cons ...