安全技术和防火墙

安全技术和防火墙

安全技术

入侵检测系统

特点:不阻断网络访问,主要是提供告警和事后监督,不主动介入,默默地看着你(监控)

入侵防御系统

特点:透明工作,数据包,网络监控,服务攻击,木马,蠕虫,系统漏洞等等进行准确的分析和判断.在判断为攻击行为会立即阻断,是主动的防御(所有的数据在进入本机之前,必须要通过的设备或者软件)

防火墙

作用和核心:隔离

工作在网络或者主机的边缘

(工作于网络层)对网络或者主机的数据包基于一定的规则进行检查

根据匹配到的规则做出放行或是拒绝,如果拒绝,数据包将会被丢弃,会开放允许访问的策略

所以,是白名单机制(拒绝所有,允许个别)

iptables linux自带的防火墙,一般用于内部配置.对外一般不使用(对外都使用专业的)

firewalld linux自带的防火墙,centos7以后默认的防火墙.功能

包过滤防火墙

(数据包进行控制)

网络层对数据包进行选择,选择的依据就是防火墙设置的策略

策略:ip地址,端口,协议

优点:处理速度快,易于维护

缺点:无法检查应用层数据,病毒无法进行处理.

应用层防火墙

在应用层对数据进行检查,比较安全

优点:更安全,问题可以精准定位.

缺点:所有数据都要检查,会增加负荷.

防水墙

是一种防止内部信息泄露的产品,对外有防火墙的功能,对内是透明模式工作,类似监控

事前,事中,事后都知道

1.拒绝所有,允许个别

2.监控行为

通信的要素

五大要素

原目ip,原目端口,协议(TCP/UDP)

四大要素

原目ip,原目端口

内核态和用户态

内核态:

涉及到软件的底层代码或者系统的基层逻辑,以及一些硬件的编码,一般是开发人员关注的

数据如果是内核态处理,速度相对较快.

iptables的过滤就是由内核态来进行控制

用户态:

指的是应用层软件层面,多是一些人为控制的一系列操作,使用功能

作为运维人员,我们只考虑用户态.

主打一个用

数据如果只通过用户态处理,速度是比较慢的

iptables配置与策略

四表五链

四表

raw表:用于控制数据包的状态,可以跟踪数据包的状态

mangle:可以用来修改数据包的头部信息

NAT表:网络地址转换,可以改变数据包的原地址和目的地址

filter表:也是iptables的默认表,不做申明,默认就是filter表,过滤数据包,控制数据包的进出,以及接受和拒绝数据包.

五链

PREROUTING链:处理数据包进入本机之前的规则(主要工作于nat表和mangle表)

INPUT链:处理数据包进入本机的规则(主要在filter表和nat表工作)

OUTPUT链:处理本机发出的数据包的规则,或者是数据包离开本机的规则(主要在nat表和mangle表工作)

FORWARD链:处理数据包转发到其他主机的规则,或者是否允许本机进行数据包转发(主要在filter表工作)

POSTROUTING链:处理数据包离开本机之后的规则(主要工作于nat表和mangle表)

表里有链,链里有规则

优先级

raw mangle nat filter

数据包进入防火墙先匹配raw表的规则

然后mangle的规则

nat表的规则

filter表规则


管理选项

在表的链中插入,增加,删除,查看规则.

匹配的条件:根据数据包的ip地址,端口,协议

控制类型:允许,拒绝,丢弃

注意事项

1.不指定表名,默认就是filter表

2.不指定链名,默认就是所有链(禁止默认链行为,会出事)

3.除非设置了链的默认策略,否则必须执行匹配条件(一般都是指定匹配条件)

4.选项,链名和控制类型都是大写,其余都是小写.

管理选项

-A 在链中添加一条规则,在链尾添加

-I 在链中指定位置插入一条规则

-P 指定链的默认规则,一般都是设置成拒绝(可改)

-D 删除规则

-R 修改规则(一般不用,且慎用)

-vnL v是显示详细信息,n以数字形式展示内容,L是查看

-line-numbers 显示规则的编号,一般是和查看一起使用

-F 清空链中的所有规则(慎用)

-X 清除自定义链的规则

匹配条件

-t 指定表名

-p 指定协议类型

-s 指定匹配的原ip地址

-d 指定匹配的目的ip地址

-i 指定数据包进入本机的网络设备(就是网卡)

-o 指定数据包离开本机的设备(也是网卡)

--sport 指定原端口

--dport 指定目的端口

-m multiport --sport 匹配多个源端口

-m multiport --dport 匹配多个目的端口

-m iprange --src-range 匹配多个源地址

-m iprange --dst-range 匹配多个目的地址

匹配原则

每个链中的规则都是从上倒下的顺序来进行一次匹配,匹配到之后不再向下匹配

如果链中没有规则,则执行链的默认策略进行处理

控制类型

-j

ACCEPT 允许数据包通过

DROP 直接丢弃数据包,没有任务回应信息

REJECT 拒绝数据包通过,数据包也会被丢弃,但是会有一个响应的信息.

SNAT 修改数据包的原地址

DNAT 修改数据包的目的地址

命令格式

iptables [-t 表名] 管理选项 链名(大写) 匹配条件 [-j 控制类型]
			#链		#协议
iptables -A INPUT -p icmp -j REJECT

实操

添加规则

#关闭默认防火墙,防止冲突
systemctl stop firewalld
#安装是为了方便控制
yum -y install iptables iptables-services
systemctl restart iptables
systemctl enable iptables.services
#不指定表名,只针对filter表

#列出默认表(filter表)防火墙规则
iptables -L
#列出默认表(filter表)防火墙规则详细信息以及行号
iptables -nvL --line-numbers

#清空规则
iptables -F

#拒绝所有其他主机ping本机
iptables -A INPUT -p icmp -j REJECT

#在INPUT表第一行插入一条允许ping通的规则
iptables -I	INPUT 1 -p icmp -j ACCEPT

iptables -F
#禁止20地址ping通10
iptables -A INPUT -s 192.168.118.20 -p icmp -j REJECT

iptables -F
#禁止多个ip地址ping通10
iptables -A INPUT -s 192.168.118.20,192.168.118.30 -p icmp -j REJECT

iptables -F
#指定端口拒绝
#协议在前,端口在后
#此命令会把xshell断开
iptables -A INPUT -p tcp --dport 22 -j REJECT

iptables -F
#拒绝被对方ip地址访问,端口访问,
#要ip地址在前,协议在中,端口在后
iptables -A INPUT -s 192.168.118.20 -p tcp --dport 22 -j REJECT

删除规则

#查看一下行数
iptables -vnL --line-number
iptables -D INPUT 3

修改规则

#先添加一条规则
iptables -A INPUT -s 192.168.118.20 -p tcp --dport 80 -j ACCEPT
iptables -vnL --line-number
#根据行数修改
iptables -R INPUT 1 -s 192.168.118.20 -p tcp --dport 80 -j REJECT

修改链的默认策略

(仅限于演示,闲着没事改它等死)

生产中的策略都是拒绝所有,允许个别

#整个INPUT链的默认策略改为拒绝
iptables -P INPUT DROP

iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT

网络设备如何指定

iptables -A INPUT -i ens33 -s 192.168.118.20 -p tcp --dport 80 -j REJECT

拒绝整个网段连接

iptables -A INPUT -s 192.168.118.0/24 -p tcp -j REJECT

一次性操作多个端口

yum -y install mariadb
systemctl restart mariadb.service
net
iptables -A INPUT -p tcp --dport 80:3306 -j REJECT

#-m使用拓展模块,可以一次性禁止多端口,还可以匹配ip范围,还可以指定mac地址
iptables -A INPUT -p tcp -m multiport --dport 80,22,21,53,3306 -j REJECT

#ip范围操作
iptables -A INPUT -m iprange --src-range 192.168.118.20-192.168.118.30 -p tcp --dport 80 -j REJECT



#-m multiport --sport	匹配多个源端口
#-m multiport --dport	匹配多个目的端口
#-m iprange --src-range	匹配多个源地址
#-m	iprange --dst-range	匹配多个目的地址



#iptables -A INPUT -m mac --mac-source 马克地址 -j DROP

#ip 协议 端口

策略永久保存

cat /sysconfig/iptables

iptables -A INPUT -p tcp --dport 80 -j ACCEPT

iptables -A INPUT -s 192.168.118.20 -p icmp -j REJECT

iptables -save > /opt/iptables.bak

cat /opt/iptables.bak > /etc/sysconfig/iptables

#iptables-restore < /opt/iptables.bak

cat /etc/sysconfig/iptables

自定义链

iptables -vnL
#自定义链
iptables -N xy
#重命名自义链
iptables -E	dn
#新增规则
iptables -t -I dn -p tcp -j ACCEPT

iptables -D dn 1
iptables -X dn

snat和dnat

snat 原地址转换

dnat 目的地址转换

内网--外网 内网ip转换成可以访问外网的ip

内网的多个主机可以使用一个有效的公网ip地址访问外部网络

外部用户可以通过一个公网地址访问服务内部的私网服务,也就是把私网的ip和公网的ip做一个映射.

实操

test1 192.168.118.10 nginx

test2 192.168.118.20 路由器转发数据,做地址转换

test3 192.168.118.30 nginx

#关闭三个机器的防火墙
systemct stop firewalld
#关闭安全机制
setenforece 0

test1

yum -y install nginx
systemctl restart nginx
curl 192.168.118.10
cd /etc/sysconfig/network-scripts/
ls
vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
DEVICE=ens33
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.118.10
NETMASK=255.255.255.0
GATEWAY=192.168.118.254
DNS1=218.2.135.1
DNS2=112.4.0.55
:wq
systemctl restart network
curl 12.0.0.100

test2

yum -y install iptable iptable-service
systemctl restart iptables.service
systemctl enable iptables.services
#虚拟机添加一张网卡
#查看是否添加了
ifconfig
cd /etc/sysconfig/network-scripts/
ls
vim ifcfg -ens33
TYPE=Ethernet
DEVICE=ens33
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.118.254
NETMASK=255.255.255.0
#GATEWAY=192.168.118.2
DNS1=218.2.135.1
DNS2=112.4.0.55
:wq

cp ifcfg-ens33 ifcfg-ens36
vim ifcfg-ens36
TYPE=Ethernet
DEVICE=ens36
ONBOOT=yes
BOOTPROTO=static
IPADDR=12.0.0.254
NETMASK=255.255.255.0
#GATEWAY=192.168.118.2
DNS1=218.2.135.1
DNS2=112.4.0.55
:wq

#linux内核参数的配置文件,内核优化都在这个配置文件当中设置
vim /etc/sysctl.conf
#打开路由器的转发功能
net.ipv4.ip_forward=1
:wq
#可以使内核参数的配置立刻生效
sysctl -p

#-t nat	指定表为nat表
#-A POSTROUTING	添加离开本机时
#-s	指定原ip
#-o	指定输出设备
#-j	SNAT 控制类型
#--to 指定整个网络192.168.118.0/24从ens36出去时,做源地址转,转换成10.0.0.10
iptables -t nat -A POSTROUTING -s 192.168.118.0/24 -o ens36 -j SNAT --to 10.0.0.10

#-d 11.0.0.11 指定做为目的地址转换的ip地址
#-i	从指定的设备进入本机
#-p	指定协议
#-dport	指定端口
#-j	DNAT 使用目的地址转换
#--to	
#外网想要访问内网的web服务,只需要访问11.0.0.11就可以访问内网的web服务
iptables -t nat -A PREROUTING -d 11.0.0.11 -i ens36 -p tcp --dport 80 -j DNAT --to 192.168.118.10:80

iptable -L
systemctl restart network

test3

yum -y install nginx
systemctl restart nginx
curl 192.168.118.30
cd /etc/sysconfig/network-scripts/
ls
vim ifcfg-ens33
TYPE=Ethernet
DEVICE=ens33
ONBOOT=yes
BOOTPROTO=static
IPADDR=12.0.0.100
NETMASK=255.255.255.0
GATEWAY=12.0.0.254
DNS1=218.2.135.1
DNS2=112.4.0.55
:wq
systemctl restart network

tail -f /var/log/nginx/access.log 

在linux中如何抓包

tcpdump就是linux自带的抓包工具(最小化安装时不带的,需要额外安装)

静态和动态

#tcp 指定抓包的协议,也可以不指定协议
#-i	只抓经过指定设备的包
#-t	不显示时间戳,可以不加
#-s0 抓完整的数据包
#-c 10 抓十个包
#dst port 指定抓包的目的端口
#src net 192.168.118.0/24	抓指定抓包的ip地址
#net 网段
#host 主机ip地址
#src 
tcpdump tcp -i ens33 -t -s0 -c 10 and dst port 80 and src net 192.168.118.0/24 -w /opt/target.cap

如果要用wireshark对数据包进行分析,tcpdump在抓包时,要使用-s0,抓取完整格式,否则wireshare不太行

Firewalld

centos7以前是iptables,7和7之后是firewalld

和iptables一样,都是包过滤

firewalld是按照区域来进行划分的

public 公共区域,默认配置了ssh以及DHCPv6预定服务是放通的,其他全部都是拒绝,默认区域

trusted 信任区域,默认允许所有的数据包放通

block 限制区域,拒绝所有

drop 丢弃区域

dmz 非军事区域,默认只允许ssh通过

home 家庭区域,默认只允许ssh通过

internal 内部区域,和home区一样

external 外部区域,一样也是只允许ssh通过,其他的全部拒绝

work 工作区域,默认放通ssh

firewall-cmd #命令行工具

firewall-cmd --list-all #查看所有

firewall-cmd --get-default-zone #查看当前系统的默认区域

firewall-cmd --set-default-zone=block #切换区域

firewall-cmd --list-Service #查看区域内允许访问的服务

复制代码
相关推荐
saynaihe1 分钟前
安全地使用 Docker 和 Systemctl 部署 Kafka 的综合指南
运维·安全·docker·容器·kafka
星河梦瑾12 分钟前
SpringBoot相关漏洞学习资料
java·经验分享·spring boot·安全
ldinvicible16 分钟前
How to run Flutter on an Embedded Device
linux
黑客Ela31 分钟前
对安全的认知
安全
Hacker_LaoYi42 分钟前
【漏洞分析】DDOS攻防分析(四)——TCP篇
网络·tcp/ip·ddos
爱吃水果蝙蝠汤42 分钟前
DATACOM-IP单播路由(BGP)-复习-实验
网络·网络协议·tcp/ip
YRr YRr1 小时前
解决Ubuntu 20.04上编译OpenCV 3.2时遇到的stdlib.h缺失错误
linux·opencv·ubuntu
认真学习的小雅兰.1 小时前
如何在Ubuntu上利用Docker和Cpolar实现Excalidraw公网访问高效绘图——“cpolar内网穿透”
linux·ubuntu·docker
zhou周大哥1 小时前
linux 安装 ffmpeg 视频转换
linux·运维·服务器
Sun_12_22 小时前
SQL注入(SQL lnjection Base)21
网络·数据库