目录
一、安全防御概述
1、常见的攻击手段
拒绝服务(DOS):通过大量访问请求使服务器资源耗尽,无法向正常用户处理请求连接。常见解决手段使用云服务商的流量清洗功能
口令破解:常用攻击手法俗称“跑字典”,常用解决方案设置登录错误次数限制
已知漏洞:通过已知漏洞进行数据获取或提权,常见解决手段定时更新防御性补丁
欺骗权限用户:又称社会工程学,通过欺骗权限用户得到授权资格的方式
2、常见的安全防御设备
基础类防火墙:主要实现包过滤防火墙
IDS 类防火墙:入侵检测系统,提供报告和事后监督为主
IPS 类防火墙:入侵防御系统,分析数据包内容,根据模式匹配去阻断非法访问
主动安全类防火墙:对特定服务类型进行专项防御,常见设备有waf、daf
二、基础类防护墙
1、何为防火墙?
工作在主机边缘或者网络边缘处对数据报文进行检测,并且能够根据事先定义好的规则,对数据报文进行相应处理的模块
2、防火墙的分类
结构
软件:iptables
硬件:深信服 、 网御 、 华为
工作机制
包过滤防火墙:源地址 目的地址 源端口 目标端口 连接状态
应用层防火墙:URL
模块
内核态:netfilter
用户态:iptables
3、Iptables 工作结构
4、Iptables 历经的构造变化
5、Iptables 相关原理
四表五链功能性介绍
规则链:承载防火墙规则
1)入站:INPUT
2)出站:OUTPUT
3)转发:FORWARD
4)路由前应用规则:修改目标地址 PREROUTING
5)路由后应用规则:修改源地址 POSTROUTING
规则表:承载防火墙链
1)raw:状态跟踪
2)mangle:标记 TTL
3)nat:实现地址转换
4)filter:过滤
防火墙链表结构
防火墙相关顺序
规则匹配顺序:由上至下,匹配即停止
表应用顺序:raw>mangle>nat>filter
链应用顺序
入站:PREROUTING>INPUT
出站:OUTPUT>POSTROUTING
转发:PREROUTING>FORWARD>POSTROUTING
④ 链表匹配顺序示意图
6、Iptables 语法规则
书写规则
语法构成:iptables [-t 表名] 选项 [链名] [条件] [-j 控制类型]
几个注意事项
- 不指定表名时,默认指filter表
- 不指定链名时,默认指表内的所有链
- 除非设置链的默认策略,否则必须指定匹配条件
- 选项、链名、控制类型使用大写字母,其余均为小写
常见动作类型
ACCEPT:允许通过
DROP:直接丢弃,不给出任何回应
REJECT:拒绝通过,必要时会给出提示
LOG:记录日志信息,然后传给下一条规则继续匹配
SNAT:修改数据包源地址
DNAT:修改数据包目的地址
REDIRECT:重定向
常见选项
配型类型分类
通用匹配
- 可直接使用,不依赖于其他条件或扩展
- 包括网络协议、IP地址、网络接口等条件
隐含匹配
- 要求以特定的协议匹配作为前提
- 包括端口、TCP标记、ICMP类型等条件
显式匹配
- 要求以“-m 扩展模块”的形式明确指出类型
- 包括多端口、MAC地址、IP范围、数据包状态等条件
通用匹配
常见的通用匹配条件
协议匹配:-p 协议名
地址匹配:-s 源地址、-d 目的地址
接口匹配:-i 入站网卡、-o 出站网卡
代码演示示例
iptables -A FORWARD -s 192.168.1.11 -j REJECT
iptables -I INPUT -s 10.20.30.0/24 -j DROP
iptables -I INPUT -p icmp -j DROP
iptables -A FORWARD -p ! icmp -j ACCEPT
iptables -A INPUT -i eth1 -s 172.16.0.0/12 -j DROP
隐含匹配
常用的隐含匹配条件
- 端口匹配:–sport 源端口、–dport 目的端口
- ICMP类型匹配:–icmp-type ICMP类型
代码演示示例
iptables -A FORWARD -s 192.168.4.0/24 -p udp --dport 53 -j ACCEPT
iptables -A INPUT -p tcp --dport 20:21 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 8 -j DROP
iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 3 -j ACCEPT
iptables -A INPUT -p icmp -j DROP
⑦ 显式匹配
常用的显式匹配条件
- 多端口匹配 - -m multiport --sport 源端口列表- -m multiport --dport 目的端口列表
- IP范围匹配 - -m iprange --src-range IP范围
- MAC地址匹配 - -m mac –mac1-source MAC地址
- 状态匹配 - -m state --state 连接状态
代码演示示例
iptables -A INPUT -p tcp -m multiport --dport 25,80,110,143 -j ACCEPT
iptables -A FORWARD -p tcp -m iprange --src-range 192.168.4.21-192.168.4.28 -j ACCEPT
iptables -A INPUT -m mac --mac-source 00:0c:29:c0:55:3f -j DROP
iptables -P INPUT DROP
iptables -I INPUT -p tcp -m multiport --dport 80-82,85 -j ACCEPT
iptables -I INPUT -p tcp -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
SNAT 规则
SNAT策略的典型应用环境:局域网主机共享单个公网IP地址接入Internet
SNAT策略的原理
- 源地址转换,Source Network Address Translation
- 修改数据包的源地址
SNAT 网络拓扑
启动 SNAT 转换代码记录
前提条件
- 局域网各主机正确设置IP地址/子网掩码
- 局域网各主机正确设置默认网关地址
- Linux网关支持IP路由转发
实现方法:编写SNAT转换规则
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 218.29.30.31
MASQUERADE —— 地址伪装
- 适用于外网 IP地址 非固定的情况
- 对于ADSL 拨号连接,接口通常为 ppp0、ppp1
- 将SNAT规则改为 MASQUERADE 即可
实现代码
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
DNAT 规则
DNAT策略的典型应用环境:在Internet中发布位于企业局域网内的服务器
DNAT策略的原理
- 目标地址转换,Destination Network Address Translation
- 修改数据包的目标地址
DNAT 网络拓扑
启动 DNAT 转换代码记录
前提条件
- 局域网的Web服务器能够访问Internet
- 网关的外网IP地址有正确的DNS解析记录
- Linux网关支持IP路由转发
实现方法:编写DNAT转换规则
# iptables -t nat -A PREROUTING -i eth0 -d 218.29.30.31 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.6
常见 Iptables 相关命令(补充)
导出(备份)规则:iptables-save工具,可结合重定向输出保存到指定文件
导入(还原)规则:iptables-restore工具,可结合重定向输入指定规则来源
iptables服务
- 脚本位置:/etc/init.d/iptables
- 规则文件位置:/etc/sysconfig/iptables
设置iptables开机启动
- chkconfig iptables on
- chkconfig iptables off
即时启动iptables:service iptables start
即时关闭iptables:service iptables stop
防火墙规则只在计算机处于开启状态时才有效。如果系统被重新引导,这些规则就会自动被清除并重设。要保存规则以便今,请使用以下命令:后载入
sbin/service iptables save
保存在 /etc/sysconfig/iptables 文件中的规则会在服务启动或重新启动时(包括机器被重新引导时)被应用
Centos7 使用 Iptables 为 netfilter 应用层工具
rpm -e --nodeps firewalld
yum -y install iptables-services
systemctl start iptables
systemctl enable iptables
常用 Iptables 配置脚本分享
#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
function support_distro(){
if [ -z “egrep -i “centos” /etc/issue
” ];then
echo “Sorry,iptables script only support centos system now.”
exit 1
fi
}
support_distro
echo “iptables configure================”
Only support CentOS system
获取SSH端口
if grep “^Port” /etc/ssh/sshd_config>/dev/null;then
sshdport=grep “^Port” /etc/ssh/sshd_config | sed “s/Port\s//g”
else
sshdport=22
fi
获取DNS服务器IP
if [ -s /etc/resolv.conf ];then
nameserver1=cat /etc/resolv.conf |grep nameserver |awk ‘NR==1{print $2 }’
nameserver2=cat /etc/resolv.conf |grep nameserver |awk ‘NR==2{print $2 }’
fi
IPT=“/sbin/iptables”
删除已有规则
$IPT --delete-chain
$IPT --flush
禁止进,允许出,允许回环网卡
$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT ACCEPT
$IPT -A INPUT -i lo -j ACCEPT
允许已建立的或相关连接的通行
$IPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPT -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
限制80端口单个IP的最大连接数为10
$IPT -I INPUT -p tcp --dport 80 -m connlimit --connlimit-above 10 -j DROP
允许80(HTTP)/873(RSYNC)/443(HTTPS)/20,21(FTP)/25(SMTP)端口的连接
$IPT -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
$IPT -A INPUT -p tcp -m tcp --dport 873 -j ACCEPT
$IPT -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
$IPT -A INPUT -p tcp -m tcp --dport 20 -j ACCEPT
$IPT -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
$IPT -A INPUT -p tcp -m tcp --dport 25 -j ACCEPT
允许SSH端口的连接,脚本自动侦测目前的SSH端口,否则默认为22端口
$IPT -A INPUT -p tcp -m tcp --dport $sshdport -j ACCEPT
允许ping
$IPT -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
$IPT -A INPUT -p icmp -m icmp --icmp-type 11 -j ACCEPT
允许DNS
[ ! -z “$nameserver1” ] && $IPT -A OUTPUT -p udp -m udp -d $nameserver1 --dport 53 -j ACCEPT
[ ! -z “$nameserver2” ] && $IPT -A OUTPUT -p udp -m udp -d $nameserver2 --dport 53 -j ACCEPT
保存规则并重启IPTABLES
service iptables save
service iptables restart
echo “iptables configure completed================”
三、SELinux
1、Selinux 前世今生
Linux 安全性与 Windows 在不开启防御措施时一致,为 C2 级别
创造者:美国国家安全局(NationalSecurityAgency,简写为NSA)
Selinux 实现模型
Selinux 在 Linux 中的地位变化
- 2.2 需要手动加载的一个外部模块
- 2.4 直接写到内核的一个模块
- 2.6 成为了一部分Linux发行版的内核的一部分
特性:提高了Linux系统内部的安全等级,对于进程和用户只赋予最小权限,并且防止了权限升级,即使受到攻击,进程或者用户权限被夺去,也不会对整个系统造成重大影响
Selinux 原理漫画解释
2、安全上下文
安全上下文的定义
所有操作系统访问控制都是以关联的客体和主体的某种类型的访问控制属性为基础的。在SELinux中,访问控制属性叫做安全上下文。所有客体(文件、进程间通讯通道、套接字、网络主机等)和主体(进程)都有与其关联的安全上下文,一个安全上下文由三部分组成:用户、角色和类型标识符。常常用下面的格式指定或显示安全上下文:
用户:角色:类型
相关配置命令
chcon [-R] [-t type] [-u user] [-r role] 文件
-R :连同该目录下的次目录也同时修改;
-t :后面接安全性本文的类型字段!
-u :后面接身份识别,例如 system_u;
-r :后面接角色,例如 system_r;
restorecon 还原成原有的SELinux type
格式:restorecon [-Rv] 档案或目录
-R :连同次目录一起修改;
-v :将过程显示到屏幕上
3、Selinux 布尔值
解释说明
Managing Boole(管理SElinux布尔值):SEliux布尔值就相当于一个开关,精确控制SElinux对某个服务的某个选项的保护,比如samba服务
布尔值配置命令
getsebool -a # 命令列出系统中可用的SELinux布尔值。
setsebool # 命令用来改变SELinux布尔值
案例
setsebool –p samba_enable_home_dirs=1 # 开启家目录是否能访问的控制
相关配置命令
chcon [-R] [-t type] [-u user] [-r role] 文件
-R :连同该目录下的次目录也同时修改;
-t :后面接安全性本文的类型字段!
-u :后面接身份识别,例如 system_u;
-r :后面接角色,例如 system_r;
restorecon 还原成原有的SELinux type
格式:restorecon [-Rv] 档案或目录
-R :连同次目录一起修改;
-v :将过程显示到屏幕上
3、Selinux 布尔值
解释说明
Managing Boole(管理SElinux布尔值):SEliux布尔值就相当于一个开关,精确控制SElinux对某个服务的某个选项的保护,比如samba服务
[外链图片转存中…(img-oZqNBWRF-1710336056609)]
布尔值配置命令
getsebool -a # 命令列出系统中可用的SELinux布尔值。
setsebool # 命令用来改变SELinux布尔值
案例
setsebool –p samba_enable_home_dirs=1 # 开启家目录是否能访问的控制
版权归原作者 心飞为你飞 所有, 如有侵权,请联系我们删除。