安全技术和防火墙

ZYC·2023-11-29 19:30·14 次阅读

安全技术和防火墙

安全技术

入侵检测系统 :特点是不阻断任何网络访问 (旁落部署...监控)

入侵防御系统 (拒绝服务攻击,被攻击立即阻断)

防火墙 (隔离功能 外网内网)

waf 应用防护系统 工作在应用层 (web)

防水墙 :防止里面出去 (给代码加密)

 

防火墙

分类#

按保护范围划分#

主机防火墙 :为当前主机提供服务

网络防火墙 :为防火墙一侧的局域网提供服务

按实现方式划分#

硬件防火墙 :在专用硬件级别实现部分功能的防火墙,另一个部分功能基于软件实现

软件防火墙 :运行于通用硬件平台之上的防火墙的应用软件,Windows 防火墙 ISA --> Forefront

按网络协议划分#

网络层防火墙 :OSI模型下四层,又称为包过滤防火墙

应用层防火墙 :proxy 代理网关,OSI模型七层 控制真实数据

 

数据包#

mac头部 IP头部  协议/端口  7层协议(http)  真实数据    校验位

 

防火墙 -------> 收包   拆包    检查    没问题装包发送     有问题隔离/丢弃

 

正向代理 :FQ 代理的是客户端

绕开防火墙限制

加快访问速度

反向代理 :代理的是服务端

负载均衡

 

防火墙工具#

iptables    firewalld     nft

 

netfilter#

Linux防火墙是由Netfilter组件提供的,Netfilter工作在内核空间,集成在linux内核中

iptables#

由软件包iptables提供的命令行工具,工作在用户空间,用来编写规则,写好的规则被送往netfilter,告

诉内核如何去处理信息包

firewalld#

从CentOS 7 版开始引入了新的前端管理工具

nftables#

是CentOS 8 新特性

 

 

netfilter 中五个勾子函数和报文流向#

四表五链#

五链 (规则链)

规则的作用:对数据包进行过滤或处理

链的作用:容纳各种防火墙规则

链的分类依据:处理数据包的不同时机

 

prerouting :路由选择前

postrouting :路由选择后

input :进入本机 (进入本机的流量)

output :出本机 (出本机的流量)

forward :转发 (转发数据包)

大写

 

三种报文流向

流入本机:PREROUTING --> INPUT-->用户空间进程(访问我的服务)

流出本机:用户空间进程 -->OUTPUT--> POSTROUTING(穿过我)

转发:PREROUTING --> FORWARD --> POSTROUTING(分摊流量)

 

选择合理的 链做规则

表的作用 存放连

链决定了 在什么地方控制流量

表中有链 链中有规则

 

四 表 (规则表)

表的作用:容纳各种谷子额链

表的划分依据:防火墙规则的作用相似

 

raw表:确定是否对该数据包进行状态跟踪 (跟踪)跟踪数据包

mangle表:为数据包设置标记 (标记) 标记优先级

nat表:修改数据包中的源,目标IP地址或端口 (地址转换

filter表:确定是否放行该数据包(过滤常用 流量过滤

 

security 表:用于强制访问控制(MAC)网络规则,由Linux安全模块(如SELinux)实现 (不常用省去

 

 

实际操作#

rpm -q iptables 有无安装

用之前先关防火墙

 

基本语法#

iptables (选项)-t 指定表 子命令 指定链 规则

默认filter 表   如需使用其他表用 -t

 

查看 iptables 的规则列表

 

iptabled -v(详细) n (数字) L (L一定在最后面 【防火墙列表】)

 

复制代码
iptables  -t  filter  -A INPUT  -s 192.168.19.26 -j DROP    #拒绝19.26的全部规则

DROP   #已读不回
REJECT #拒绝
ACCEPT  #允许

iptables  -vnL ---line-num

iptables -I  INPUT 1 -s 192.168.19.26

添加规则
-A  #在末尾追加策略
 iptables  -A  INPUT    -s  192.168.19.0/24   -j  ACCEPT  或 DROP 或 REJECT
-I  #在指定链中插入一条新的,未指定序号默认作为第一条    iptables -I INPUT  (操作)
iptables - I INPUT 2 -s 192.168.19.0/24 -j ACCEPT

修改默认规则
-P  #修改默认策略    iptables -P  OUTPUT ACCEPT   (操作)
iptables  -P    INPUT     DROP

iptables  -P    INPUT     ACCEPT

-F  #清空策略

删除规则
-D  #(删除)     链  规则序号
iptables   -t  filter  -D  INPUT  2  #删除  filter  表中 INPUT 链中的第2跳规则

-R # 替换策略
iptables -R INPUT 1 -s 192.168.19.1 -j ACCEPT

iptables -P INPUT DROP

iptables -P INPUT ACCEPT

复制代码

 

 

黑名单 :默认允许所有

白名单 :默认拒绝所有 只允许特定的人访问 (安全性高)

 

跳转#

DROP :丢弃

REJECT :拒绝

ACCEPT :允许

LOG 日志 添加备注

SNAT :源地址转换

DNAT :目的地址转换

 

规则#

通用匹配#

复制代码
-s  #源地址
-d  #目的地址
--sport  #匹配报文源端口,可为端口连续范围
--dport  #匹配报文目标端口,可为连续范围
-p  #tcp / udp / icmp
-i  #进口网卡
-o  #出口网卡

iptables  -A INPUT   -s 192.168.19.26  -j DROP  #禁止26服务器访问


iptables  -A INPUT   -s 192.168.19.26 -p icmp -j DROP
#禁止26服务器ping我

iptables  -A INPUT   -s 192.168.19.26 -p tcp --
dport 80 -j DROP
#禁止26服务器 访问80端口

iptables  -A INPUT   -i lo  -j  ACCEPT
#在INPUT 添加个 lo的规则,允许lo回环里的可以访问我
复制代码

 

通用匹配 没有指明模块  ,由iptables/netfilter 自行提供

模块匹配 -m 指定模块

 

ICMP  扩展   禁止别的主机访问我,我却可以访问别的主机#

 #

 #别的主机访问我,进 8  出0。 将它进来8给禁止掉。 我依然可以ping通26主机

 #别的主机无法访问我

 

 

指定26主机无法访问我,别的主机可以#

 

 #26主机无法访问27主机

 

 #25主机可以访问27主机

 

显示 扩展模块#

显示扩展即必须使用-m选项指明要调用的扩展模块名称,需要手动加载扩展模块

[-m matchname [per-match-options]]

 

multiport 扩展 混合端口#

以离散方式定义多端口匹配,最多指定15个端口

 #禁止26主机访问我的22,80端口

 #无法访问

 

iprange 扩展#

指明连续的(但一般不是整个网络)IP地址范围

 #拒绝 26,27,28 主机访问25主机

 

 

 #26,27,28主机无法访问25主机

 

mac地址#

mac 模块可以指明源MAC地址,,适用于:PREROUTING, FORWARD,INPUT chains

-m   mac    [!] --mac-source XX:XX:XX:XX:XX:XX

 

拒绝我指定的mac地址的主机访问我#

 

 #拒绝 26主机的mac地址

 #26主机无法访问25主机

 

string 字符串#

mac 22字节    IP 20字节    tcp 20字节   

对报文中的应用层数据做字符串模式匹配检测

复制代码
--algo {bm|kmp} 字符串匹配检测算法
 bm:Boyer-Moore           算法
 kmp:Knuth-Pratt-Morris   算法

--from offset 开始查询的地方
--to offset   结束查询的地方


[!] --string pattern 要检测的字符串模式
[!] --hex-string pattern要检测字符串模式,16进制格式
复制代码

 

 

 

 

 

 #自建baidu网页

 

 

#自键golege网页

 

 #开启httpd

 #都可访问

 

 #62前面由62个字节  IP20字节,tcp20个字节,mac22个字节。 查看这个数据包里的真实数据,有无golege字节,有久拒绝掉。

 

 #无法访问 golege网页。

 

time 模块#

不要使用本地时间 使用美国时间

复制代码
--datestart YYYY[-MM[-DD[Thh[:mm[:ss]]]]] 日期
--datestop YYYY[-MM[-DD[Thh[:mm[:ss]]]]]
--timestart hh:mm[:ss]       时间
--timestop hh:mm[:ss]
[!] --monthdays day[,day...]   每个月的几号
[!] --weekdays day[,day...]   星期几,17 分别表示星期一到星期日
--kerneltz:内核时区(当地时间),不建议使用,CentOS 7版本以上系统默认为 UTC
注意: centos6 不支持kerneltz ,--localtz指定本地时区(默认)

man iptables-extensions
复制代码

 

 #UTC 时间 是10.33.   10:00  到 12:00 拒绝访问。 (包括自己)

 #xshell 断开连接

 #26主机无法访问

 

state  模块#

- NEW:新发出请求;连接追踪信息库中不存在此连接的相关信息条目,因此,将其识别为第一次发出的请求
- ESTABLISHED:NEW状态之后,连接追踪信息库中为其建立的条目失效之前期间内所进行的通信状态
- RELATED:新发起的但与已有连接相关联的连接,如:ftp协议中的数据连接与命令连接之间的关系
- INVALID:无效的连接,如flag标记不正确
- UNTRACKED:未进行追踪的连接,如:raw表中关闭追踪

 

 #允许就用户访问,新用户无法访问

 #旧主机依旧还在访问

 #新主机无法访问

 #自己也无法访问

 

limit#

限制流量

 #现在26主机正常访问25主机一秒一个

#前5个不限制,一分钟通过10个包

 #禁止其他主机访问

 #前5个包不限制,几乎十个包成功ping通一次。

 

posted @   citywalk  阅读(14)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示
目录