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. 修改mysql5.7数据表字符集编码的命令

    查看表中字符集的命令 show variables like '%char%' 更改数据库中数据表的字符集靠谱命令,亲测可行,在workbench和phpmyadmin上都通过 alter table ...

  2. Python字符串拼接的五种方式

    第一种 通过加号(+)的形式 print('第一种方式通过加号形式连接 :' + 'love'+'Python' + '\n') 第二种 通过逗号(,)的形式 print('第二种方式通过逗号形式连接 ...

  3. Laravel进行数据库迁移(migration)

    迁移(migration) 文档的简介是:迁移就像数据库的版本控制,允许团队简单轻松的编辑并共享应用的数据库表结构,迁移通常和 Laravel 的结构构建器结对从而可以很容易地构建应用的数据库表结构. ...

  4. Spark配置详解

    Spark提供三个位置用来配置系统: Spark属性:控制大部分的应用程序参数,可以用SparkConf对象或者Java系统属性设置 环境变量:可以通过每个节点的 conf/spark-env.sh脚 ...

  5. 【Winform-自定义控件】ImageButton 支持鼠标正常、悬停、按下更改图片,支持文本

    原文地址:https://www.codeproject.com/Articles/29010/WinForm-ImageButton 自定义winfrom图片按钮:支持鼠标正常.悬停.按下更改图片, ...

  6. [Python之路] 多种方式实现并发Web Server

    下面我们使用Python来实现并发的Web Server,其中采用了多进程.多线程.协程.单进程单线程非阻塞的方式. 一.使用子进程来实现并发Web Server 参照 https://www.cnb ...

  7. 归类常用控件GroupBox、TabControl、Expander

    <StackPanel Orientation="Horizontal"> <GroupBox Header="颜色" Margin=&quo ...

  8. jpa单向一对多

    单向一对多是一个类中的一条记录可对应另一个类的多条记录: 比如一个部门可对应多个员工:   jpa中的实现步骤:     one-to-many的one类中添加一个many类类型的set;比如部门类D ...

  9. java多线程批量下载文件

    多线程下载文件 平时开发中有时会用到文件下载,为了提高文件的下载速率,采用多线程下载能够达到事半功倍的效果: package test; /** * 文件下载类 * @author luweichen ...

  10. BZOJ 1441: Min exgcd

    根据 $exgcd$ 的定理,这种方程的最小解就是 $gcd$. Code: #include <cstdio> #include <algorithm> using name ...