安全防御

一、安全防御概述

1. 常见的攻击手段

拒绝服务(DOS):通过大量访问请求使服务器资源耗尽,无法向正常用户处理请求连接。常见解决手段使用云服务商的流量清洗功能。

口令破解:常用攻击手法俗称“跑字典”,常用解决方案设置登录错误次数限制

已知漏洞:通过已知漏洞进行数据获取或提权,常见解决手段定时更新防御性补丁

欺骗权限用户:又称社会工程学,通过欺骗权限用户得到授权资格的方式

2. 常见的安全防御设备

基础类防火墙:主要实现包过滤防火

DS类防火墙:入侵检测系统,提供报告和事后监督为主

IPS类防火墙:入侵防御系统,分析数据包内容,根据模式匹配去阻断非法访问

主动安全类防火墙:对特定服务类型进行专项防御,常见设备有waf、daf

二、基础类防火墙

1. 什么是防火墙

  工作在主机边缘或者网络边缘处对数据报文进行检测,并且能够根据事先定义好的规则,对数据报文进行相应处理的模块。

2. 防火墙的分类

结构

  软件:iptables、firewalld

  硬件:华为、网御

工作机制

  包过滤防火墙:源地址  目的地址  源端口  目标端口  连接状态

  应用层防火墙:URL

模块

  内核态:netfilter

  用户态:iptables、firewalld

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 语法规则

6.1 书写规则

iptables [-t 表名]  选项 [链名] [条件] [-j 控制类型]

注意事项:

1. 不指定表名时,默认指filter 表
2. 不指定链名时,默认指表内的所有链
3. 除非设置链的默认策略,否则必须指定匹配条件
4. 选项、链名、控制类型使用大写字母,其余均为小写

6.2 常见动作类型

ACCEPT:允许通过
DROP:直接丢弃,不给出任何回应
REJECT:拒绝通过,必要时给出提示
LOG:记录日志信息,然后传给下一条规则继续匹配
SNAT:修改数据包源地址
DNAT:修改数据包目的地址
REDIRECT:重定向

6.3 常见选项

6.4 配型类型分类

通用匹配

  可直接使用,不依赖于其他条件或扩展

  包括网络协议、IP地址。网络接口等条件

隐含匹配

  要求以特定的协议匹配作为前提

  包括端口、TCP标记、ICMP类型等条件

显式匹配

  要求以"-m 扩展模块"的形式明确指出类型

  包括多端口、MAC地址、IP范围、数据包状态等条件

6.4.1 通用匹配

常见的通用匹配条件

协议匹配:-p 协议名

地址匹配:-s 源地址、-d 目的地址

接口匹配:-i 入站网卡、-o 出站网卡

示例

# iptables -A FORWARD -s 192.168.1.101 -jREJECT
# 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 ens33 -s 192.168.0.0/12 -j DROP

6.4.2 隐含匹配

常见的隐含匹配条件

端口匹配:--sport 源端口、--dport 目的端口

ICMP类型匹配:--icmp-type ICMP类型

示例

# iptables -A FORWARD -s 192.168.160.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

6.4.3 显式匹配

常见显式匹配条件

多端口匹配

  -m multiport --sport 源端口列表

  -m multiport --dport 目标端口列表

IP范围匹配

  -m iprange --src-range IP范围

MAC地址匹配

  -m mac --mac-source MAC地址

状态匹配

  -m state --state 连接状态

示例

# iptables -A INPUT -p tcp -m multiport --dport 25,80,110,443 -j ACCEPT
# iptables -A FORWARD -p tcp -m iprange --src-range 192.168.80.131-192.168.80.134 -j ACCEPT
# iptables -A INPUT -m mac --mac-source 00:0c:29:91:26:ef -j DROP
# iptables -P INPUT DROP
# iptables -I INPUT -p tcp -m multiport --dport 80-88,8080 -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.160.0/24 -o ens33 -j SNAT --to-source 192.168.80.133

MASQUERADE-- 地址伪装

  适合于外网IP地址非固定的情况

  对于ADSL拨号连接,接口通常为ppp0、ppp1

  将SNAT 规则改为 MASQUERADE 即可

实现

# iptables -t nat -A POSTROUTING -s 192.168.160.0/24 -o ens33 -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 ens33 -d 218.29.30.31 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.6

# iptables -t nat -A PREROUTING -i ens33 -d 192.168.80.133 -p tcp --dport 80 -j DNAT --to-destination 192.168.160.134 

常见的iptables 相关命令

导出(备份)规则:iptables-save 工具,可结合重定向输出保存到指定文件

导入(还原)规则:iptables-restore 工具。可结合重定向输入指定规则来源

规则永久生效:

iptables save

centos7 使用iptables

# 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."
        exit1
    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}'`
    nameserver1=`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
systemctl restart iptables

echo"============================iptables configure completed============================================"

猜你喜欢

转载自www.cnblogs.com/sswind/p/12167867.html