Linux云计算 |【第二阶段】SECURITY-DAY4

主要内容:

Kali系统、扫描与抓包、Nginx安全加固、Linux基本防护

补充:使用Curl命令查看网页头部信息和页面内容

不加选项,默认查看网页的内容;

  • [ -I ] 选项:访问服务器页面时,显示HTTP的头部信息;
  • [ -i ] 选项:访问服务器页面时,显示HTTP的头部信息和网页内容;
  • [ -X ] 选项:指定请求服务器的方法;(GET、HEAD、POST、DELETE、PUT)

一、Kail系统概述

Kali Linux系统可以说是在安全测试方面最好的开箱即用的 Linux 发行版,Kali 下的很多工具软件都可以安装在大多数的 Linux 发行版中,Offensive Security 团队在 Kali 系统的开发过程中投入大量的时间精力来完善这个用于渗透测试和安全审计的 Linux 发行版;Kali Linux是基于Debian的面向安全的发行版本。该系统预安装了上百个知名的安全工具软件(渗透测试、安全监测、密码安全、反向工程等)

官网:https://www.kali.org/(提供image镜像下载、VMware下载)

准备实验环境:

1)初始化kali虚拟机

[root@localhost 桌面]# kali reset    //初始化虚拟机
kali reset OK.
该虚拟机系统用户名为:kali,密码为:kali
[root@localhost 桌面]# virt-manager   //打开kvm虚拟机管理器,打开kali虚拟机

补充:Debian、Ubuntu等Linux系统,没有root超级管理员,已提前设置sudo指令;

2)修改虚拟网卡配置(网络源选择"private1:隔离网络")

3)设置kali虚拟机IP地址

bash 复制代码
┌──(kali㉿kali)-[~]
└─$ ip address show     //查看IP信息
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 52:54:00:39:79:a3 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::5054:ff:fe39:79a3/64 scope link noprefixroute
       valid_lft forever preferred_lft forever                                                                         

┌──(kali㉿kali)-[~]
└─$ nmcli connection show    //查看网卡连接信息(设备名Wired connection 1)
NAME                UUID                                  TYPE      DEVICE
Wired connection 1  ee7655c4-89ae-4dbd-a2a2-45b89056b62e  ethernet  eth0   

┌──(kali㉿kali)-[~]
└─$ sudo nmcli connection modify "Wired connection 1" ipv4.method manual ipv4.address 192.168.4.40/24 connection.autoconnect yes    //修改网卡IP地址
[sudo] kali 的密码:

┌──(kali㉿kali)-[~]
└─$ sudo nmcli connection up "Wired connection 1"    //激活网卡

4)制作靶机(node1为例,192.168.4.5)

靶机:模拟作为攻击目标的主机

bash 复制代码
[root@node1 ~]# nmcli connection modify eth0 ipv4.addresses 192.168.4.5/24 connection.autoconnect yes
[root@node1 ~]# nmcli connection up eth0
[root@node1 ~]# ip address show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 52:54:00:64:8c:9b brd ff:ff:ff:ff:ff:ff
    inet 192.168.4.5/24 brd 192.168.4.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::4e05:6024:b6dc:a6c5/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

二、安全分析概述

1)攻击事件:

网络攻击事件是指通过网络或其他技术手段,利用信息系统的配置缺陷、协议缺陷、程序缺陷或使用暴力攻击对信息系统实施攻击,并造成信息系统异常或对信息系统当前运行造成潜在危害的信息安全事件。 网络攻击事件包括拒绝服务攻击事件、后门攻击事件、漏洞攻击事件、网络扫描窃听事件、网络钓鱼事件、干扰事件和其他网络攻击事件等7个子类;

  • ① 拒绝服务

拒绝服务攻击事件(DOSAI)是指利用信息系统缺陷、或通过暴力攻击的手段,以大量消耗信息系统的CPU、内存、磁盘空间或网络带宽等资源,从而影响信息系统正常运行为目的的信息安全事件;

  • ② 后门攻击

后门攻击(BDAI)是指利用软件系统、硬件系统设计过程中留下的后门或有害程序所设置的后门而对信息系统实施的攻击的信息安全事件;

  • ③ 漏洞攻击

漏洞攻击事件(VAI)是指除拒绝服务攻击事件和后门攻击事件之外,利用信息系统配置缺陷、协议缺陷、程序缺陷等漏洞,对信息系统实施攻击的信息安全事件;

  • ④ 网络窃听

网络扫描窃听事件(NSEI)是指利用网络扫描或窃听软件,获取信息系统网络配置、端口、服务、存在的脆弱性等特征而导致的信息安全事件;

  • ⑤ 网络钓鱼

网络钓鱼事件(PI)是指利用欺骗性的计算机网络技术,使用户泄漏重要信息而导致的信息安全事件。例如,利用欺骗性电子邮件获取用户银行帐号密码等;

  • ⑥ 干扰事件

干扰事件(II)是指通过技术手段对网络进行干扰,或对广播电视有线或无线传输网络进行插播,对卫星广播电视信号非法攻击等导致的信息安全事件;

  • ⑦ 其他攻击

其他网络攻击事件(ONAI)是指不能被包含在以上6个子类之中的网络攻击事件。


**扩展:**2019年网络安全事件回顾(国内篇)

  • 京东金融APP被曝获取用户隐私

  • 抖音千万级账号遭撞库攻击,牟利百万黑客被捕

...

链接:https://www.freebuf.com/geek/226829.html


2)扫描:

以获取一些公开/非公开信息为目的,例如:检测潜在的风险、查找可攻击目标、收集设备/主机/系统/软件信息、发现可利用的安全漏洞;

典型的扫描方式:

  • Scan,主动探测
  • Sniff,被动监听/嗅探
  • Capture,数据包捕获(抓包)

常见的安全分析工具:

  • 扫描器:NMAP
  • 协议分析:tcpdump、WireShark

三、NMAP安全扫描工具

NMAP(Network Mapper)是一款开放源代码的网络探测和安全审核的工具。用于发现计算机网络上的主机和服务,从而创建网络的"映射"。为了实现其目标,Nmap将特定数据包发送到目标主机,然后分析响应(网络探测、网络渗透工具)

NMAP的功能包括:

  • ① 主机发现,识别网络上的主机。例如列出响应TCP或ICMP请求或打开特定端口的主机;
  • ② 端口扫描,枚举目标主机上的开放端口;
  • ③ 版本检测,询问远程设备上的网络服务以确定应用程序名称和版本号;
  • ④ OS检测,确定网络设备的操作系统和硬件特性;
  • ⑤ 可与脚本进行脚本交互,使用Nmap脚本引擎(NSE)和Lua编程语言。

1)NMAP基本用法

格式:nmap [扫描类型] [选项]

常用的扫描类型:

  • [-sS] TCP 半开扫描(syn、syn+ack)
  • [-sT] TCP全开扫描(syn、syn+ack、ack) //(不选择类型,默认-sT)
  • [-sU] UDP扫描
  • [-sP] ICMP扫描
  • [-A] 目标系统全面分析

常用选项:

[-n] 不执行DNS解析

[-p] 指定查看服务端口

补充:-sS与-sT区别

① 两种NMAP扫描类型的扫描结果相同,主要扫描主机、端口、TPC服务信息等;

② -sS半开扫描基于"TCP三次握手"中的前两次连接(客户端发syn、服务端回应syn+ack),则完成一次扫描;-sT全开扫描基于"TCP三次握手"中的完整连接(客户端发syn、服务端回应syn+ack、客户端再回应ack);

③ -sS半开扫描耗时短,能快速了解服务状态是否启动,但由于不回应ack确认,容易被服务端判断为攻击对象;


案例:NMAP扫描与tcpdump抓包分析

案例要求:熟悉Linux主机环境下的常用安全工具,完成以下任务操作:

  • 1)使用nmap扫描来获取指定主机/网段的相关信息
  • 2)使用nmap执行脚本扫描(NSE脚本引擎)
  • 3)使用tcpdump分析FTP访问中的明文交换信息
练习1:使用NMAP扫描来获取指定主机/网段的相关信息(Kali虚拟机)

1)使用-sP扫描类型(ICMP),扫描192.168.4.5主机是否可以ping通

bash 复制代码
┌──(kali㉿kali)-[~]
└─$ sudo nmap -sP 192.168.4.5
[sudo] kali 的密码:    //输入密码kali
Starting Nmap 7.91 ( https://nmap.org ) at 2021-05-10 10:21 CST
Stats: 0:00:01 elapsed; 0 hosts completed (0 up), 1 undergoing ARP Ping Scan
Parallel DNS resolution of 1 host. Timing: About 0.00% done
Stats: 0:00:03 elapsed; 0 hosts completed (0 up), 1 undergoing ARP Ping Scan
Parallel DNS resolution of 1 host. Timing: About 0.00% done
Nmap scan report for 192.168.4.5
Host is up (0.00037s latency).    //扫描到主机状态
MAC Address: 52:54:00:64:8C:9B (QEMU virtual NIC)   //扫描到主机MAC地址
Nmap done: 1 IP address (1 host up) scanned in 13.14 seconds

**常见报错:**DNS Warning,无法进行DNS解析则报错

mass_dns: warning: Unable to determine any DNS servers. Reverse DNS is disabled. Try using --system-dns or specify valid servers with --dns-servers


2)使用-sP扫描类型(ICMP),加[-n]选项可以不执行DNS解析

bash 复制代码
┌──(kali㉿kali)-[~]
└─$ sudo nmap -n -sP 192.168.4.5
Starting Nmap 7.91 ( https://nmap.org ) at 2021-05-10 10:23 CST
Nmap scan report for 192.168.4.5
Host is up (0.00034s latency).
MAC Address: 52:54:00:64:8C:9B (QEMU virtual NIC)
Nmap done: 1 IP address (1 host up) scanned in 0.10 seconds

3)使用-sP扫描类型(ICMP),扫描192.168.4.0/24网段内哪些主机可以ping通

bash 复制代码
┌──(kali㉿kali)-[~]
└─$ sudo nmap -n -sP 192.168.4.0/24
Starting Nmap 7.91 ( https://nmap.org ) at 2021-05-10 10:24 CST
Nmap scan report for 192.168.4.5
Host is up (0.00047s latency).
MAC Address: 52:54:00:64:8C:9B (QEMU virtual NIC)
Nmap scan report for 192.168.4.10
Host is up (0.00028s latency).
MAC Address: 52:54:00:DF:57:8D (QEMU virtual NIC)
Nmap scan report for 192.168.4.254
Host is up (0.00013s latency).
MAC Address: 52:54:00:37:78:11 (QEMU virtual NIC)
Nmap scan report for 192.168.4.40
Host is up.
Nmap done: 256 IP addresses (4 hosts up) scanned in 1.92 seconds

4)使用-sT扫描类型(TCP-全开),扫描目标主机所有开启的TCP服务

bash 复制代码
┌──(kali㉿kali)-[~]
└─$ sudo nmap -sT 192.168.4.254    
Starting Nmap 7.91 ( https://nmap.org ) at 2021-05-10 10:29 CST
Nmap scan report for 192.168.4.254
Host is up (0.00017s latency).
Not shown: 994 closed ports
PORT     STATE SERVICE
21/tcp   open  ftp
22/tcp   open  ssh
53/tcp   open  domain
80/tcp   open  http
111/tcp  open  rpcbind
2049/tcp open  nfs
MAC Address: 52:54:00:37:78:11 (QEMU virtual NIC)
 
Nmap done: 1 IP address (1 host up) scanned in 13.20 seconds

补充:NMAP扫描不加任何扫描类型,默认使用TCP检查

bash 复制代码
┌──(kali㉿kali)-[~]
└─$ sudo nmap 192.168.4.254    //结果与上一步相同

5)使用[-p]选项,扫描192.168.4.0/24网段内哪些主机开启了FTP、SSH服务

bash 复制代码
┌──(kali㉿kali)-[~]
└─$ sudo nmap -p 21-22 192.168.4.0/24    //指定扫描21端口FTP、22端口SSH
Starting Nmap 7.91 ( https://nmap.org ) at 2021-05-10 10:33 CST
Nmap scan report for 192.168.4.5
Host is up (0.00037s latency).
 
PORT   STATE  SERVICE
21/tcp closed ftp    //closed关闭
22/tcp open   ssh   //open开启
MAC Address: 52:54:00:64:8C:9B (QEMU virtual NIC)
 
Nmap scan report for 192.168.4.10
Host is up (0.00038s latency).
 
PORT   STATE  SERVICE
21/tcp closed ftp
22/tcp open   ssh
MAC Address: 52:54:00:DF:57:8D (QEMU virtual NIC)
 
Nmap scan report for 192.168.4.254
Host is up (0.00023s latency).
 
PORT   STATE SERVICE
21/tcp open  ftp
22/tcp open  ssh
MAC Address: 52:54:00:37:78:11 (QEMU virtual NIC)
 
Nmap scan report for 192.168.4.40
Host is up (0.000048s latency).
 
PORT   STATE  SERVICE
21/tcp closed ftp
22/tcp closed ssh
 
Nmap done: 256 IP addresses (4 hosts up) scanned in 28.08 seconds

6)使用-sU扫描类型(UDP),扫描目标主机所有开启的UDP服务

bash 复制代码
┌──(kali㉿kali)-[~]
└─$ sudo nmap -n -sU 192.168.4.5     
Starting Nmap 7.91 ( https://nmap.org ) at 2021-05-10 10:35 CST
Stats: 0:01:43 elapsed; 0 hosts completed (1 up), 1 undergoing UDP Scan
UDP Scan Timing: About 11.14% done; ETC: 10:50 (0:13:42 remaining)
Stats: 0:04:41 elapsed; 0 hosts completed (1 up), 1 undergoing UDP Scan
UDP Scan Timing: About 27.98% done; ETC: 10:52 (0:12:03 remaining)
...

补充:由于UDP是非面向用户协议,收不到客户端的回应确认,扫描UDP的时间较长(使用回车键,可查看进度)

  • 使用[-p]选项,扫描192.168.4.5主机的DNS服务(UDP)
bash 复制代码
┌──(kali㉿kali)-[~]
└─$ sudo nmap -n -sU -p 53 192.168.4.5
Starting Nmap 7.91 ( https://nmap.org ) at 2021-05-10 20:43 CST
Nmap scan report for 192.168.4.5
Host is up (0.00048s latency).
 
PORT   STATE  SERVICE
53/udp closed domain      //UDP端口53,close关闭
MAC Address: 52:54:00:64:8C:9B (QEMU virtual NIC)
 
Nmap done: 1 IP address (1 host up) scanned in 0.19 seconds

7)使用-sS扫描类型(TCP-半开),扫描目标主机所有开启的TCP服务

bash 复制代码
┌──(kali㉿kali)-[~]
└─$ sudo nmap -n -sS 192.168.4.5  
Starting Nmap 7.91 ( https://nmap.org ) at 2021-05-10 10:46 CST
Nmap scan report for 192.168.4.5
Host is up (0.000032s latency).
Not shown: 997 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
3306/tcp open  mysql
9100/tcp open  jetdirect
MAC Address: 52:54:00:64:8C:9B (QEMU virtual NIC)
 
Nmap done: 1 IP address (1 host up) scanned in 0.21 seconds

补充:-sS扫描类型的结果与-sT的结果一样,扫描过程不同(SYN、ACK)

8)使用-A扫描类型,全面分析目标主机192.168.4.5的操作系统信息

bash 复制代码
┌──(kali㉿kali)-[~]
└─$ sudo nmap -n -A 192.168.4.5    
Starting Nmap 7.91 ( https://nmap.org ) at 2021-05-10 10:50 CST
Nmap scan report for 192.168.4.5
Host is up (0.00043s latency).
Not shown: 997 closed ports
PORT     STATE SERVICE    VERSION
22/tcp   open  ssh        OpenSSH 7.4 (protocol 2.0)   //22端口,软件OPenSSH,版本7.4
| ssh-hostkey:
|   2048 bb:57:60:4b:40:e1:ed:41:45:7b:eb:cf:23:86:04:13 (RSA)   //2048位的RSA密钥
|   256 1e:76:cc:e8:d9:55:86:df:dc:a1:ea:7a:6c:67:c6:00 (ECDSA)
|_  256 ba:a9:43:5c:8a:49:7f:9e:a1:9d:9d:be:e5:81:65:b6 (ED25519)
3306/tcp open  mysql      MariaDB (unauthorized)   //扫描主机运行的SQL服务
9100/tcp open  jetdirect?   //扫描主机运行的node_exporter
MAC Address: 52:54:00:64:8C:9B (QEMU virtual NIC)
No exact OS matches for host (If you know what OS is running on it, see https://nmap.org/submit/ ).
TCP/IP fingerprint:
OS:SCAN(V=7.91%E=4%D=5/10%OT=22%CT=1%CU=36185%PV=Y%DS=1%DC=D%G=Y%M=525400%T
OS:M=60989F68%P=x86_64-pc-linux-gnu)SEQ(SP=102%GCD=1%ISR=106%TI=Z%CI=I%II=I
OS:%TS=A)SEQ(SP=102%GCD=1%ISR=106%TI=Z%II=I%TS=A)SEQ(SP=102%GCD=1%ISR=106%T
OS:I=Z%TS=A)SEQ(SP=102%GCD=1%ISR=106%TI=Z%CI=I%TS=A)OPS(O1=M5B4ST11NW7%O2=M
OS:5B4ST11NW7%O3=M5B4NNT11NW7%O4=M5B4ST11NW7%O5=M5B4ST11NW7%O6=M5B4ST11)WIN
OS:(W1=7120%W2=7120%W3=7120%W4=7120%W5=7120%W6=7120)ECN(R=Y%DF=Y%T=FF%W=721
OS:0%O=M5B4NNSNW7%CC=Y%Q=)T1(R=Y%DF=Y%T=FF%S=O%A=S+%F=AS%RD=0%Q=)T2(R=N)T3(
OS:R=N)T4(R=Y%DF=Y%T=FF%W=0%S=A%A=Z%F=R%O=%RD=0%Q=)T5(R=Y%DF=Y%T=FF%W=0%S=Z
OS:%A=S+%F=AR%O=%RD=0%Q=)T6(R=Y%DF=Y%T=FF%W=0%S=A%A=Z%F=R%O=%RD=0%Q=)T7(R=Y
OS:%DF=Y%T=FF%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)U1(R=Y%DF=N%T=FF%IPL=164%UN=0%RI
OS:PL=G%RID=G%RIPCK=G%RUCK=G%RUD=G)IE(R=Y%DFI=N%T=FF%CD=S)
 
Network Distance: 1 hop     //网络路由一跳
 
TRACEROUTE
HOP RTT     ADDRESS
1   0.43 ms 192.168.4.5
 
OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 12.33 seconds

**常见问题:**Host seems down,主机联机状态失败,检查主机是否开机、网络是否正常;

┌──(kali㉿kali)-[~] └─$ sudo nmap -n -sU -p 53 192.168.4.55 Starting Nmap 7.91 ( https://nmap.org ) at 2021-05-10 20:45 CST Note: Host seems down. If it is really up, but blocking our ping probes, try -Pn Nmap done: 1 IP address (0 hosts up) scanned in 1.52 seconds


练习2:使用nmap执行脚本扫描
  • NSE脚本存放目录:/usr/share/nmap/scripts/
  • 格式:nmap --script=.nse脚本 [选项] <扫描目标 ...>
bash 复制代码
┌──(kali㉿kali)-[~]
└─$ ls /usr/share/nmap/scripts   //查看Kail自带的NSE脚本(大概600多个)

1)FTP相关扫描脚本(kali虚拟机)

bash 复制代码
┌──(kali㉿kali)-[/usr/share/nmap/scripts]
└─$ ls *ftp*    //查看有关FTP相关脚本
ftp-anon.nse    ftp-libopie.nse           ftp-vsftpd-backdoor.nse
ftp-bounce.nse  ftp-proftpd-backdoor.nse  ftp-vuln-cve2010-4221.nse
ftp-brute.nse   ftp-syst.nse              tftp-enum.nse

补充:每个脚本都是源码包,明文显示,可使用cat或vi命令查看

准备一台Vsftpd服务器(192.168.4.5靶机)

bash 复制代码
[root@node1 ~]# yum -y install vsftpd   //安装FTP软件包
[root@node1 ~]# systemctl restart vsftpd    //启动FTP服务
[root@node1 ~]# useradd tom    //添加tom用户(实验暴力破解密码、FTP登录抓包)
[root@node1 ~]# echo "123" | passwd --stdin tom

**例如1:**ftp匿名访问扫描(ftp-anon.nse脚本)

bash 复制代码
┌──(kali㉿kali)-[~]
└─$ sudo nmap --script=ftp-anon.nse 192.168.4.5 -p 21
[sudo] kali 的密码:
Starting Nmap 7.91 ( https://nmap.org ) at 2021-05-10 11:27 CST
Nmap scan report for 192.168.4.5
Host is up (0.00036s latency).
 
PORT   STATE SERVICE
21/tcp open  ftp
| ftp-anon: Anonymous FTP login allowed (FTP code 230)   //Anonymous匿名,允许匿名登录
|_drwxr-xr-x    2 0        0               6 Aug 03  2017 pub  //共享目录Pub
MAC Address: 52:54:00:64:8C:9B (QEMU virtual NIC)
 
Nmap done: 1 IP address (1 host up) scanned in 13.34 seconds

**例如2:**扫描ftp软件相关信息:如版本号,是否有带宽限制,超时时间等(ftp-syst.nse)

bash 复制代码
┌──(kali㉿kali)-[~]
└─$ sudo nmap --script=ftp-syst.nse 192.168.4.5 -p 21
Starting Nmap 7.91 ( https://nmap.org ) at 2021-05-10 11:29 CST
Nmap scan report for 192.168.4.5
Host is up (0.00049s latency).
 
PORT   STATE SERVICE
21/tcp open  ftp
| ftp-syst:
|   STAT:
| FTP server status:
|      Connected to ::ffff:192.168.4.40
|      Logged in as ftp
|      TYPE: ASCII
|      No session bandwidth limit    //没有带宽限制(bandwidth带宽、limit限速)
|      Session timeout in seconds is 300   //超时时间(300秒)
|      Control connection is plain text    //明文传输(plain text)
|      Data connections will be plain text
|      At session startup, client count was 1
|      vsFTPd 3.0.2 - secure, fast, stable   //FTPD服务version
|_End of status
MAC Address: 52:54:00:64:8C:9B (QEMU virtual NIC)
 
Nmap done: 1 IP address (1 host up) scanned in 13.34 seconds

**例如3:**ftp后门扫描(ftp-vsftpd-backdoor.nse)

bash 复制代码
┌──(kali㉿kali)-[~]
└─$ sudo nmap --script=ftp-vsftpd-backdoor.nse 192.168.4.5 -p 21     
Starting Nmap 7.91 ( https://nmap.org ) at 2021-05-10 14:08 CST
Nmap scan report for 192.168.4.5
Host is up (0.00047s latency).
 
PORT   STATE SERVICE
21/tcp open  ftp
MAC Address: 52:54:00:64:8C:9B (QEMU virtual NIC)
 
Nmap done: 1 IP address (1 host up) scanned in 14.33 seconds

**例如4:**ftp暴力破解密码(ftp-brute.nse)

bash 复制代码
┌──(kali㉿kali)-[~]
└─$ sudo nmap --script=ftp-brute.nse 192.168.4.5 -p 21   
Starting Nmap 7.91 ( https://nmap.org ) at 2021-05-10 14:07 CST
Stats: 0:00:19 elapsed; 0 hosts completed (1 up), 1 undergoing Script Scan
NSE Timing: About 0.00% done
Stats: 0:00:49 elapsed; 0 hosts completed (1 up), 1 undergoing Script Scan
NSE Timing: About 0.00% done
...

验证:查看node1靶机的/var/log/secure安全日志

bash 复制代码
[root@node1 ~]# cat /var/log/secure
May 10 11:55:19 node1 vsftpd[10927]: pam_unix(vsftpd:auth): authentication failure; logname= uid=0 euid=0 tty=ftp ruser=web rhost=::ffff:192.168.4.40
May 10 11:55:19 node1 vsftpd[10924]: pam_unix(vsftpd:auth): check pass; user unknown
...

补充:暴力破解密码原理:字典(字符集合)、枚举(随机列举)

枚举法是在分析问题时,逐个列举出所有可能情况,然后根据条件判断此答案是否合适,合适就保留,不合适就丢弃,最后得出一般结论。主要利用计算机运算速度快、精确度高的特点,对要解决问题的所有可能情况,一个不漏地进行检验,从中找出符合要求的答案,因此枚举法是通过牺牲时间来换取答案的全面性

2)SSH相关扫描脚本(Kali虚拟机)

**例如1:**ssh暴力破解密码(ssh-brute.nse)

bash 复制代码
┌──(kali㉿kali)-[~]
└─$ sudo nmap --script=ssh-brute.nse 192.168.4.5 -p 22  
Starting Nmap 7.91 ( https://nmap.org ) at 2021-05-10 11:40 CST
NSE: [ssh-brute] Trying username/password pair: root:root   //暴力测试密码
NSE: [ssh-brute] Trying username/password pair: admin:admin
NSE: [ssh-brute] Trying username/password pair: administrator:administrator
NSE: [ssh-brute] Trying username/password pair: webadmin:webadmin
NSE: [ssh-brute] Trying username/password pair: sysadmin:sysadmin
...

验证:查看node1靶机的/var/log/secure安全日志

bash 复制代码
[root@node1 ~]# wc -l /var/log/secure   //记录按秒级速度递增
6250 /var/log/secure
[root@node1 ~]# wc -l /var/log/secure
6376 /var/log/secure
[root@node1 ~]# tail -f /var/log/secure    //实时查看
[preauth]
May 10 11:42:35 node1 sshd[7465]: pam_unix(sshd:auth): check pass; user unknown   //未知用户
May 10 11:42:35 node1 sshd[7465]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.4.40   //密码认证失败
May 10 11:42:35 node1 sshd[7467]: Invalid user netadmin from 192.168.4.40 port 35996
May 10 11:42:35 node1 sshd[7467]: input_userauth_request: invalid user netadmin

**例如2:**创建的账户和密码本暴力破解ssh密码(ssh-brute.nse)

script-args给NSE脚本传参:userdb=/tmp/users.lst,passdb=/tmp/pass.lst

bash 复制代码
┌──(kali㉿kali)-[~]
└─$ vi /tmp/users.lst
root
tom
┌──(kali㉿kali)-[~]
└─$ vi /tmp/pass.lst
123
123456
654321
┌──(kali㉿kali)-[~]
└─$ sudo nmap --script=ssh-brute.nse --script-args userdb=/tmp/users.lst,passdb=/tmp/pass.lst 192.168.4.5 -p 22
Starting Nmap 7.91 ( https://nmap.org ) at 2021-05-10 15:07 CST
NSE: [ssh-brute] Trying username/password pair: root:root   //按照账户本、密码本来组合密码进行破解
NSE: [ssh-brute] Trying username/password pair: tom:tom
NSE: [ssh-brute] Trying username/password pair: root:123
NSE: [ssh-brute] Trying username/password pair: tom:123
NSE: [ssh-brute] Trying username/password pair: root:123456
Nmap scan report for 192.168.4.5
Host is up (0.00056s latency).
 
PORT   STATE SERVICE
22/tcp open  ssh
| ssh-brute:
|   Accounts:
|     tom:123 - Valid credentials   //破解密码结果
|     root:123456 - Valid credentials
|_  Statistics: Performed 5 guesses in 2 seconds, average tps: 2.5
MAC Address: 52:54:00:64:8C:9B (QEMU virtual NIC)
 
Nmap done: 1 IP address (1 host up) scanned in 14.98 seconds

3)HTTP相关扫描脚本(Kali虚拟机)

**例如1:**扫描主机支持HTTP的请求方法(http-methods.nse)

bash 复制代码
┌──(kali㉿kali)-[~]
└─$ sudo nmap --script=http-methods.nse 192.168.4.5 -p 80       
Starting Nmap 7.91 ( https://nmap.org ) at 2021-05-10 14:10 CST
Nmap scan report for 192.168.4.5
Host is up (0.00037s latency).
 
PORT   STATE SERVICE
80/tcp open  http
| http-methods:
|   Supported Methods: OPTIONS GET HEAD POST TRACE(请求方法)   //访问HTTP请求方法
|_  Potentially risky methods: TRACE
MAC Address: 52:54:00:64:8C:9B (QEMU virtual NIC)
 
Nmap done: 1 IP address (1 host up) scanned in 13.36 seconds

**例如2:**SQL注入扫描(http-sql-injection.nse)

bash 复制代码
┌──(kali㉿kali)-[~]
└─$ sudo nmap --script=http-sql-injection.nse 192.168.4.5 -p 80
Starting Nmap 7.91 ( https://nmap.org ) at 2021-05-10 14:10 CST
Nmap scan report for 192.168.4.5
Host is up (0.00049s latency).
 
PORT   STATE SERVICE
80/tcp open  http
MAC Address: 52:54:00:64:8C:9B (QEMU virtual NIC)
 
Nmap done: 1 IP address (1 host up) scanned in 13.37 seconds

补充:SQL注入是网站存在最多也是最简单的漏洞,主要原因是程序员在开发用户和数据库交互的系统时没有对用户输入的字符串进行过滤,转义,限制或处理不严谨,导致攻击者可以通过在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。

例如 http://tts.tmooc.cn/video/showVideo?menuId=734102\&version,其中URL的特殊符号\[?\],用来分隔实际的URL和参数;攻击者可在\[?\]后,通过SQL注入将Web页面的原URL、表单域或数据包输入的参数,修改拼接成SQL语句,传递给Web服务器,从而传给数据库服务器以执行数据库命令;

4)SMB相关扫描脚本(Kali虚拟机)

假设有一台windows主机192.168.137.4

例如:SMB暴力破解密码(smb-brute.nse)

bash 复制代码
[kali@kali ~]$ sudo nmap --script=smb-brute.nse 192.168.137.4
[kali@kali ~]$ sudo nmap --script=smb-brute.nse  \
--script-args=userdb=/密码本,passdb=/密码本  192.168.137.4  
练习3:使用john命令,暴力破解密码

功能:根据已知的密文方向破解为明文数据

  • 格式:john --single /etc/shadow //破解傻瓜式密码
  • 格式:john /etc/shadow //字典暴力破解(随时ctrl+c终止)
  • 格式:john --wordlist=密码本 /etc/shadow //使用自定义密码本破解
  • 格式:john --show /etc/shadow //显示破解的密码

例如:使用john --single /etc/shadow破解密文密码为明文数据,并查看明文结果

bash 复制代码
┌──(kali㉿kali)-[~]
└─$ sudo cp /etc/shadow /home/shadow    //建议备份/etc/shadow文件

┌──(kali㉿kali)-[~]
└─$ sudo grep kali /home/shadow     //查看kali用户的密码字符串
kali:$6$zppQnnPx10H5wf5J$2mRi8vK1pgIMhtjsUpVej6Q7OUc.nl19WXrg7QOZwYlC0MobXeOpPPyL/ms/9FRNCCNmkuqNaDN1JF4TH0p8D/:18597:0:99999:7:::

┌──(kali㉿kali)-[~]
└─$ sudo john --single /home/shadow     //简单式破解密码
Created directory: /root/.john
Using default input encoding: UTF-8
Loaded 1 password hash (sha512crypt, crypt(3) $6$ [SHA512 256/256 AVX2 4x])
Cost 1 (iteration count) is 5000 for all loaded hashes
Will run 2 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
kali             (kali)
1g 0:00:00:00 DONE (2021-05-10 14:17) 5.882g/s 47.05p/s 47.05c/s 47.05C/s kali..kali99
Use the "--show" option to display all of the cracked passwords reliably
Session completed
 
┌──(kali㉿kali)-[~]
└─$ sudo john --show /home/shadow    //显示破解的密码
kali:kali:18597:0:99999:7:::    //已将密码字符串破解
 
1 password hash cracked, 0 left
练习4:使用tcpdump分析FTP访问中的明文交换信息

1)tcpdump命令行抓取数据包工具

功能:渗透测试、网络数据包分析

  • 格式:tcpdump [-i 网卡名称] -A [过滤条件] [-w 另存为文件]

常用选项:

[ -i ] 指定监控的网络接口(不加[-i],默认监听第一个网卡)

[ -A ] 转换为 ACSII 码,以方便阅读

[ -w ] 将数据包信息保存到指定文件(不加[-w],默认显示在屏幕)

[ -r ] 从指定文件读取数据包信息

[ -c ] 定义抓包的个数(默认是无限抓包,Ctrl+c结束抓包)

过滤条件:

类型:host(主机)、net(网段)、port(端口)、portrange(端口范围)

方向:src(源地址)、dst(目标地址)

协议:tcp、udp、ip、wlan、arp...

多个条件组合:and(与)、or(或)、not(取反)

**例如1:**使用tcpdump命令行抓包(Kali虚拟机)

注意:抓包是一种被动行为,需要等待抓包的对象有数据产生、交换才能进行抓包;

bash 复制代码
┌──(kali㉿kali)-[~]
└─$ ftp 192.168.4.5      //开启另一个终端标签,访问FTP服务器(有数据产生)
Connected to 192.168.4.5.
220 (vsFTPd 3.0.2)
Name (192.168.4.5:kali): tom   //输入用户名tom
331 Please specify the password.
Password:    //输入密码123
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
 
┌──(kali㉿kali)-[~]
└─$ sudo tcpdump -i eth0 -A host 192.168.4.5 and tcp port 21    //tcpdump抓包测试(默认显示公屏)
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
14:53:09.948638 IP 192.168.4.40.39210 > 192.168.4.5.ftp: Flags [P.], seq 1:11, ack 21, win 502, options [nop,nop,TS val 2038157201 ecr 6498523], length 10: FTP: USER tom   //抓包USER tom
14:53:11.508673 IP 192.168.4.40.39210 > 192.168.4.5.ftp: Flags [P.], seq 11:21, ack 55, win 502, options [nop,nop,TS val 2038158761 ecr 6502461], length 10: FTP: PASS 123   //抓包PASS 123
14:53:11.547869 IP 192.168.4.5.ftp > 192.168.4.40.39210: Flags [P.], seq 55:78, ack 21, win 227, options [nop,nop,TS val 6504059 ecr 2038158761], length 23: FTP: 230 Login successful. //登录成功
...

解释:执行tcpdump命令行,指定以eth0网卡去抓包,添加过滤条件(抓取主机192.168.4.5的TCP端口21的数据),并转换为ASCII码格式的易读文本。

**例如2:**使用tcpdump抓包,[-w]选项可将抓取的数据包另存为文件,方便后期分析

bash 复制代码
┌──(kali㉿kali)-[~]
└─$ ftp 192.168.4.5    //开启另一个标签,访问FTP服务器(有数据产生)
Connected to 192.168.4.5.
220 (vsFTPd 3.0.2)
Name (192.168.4.5:kali): tom  //输入用户名tom
331 Please specify the password.
Password:    //输入密码123
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
 
┌──(kali㉿kali)-[~]
└─$ sudo tcpdump -w ftp.cap -A host 192.168.4.5 and tcp port 21  //tcpdump抓包并保存
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
^C 25 packets captured        //以保存在文件,不显示屏幕,需要Ctrl+c终止
25 packets received by filter    //抓到25个的数据包
0 packets dropped by kernel

**例如3:**使用tcpdump命令的[-r]选项,可以去读之前抓取的历史数据文件

bash 复制代码
┌──(kali㉿kali)-[~]
└─$ sudo tcpdump -A -r ftp.cap | egrep -i '(USER|PASS)'    //分析数据包(正则过滤)  
reading from file ftp.cap, link-type EN10MB (Ethernet)
15:18:12.028560 IP 192.168.4.40.39258 > 192.168.4.5.ftp: Flags [P.], seq 1:11, ack 21, win 502, options [nop,nop,TS val 2039659281 ecr 8001371], length 10: FTP: USER tom
y....z.[USER tom
15:18:12.029068 IP 192.168.4.5.ftp > 192.168.4.40.39258: Flags [P.], seq 21:55, ack 11, win 227, options [nop,nop,TS val 8004541 ecr 2039659281], length 34: FTP: 331 Please specify the password.
.z#.y...331 Please specify the password.
15:18:13.414783 IP 192.168.4.40.39258 > 192.168.4.5.ftp: Flags [P.], seq 11:21, ack 55, win 502, options [nop,nop,TS val 2039660667 ecr 8004541], length 10: FTP: PASS 123
y..{.z#.PASS 123
...

补充:WireShark协议分析器(Windows系统操作)

四、优化Nginx服务的安全配置

案例要求:优化提升常见网络服务的安全性,主要完成以下任务操作:

Nginx安全优化包括:修改版本信息、限制并发、拒绝非法请求、防止buffer溢出。

准备环境,源码安装Nginx服务

bash 复制代码
[root@node1 lnmp_soft]# tar -xf nginx-1.12.2.tar.gz
[root@node1 lnmp_soft]# cd nginx-1.12.2/
[root@node1 nginx-1.12.2]# yum -y install gcc make pcre-devel openssl-devel
[root@node1 nginx-1.12.2]# ./configure
[root@node1 nginx-1.12.2]# make && make install
[root@node1 ~]# /usr/local/nginx/sbin/nginx    //启动服务
[root@node1 ~]# ss -nlptu | grep :80
tcp    LISTEN     0      128       *:80                    *:*                   users:(("nginx",pid=4469,fd=6),("nginx",pid=4466,fd=6))

Nginx安全优化1:修改版本信息,并隐藏头部信息的具体版本号

优化背景:默认Nginx会显示版本信息以及具体的版本号,这些信息给攻击者带来了便利性,便于他们找到具体版本的漏洞;

1)使用Curl命令查看网页头部信息(Nginx版本号信息)

补充:Curl不加选项,可直接访问网页的源码内容;[-I]选项,只查看网页的头部信息;

bash 复制代码
[root@node1 ~]# curl http://192.168.4.5
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
...

[root@node1 ~]# curl -I http://192.168.4.5
HTTP/1.1 200 OK
Server: nginx/1.12.2    //Nginx服务器的版本号信息
Date: Mon, 10 May 2021 07:50:21 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Mon, 10 May 2021 07:34:16 GMT
Connection: keep-alive
ETag: "6098e1f8-264"
Accept-Ranges: bytes

2)修改配置文件,隐藏版本号信息(server_tokens off)

bash 复制代码
[root@node1 ~]# vim /usr/local/nginx/conf/nginx.conf
...
http{
    server_tokens off;    //隐藏头部信息中具体的版本号
    ...
}
[root@node1 ~]# /usr/local/nginx/sbin/nginx -s reload

验证:

bash 复制代码
[root@node1 ~]# curl -I http://192.168.4.5     //[-I]选项,可查看头部信息
HTTP/1.1 200 OK
Server: nginx     //已隐藏Nginx版本
Date: Mon, 10 May 2021 07:45:52 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Mon, 10 May 2021 07:34:16 GMT
Connection: keep-alive
ETag: "6098e1f8-264"
Accept-Ranges: bytes

Nginx安全优化2:限制并发量

优化背景:DDOS(Deny of service)拒绝攻击,攻击者会发送大量的并发连接,占用服务器资源(包括连接数、带宽等),导致正常用户处于等待或无法访问服务器的状态。

Nginx提供了标准模块:ngx_http_limit_req_module(无需安装),可有效降低DDOS攻击的风险

1)模拟ab测试并发访问限制效果

bash 复制代码
[root@node1 ~]# ab -c 100 -n 100 http://192.168.4.5/
Complete requests:      100    //完成100个访问
Failed requests:        0     //0个失败访问(未有并发限制)
...

2)修改配置文件,设置Nginx的并发访问限制

  • 格式:limit_req_zone key zone=name:size rate=rate;
bash 复制代码
[root@node1 ~]# vim /usr/local/nginx/conf/nginx.conf
...
http{    \\全局配置
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
    server {    \\虚拟机配置
        listen 80;
        server_name localhost;
        limit_req zone=one burst=5;    //指定全局配置对应的区域one
            }
}
[root@node1 ~]# /usr/local/nginx/sbin/nginx -s reload

解释说明:

limit_req_zone是ngx_http_limit_req_module模块的指令,用来进行限流访问;

binary_remote_addr是remote_addr(客户端IP)的二进制格式,固定占用4个字节;

自定义存储名称为"one"的区域,占用内存空间大小为10M,负责记录客户访问次数及客户IP信息(1M可以存储8千个IP信息,10M可以存储8万个主机连接的状态,容量可以根据需要任意调整)

rate=1r/s,平均处理的请求频率不能超过每秒一次(每秒中仅接受1个请求,多余的放入"漏斗",缓冲队列)

缓冲队列的长度设置为5,当访问请求为10个,正被处理的请求每秒1次+缓存队列5个,剩余请求已超出队列的长度则报错并丢弃;

验证:

bash 复制代码
[root@node1 ~]# ab -c 100 -n 100 http://192.168.4.5/
Complete requests:      100  //完成100个访问请求
Failed requests:        94    //94个请求失败(并发量限制)
...

Nginx安全优化3:拒绝非法的请求

优化背景:网站使用的是HTTP协议,该协议中定义了很多方法可让用户连接服务器,获得需要的资源。但实际应用中一般仅需要GET(下载、获取)和POST(上传),而HEAD(下载)只获取HTTP包头信息,不获取网页内容,导致占用连接资源(需拒绝HEAD请求)

HTTP请求方法的含义如表:

1)使用Curl命令查看网页头部信息

[-I] 访问服务器页面时,显示HTTP的头部信息;

[-i] 访问服务器页面时,显示HTTP的头部信息和网页内容;

[-X] 指定请求服务器的方法(GET、HEAD、POST、DELETE、PUT)

bash 复制代码
[root@node1 ~]# curl -i http://192.168.4.5   //可显示头部信息和网页内容
[root@node1 ~]# curl -i -X GET http://192.168.4.5  //指定GET请求访问,可显示页面内容和头部信息
[root@node1 ~]# curl -i -X HEAD http://192.168.4.5  //指定HEAD请求访问,只显示HTTP的头部信息(访问结果与[-I]选项类似)
HTTP/1.1 200 OK
Server: nginx/1.12.2
Date: Mon, 10 May 2021 08:57:25 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Mon, 10 May 2021 07:34:16 GMT
Connection: keep-alive
ETag: "6098e1f8-264"
Accept-Ranges: bytes

2)修改配置文件,拒绝HEAD非法请求方法访问网站,retrun返回错误信息

bash 复制代码
[root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf
http{
...
server {
        listen       80;
        server_name  localhost;
        if ($request_method !~ ^(GET|POST)$ ) {
          return 444;
        }
}
}
[root@node1 ~]# /usr/local/nginx/sbin/nginx -s reload

解释说明:

设置request_method访问请求方式,不包含GET或POSTS,则返回报错444;

Nginx的正则表达式:【!】表示对正则取反,【~】是正则匹配(包含)

如果用户使用非GET或POST方法访问网站,则retrun返回错误信息

验证:

bash 复制代码
[root@node1 ~]# curl -i -X GET http://192.168.4.5     //访问结果正常
HTTP/1.1 200 OK
Server: nginx/1.12.2
Date: Mon, 10 May 2021 09:06:36 GMT
Content-Type: text/html
...
[root@node1 ~]# curl -i -X HEAD http://192.168.4.5    //访问结果报错
curl: (52) Empty reply from server

Nginx安全优化4:防止buffer溢出

优化背景:当客户端连接服务器时,服务器会启用各种缓存,用来存放连接的状态信息。如果攻击者发送大量的连接请求,而服务器不对缓存做限制的话,内存数据就有可能溢出(空间不足)

1)修改配置文件,调整各种buffer参数,可以有效降低溢出风险

bash 复制代码
[root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf
http{
client_body_buffer_size 1k;    //请求网页内容的缓存
client_header_buffer_size 1k;    //默认请求包头信息的缓存
client_max_body_size 1k;     //网页内容缓存最大容量
large_client_header_buffers 2 1k;  //大请求包头部信息的缓存个数与容量
...
}
[root@proxy ~]# /usr/local/nginx/sbin/nginx -s reload

五、Linux基本防护措施

案例要求:练习Linux系统的基本防护措施,完成以下任务:

  • 1)修改用户的账号属性,设置登录有效期(chage)
  • 2)临时锁定用户账户,使其无法登录,验证效果后解除锁定(passwd)
  • 3)修改tty终端提示,隐藏版本信息(/etc/issue)
  • 4)锁定文件/etc/resolv.conf、/etc/hosts,以防止其内容被无意中修改
  • 5)关闭不需要的服务;
练习1:使用chage命令,可修改账户有效期

通常情况下,未过期的账号可以正常登录,使用chage可以修改账户有效期;

  • 格式:chage -l 用户名称 //查看账户信息
  • 格式:chage -E 指定有效日期 账户名称 //修改账户有效期(-1取消)

常用选项:

[ -E ] --expiredate 过期日期 //将帐户过期时间设为"过期日期"

[ -l ] --list //显示帐户年龄信息

[ -d ] //0,强制修改密码

1)创建测试用户,查看该账户有效期信息

bash 复制代码
[root@node1 ~]# useradd Army
[root@node1 ~]# echo "123" | passwd --stdin Army
[root@node1 ~]# date
2021年 05月 10日 星期一 17:35:53 CST
[root@node1 ~]# chage -l Army
最近一次密码修改时间 :5月 10, 2021
密码过期时间 :从不
密码失效时间 :从不
帐户过期时间 :从不     //有效期为永久
两次改变密码之间相距的最小天数 :0
两次改变密码之间相距的最大天数 :99999
在密码过期之前警告的天数 :7

2)修改用户Army的有效期属性,设置为2017-12-31日失效(禁止登录)

bash 复制代码
[root@node1 ~]# chage -E 2017-12-31 Army
[root@node1 ~]# chage -l Army
最近一次密码修改时间 :5月 10, 2021
密码过期时间 :从不
密码失效时间 :从不
帐户过期时间 :12月 31, 2017
两次改变密码之间相距的最小天数 :0
两次改变密码之间相距的最大天数 :99999
在密码过期之前警告的天数 :7

测试:

3)修改用户Army的有效期属性,设置为2025-12-31日的有效时间

bash 复制代码
[root@node1 ~]# chage -E 2025-12-31 Army
[root@node1 ~]# chage -l Army
最近一次密码修改时间 :5月 10, 2021
密码过期时间 :从不
密码失效时间 :从不
帐户过期时间 :12月 31, 2025
两次改变密码之间相距的最小天数 :0
两次改变密码之间相距的最大天数 :99999
在密码过期之前警告的天数 :7
bash 复制代码
[root@node1 ~]# chage -E -1 Army     //【-1】设置回永久有效期
[root@node1 ~]# chage -l Army
最近一次密码修改时间 :5月 10, 2021
密码过期时间 :从不
密码失效时间 :从不
帐户过期时间 :从不
两次改变密码之间相距的最小天数 :0
两次改变密码之间相距的最大天数 :99999
在密码过期之前警告的天数 :7

4)扩展知识:定义普通用户的默认属性

配置文件/etc/login.defs,决定了账户密码的默认有效期、UID默认1000等;

bash 复制代码
[root@node1 ~]# cat /etc/login.defs
PASS_MAX_DAYS    99999        //密码最长有效期
PASS_MIN_DAYS    0            //密码最短有效期
PASS_MIN_LEN     5            //密码最短长度
PASS_WARN_AGE    7           //密码过期前几天提示警告信息
UID_MIN          1000        //UID最小值
UID_MAX          60000      //UID最大值
练习2:临时锁定用户,使其无法登录,验证效果后解除锁定

使用passwd或usermod命令,可将用户的账户锁定;

  • 格式:passwd [选项] 锁定账户

选项:

[ -l ] 锁定用户账号(lock)

[ -u ] 解锁用户账号(unlock)

[ -S ] 查看状态(status)

1)锁定用户账户

bash 复制代码
[root@node1 ~]# passwd -l Army     //锁定用户账号
锁定用户 Army 的密码 。
passwd: 操作成功
[root@node1 ~]# passwd -S Army     //查看状态
Army LK 2021-05-10 0 99999 7 -1 (密码已被锁定。)

验证:输入用户名、密码,始终提示"Login incorrect",无法登录,说明锁定生效

2)解除对用户Army账户的锁定

bash 复制代码
[root@node1 ~]# passwd -u Army    //解锁用户账号
解锁用户 Army 的密码。
passwd: 操作成功
[root@node1 ~]# passwd -S Army
Army PS 2021-05-10 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)
练习3:修改tty登录的提示信息,隐藏系统版本

账户在登录Linux系统时,默认会显示登陆信息,包括:内核、操作系统等版本信息

  • 配置文件:/etc/issue

1)修改/etc/issue文件防止内核信息泄露

bash 复制代码
[root@node1 ~]# cat /etc/issue         //确认原始文件
\S
Kernel \r on an \m
[root@node1 ~]# cp /etc/issue /etc/issue.origin    //备份文件
[root@node1 ~]# vim /etc/issue               //修改文件内容
Windows Server 2012 Enterprise R2
NT 6.2 Hybrid

2)测试版本伪装效果

退出登录的tty终端或重启Linux系统,刷新后的终端提示信息会变成自定义的文本内容

练习4:锁定/解锁保护文件

文件属性控制:chattr、lsattr

语法格式:

chattr +i 文件名 //锁定文件(无法修改、删除、追加等)

chattr -i 文件名 //解锁文件

chattr +a 文件名 //锁定后文件仅可追加

chattr -a 文件名 //解锁文件

lsattr 文件名 //查看文件特殊属性

  • 补充:属性i(immytable不可变);属性a(append only仅可追加)
  • 补充:锁定的文件有只读权限,但无法进行修改和删除;即使是超级管理员root也无法进行文件的删除操作;

1)使用+i锁定文件,使用lsattr查看属性

bash 复制代码
[root@proxy ~]# chattr +i /etc/resolv.conf
[root@proxy ~]# lsattr /etc/resolv.conf
----i---------- /etc/resolv.conf

测试:

bash 复制代码
[root@proxy ~]# rm -rf /etc/resolv.conf
rm: 无法删除"/etc/resolv.conf": 不允许的操作
[root@proxy ~]# echo xyz > /etc/resolv.conf
-bash: resolv.conf: 权限不够

2)使用+a锁定文件(仅可追加),使用lsattr查看属性

bash 复制代码
[root@proxy ~]# chattr +a /etc/hosts
[root@proxy ~]# lsattr /etc/hosts
-----a---------- /etc/hosts

测试:

bash 复制代码
[root@proxy ~]# rm -rf /etc/hosts
rm: 无法删除"/etc/hosts": 不允许的操作
[root@proxy ~]# echo "192.168.4.1  xyz" > /etc/hosts     //失败
[root@proxy ~]# echo "192.168.4.1  xyz" >> /etc/hosts    //成功

补充:使用+a锁定文件,仅可追加,无法重定向覆盖;

3)解锁文件,恢复原有的属性

bash 复制代码
[root@proxy ~]# chattr -i /etc/resolv.conf
[root@proxy ~]# chattr -a /etc/hosts
[root@proxy ~]# lsattr /etc/resolv.conf /etc/hosts
--------------- /etc/resolv.conf
--------------- /etc/hosts

思维导图:Nginx安全优化

思维导图:Linux基本防护措施

小结:

本篇章节为**【第二阶段】SECURITY-DAY4** 的学习笔记,这篇笔记可以初步了解到 Kali系统、扫描与抓包、Nginx安全加固、Linux基本防护。除此之外推荐参考相关学习网址:


Tip:毕竟两个人的智慧大于一个人的智慧,如果你不理解本章节的内容或需要相关笔记、视频,可私信小安,请不要害羞和回避,可以向他人请教,花点时间直到你真正的理解

相关推荐
hhhhhhh_hhhhhh_3 分钟前
ubuntu18.04连接不上网络问题
linux·运维·ubuntu
冷心笑看丽美人11 分钟前
探秘 DNS 服务器:揭开域名解析的神秘面纱
linux·运维·服务器·dns
wenxiaocsdn16 分钟前
某科技局国产服务器PVE虚拟化技术文档
运维·服务器
深圳安锐科技有限公司1 小时前
首次接触结构安全自动化监测系统,价格高吗?后期维护?
运维·自动化
冬天vs不冷1 小时前
Linux用户与权限管理详解
linux·运维·chrome
凯子坚持 c2 小时前
深入Linux权限体系:守护系统安全的第一道防线
linux·运维·系统安全
✿ ༺ ོIT技术༻2 小时前
C++11:新特性&右值引用&移动语义
linux·数据结构·c++
摸鱼也很难5 小时前
Docker 镜像加速和配置的分享 && 云服务器搭建beef-xss
运维·docker·容器
watermelonoops5 小时前
Deepin和Windows传文件(Xftp,WinSCP)
linux·ssh·deepin·winscp·xftp
woshilys6 小时前
sql server 查询对象的修改时间
运维·数据库·sqlserver