目录

  • 目录
  • Iptables
  • Iptables结构
    • 规则表
    • 规则链
  • iptables指令用法详解
    • 综合案例
    • SNAT 策略
    • DNAT 策略
    • Iptables规则的备份和还原
    • iptables 练习

Iptables

iptables(Linux package filter firewall (network layer))是Linux内核集成的IP信息包过滤系统,该系统有利于在Linux系统上更好地控制IP信息包过滤和防火墙配置。防火墙在做信息包过滤决定时,有一套规则,这些规则存储在专用的信息包过滤表中,而这些表集成在Linux内核中。在信息包过滤表中,规则被分组放在我们所谓的链(chain)中。而netfilter/iptables IP信息包过滤系统是一款功能强大的工具,可用于添加、编辑和移除规则。虽然netfilter/iptables IP信息包过滤系统被称为单个实体,但它实际上由两个组件netfilter和iptables组成。
netfilter组件:也称为内核空间(kernelspace),是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。
iptables 组件:是一种工具,也称为用户空间(userspace),它使插入、修改和除去信息包过滤表中的规则变得容易。除非您正在使用Red Hat Linux 7.1或更高版本,否则需要下载该工具并安装使用它。

Iptables结构

表内有若干条链,链内有若干条规则。

规则表

表的作用:容纳各种规则链
表的划分依据:防火墙规则的作用
4个规则表:
nat表:修改数据包中的源、目标IP地址或端口(网络地址转换)
filter表:确定是否修改数据包(过滤)解决放同行的数据包
raw表:确定是否对该数据包进行状态跟踪
mangle表:为数据包设置标记
表内访问链的顺序:
nat表:PREROUTING->POSTROUTING->OUTPUT
filter表:INPUT->FORWARD->OUTPUT

规则链

规则的作用:对数据包进行处理和过滤
链的作用:容纳各种防火墙规则
5种规则链:
INPUT:处理入站数据包
output:处理出战数据包
FORWARD(forward转发):处理转发数据包
POSTROUTING(post routing路由选择后):在进行路由选择后处理数据包 post 之后
PREROUTING(pre routing路由选择前):在进行路由选择钱处理数据包 pre 之前
Attention:数据包处理流程
数据包入站:
nat:PREROUTING->路由选择->filter:INPUT->本地应用程序
数据包转发:
nat: PREROUTING->路由选择->filter:FORWARD->nat:POSTROUTING->转发走
数据包出站:
nat: 本地应用程序->路由选择->filter:OUTPUT->nat:POSTROUTING->出站
iptables command use:

iptables指令用法详解

iptables [-t tableName] 选项 [链名] [条件] [-j 控制类型]
#example:
iptables -t filter -I INPUT -p icmp -j REJECT  #reject ping protocols.

注意
a. 不指定表,默认是filter表
b. 不指定链名,默认是指表的所有链
c. 除非设置了链的默认策略,否则必须指定匹配条件
常见的控制类型: -j
1. ACCEPT:允许通过
2. DROP:直接丢弃,不给予回应
3. REJECT:拒绝通过,给予回应
4. LOG:记录日志的信息
选项:

        -A add 在链的末尾追加新的规则
        -I insert 在链的开头插入规则
        -L list 列出所有的规则条目
        -n number 以数字的形式显示地址、端口的信息
        --line-number 序号

查看iptables规则一般使用:

iptables -nvL-D 删除链内指定序号的一条规则
        -F 清空一个表的多有规则
        -X 删除自定义链规则
        -p 指定链设置默认规则DROP or ACCEPT

条件匹配:

        -P protocol 协议名
        -s source 源IP
        -d destination 目的IP
        -i input 入站网卡
        -o output 出站网卡
        --sport source port 源端口
        --dport destination port 目的端口
        --tcp-flags TCP标记
        --icmp-type ICMP 类型
            8:请求0:回应3:不可达
#example:
iptables -A FORWARD -s 192.168.4.0/24 -p udp -dport 52 -j ACCEPT --icmp-type 8-m multiport --sports 源端口列表
        -m multiport --dports 目的端口列表
        -m iprange --src-range
        -m state --start ESTANLISHED,RELATED

综合案例

iptables -I INPUT -s 172.16.1.2 -d -i eth2 -p icmp --icmp-type 8 -j DROP
iptables -P FORWARD DROP --> FORWARD table default rule is DROP.
iptables -I FORWARD -s 172.16.1.0/24 -p tcp -m multiport --dport 21,25,80 -j ACCEPT
iptables -I FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT         #established已经确定的,related相关的 有关的链接参数

Load Module:

modprobe ip_conntrack_ftp  #FTP为需要2个端口的特殊的模块,所以需要加载模块
lsmod | grep ip    #查看模块

SNAT 策略

Source Network Transform:私网内主机IP都共享一个公网IP,实现私网内主机使用同一个公网IP上网。
Attention:一定是路由转发后转换IP,且只有一个 -O(出站网卡)
数据包出站:
nat: 本地应用程序->路由选择->filter:OUTPUT->nat:POSTROUTING->出站
Example:

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 218.29.30.31(防火墙公网IP)
iptables -t nat -I POSTROUTING -s 192.168.8.0/24 -p tcp -m multiport --dport 80.21.25 -j SNAT -to 172.16.1.1

外网地址非固定时的共享动态IP地址上网
MASQUERADE –> 地址伪装 –> 拨号

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE

DNAT 策略

Destination Network Transform:将使用私网IP的服务器发布到公网上,使得公网上的主机可以访问此服务器
原理:目标地址转换

iptables -t nat -A PREROUTING -i eth0 -d 218.29.30.31 -p tcp -dport 80 -j DNAT -to -destination 192.168.1.6

目标地址转换

iptables -t nat -I PREROUTING -d 172.16.1.1 -p tcp -m multiport --dport 21,22,80 -j DNAT --to-destination 192.168.8.171#一条DNAT规则只能指定一个服务器
iptables -I FROWARD -d 192.168.8.171 -p tcp -m multiport --dport 21,25,80 -j Accept

转换目标端口

iptables -t nat -I PREROUTING -d 172.16.1.1 -p tcp --dport 2222 -j DNAT --to 192.128.8.171:22
iptables -I FORWARD -d 192.168.8.171 -p tcp --dport 22 -j Accept
#Test:
ssh root@172.16.1.1 -p 2222 #在生产环境中,一般先SSH到Iptables Server,然后在从Server SSH 到目标主机中。

Iptables规则的备份和还原

导出规则:

iptables-save > /opt/iptables_all.txt  #iptables-save用来把当前的规则存入一个文件里以备iptables-restore使用

备份:

service iptables save

还原:

iptables_all.txt > /etc/sysconfig/iptables
#or
iptables-restore  << /opt/iptables_all.txt

iptables 练习

将filter table 中的INPUT 链的默认规则设为DROP

iptables -P OUTPUT DROP

iptables server可以ping到任何人,任何人不可以ping到iptables server

iptables -A OUTPUT -s 10.10.10.1 -o eth1 -p icmp --icmp-type 8 -j ACCEPT
iptables -A INPUT -d 10.10.10.1 -i eth1 -p icmp --icmp-type 0 -j ACCEPT
#or
iptables -A OUTPUT -s 192.168.100.1 -o eth0 -p icmp --icmp-type 8 -j ACCEPT
iptables -A INPUT -d 192.168.100.1 -i eth0 -p icmp --icp-type 0 -j ACCEPT

HOST2可以通过防火墙访问HOST1的各种服务,HOST2的DNS要指向HOST1
SNAT 私网IPHOST可以访问公网IPHOST,转换源IP地址

iptables -A FORWARD -s 192.168.100.0/24 -p tcp -m multiport --dports 80,25,21 -j ACCEPT
iptables -A FORWARD -s 192.168.100.0/24 -p udp --dport 53 -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -p tcp -m multiport --dport 80,25,21 -o eth1 -j SNAT --to 10.10.10.1
iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -p udp --dport 53 -o eth1 -j SNAT --to 10.10.10.1
iptables -A FORWARD -m state --state RELATED,ESTABLISHED    # 设定FORWARD链的全局状态为:自动匹配数据包的状态,可以无须关心包回来的方法
modprobe ip_conntrcak_ftp   #加载ftp模块, iptables 自身不带有
modprobe ip_nat_ftp

用iptables防火墙发布于内网的HOST2上的各种服务,是HOST1可以通过域名访问HOST2上的各种服务
DNAT 将私网中的服务器发布出去,让公网上的HOST可以访问,转换公网IP 主机的目的地址。

iptables -t nat -A PREROUTING -d 10.10.10.1 -i eth1 -p tcp -m multiport --dports 80,25,21 -j DNAT --to 192.168.100.2
iptables -t nat -A PREROUTING -d 10.10.10.1 -i eth1 -p udp --dport 53 -j DNAT --to 192.168.100.2
iptables -A FORWARD -d 192.168.100.2 -i eth1 -p tcp -m multiport --dport 80,25,21 -j ACCEPT
iptables -A FORWARD -d 192.168.100.2 -i eth1 -p udp --dport 53 -j ACCEPPT

HOST1访问远程管防火墙

iptables -A INPUT -d 10.10.10.1 -i eth1 -p tcp --dport 22 -j ACCEPT
iptables --A OUTPUT -S 10.10.10.1 -P TCP ---SPORT 22 -j ACCEPT

当HOST1访问iptables外网的2222端口时,会转发到HOST2的主机中(DNAT的端口转发)

iptables -t nat -A PREPOUTONG -d 10.10.10.1 -i eth1 -p dport 2222 -j DNAT --to 192.168.100.2:22
iptablws -A FORWARD -d 192.168.100.2 -i eth0 -p dport 22 -j ACCEPT

Linux_IPtables防火墙详解相关推荐

  1. iptable 详解_最全的iptables防火墙详解.pdf

    最全的iptables防火墙详解 iptables / iptables / iippttaabblleess官方网站:hhttttpp::nneettffiilltteerr..oorrgg// • ...

  2. linux防火墙ddos,Linux iptables防火墙详解 + 配置抗DDOS***策略实战

    Linux iptables防火墙详解 + 配置抗DDOS***策略实战 Linux 内核中很早就实现了网络防火墙功能,在不同的Linux内核版本中,使用了不同的软件实现防火墙功能. 在2.0内核中, ...

  3. iptables防火墙详解及使用layer7阻止qq,酷狗,等P2P软件

    iptables防火墙详解及使用layer7阻止qq,酷狗,等P2P软件   防火墙其实就是一个加固主机或者网络安全的一个设备或者软件而已,通过防火墙可以隔离风险区域与安全区域的连接,同时不会妨碍风险 ...

  4. iptables防火墙详解

    iptables详解 2012-07-18 20:10:08 分类: LINUX 一:前言 防火墙,其实说白了讲,就是用于实现Linux下访问控制的功能的,它分为硬件的或者软件的防火墙两种.无论是在哪 ...

  5. linux防火墙端口配置策略路由,Linux iptables防火墙详解 + 配置抗DDOS攻击策略实战...

    Linux 内核中很早就实现了网络防火墙功能,在不同的Linux内核版本中,使用了不同的软件实现防火墙功能. 在2.0内核中,防火墙操作工具叫:ipfwadm 在2.2内核中,防火墙操作工具叫:ipc ...

  6. Firewalld 防火墙详解

    文章目录 1. firewalld 是什么 2. 什么是动态防火墙 3. firewalld 和 iptables 之间的关系 4. firewalld 区域 4.1 firewalld 区域的概念 ...

  7. waf应用防火墙详解

    通过nginx配置文件抵御攻击 0x00 前言 Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行.其特点是占有内存少,并 ...

  8. Linux防火墙详解(二)

    1 2 3 4 5 6 一.iptables命令基本语法 二.iptables语法进阶 三.iptables显示扩展 四.iptables简单案例 五.iptables之forward 六.iptab ...

  9. Android底层网络防火墙,详解Android 利用Iptables实现网络黑白名单(防火墙)

    一.概述 为了使读此简笔的人对Iptables有一个简单的了解,此处强行百度了一波概念,如果想深入的了解Iptables的各种配置规则和内核对其的管理运行机制请自行www.baidu.com,这些并不 ...

最新文章

  1. 代码体积减少80%!Taro H5转换与优化升级
  2. spring in action 4 线路图
  3. 关于百度分享——bdCustomStyle一点bug
  4. 单页面抓图并且保存的爬虫
  5. 自动化监控--zabbix中的邮件报警通知详解
  6. Winform中实现双击Dev的TreeList在ZedGraph中生成对应颜色的曲线
  7. 你们也只剩下点赞的交情
  8. 控制台出现Failed to bind properties under ‘spring.datasource‘ to javax.sql.DataSource
  9. 《大数据》第一届编委会顾问委员会议圆满召开
  10. mysql添加序列触发器_在Oracle中创建自增序列之触发器
  11. 计算机网络谢希仁第七版课后答案完整版
  12. 筑梦前行 向新而生 华云数据西北区域公司正式乔迁
  13. 武装到牙齿的Android重度依赖者
  14. 全自动棉纱缠绕机行业调研报告 - 市场现状分析与发展前景预测
  15. 如何进行APP界面设计
  16. emacs 中文设置与输入法安装
  17. delta和gamma中性_在期权交易中,Delta、Gamma、Theta、Vega都是什么?
  18. 象棋参谋 v1.1 免费版 官网
  19. incident用法_(高频词汇)accident&incident用法综述
  20. 汽车悬挂系统的现代控制分析(现代控制理论课程小论文)

热门文章

  1. 改写URL的查询字符串QUERY_STRING(转)
  2. php 面向对象开发 类的学习 一
  3. 艾伟_转载:.NET 4.0中数组的新增功能
  4. LR中的吞吐量与响应时间
  5. 如何定义研发KPI:以团队速度为标准
  6. UI Automation的两个成熟的框架(QTP 和Selenium)
  7. NK3C框架(MyBatis、Durid)连接SQL Server
  8. 初始 DQN 程序 所遇到的问题
  9. android 中处理崩溃异常并重启程序
  10. 在vmware workstation上安装系统