iptables必知必会用法

防火墙

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 DROP
          iptables -P OUTPUT  DROP
          iptables -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 ACCEPT
  iptables -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 ACCEPT
  iptables -A OUTPUT -p tcp -m multiport --sports 139,445 -j ACCEPT
  iptables -A OUTPUT -p udp -m multiport --sports 137,138 -j ACCEPT

防火墙iptables优化:

  iptables -A INPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
  iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT 
  iptables -A INPUT -i eth2 -j REJECT
  iptables -A OUTPUT -m state
  iptables -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.226
  iptables -t nat -I PREROUTING -d 172.16.251.65 -p tcp --dport  80 -j DNAT --to-destination  172.16.254.226

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

时间: 2024-10-24 09:52:59

iptables必知必会用法的相关文章

Nginx系列教程之三:nginx 必知必会

书接上回,聊一聊nginx的必知必会!!! 前言:从该教程往后,涉及到nginx的功能将越来越生产化,因此某些测试必须是基于web架构平台,所以在看本教程之前,建议先安装好LNMP或者LAMP架构,以便测试验证.其次该技术文档的测试是基于前端nginx反向代理与后端LNMP架构来测试的,后端LNMP主要是提供测试的访问页面而已,重点还是前端Nginx的设置 测试环境:前端代理:OS:CentOS6.5x64hostname:test1.lxm.comip:10.0.10.11 后端LNMP:OS

MySQL必知必会 学习笔记(一)

第一章  了解SQL 模式:   关于数据库和表的布局以及特性的信息.[描述表可以存储什么样的数据,数据如何分解,各部分信息如何命名等等,可以用来描述数据库中特定的表以及整个数据库(和其中表的关系)]. 第二章 MySQL简介 MySQL是一种DBMS,即它是一种数据库软件.基于客户机----服务器的数据库. MySQL工具: 1.mysql 命令行实用程序 2.MySQL Administrator 3.MySQL query Browser 第四章 检索数据 LIMIT 5 表示MySQL返

《MySQL 必知必会》读书总结

这是 <MySQL 必知必会> 的读书总结.也是自己整理的常用操作的参考手册. ? ? 使用 MySQL 连接到 MySQL shell>mysql -u root -p Enter password:****** 显示数据库 mysql>SHOW DATABASES; 选择数据库 mysql>USE mytest; 显示数据库中的表 mysql>SHOW TABLES; 显示表列 mysql>SHOW COLUMNS FROM tmall_user; mysql

《MySQL必知必会学习笔记》:正则表达式

正则表达式的应用 前面的几节的过滤例子允许用匹配.比较和通配操作符来寻找数据.对于基本的数据过滤,这样就足够了.但是随着过滤条件的复杂性的增加,where子句本身的复杂性也有必要增加.这也就是正则表达式变得有用的地方. 正则表达式是用来匹配文本中特殊的字符集合. 正则表达式不是自己第一次见,在JAVA/C++ 这些语言中,都有正则表达式,不过他们的用途是一样的,都是匹配文本中的字符串.可能具体的用法不太一样,但也差不多.下面将一一进行学习.介绍. 基本字符的匹配 当我们想查找某列中的字符中是否有

C++必知必会(3)

条款26操作符函数查找 class X { public: Xoperator %( const X& ) const;             //二元取余操作 XmemFunc1( const X&); voidmemFunc2(); }; 可以采用中缀或函数调用语法来调用这个重载的操作符:如下 X a,b,c; a = b%c;        //采用中缀语法调用成员操作符% a = b.operator %(c);   //成员函数调用语法 a = b.memFunc1(c);  

TCP/IP,必知必会的

文章目录 前言 TCP/IP模型 数据链路层 网络层 ping Traceroute TCP/UDP DNS TCP连接的建立与终止 TCP流量控制 TCP拥塞控制 0 前言 本文整理了一些TCP/IP协议簇中需要必知必会的十大问题,既是面试高频问题,又是程序员必备基础素养. 1 TCP/IP模型 TCP/IP协议模型(Transmission Control Protocol/Internet Protocol),包含了一系列构成互联网基础的网络协议,是Internet的核心协议. 基于TCP

《mysql必知必会》读书笔记--存储过程的使用

以前对mysql的认识与应用只是停留在增删改查的阶段,最近正好在学习mysql相关内容,看了一本书叫做<MySQL必知必会>,看了之后对MySQL的高级用法有了一定的了解.以下内容只当读书笔记. 如有转载请注明出处~ 存储过程的使用 执行存储过程 CALL productpricing() 执行名为productpricing的存储过程 创建存储过程 CREATE PROCEDURE productpricing() BEGIN SELECT avg(prod_price) AS pricea

《mysql必知必会》笔记-部分

<mysql必知必会>笔记-部分 注释: 开始时整理笔记,记录自己看书过程的疑问和重点,后来发现记录没太多意义,还不如直接去翻原书,所以就放弃了. 因此,这个笔记只有一部分,不过依旧分享出来. 1.语言分类: 客户机可以是MySQL提供的工具.脚本语言(如perl).Web应用开发语言(如ASP.ColdFusion.JSP和PHP).程序设计语言(如C.C+kJava)等. 2.之前找不到表的原因: 虽然SQL是不区分大小写的,但有些标识符(如数据库名.表名.列名)可能不同:在MySQL4.

必知必会的目录和文件的作用、安装软件方法、运行级别

作者:Georgekai 归档:学习笔记 2017/12/28 目  录 第1章 ctrl+1 1 1.2  /etc/目录 1 1.2.1                   网卡配置文件和DNS配置文件 1.2.2                更改本机hosts文件 1.2.3                修改主机名 1.2.4                开机自动挂载的设备与目录的对应关系 1.2.5                开机自动运行的软件和命令存放位置 1.2.6    

一个老师程序员说:这是学Java 必知必会的 20 种常用类库和 API

一个有经验的Java开发人员特征之一就是善于使用已有的轮子来造车.<Effective Java>的作者Joshua Bloch曾经说过:"建议使用现有的API来开发,而不是重复造轮子".在本文中,我将分享一些Java开发人员应该熟悉的最有用的和必要的库和API.顺便说一句,这里不包括框架,如Spring和Hibernate因为他们非常有名,都有特定的功能.最后,如果大家如果在自学遇到困难,想找一个java的学习环境,可以加入我们的java学习圈,点击我加入吧,会节约很多时