防火墙

iptables 包过滤型防火墙

防火墙的类别:

代理服务器(proxy):代理client访问internet,分割内部与外部网络

IP Filter:进入本机的tcp/ip封装协议进行过滤

软件防火墙(逻辑上实现)
       硬件防火墙(硬件配合软件实现)

iptables功能:拒绝internet数据包进入linux主机的端口port

拒绝IP的数据包进入
                      拒绝带有特殊旗标flag的封装协议
                      分析硬件地址mac提供的服务
             限制:无法抵御***病毒;
                       内部LAN抵御力差;

iptables四张表:

raw 处于所有表的最前端,在此处可控制nat表的connectiontrack 链接追踪的生效与否
filter与本机有关

INPUT:进入本机
                              OUTPUT:从本机发出
                              FORWORD:从本机转发,与本机关系不大

nat:来源与目的IP或port转换

PREROUTING:路由判断之前进行的规则(DNAT/REDICRECT)
                               POSTROUTING:路由判断之后(SNAT/MASQUERADE)
                               OUTPUT:本机发出

mangle:带有特殊路由器旗标有关

PREROUTING:
                                INPUT:
                                FORWORD:
                                OUTPUT
                                POSTROUTING:

4个表的优先级由高到低的顺序为:raw-->mangle-->nat-->filter

请求与响应过程:

数据包>>mangle-PREROUTING>>nat-PREROUTING>>mangle-INPUT>>filter-INPUT>>本机资源>>mangle-OUTPUT>>nat-OUTPUT>>filter-OUTPUT>>mangle-POSTROUTING>>nat-POSTROUTING>>数据包发出

网络防火墙路由过程:

数据包>>mangle-PREROUTING>>nat-PREROUTING>>mangle-FORWARD>>filter-FROWARD>>mangle-POSTROUTING>>nat-POSTROUTING>>数据包发出

iptables用法: -t   表明   -L列出规则表 -n不进行IP的反解析

                    -v:列出更多的信息,数据包的总数、网络接口-F:清楚所有已定的规则-X:杀掉所有的自定义的table-Z:将所有的chain的计数与流量清零

-P:定义policy

          ACCEPT:允许DROP:数据包丢弃一般的policy:          iptables  -P  INPUT DROPiptables -P OUTPUT  DROPiptables -P FORWORD DROP

iptables规则设置:

iptables -A 链 -io 网络接口 -p 协议 -s 来源ip/mask -d 目标IP/mask -j ACCEPT|DROP

         -A :新增规则在原规则之后;-I  :默认插入第一条,也可数字链:INPUT,OUTPUT,FORWORD-i:数据包的入口设备 与INPUT结合-o:数据包出口设备 与OUTPUT结合-p:协议:tcp,udp,icmp,all-s:规定为不允许则其前加!+IP-d:目标IP/MASK-j:动作ACCEPT、DROP、记录(LOG)

隐式扩展模块: 一般的不用-m 指定,而是 -p tcp/udp 时隐式自动添加-m tcp 模块

TCP,UDP 规则:

    --sport 源端口如果其前加上 ! 表示除了该指定项! --sport 80 除了80端口都被匹配--dport目的端口多个连续端口:137:138

特殊旗标:

 --syn

显式扩展模块:MAC;RELATED

-m:调用模块:state状态模块,mac网卡硬件模块

           --state           INVALID:无效的数据包或损坏的ESTABLISHED:已连接的NEW: 欲新建连接的RELATED:常用,本机发出的数据包有关,并非是已经建立的,但与已经建立的某个链接有关mac 网络硬件地址模块:--mac-source  xx:xx:xx:xx

iprange地址范围模块,指定一个地址范围

           -m iprange  --src-range  x.x.x.x-x.x.x.x

layer7模块:可用于应用层协议的过滤

           -m layer7 --proto  qq

multiport模块:以离散或者连续的端口作定义

           -m multiport  --dports 80,53

time模块:指定时间匹配条件

           -m time --timestart hh:mm:ss--timestop hh:mmss--weekdays 1,2,3--monthdays 10,11,12--kerneltz  默认使用的是格林威治时间,该选可使用内核配置时区

string模块:基于字符串匹配

           --algo bm|kmp 指定算法--string 指定字符串的匹配模式--hex-string 以16进制指定--from offset 指定偏移量--to offset

connlimit模块:限制客户端的连接数

           --connlimit-upto n 指定连接数不超过nge--connlimit-above

limit模块:限制速率,按照包的个数而不是带宽

           --limit rate/second--limit-burst N  限制令牌池限制接受新请求的速率 --syn,-m limit

ICMP数据包的限定:

    请求报文: --icmp-type 8响应报文: --icmp-type 0-p icmp --icmp-type 8(icmp_request)

-j 处理动作

一般动作:ACCEPT ,DROP
     扩展动作:

REJECT

    --reject--with TYPE 可指定拒绝类型

LOG

    --log-prefix--log-level一般日志保存于/varlog/message

RETURN:_

    用于自定义链接,返回调用者自定义连作为处理动作

将现有的iptables设置存储:iptables-save > filename
 根据文件恢复iptables规则:iptables-restore < filename
规则优化的思路:

使用自定义链管理特定应用的相关规则,模块化管理规则;

1. 优先放行双方向状态为ESTABLISHED的报文;
2. 服务于不同类别的功能的规则,匹配到报文可能性更大的放前面;
3. 服务于同一类别的功能的规则,匹配条件较严格的放在前面;

1.本机向外
                             2.私网向本机
                             3.公网向本机

SNAT:用于做客户端的代理,将内网的客户机ip统一替换为紫荆指定的ip地址

iptables -t nat POSTROUTING -s 192.168.1.0/24 -o eno16777736 -j SANT --to-source 111.111.111.111

DNAT:用于服务器端的请求代理,从而达到隐藏服务器的目的

iptables -t nat -I PREROUTING -i eno16777736 -j DNAT --to--destination  192.168.1.1

连接网关时常变动ip需要外网自动探查技术:动态伪装;

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

防火墙的某些功能需要修改的内核参数,以及需要加载的模块

echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/tcp_syncookies
echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp

删除某条规则:

iptables -vnL --line-numbers
 iptables -D INTPUT 7
实例:一个普通的 web 服务器的配置

iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp -m multiport --dport 22,80 -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -P INPUT DROP
保存iptbales配置:

配置文件是在/etc/iptables
命令是/etc/rc.d/init.d/iptables save
   也可 service   iptables save

查看是什么时候保存的!

cat /etc/sysconfig/iptables

放行yum的主要是80端口及state NEW

  iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPTiptables -A OUTPUT -p tcp -m tcp -m state --state NEW --dport 80 -j ACCEPT

放行samba服务普通方式:

  iptables -A INPUT -p tcp -m multiport --dports 139,445 -j ACCEPT iptables -A INPUT -p udp -m multiport --dports 137,138 -j ACCEPTiptables -A OUTPUT -p tcp -m multiport --sports 139,445 -j ACCEPTiptables -A OUTPUT -p udp -m multiport --sports 137,138 -j ACCEPT

防火墙iptables优化:

  iptables -A INPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPTiptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT iptables -A INPUT -i eth2 -j REJECTiptables -A OUTPUT -m stateiptables -A OUTPUT -o eth2 -j REJECT

iptables nat表的转发:

  iptables -t nat  -A POSTROUTING -s 192.168.0.0/24 -j SNAT   --to-source 172.16.254.226iptables -t nat -I PREROUTING -d 172.16.251.65 -p tcp --dport  80 -j DNAT --to-destination  172.16.254.226

NAT表的转发可指向多个ip地址以实现流量负载均衡轮流发给每个ip处理请求.

转载于:https://blog.51cto.com/cityx/1935085

iptables必知必会用法相关推荐

  1. 性能调优之JMH必知必会2:JMH的基本用法

    性能调优之JMH必知必会2:JMH的基本用法 JMH必知必会系列文章(持续更新) 一.前言 二.JMH的基本用法 1.添加JMH依赖包 2.@Benchmark 2.@Warmup和@Measurem ...

  2. mysql正则表达式关键字_《MySQL必知必会》正则表达式

    <MySQL必知必会>正则表达式 正则表达式 1.1.关键字 REGEXP 正则表达式的使用需要用到关键字 REGEXP . select prod_name from products ...

  3. tableau必知必会之VMware 搭建 Tableau Server for Linux 单机环境

    tableau10.5版本推出的 Linux 版 Tableau Server,让用户能够将 Tableau 的分析平台与 Linux 的企业级功能实现更好的结合,从而简化部署和管理工作. 很多用户陆 ...

  4. gns3中两个路由器分别连接主机然后分析ip数据转发报文arp协议_关于TCP/IP,必知必会的十个问题!...

    本文整理了一些TCP/IP协议簇中需要必知必会的十大问题,既是面试高频问题,又是程序员必备基础素养. TCP/IP十个问题 TCP/IP十个问题 一.TCP/IP模型 TCP/IP协议模型(Trans ...

  5. MYSQL必知必会学习笔记(二)

    MYSQL必知必会四-五章--检索.排序 书中部分代码展示: ##第四第五章 SELECT prod_name FROM products; /*从products表中检索一个叫prod_name的列 ...

  6. 《MySQL必知必会》[01] 基本查询

    <MySQL必知必会>(点击查看详情) 1.写在前面的话 这本书是一本MySQL的经典入门书籍,小小的一本,也受到众多网友推荐.之前自己学习的时候是啃的清华大学出版社的计算机系列教材< ...

  7. mysql中用完即删用什么_MySQL使用和操作总结(《MySQL必知必会》读书笔记)

    简介 MySQL是一种DBMS,即它是一种数据库软件.DBMS可分为两类:一类是基于共享文件系统的DBMS,另一类是基于客户机--服务器的DBMS.前者用于桌面用途,通常不用于高端或更关键应用. My ...

  8. 【总结记录】《MySQL必知必会》读后笔记,结合 leetcode 例题理解

    文章目录 一. <MySQL知会>读后笔记 1. 零散的前文知识 2. 连接数据库 3. 检索数据(重点开始了) 4. 排序.过滤数据 5. 通配符.正则表达式 6. 汇总数据 7. 分组 ...

  9. Python 程序员必知必会的开发者工具

    Python 程序员必知必会的开发者工具 Python已经演化出了一个广泛的生态系统,该生态系统能够让Python程序员的生活变得更加简单,减少他们重复造轮的工作.同样的理念也适用于工具开发者的工作, ...

  10. 《MySQL必知必会》的读后感

    <MySQL必知必会>的读后感 该文章是阅读<MySQL必知必会>这本书后的读后感,并且总结了这本书中的几个方面的笔记. 1 查询数据 注意SQL语句不区分大小写,因此 SEL ...

最新文章

  1. 干货 | 循环神经网络LSTM的数学过程
  2. SAP HUM事务代码HUMO里显示内层和外层HU信息
  3. nginx配置laravel
  4. http 301 和 302的区别
  5. 探索Android中的Parcel机制(上)
  6. 23. Leetcode 86. 分隔链表 (链表-基础操作类-分隔链表)
  7. Oracle-awrddrpt.sql比较两个AWR差异报告
  8. k8s灰度更新_通过rancher部署k8s过程实战分享
  9. Qt工作笔记-QListWidget鼠标拖动,一个到另一个,并遍历
  10. hadoop记录topk
  11. SQL_SERVER 导oracle(转)
  12. Python GUI程序整理
  13. GitLab版本管理(转)
  14. 计算机设备安全隐患排查,安全安全隐患排查实施方案
  15. fluent二维叶型仿真_FLUENT太阳能热水器仿真
  16. Lombok requires enabled annotation processing
  17. 第三阶段应用层——1.4 数码相册—FreeType介绍
  18. python for in range 什么意思_python中range什么意思,
  19. 队列练习之Example004-设计一个循环队列,用 front 和 rear 分别作为队头和队尾指针,另外用一个标志 tag 表示队列是空还是不空
  20. opencv环境配置相关软件

热门文章

  1. bootstrap怎么在移动端横向布局_移动端筛选中的「不限」到底该怎么用
  2. mac安装python3.8_mac安装pwntools(python3.8)解决多数问题
  3. printf打印结构体_工程师:这道题80%初学者都没做对!你确定搞懂结构体内存对齐了?...
  4. linux进程热更新 go,Golang热更新原理
  5. linux桌面隐藏鼠标,如何隐藏鼠标光标
  6. 推荐系统实战系列(python版).rar_python实战音乐推荐系统
  7. python语言程序设计 梁勇_计算机二级教程 Python语言程序设计,第9章Python标准库概览...
  8. delphi trichviewedit 设置一行的段落_HTML中的文本与段落(3)
  9. java web批量下载_JAVAWEB批量文件下载器
  10. go post请求的响应数据渲染到html模板_干货你需要了解的六种渲染模式