安全技术和iptables防火墙

一、安全技术

1.1 概述

1、入侵检测机制:特点是阻断,量化,定位来自内外的网路威胁情况。 提供报警和事后监督。类似与监控。

2、入侵防御:以透明模式工作,分析数据包的内容,一切进入本机的内容进行防护,对木马、蠕虫、系统漏洞进行分析判断,然后 进行阻断,主动的防御机制。部署在整个架构,或者是集群的入口处。

3、防火墙:隔离功能,工作在网络或主机边缘,对进出网络或主机的数据包基于一定的规则检查,并在匹配某规则时由规则定义的行为进行处理的一组功能的组件,基本上的实现都是默认情况下关闭所有的通过型访问,只开放允许访问的策略,会将希望外网访问的主机放DMZ(demilitarized zone)网络中。

4、防水墙:透明模式工作,例如华为的ensp监控就是防火墙。一切对于防水墙都是透明的。

按照保护范围划分:

主机防火墙:仅为当前主机服务
网络防火墙:防护的是另一侧的局域网

按网络协议划分:
网络层防火墙:OSI模型下四层,又称为包过滤防火墙
应用层防火墙/代理服务器:proxy 代理网关,OSI模型七层

包过滤防火墙
网络层对数据包进行选择,选择的依据是系统内设置的过滤逻辑,被称为访问控制列表(ACL),通过检查数据流中每个数据的源地址,目的地址,所用端口号和协议状态等因素,或他们的组合来确定是否允许该数据包通过。

1.2 iptables和firewalld防火墙

ip tables: 系统自带的包过滤防火墙

firewalld: 主机防火墙,他也有包过滤的功能

二、iptables内核防火墙的四表五链

2.1 四表

raw 控制数据包的状态跟踪,配置后可加快防火墙的穿越速度
mangle 修改数据包的标记位规则
nat 地址转换的规则表
filter 包的过滤规则表,根据预定义、人工设置的规则对符合条件的数据包进行过滤,也是iptables的默认表

2.2 五链

PREROUTING 处理数据包进入本机之前的规则NAT
INPUT 处理数据包进入本机的规则
FORWORD 处理数据包转发到其他主机的规则
OUTPUT 处理本机发出的数据包的规则,一般不做处理
POSTROUTING 处理数据包离开本机之后的规则NAT

2.3 iptables表链匹配流程

安全技术和iptables防火墙_第1张图片

总结:

  • 规则表的对用:容纳各种规则链
  • 规则链的作用:容纳各种防火墙规则
  • 表里有链,链里有规则

三、iptables配置

3.1 安装iptables服务

[root@pup1 ~]# systemctl stop firewalld.service 
[root@pup1 ~]# yum -y install iptables iptables-services
[root@pup1 ~]# systemctl start iptables.service
[root@pup1 ~]# systemctl enable iptables.service
Created symlink from /etc/systemd/system/basic.target.wants/iptables.service to /usr/lib/systemd/system/iptables.service.

3.2 管理选项

-A 在指定链的末尾进行追加
-I(大写i) 在指定链插入新的规则,可以指定插入规则的位置
-P 修改默认策略(链的策略)
-D 删除
-R 修改、替换规则
-L 查看指定链当中的规则
-F 清空指定链当中的规则(慎用)
-n 以数字形式显示规则
-v 查看详细信息
--line-numbers 给每个链中的规则进行编号查看
-X 清空自定义链的规则
-t 指定表名

3.3 匹配条件

-p 指定数据包的协议类型
-s 指定数据包的源ip地址
-d 指定数据包的目的ip地址
-i 指定数据包进入本机的网络接口
-o 指定数据包离开本机的网络接口
--sport 指定源端口号
--dport 指定目的端口号

3.4 控制类型

ACCEPT 允许数据包通过
DROP 拒绝数据包通过,直接丢弃数据包,不给任何回应的信息
REJECT 拒绝数据包通过,会给一个回应的信息
SNAT 修改数据包的源地址
DNAT 修改数据包的目的地址

3.5 格式

[root@pup1 ~]# iptables [-t 表名]  管理选项  [链名]  [匹配条件]  [-j 控制类型]
#不指定表名时,默认指filter表
#不指定链名时,默认指表内的所有链

3. 6实例演示

查看规则列表

[root@pup1 ~]# iptables -t 表名 -vnL 链名 --line-numbers  

安全技术和iptables防火墙_第2张图片

图中标的解释:

num:详细展示后才会显示

pkts:匹配规则收到的报文个数

bytes:包的大小总额

target:规则对应的动作

prot:规则对应的协议为tcp

添加规则

示例:

拒绝其他主机ping本机

[root@pup1 ~]# iptables -F
[root@pup1 ~]# iptables -t filter -A INPUT -p icmp -j REJECT 

进行放通

[root@pup1 ~]# iptables -A INPUT -p icmp -j ACCEPT

原因:

匹配规则的策略:从上往下按照规则顺序匹配,如果匹配到了规则,后续的规则不再匹配。针对相同的规则类型,匹配到之后后续的规则也不生效

安全技术和iptables防火墙_第3张图片

解决方案:

插入规则

[root@pup1 ~]# iptables -I INPUT 1 -p icmp -j ACCEPT

安全技术和iptables防火墙_第4张图片

删除规则

先查看链中规则序号再删除

[root@pup1 ~]# iptables -D INPUT 3

安全技术和iptables防火墙_第5张图片

修改规则

临时修改(一般不用)

[root@pup1 ~]# iptables  -R INPUT 2 -p icmp -j ACCEPT

安全技术和iptables防火墙_第6张图片

永久修改

安全技术和iptables防火墙_第7张图片

修改默认策略

[root@pup1 ~]# iptables -P INPUT DROP  #临时修改

四、规则的匹配

4.1 通用匹配

协议匹配 -p 协议名
地址匹配 -s 源地址、-d 目的地址  #可以是ip、网段、域名
接口匹配 -i 入站网卡、-o 出站网卡

示例1:指定地址为20.0.0.20的主机无法ping通本机

[root@pup1 ~]# iptables -A INPUT -s 20.0.0.20 -p icmp -j REJECT 

示例2:指定地址为20.0.0.20的主机无法通过ssh远程连接本机

[root@pup1 ~]# iptables -A INPUT -s 20.0.0.20 -p tcp --dport 22 -j REJECT
#ssh远程连接使用tcp协议,默认端口为22

示例3:指定地址20.0.0.20的主机无法给本机发送httpd请求

[root@pup1 ~]# iptables -A INPUT -s 20.0.0.20 -p tcp --dport 80 -j REJECT

示例4:不指定协议

[root@pup1 ~]# iptables -A INPUT -s 20.0.0.20 -j DROP 

安全技术和iptables防火墙_第8张图片

示例5:指定整个网段的数据无法从ens33设备访问(包括本机)

[root@pup1 ~]# iptables -A INPUT -i ens33 -s 20.0.0.0/24 -j DROP 

示例6:指定整个网段无法访问本机的80端口

[root@pup1 ~]# iptables -A INPUT -s 20.0.0.0/24 -p tcp --dport 80 -j REJECT 

4.2 隐含匹配

-p指定协议时,不需要使用-m来指明拓展模块

示例:指定多端口匹配

[root@pup1 ~]# iptables -A INPUT -p tcp --dport 22:80 -j REJECT 
#端口号小的写在前,大的写在后,用冒号隔开

安全技术和iptables防火墙_第9张图片

4.3 显示匹配

-m加拓展模块可以明确指定类型,例如多端口、mac地址、IP范围

用拓展模块指定多个端口

示例:
[root@pup1 ~]# iptables -A INPUT -p tcp -m multiport --dport 80,22,21,20,53 -j REJECT 

指定ip地址范围

-m iprange --src-range 源ip范围
-m iprange --dst-range 目的ip范围
示例:
[root@pup1 ~]# iptables -A INPUT -p icmp -m iprange --src-range 20.0.0.20-20.0.0.30 -j REJECT 

 指定mac地址

示例:
[root@pup1 ~]# iptables -A INPUT -m mac --mac-source 00:0c:29:29:ec:03 -j REJECT

安全技术和iptables防火墙_第10张图片

4.4 备份与还原

示例:
[root@pup1 ~]# iptables-save > /opt/iptables.bak 
[root@pup1 ~]# iptables-restore < /opt/iptables.bak 

安全技术和iptables防火墙_第11张图片

五、自定义链

5.1 添加自定义链

安全技术和iptables防火墙_第12张图片

5.2 给自定义链改名

安全技术和iptables防火墙_第13张图片

5.3 在自定义链中创建自定义规则

安全技术和iptables防火墙_第14张图片

此时还无法使用,要将添加的自定义链及规则添加到系统链之下让系统能够识别

安全技术和iptables防火墙_第15张图片

5.4 删除自定义链和规则

安全技术和iptables防火墙_第16张图片

若自定义规则已被系统引用,先删除系统链下的自定义规则,然后删除自定义链下的自定义规则,最后删除自定义链

六、SNAT和DNAT

6.1 工作原理

SNAT:源地址转换

DNAT:目的地址转换

安全技术和iptables防火墙_第17张图片

6.2 iptables实现地址转化实验

准备三台虚拟机:

安全技术和iptables防火墙_第18张图片

虚拟机2添加网络适配器并查看

安全技术和iptables防火墙_第19张图片

配置网关服务器的网卡

[root@pup2 network-scripts]# vim ifcfg-ens33

TYPE = Ethernet
DEVICE=ens33
ONBOOT=yes
BOOTPROTO=static
IPADDR=20.0.0.254
NETMASK=255.255.255.0
#GATEWAY=20.0.0.2
#DNS1=218.2.135.1

[root@pup2 network-scripts]# vim ifcfg-ens36

TYPE = Ethernet
DEVICE=ens36
ONBOOT=yes
BOOTPROTO=static
IPADDR=12.0.0.254
NETMASK=255.255.255.0
#GATEWAY=20.0.0.2
#DNS1=218.2.135.1

[root@pup2 network-scripts]# systemctl restart network

配置内网服务器的网卡

[root@pup1 network-scripts]# vim ifcfg-ens33

TYPE = Ethernet
DEVICE=ens33
ONBOOT=yes
BOOTPROTO=static
IPADDR=20.0.0.10
NETMASK=255.255.255.0
GATEWAY=20.0.0.254
#DNS1=218.2.135.1

[root@pup1 network-scripts]# systemctl restart network

配置外网服务器的网卡

[root@pup3 network-scripts]# vim ifcfg-ens33

TYPE = Ethernet
DEVICE=ens33
ONBOOT=yes
BOOTPROTO=static
IPADDR=12.0.0.100
NETMASK=255.255.255.0
GATEWAY=20.0.0.254
#DNS1=218.2.135.1

[root@pup3 network-scripts]# systemctl restart network

网关服务器在iptables的nat表中添加内网到外网地址转换规则

[root@pup2 ~]# iptables -t nat -A POSTROUTING -s 20.0.0.0/24 -o ens36 -j SNAT --to 10.0.0.10

-t:指定表名
nat:地址转换的表名
-A:在行尾追加一条新的规则
POSTROUITING:在出本机的时候添加一个地址转换的规则
-s 20.0.0.0/24:指定源ip地址
-o ens36:从网卡设备ens36出去的数据都会做转换
-j SNAT:指定控制类型,做源地址转换
--to 10.0.0.10:所有的源ip属于233.0这个网段,只要是从ens36出来的数据,都会把其地址转换成10.0.0.10

[root@pup2 network-scripts]# vim /etc/sysctl.conf  #修改内核参数的文件

net.ipv4.ip_forward=1

[root@pup2 network-scripts]# sysctl -p  #即刻生效


安全技术和iptables防火墙_第20张图片

网关服务器在iptables的nat表中添加外网到内网地址转换规则

[root@pup2 network-scripts]# iptables -t nat -A PREROUTING -d 11.0.0.11 -i ens36 -p tcp --dport 80 -j DNAT --to 20.0.0.10:80

-t:指定表名
nat:地址转换的表名
-A:在行尾追加一条新的规则
PRWROUTING:在进入本机之后添加一个地址转换的规则
-d 11.0.0.11:指定目的ip地址
-i ens36:进入内网的设备接口
-p tcp:指定协议
--to 20.0.0.10:80:只要是从ens36这个网络接口进入本机内网的ip地址,访问内网服务http的80端口,目的ip地址都可以转换成11.0.0.11

七、linux系统的抓包

tcpdump

tcpdump:linux自带抓包工具(wireshark只适用于windows系统)

抓包方式:

1、指定抓包--指定抓包数量
2、动态抓包--会一直获取包,除非人工停止

(linux系统无法解析,需要发送到windows系统解析)

指定抓包

[root@pup1 opt]# tcpdump tcp -i ens33 -t -s0 -c 10 and dst port 80 and src net 20.0.0.0/24 -w ./target.cap
[root@pup1 opt]# sz target.cap  #发送

tcpdump:抓包命令固定开头
tcp:抓包的协议
-i:只抓经过ens33设备的数据包
-t:不显示时间戳
-s0:抓完整的数据包
-c:指定抓包个数,后面接数字
dst port 80:目的端口为80
src net 20.0.0.0/24:目的地址
-w:抓包的数据的保存位置
./:保存在当前目录
target.cap:包名
 

动态抓包

[root@pup1 opt]# tcpdump -i ens33 -s0 -w ./ens33.cap

你可能感兴趣的:(服务器,linux,网络)