安全技术和防火墙:
一、安全技术
入侵检测系统:特点是不阻断网络访问,主要是提供报警和事后监督。不主动介入,默默的看着你(监控)
入侵防御系统:透明模式工作,数据包,网络监控,服务攻击,木马,蠕虫,系统漏洞等等进行准确的分析和判断在判定为攻击行为会立即阻断,主动的防御(所有的数据在进入本机之前,必须要通过的设备或者软件)
防火墙:隔离,工作在网络或者主机的边缘 (处于内网和外网的中间)
对网络或者主机的数据包基于一定的规则进行检查。匹配到的规则
放行 ,拒绝 (数据包将会被丢弃)
只开放允许访问的策略(白名单机制 拒绝所有,允许个别)
防水墙:是一种防止内部信息泄露的产品,对外有防火墙的功能,对内是透明模式工作。类似监控
事前,事中,事后都知道
防火墙:
iptables 这个linux自带的防火墙,一般用于内部配置。对外一般不适用(对外都使用专业的。)
firewalld linux自带的防火墙。centos7以后默认的防火墙。功能和iptables一样
包过滤防火墙(数据包进行控制)
网络层对数据包进行选择,选择的依据是防火墙设置的策略
策略:IP地址 ,端口 ,协议。
优点:处理速度块,易于维护
缺点:无法检查应用层数据,病毒无法进行处理
应用层防火墙:在应用层对数据进行检查 比较安全
优点是更安全,问题可以精准定位
缺点:所有数据都会检查 增加防火墙的负载
iptables :工作在网络层,针对数据包实施过滤和限制。包括过滤防火墙
通信的要素 :五大要素和四大要素 面试题
五大要素:源ip 目的ip 源端口 目的端口 协议(TCP/UDP)
四要素:源ip 目的ip 源端口 目的端口 协议
内核态和用户态
内核态:涉及到软件的底层代码或者是系统的基层逻辑,以及一些硬件的编码
开发人员更关注内核态
数据如果是内核态处理,速度相对较快
iptables的过滤规则就是由内核来进行控制
用户态:
应用层软件层面,人为控制的一系列操作,使用功能
运维人员我们只考虑用户态 用
数据只由用户态处理速度是比较慢的
面试题
ipatables的配置和策略
四表五链:
iptables的
四表:
raw表------------同于控制数据包的状态,可以跟踪数据包的状态
mangle表------------可以用来修改数据包的头部信息
NAT 表------------网络地址转换,可以改变数据包的源地址和目的地址
filter------------也是iptables的默认表不做声明 默认就是filter表 主要作用 过滤数据包 控制数据包的进出 以及接受和拒绝数据包
五链:链名大写
PREROUTING链:处理数据包进入本机之前二点规则(NAT表)
input链 :处理数据包进入本机之前的预测
output链:处理本机发出的数据包的规则,或者是数据包离开的本机的规则 (一般都是放行 不做约束)
forward : 处理数据包转发到其他主机的规则 或者是否允许本机进行数据包转发
pastrouting链:处理数据包离开本机之后的规则(NAT表)
表里有链,链里由面有规则
管理选项:在表的链中插入,增加,删除,查看规则
匹配的条件:数据包的ip地址,端口,协议
控制类型:允许,拒绝(丢弃)
注意事项:
1、不指定表名 默认就是filter表
2、不指定链名 默认就是所有链(禁止行为) 可以不指定表一定要指定链
3、除非设置了链的默认策略,否则必须指定匹配条件
4、选项,链名和控制类型都是大写,其余都是小写
控制类型 都要大写 都用-j
ACCEPT:允许数据包通过
DROP:直接丢弃数据包不给任何回应信息
REJECT:拒绝数据包通过,数据包也会被丢弃,但是会有一个响应的信息
SNAT: 修改数据包的源地址source
DNAT:修改数据包的目的地址
管理选项(增删改查):
-t 指定表名
-A 在链中添加一条规则,在链尾添加
-I 指定位置插入一条规则
-P 指定链的默认规则 链的规则一般都是拒绝(iptables默认是允许)
-D 删除规则
-R 修改规则 (慎用)一般不用一般删除重新添加
-vnL v显示详细信息 n数字形式展示内容 L查看
--line-numbers:显示规则的编号,和查看一起使用
-F:清空链中的所有规则 (慎用)
-X: 清楚自定义链中的规则
匹配条件:
-p:指定协议类型
-s:指定匹配的源ip地址
-d:指定匹配的目的ip地址
-i: 指定数据包进入本机的网络设备 (ens33 网卡)
-o:指定数据包离开本机的网络设备 (ens33 网卡)
--sport:指定源端口
--dport :指定目的端口
iptables的命令格式
iptables[-t 表名]管理选项 链名(大写)匹配条件 [-j 控制类型] 所有的控制类型前都用-j
匹配规则
每个链中的规则都是从上到下的顺序匹配,匹配到之后就不再向下匹配
如果链中没有规则,则执行链的默认策略
禁止ping
ssh限制登录
禁止访问nginx
删除
iptables -D +链+序号
修改策略
拒绝整个网段
一次性对多个端口进行操作
-m 使用拓展模块,一次性禁止多端口,ip范围,指定mac地址
multiport多端口
iprange ip范围
mac地址
alias wangka='vim /etc/sysconfig/network-scripts/ifcfg-ens33'
ctrl+alt 可以随意取
规则永久生效
自定义链
snat和dnat:
snat: 源地址转换
内网-----外网 内网ip转换成可以访问外网的ip
内网的多个主机可以只有一个有效的公网ip地址访问外部网络
DNAT:目的地址转发
外部用户,可以通过一个公网地址访问服务内部的私网服务
私网的ip
在linux当中如何抓包
tcpdump就是linux自带的抓包工具(最小化安装是不带的需额外安装)
tcpdump tcp =i ens33 -t -s0 and dst port 80 and src net 192.168.183.0/24 -w/opt/target.cap
tcp指定抓包协议 udp icmp 第一个参数可以不指定协议
-i 只抓经过指定设备的包
-t 不显示时间戳
-s0 抓完整的数据包
-c 10 抓几个数据包 10个
dst port 指定抓包的目的端口
src net 192.168.183.0/24 指定抓包的ip地址
net 网段
host (主机 ip地址)
src host 192.168.183.10 不能是网段了
-w 保存指定路径
sz ens33.cap下载到桌面
如果要用wireshark对数据包进行分析 tcpdumo抓包的时候,要使用-s0抓取完成格式,否则wireshark无法分析
ubanut 关防火墙
ufw disable
ubantu ufw iptables
他和iptables一样也是包过滤防火墙
ip
端口
协议
firewalld是按照区域来进行划分:
public:公共区域 默认配置了ssh以及DHCPv6预定服务是放通的,其他全部都是拒绝 默认区域
trusted: 信任区域,允许所有的数据包放通
block:限制区域,拒绝所有
drop:丢弃区域 丢弃所有数据包
dmz: 非军事区域,默认就只允许ssh通过
home :家庭区域,默认只允许ssh通过
internal :内部区域和home一摸一样
external :外部区域 也是默认允许ssh通过其他的全部拒绝
work:工作区域默认放通ssh
firewall-cmd #命令行工具
firewall-cmd --get-default -zone#查看当前系统的默认区域
firewall -cmd --set -default -zone=block #切换区域
firewall -cmd --list-all
#查看区域内允许访问的服务
firewall-cmd --list-services
dhcpv6 -client #获取ipv6地址
interfaces :
firewall -cmd --zone=public --change -interface =ens36#添加网卡
#添加网卡会默认的把网卡添加到区域中去
firewall -cmd --add -service=http --zone=publice
firewall -cmd --add-service={ftp,nfs,http} --zone=public --permanent
firewall -cmd --reload
firewall -cmd --remove-service={ftp,nfs,http} --zone=public --permanent
firewall-cmd--zone=public --add-port=80/tcp
firewall -cmd --add-port={21,80,24,3306,25,26}/tcp
实验
test1
:20.0.0.10 ,nginx服务
test2
:两个网卡设备:
-
ens33
:20.0.0.254(私网的网关) -
ens36
:12.0.0.254(用来模拟test3
的地址是公网地址) -
模拟
test1
的公网IP :10.0.0.10(test1
的地址转换成10.0.0.10和test3
进行通信)
test3
:12.0.0.10 ,nginx服务
要求:在test2
上配置防火墙,使test1
作为私网地址,test3
作为公网地址,观察双方获取对方web
服务时,/var/log/nginx/access.log
中记录的访问主机地址,理解NAT
的工作方式。
对test1
,test2
,test3
的IP地址分别设置。其中test2
两个网卡的IP地址分别作为test1
和test3
的网关地址。
对test2
:
Linux 内核参数的配置文件/etc/sysctl.conf
vim /etc/sysctl.conf
#在配置文件中添加行
net.ipv4.ip_forward=1
#开启ipv4的转发功能
#保存退出
sysctl -p
#使内核参数的配置立刻生效
源地址转换:
iptables -t nat -A POSTROUTING -s 20.0.0.0/24 -o ens36 -j SNAT --to 10.0.0.10
-
-t nat
:指定表为nat表 -
-A POSTROUTING
:添加规则到链 -
-s 20.0.0.0/24
:指定网段 -
-o
:指定输出设备 -
-j SNAT
:指定控制参数SNAT -
--to 10.0.0.10
:20.0.0.0/24
网段的源地址转换为10.0.0.10
这个公网IP地址
目的地址转换:
iptables -t nat -A PREROUTING -d 10.0.0.10 -i ens36 -p tcp --dport 80 -j DNAT --to 20.0.0.10:80
-
-d 10.0.0.10
:指定作为目的地址转换的IP地址 -
-i
:从指定设备进入本机 -
-p
:指定协议 -
--dport
:指定端口 -
-j DNAT
:使用目的地址转换 -
--to 20.0.0.10:80
:外网想要访问内网的20.0.0.10:80
(端口号80也可以不加)的web服务,只需要访问公网的10.0.0.10
这个IP地址。