1.主动信息收集
发现目标主机的过程
1.识别存活主机,发现潜在目标
2.输出ip地址列表和范围
3.使用二三四层进行探测发现
2.ping命令
ping命令可以判断两台主机之间是否畅通
ping ip -c 1
只发送一个数据包
traceroute www.baidu.com
路由跟踪 看到达指定站点经过了多少中转站点
ARPING命令
ARP协议:ARP协议可以将ip地址转换为Mac地址(广播请求,单播回应)
arp -a
查看arp缓存
出网关就是路由,内网有Mac地址
arping 返回的是Mac地址,如果返回的数据包Mac地址存在两个不同的Mac地址,证明存在两个冲突的ip地址
3.netdiscover工具
netdiscover是一个主动/被动的arp侦查工具,使用netdiscover工具可以在网络上扫描IP地址,检查在线主机或为他们发送arp请求
netdiscover -i eth0 -r 192.168.1.0/24
主动扫描内网存活主机
-i 指定接口 eth0 Kali的网卡 -r 指定网段
netdiscover -p
被动扫描
4.FPING查看局域网中运行了哪些机器
fping就是ping命令的加强版,fping可以对一个ip段进行扫描,而ping命令本身是不可以对网段进行扫描的
fping -ag 192.168.1.0/24 > fping.txt
a表示存活 g表示对网段进行扫描,并且把结果写入到fping.txt这个文件中
cat fping.txt
打开文件
fping www.baidu.com
查看外网是否存活
fping -ag 61.147.211.0/24 > a.txt
扫描网站的C段
5.TCP/IP协议(三次握手,四次挥手)
ACK:连接建立后所有发送的报文的ack必须为1
SYN:当SYN=1 ACK=0时表名这是一个连接请求报文。若对方同意连接则在响应报文内使SYN=1 ACK=1 因此SYN=1表示这是一个连接请求或连接接受报文(synchronization 同步)
FIN:当FIN=1时表明报文段发送方的数据已经发送完毕,并要求释放连接
三次握手
SYN=1 ACK=0
SYN=1 ACK=1
ACK=1
四次挥手
FIN=1
ACK=1
FIN=1
ACK=1
6.Tcpdump抓包查看三次握手过程
tcpdump参数
-c 指定抓取的数据包数量
-n 对ip地址以数据方式显示,否则显示为主机名
port 指定端口
- l 指定tcpdump需要监听的接口,默认会抓取第一个网络接口
- S 显示绝对序列
tcpdump -n -c 3 port 22 -i eth0 -S
ping和ssh的区别:ping是发送数据包,ssh是建立链接
win10查看本地建立连接:netstat -an
7.基于Nmap的扫描方式
nmap就是network mapper,是最早的Linux下的网络扫描和嗅探工具包
namp -sn 192.168.1.0/24 > x.txt /sn只ping,不进行端口扫描
cat x.txt,
namp -sS www.12306.cn -n 80,90,500-600 /namp半连接扫描,指定端口80,90,500-600
namp www.12306.cn /默认半连接扫描,TCP端口
namp www.12306.cn -sT /全连接扫描,TCP端口
namp www.12306.cn -sU /扫描UDP端口
8.nc扫描端口
nc -nv -w 1 -z 192.168.1.1 1-200 /扫描192.168.1.1的端口超时一秒,-w扫描端口
9.SYN洪水攻击与DDOS攻击防御手段
SYN洪水攻击源于TCP协议的三次握手机制,如果服务器收不到客户端的ack包,服务器就需要耗费一定数量的系统内存来等待这个决定,直至等待超时关闭,才能释放内存
9.1 hping3(SYN洪水攻击)
hping 3是一个命令行下使用的TCP/IP数据包组装和分析工具,通常web服务会用压力测试使用,也可以进行DOS攻击的实验。hping3每次只能扫描一个目标。
centos
yum install -y httpd /安装web服务
systemctl start httpd /启动web服务
netstat -antup | grep : 80 /查看80端口服务
Kali
hping3 -c 10000 -d 120 -S -p 80 -flood --rand-source 192.168.1.1
-c 发送多少个数据包
-d 每个数据包多大
-S 发送SYN数据包,连接请求
-p 攻击的目标端口
--flood 洪水式的攻击
--rand-source 192.168.1.1 伪造源ip地址
9.2防御DDOS攻击
DDOS攻击:分布式拒绝服务攻击是指处于不同位置的多个攻击者同时向一个目标或数个目标发动攻击,或者一个攻击者控制了位于不同位置的多台机器并利用这些机器对受害者进行攻击
优化参数防御(软防)
优化Linux内核参数提升SYN
net.ipv4.tcp_syncookies = 1
#打开SYN cookies 功能,该功能可以把尽量过多的SYN请求缓存起来
net.ipv4.tcp_max_syn_backlog = 262144
#定义backlog队列能容纳的最大半连接数,centos中默认值为256,是远远不够的
net.ipv4.tcp synack retries = 1
#表示收到SYN 后发送SYN+ACK 的重传次数,默认为5表示重试5次,而每次重试的间隔会翻倍。1、2、4、
8、16 秒,最后一次重试后等待 32 秒,若仍然没有收到 ACK,才会关闭连接,故共需要等待 63秒。日常中这
个值推荐设置为2秒,目前网络环境延迟没有以前那么高所以2秒可以满足日常使用,攻击比较多的时候可适当
为 1 秒
net.core.somaxconn = 65535
#上面所提到的 backlog 队列实际上受限于系统级的队列上限,通过修改 net.core.somaxconn 来提高系统队列
上限。
ss命令概述(centos)
ss是socket statistics 的缩写,用来获取socket统计信息,他可以显示和netstat 的类似内容。ss的优势在于它能够显示更多详细的有关tcp和链接状态的信息,比netstat更快速更加高效
ss -lnt
l 表示监听状态
n 不解析服务的名称
t 显示tcp的连接
u 显示udp的连接
修改服务队列长度
应用的队列长度和系统队列长度修改 HTTPD 服务的队列长度,每个应用会有自己默认的队列长度取最小值。所以修改服务配置。默认 HTTPD 服务队列长度是128。
echo "ListenBacklog 2048" >> /etc/httpd/conf.modules.d/00.-mpm.conf
systemctl restart httpd
拒绝单个ip的访问(centos内)
iptables -A INPUT -s 192.168.1.1 -j DROP /添加命令拒绝单个ip
iptables -D INPUT -s 192.168.1.1 -j DROP /删除上条命令