自学内容网 自学内容网

iptables

linux防火墙:  iptables、netfilter

防火墙的类别:

     软件防火墙:iptables、ISA

     硬件防火墙:华为、思科

按防护墙作用范围分类:   主机防火墙  、网络防火墙

原理:根据数据包的源ip、目标ip、源port、目标端口、协议、状态、资源、内容,如果数据包符合预定的规定,则放行;如果不符合规则,则阻拦数据包。

tcp数据包:

数据包:   

  source port:源端口     destination :目标端口  sequence number :请求序号  

  acknoledgment number :应答序号       data offset :数据偏移量

状态标志位:

FIN:表示要断开连接 (如果是要请求断开的话,fin值是1,否则是0)

SYN:表示请求建立链接的包(如果是要请求链接的话,syn值是1,否则syn是0)

ACK:表示这个数据包是对于之前对方发送数据包的响应数据包(如果是响应数据包的话,那么ack的值为1,否则ack的值为0)

URP:紧急标志,当设置此位置时,数据的优先于其他数据的

PSH:推送标志,这个标志告诉应用程序立刻发送数据

PST:重置标志,重置tcp链接

主机直接的通信条件:

sip:源ip

dip:目标ip

smac:源mac地址

dmac:目标mac地址

sport:源端口

dport:目标端口

syn:0           fin:0          ack:1

iptables防火墙

作用:可以对进出的数据包,进行过滤,也可以实现地址、端口的转换

iptables的基本组成:

PREROUTING:在对数据包进行路径选择之前所应用的链(防火墙刚收到的数据包)

FORWARD:将数据包从一个网络转发到另一个网络的过程所应用的链

POSTROUTING:在数据包进行路径选择之后所应用的链

INPUT:对数据包的目标时防火墙的本身的情况下使用

OUPUT:对有防火墙的上层应用所产生的数据包应用的链

filter:过滤数据包   (三个链:INPUT、OUTPUT、FORWARD)

nat表:不能过滤数据包,仅仅修改数据包的IP的端口 (三个链:  OUTPUT、  PREROUTING、 POSTROUTING)

mangle表:不能过滤数据包也不能修改,仅仅修改数据包的报文,比如说修改ttl值 (五个值)ttl:每次转发ttl值减1,ttl值是0时就会从网络丢弃。

rawa表:决定是否对被追踪到状态进行处理.(两个链:PREOUTING、OUTPUT)

iptables的工作流程

数据包向后转发的时候会指定一个IP地址,路由选择不一定是基于IP做选择。

iptables应用:centos6和centes7中的防火不一样

centos6:防火就只有iptables
centos7:支持iptables和firewalld,默认用的firewalld

iptable、firewalld本质一样
在使用firewalld的时候,其实还是调用iptables来完成工作

禁用firewalld

centos7默认的防火墙软件是firewalld

#设置防火墙永久关闭【下次启动系统的时候,firewalld不启动】

[root@localhost ~]# systemctl disable  firewalld

#立刻关闭防火墙     [root@localhost ~]# systemctl stop firewalld

确认启动情况

出现disabled 表示下次开机的时候,防火墙不会自动启动;出现inactive(dead) 表示防火墙已经关闭了。

安装iptables

安装组件:iptables-services

组件作用:实现iptables的管理操作,例如启动、关闭、重启等

[root@localhost ~]# yum install iptables-services -y

启动防火墙:

[root@localhost ~]# systemctl start iptables

设置防火墙开机自动启动:

[root@localhost ~]# systemctl enable iptables

查看防火墙的状态:

出现enables 表示防火墙是开机自己启动,出现active 表示防火墙在运行。

防火墙的常规操作

iptables命令

格式:  iptables  【-t  表名】  COMMAND  链名       【规则序号】

说明:

如果表名省略,则默认时对filter进行操作。

COMMAND:是要执行的命令,包括添加规则、删除规则、替换规则、修改规则。

如果规则序号省略,那么通常是对最后一个进行操作。

匹配条件:是对什么样的数据包进行过滤

执行的操作:是匹配到数据包如何处理,比如放行、阻止。

iptables相关命令(COMMAND)

-A:   链名:在指定的链中追加规则(末尾追加)
-L(大写i) 链名 【num】:在指定的链中插入规则(默认首部插入)
-D 链名 【num】:删除指定的链中的规则(默认是删除最后一个)
-R 链名 【num】:替换规则
-F 链名:清除链中的规则,如果不指定链名,则删除整个表的全部的链的规则
-N:自定义一个新链
-X;删除自定义的链(必须是空链)
-P  链名: 修改一个链的默认规则
-L:显示iptables中的规则列表
                -n:以数字方式显示(如果不加-n会将数字反解为服务名,往往速度特变缓慢)
                -v:显示规则的详细信息,包括每个规则所匹配到的数据包数量
               --line:在显示规则的时候,在规则的前面显示一个序号
-t  表名:指定查看哪个表中的规则【默认是查看filter】
-j:

执行的操作做:  ACCEPT :放行        DROP:丢弃                 REJECT:认为数据包危险,告诉客户数据包危险没放行,并且丢弃数据包           SNAT:源地址转换             DNAT:目标地址转换

案例1:查看filter表中规则:    iptables   -L   -n  --line   -t    filter

案例2:清楚nat表中的规则:iptables   -t   nat     -F

案例3:保存防火墙规则:  service   iptables   save 

    通用匹配:  -s:匹配数据包的源IP       -d:匹配数据包的目标IP                 -i:匹配数据包是从哪个网卡进入的               -o:匹配数据包是从哪个网卡发出的

案例:     禁止1.1.1.1访问主机      iptables  -t  filter  -A INPUT  -S  1.1.1.1  -j   DROP

   允许1.1.1.2访问主机              iptables  -t   filter  -A  INPUT  -s  1.1.1.2  -j   ACCEPT

删除filter中的第一条规则:   iptables  -t  filter  -D  INPUT  1

禁止别人通过ens37网卡来访问           iptables   -t   filter   -A  INPUT  -i    ENS37   -j   ACCEPT

允许别人通过ens33网卡来访问                 iptables -t filter -A INPUT -i ens33 -j ACCEPT

禁止主机访问192.168.0.116            iptables   -t   filter   -A  OUTPUT  -d  192.168.6.116  -j   DROP

允许主机访问192.168.6.11    iptables   -t   filter   -A   OUTPUT   -d   192.168.6.116   -j    ACCEPT

扩展匹配

tcp扩展:-p: 指定数据包中协议类型(tcp、udp、icmp)

-p  tcp--sport:指定源端口                      -p tcp--dport:指定目标端口

-p tcp--tcp-flag  列表1   列表2:列表1指定要检查的标志位,列表2指定列表1中必须为1的标志位,如果列表1中有,但列表2中没有,那么这个标志位必须为0

例子:将数据包源IP为1.1.1.1,协议类型为tcp,目标端口为22的数据包放行

iptables  -t  -A INPUT  -s 1.1.1.1 -p tcp  --dport 22  -j  ACCEPT

例子:将数据包源IP为1.1.1.1,三次握手的第一次的数据包丢弃

iptables  -t  filter  -A INPUT -s  1.1.1.1 -p tcp --tcp-flag ack,fin,syn syn -j DROP

iptables  -t  filter  -A OUTPUT -s 1.1.1.1 -p tcp --tcp-flag ack,fin,syn syn,ack -j DROP

icmp的扩展

例子:将客户端IP为1.1.1.1的主机所发送的ping包丢弃

iptables  -t filter -A INPUT -s 1.1.1.1 -p icmp -j DROP

ping的命令使用的是icmp协议

格式:-p icmp

-p icmp --icmp-type X           ping的请求包的类型8,ping的响应的类型0

案例:禁止让物理机ping虚拟机,但是虚拟机可以ping物理机

iptables -t filter -A INPUT -s 192.168.6.116 -p icmp--type 8 -j DROP
#禁止物理机ping虚拟机

iptables -t filter -A OUTPUT -s 192.168.6.116 -p icmp --icmp-type 0 -j ACCEPT
#允许6.116主机发送ping包
显示扩展

状态扩展

匹配处于各种状态的数据包

格式:

-m state --state 状态

状态的表示方式:

NEW:表示新的链接请求(可以是三次握手的第一次,也可以是ping的第一次)

ESTABLISHED:表示请求链接的相应,链接建立完成的数据包

案例:实现防止木马基于80端口进行反弹式链接

 

第一步: iptables -t filter -A INPUT -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
第二步: iptables -t filter -A OUTPUT -p tcp --sport 80 -m state --state NEW -j DROP
第三步: iptables -t filter -A OUTPUT -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT


原文地址:https://blog.csdn.net/2401_83693610/article/details/140274610

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!