workstation服务无法启动错误1075(关于 Linux 安全(基线扫描/运维安全Demo)方面的一些笔记)

写在前面
  • 笔记是学习整理的,适合基线扫描参考,常见运维安全Demo
  • 整理了一份,希望对小伙伴有帮助.生活加油,天天开心!
  • 博文主要围绕以几个方面:
    • Linux基本防护账户安全文件系统安全关闭不需要的服务
    • 用户切换提权susudo,
    • SSHd访问控制
    • 加密与解密/对称加密非对称加密md5息摘要
    • AIDE入侵检测
    • 端口扫描
一、Linux基本防护

一、Linux基本防护

账户安全:设置账户有效期,锁定与解锁账户密码,修

改登陆信息

文件系统安全:修改

文件 ATTR属性,设置mount挂载

关闭不需要的服务


设置账号有效期

使用chage工具

-d 0, 强制修改密码

-E yyyy-mm-dd,指定失效日期(-1 取消)

##创建账户dachui [root@liruilong ~]$ useradd dachui ####查看账户dachui的过期时间 [root@liruilong ~]$ chage -l dachui 最近一次密码修改时间 :8月 18, 2020 密码过期时间 :从不 密码失效时间 :从不 帐户过期时间 :从不 ##永不过期 两次改变密码之间相距的最小天数 :0 两次改变密码之间相距的最大天数 :99999 在密码过期之前警告的天数 :7 ###-E 指定账户dachui的过期时间 [root@liruilong ~]$ chage -E 2029-10-01 dachui [root@liruilong ~]$ chage -l dachui 最近一次密码修改时间 :8月 18, 2020 密码过期时间 :从不 密码失效时间 :从不 帐户过期时间 :10月 01, 2029 ##过期时间指定 两次改变密码之间相距的最小天数 :0 两次改变密码之间相距的最大天数 :99999 在密码过期之前警告的天数 :7 ###-E 后跟数字-1,代表取消账户的过期时间设置 [root@liruilong ~]$ chage -E -1 dachui [root@liruilong ~]$ chage -l dachui 最近一次密码修改时间 :8月 18, 2020 密码过期时间 :从不 密码失效时间 :从不 帐户过期时间 :从不 ##账户永不过期 两次改变密码之间相距的最小天数 :0 两次改变密码之间相距的最大天数 :99999 在密码过期之前警告的天数 :7

设置强制要求用户修改密码 -d 0 案例

########设置强制要求用户修改密码 -d 0 案例 ##第一步:给用户dachui设置密码 [root@liruilong ~]$ echo 123456 | passwd --stdin dachui 更改用户 dachui 的密码 。 passwd:所有的身份验证令牌已经成功更新。 ##第二步:使用dachui用户远程本机 [root@liruilong ~]$ ssh dachui@127.0.0.1 ...... dachui@127.0.0.1 s password: #输入密码123456 [dachui@liruilong ~]$ #可以登录,ctrl + D 退出 ##第三步:管理员设置dachui用户必须修改密码,否则无法登录 [root@liruilong ~]$ chage -d 0 dachui ##第四步:重新使用dachui用户远程本机,需要重新设置密码 #因为是普通用户,权限低,所以密码必须是8位以上,字母和数字(tarena123) [root@liruilong ~]$ ssh dachui@127.0.0.1 dachui@127.0.0.1s password: #输入密码123456 You are required to change your password immediately (root enforced) Last failed login: Tue Aug 18 08:38:45 CST 2020 from localhost on ssh:notty There was 1 failed login attempt since the last successful login. Last login: Tue Aug 18 08:33:19 2020 from localhost WARNING: Your password has expired. You must change your password now and login again! Changing password for user dachui. Changing password for dachui. (current) UNIX password: #输入以前的密码123456 New password: #设置新的密码为123,太过简单无法通过 BAD PASSWORD: The password is too similar to the old one New password: #设置新的密码为654321,密码最少是8位 BAD PASSWORD: The password is shorter than 8 characters New password: #设置新的密码:tarena123 Retype new password: #重新输入新密码:tarena123 passwd: all authentication tokens updated successfully. Connection to 127.0.0.1 closed. #第五步:重新使用账户dachui远程本机 [root@liruilong ~]$ ssh dachui@127.0.0.1 dachui@127.0.0.1s password: #输入密码:tarena123 Last login: Tue Aug 18 08:38:49 2020 from localhost [dachui@liruilong ~]$ #ctrl + D 登出 账号的锁定/解锁

使用passwd命令: -l 锁定、-u 解锁、-S 看状态

####-S(大写) 查看用户dachui密码的状态 [root@liruilong ~]$ passwd -S dachui dachui PS 2020-08-18 0 99999 7 -1 (密码已设置,使用 SHA512 算法。) ###-l 锁定dachui账户 [root@liruilong ~]$ passwd -l dachui 锁定用户 dachui 的密码 。 passwd: 操作成功 ####-S(大写) 查看用户dachui密码的状态,密码被锁定,无法登录使用 [root@liruilong ~]$ passwd -S dachui dachui LK 2020-08-18 0 99999 7 -1 (密码已被锁定。) ###使用账户dachui远程本机,无法登录 [root@liruilong ~]$ ssh dachui@127.0.0.1 dachui@127.0.0.1's password: #密码为: tarena123 Permission denied, please try again. dachui@127.0.0.1's password: ###-u 解锁dachui账户 [root@liruilong ~]$ passwd -u dachui 解锁用户 dachui 的密码。 passwd: 操作成功 ###重新使用账户dachui远程本机,可以登录 [root@liruilong ~]$ ssh dachui@127.0.0.1 dachui@127.0.0.1s password: #密码为: tarena123 Last failed login: Tue Aug 18 08:55:30 CST 2020 from localhost on ssh:notty There was 1 failed login attempt since the last successful login. Last login: Tue Aug 18 08:46:50 2020 from localhost [dachui@liruilong ~]$ #ctrl + D 退出登录 Connection to 127.0.0.1 closed. #####-S(大写) 重新查看用户dachui密码的状态,已解锁 [root@liruilong ~]$ passwd -S dachui dachui PS 2020-08-18 0 99999 7 -1 (密码已设置,使用 SHA512 算法。) 强制定期修改密码

  • 配置文件 /etc/login.defs
  • 主要控制属性

主要控制属性

PASS_MAX_DAYS —》 用户密码的最长有效期

PASS_MIN_DAYS —》 用户密码的最短有效期

PASS_WARN_AGE —》 用户密码过期的前几天会发送警告信息

#######此管理用户密码的操作,只会对后面创建的用户生效,以前的则不影响 [root@liruilong ~]$ vim /etc/login.defs ...... 25 PASS_MAX_DAYS 60 #一个密码最长可以使用60天 26 PASS_MIN_DAYS 0 #一个密码最少要用多少天,否则无法修改,0不设置 27 PASS_MIN_LEN 5 #密码的最少长度为5 28 PASS_WARN_AGE 7 #密码过期的前7天,对用户发送警告信息 ...... #####对当前用户的密码进行管理,/etc/shadow 为用户密码的配置文件 ###用户密码的最长有效期为99999,可以直接修改配置文件对以前的用户进行密码管理 [root@liruilong ~]$ cat /etc/shadow | head -3 root:$6$l2XJYza/aL1Ug4Ta$4kBxc4ED.pyWbBR5Yg3XVX/3lT3S0Efuh4eNxC83AdIlYDeEzcafsbV 8YkVo88T0W/vVDTxpYtiFceiUM9qQk0::0:99999:7::: bin:*:17632:0:99999:7::: daemon:*:17632:0:99999:7::: 伪装登录提示

伪装登录提示

workstation服务无法启动

配置文件 /etc/issue、/etc/issue.net

分别使用于本地、远程登录

默认会提示内核、系统等版本信息

这个 centos7 可能有点问题,可以写到 .bashrc 文件里:.bashrc文件通常也是通过某个bash启动文件来运行的。因为.bashrc文件会运行两次:一次是 当你登入bash Shell时,另一次是当你启动一个bash shell时。如果你需要一个脚本在两个时刻都得 以运行,可以把这个脚本放进该文件中。

#####修改本地用户登录的提示信息 [root@liruilong ~]$ vim /etc/issue Welcome to Tedu #####修改网络用户登录的提示信息,远程登录时显示,ssh默认关闭此功能 ##可以不修改 [root@liruilong ~]$ vim /etc/issue.net Welcome to Ted 文件系统安全锁定/解锁保护文件

  • 文件属性控制:chattr、lsattr
  • 、- 控制方式属性i:不可变 (immutable)属性a: 仅可追加(append only)

######创建一个测试文件 [root@liruilong ~]$ vim test.sh hello the world ni hao. #########文件如果有i的属性,则对于此文件,增删改查均无法操作 ##lsattr 查看文件的属性 [root@liruilong ~]$ lsattr test.sh ---------------- test.sh ##chattr 给文件test.sh增加i的属性 [root@liruilong ~]$ chattr +i test.sh ##查看文件test.sh属性 [root@liruilong ~]$ lsattr test.sh ----i----------- test.sh ##测试,写入操作和删除操作都无法进行 [root@liruilong ~]$ echo 123 > test.sh -bash: test.sh: 权限不够 [root@liruilong ~]$ rm -rf test.sh rm: 无法删除"test.sh": 不允许的操作 ##取消文件test.sh的i的属性,通过lsattr查看 [root@liruilong ~]$ chattr -i test.sh [root@liruilong ~]$ lsattr test.sh ---------------- test.sh #########文件如果有a的属性,则对于此文件,只能执行追加的操作 ####对于日志文件执行a属性,防止内容被篡改 ##给文件test.sh增加一个a属性,lsattr查看 [root@liruilong ~]$ chattr +a test.sh [root@liruilong ~]$ lsattr test.sh -----a---------- test.sh ###测试,追加内容的操作可以进行,写入,删除失败 [root@liruilong ~]$ echo 123 >> test.sh [root@liruilong ~]$ echo 123 > test.sh -bash: test.sh: 不允许的操作 [root@liruilong ~]$ rm -rf test.sh rm: 无法删除"test.sh": 不允许的操作 ##取消文件test.sh的a的属性,通过lsattr查看 [root@liruilong ~]$ chattr -a test.sh [root@liruilong ~]$ lsattr test.sh ---------------- test.sh 文件系统挂载熟悉

mount 挂载属性

  • noexec: 不可执行程序
  • noatime: 不更新文件的访问时间

noexec:
挂载设备时,添加此选项,则此设备中的所有程序均不可被执行(例如:病毒或木马)
noatime:
计算机中的文件都有访问时间(atime),修改时间(mtime);
挂载设备时,添加此选项,则所有文件的访问时间都不再被更新;
如果计算机中的a文件被用户访问,则a文件的atime就会被修改,对于web服务器而言,会有成千上万的
用户访问网页,则这个网页的atime就会被频繁修改,会消耗大量的CPU资源,需要在挂载的时候使用

#########boot分区挂载示例,其他挂载方法类似 [root@liruilong ~]$ vim /etc/fstab UUID=c120742d-5bdf-48c3-b830-3bfb3e796009 /boot xfs defaults,noexec,noatime 0 0 ###-o remount 重新挂载,让配置生效 [root@liruilong ~]$ mount -o remount /boot/ ###查看挂载的属性,/boot分区下,有了noexec,noatime [root@liruilong ~]$ mount ...... /dev/sda1 on /boot type xfs (rw,noexec,noatime,attr2,inode64,noquota) ...... #####定义一个不断输出a的脚本,赋予x执行权限,却无法运行 [root@liruilong ~]$ vim /boot/test.sh #!/bin/bash while : do echo a done ##必须是在/boot/目录下,执行脚本 [root@liruilong ~]$ cd /boot [root@liruilong boot]$ chmod +x test.sh [root@liruilong boot]$ ./test.sh -bash: ./test.sh: 权限不够 程序和服务控制

  • 禁用非必要的系统服务: 使用systemctl、chkconfig (centos6使用) 工具
  • 可选服务列表(选择进行关闭)

可选服务列表

cups.service 打印服务

postfix.service 邮件服务

NetworkManager.service 网络管理服务(network可以替代)

firewalld 防火墙 (iptables可以替代)

atd.service 一次性计划任务(crond可以替代)

bluetooth.service 蓝牙服务

autofs.service 自动挂载

pcscd.service 智能卡设备资源管理器

#####停止服务,并设置为开机不会自动启动 [root@liruilong ~]$ systemctl stop firewalld [root@liruilong ~]$ systemctl disable firewalld 二、用户切换与提权su切换用户身份切换与提权的应用场景

  • 切换用户身份,When?:SSH远程管理/运维测试
  • 提升执行权限,when?:管理权限细分
su切换的基本用法:Substitube User,换人
  • 快速切换为指定的其他用户
  • 普通用户执行时,需验证目标用户的口令
  • root执行时,无需验证口令

命令格式

  • 用法1:su [-] [目标用户]
  • 用法2:su [-] -c “命令” [目标用户]
su操作示例

从普通用户切换为root,并登录新Shell环境,执行 su -,或者su - root,不指名目标用户时,默认视为root

#####创建新的用户jerry,并设置密码为123456 [root@liruilong ~]$ useradd jerry [root@liruilong ~]$ echo 123456 | passwd --stdin jerry 更改用户 jerry 的密码 。 passwd:所有的身份验证令牌已经成功更新。 ###从root用户切换到jerry用户 [root@liruilong ~]$ su - jerry ###查看当前当前登录的用户身份为jerry,普通用户的权限很低 [jerry@liruilong ~]$ whoami jerry [jerry@liruilong ~]$ cat /etc/shadow cat: /etc/shadow: Permission denied [jerry@liruilong ~]$ ls /root/ ls: cannot open directory /root/: Permission denied [jerry@liruilong ~]$ exit #退出jerry用户登录状态 logout

#####创建新的用户tom,并设置密码为123456 [root@liruilong ~]$ useradd tom [root@liruilong ~]$ echo 123456 | passwd --stdin tom 更改用户 tom 的密码 。 passwd:所有的身份验证令牌已经成功更新。 ###从root用户切换到jerry用户,管理员切换成普通用户身份不需要密码 [root@liruilong ~]$ su - jerry 上一次登录:二 8月 18 10:21:41 CST 2020pts/0 上 ###从jerry用户切换到tom用户,普通用户身份的切换需要输入密码 [jerry@liruilong ~]$ su - tom Password: #输入tom用户的密码 [tom@liruilong ~]$ exit #退出tom用户的登录 logout [jerry@liruilong ~]$ exit #退出jerry用户的登录 logout

###从root用户切换到jerry用户,管理员切换成普通用户身份不需要密码 [root@liruilong ~]$ su - jerry 上一次登录:二 8月 18 10:23:02 CST 2020pts/0 上 ###su - 后面不跟用户,则默认是切换到root用户下 [jerry@liruilong ~]$ su - Password: #输入管理员root的密码 Last login: Tue Aug 18 10:23:53 CST 2020 on pts/0 [root@liruilong ~]$ exit #退出,回到jerry用户下 [jerry@liruilong ~]$ exit #退出,回到最出的root解释器下

root以指定的普通用户身份执行任务:以用户tom的身份创建目录,以用户tom的身份执行管理员操作会出错

###-c 以普通用户jerry的身份执行一条命令 [root@liruilong ~]$ su - jerry -c "touch /tmp/test.txt" ##查看文件的属性 [root@liruilong ~]$ ll /tmp/test.txt -rw-rw-r-- 1 jerry jerry 0 8月 18 10:25 /tmp/test.txt ####错误,普通用户没有权利去重启sshd服务 [root@liruilong ~]$ su - tom -c "systemctl restart sshd" Error creating textual authentication agent: ......

分析su切换的使用情况:安全日志 /var/log/secure,记录su验证、Shell开启与关闭

[root@liruilong ~]$ tail -4 /var/log/secure Aug 18 10:25:03 localhost su: pam_unix(su-l:session): session opened for user jerry by root(uid=0) Aug 18 10:25:03 localhost su: pam_unix(su-l:session): session closed for user jerry Aug 18 10:40:50 localhost su: pam_unix(su-l:session): session opened for user tom by root(uid=0) Aug 18 10:40:51 localhost su: pam_unix(su-l:session): session closed for user tom sudo 提升执行权限sudo提权的基本用法

  • Super or another Do,超级执行:管理员预先为用户设置执行许可,被授权用户有权执行授权的命令,验证自己的口令
  • 执行提权命令: 用法: sudo 提权命令
  • 查看提权命令: 用法:sudo -l
配置sudo提权

修改方法

  • 推荐:visudo
  • 其他:vim /etc/sudoers ---> wq!(强制保存并退出)授权记录格式`

用户或组
#指定给特定用户授权或者组(多个用户属于一个组)
#指定给组授权时,组的前面必须加 %,例如:%wheel

主机列表
#允许哪些客户机可以通过这个用户登录本机去执行命令,例如:ALL(指所有客户机)
提权身份
#给第一列的用户赋予权限,例如:(root)

[NOPASSWD]:命令列表 #前半部分是不需要密码执行命令;后半部分是要执行的命令,且;命令要写绝
对路径

%wheel ALL=(root) ALL #给wheel组中的所有用户,赋予root的权限,让其可以在任何主机上以root的身份去执行任何命令

允许mike以root权限执行 /sbin/ 下的所有命令,但是,禁止修改eth0网卡的参数

/sbin/* #模糊匹配,/sbin/下的所有命令都可以用sudo提权使用 !/sbin/ifconfg etho #! 代表取反,该命令不能被sudo提权使用

####sudo 提权,让普通用户jerry可以执行systemctl restart sshd 命令 [root@liruilong ~]$ id jerry uid=1002(jerry) gid=1002(jerry) 组=1002(jerry) ####通过which命令,获取systemctl的绝对路径 [jerry@liruilong ~]$ which systemctl /bin/systemctl ###最后一行追加,允许jerry用户,可以以任何人的身份,从任何客户端,执行此命令 ##立刻生效 [root@liruilong ~]$ visudo ...... jerry ALL=(ALL) /usr/bin/systemctl ######测试,验证 ##切换到jerry用户下 [root@liruilong ~]$ su - jerry 上一次登录:二 8月 18 10:50:16 CST 2020pts/0 上 ####使用sudo提权命令,重启sshd服务 [jerry@liruilong ~]$ sudo systemctl restart sshd [sudo] password for jerry: ##jerry用户密码:123456 Sorry, try again. ###sudo -l 查看jerry用户可以执行的sudo提权命令 [jerry@liruilong ~]$ sudo -l ...... User jerry may run the following commands on liruilong: (ALL) /usr/bin/systemctl

wheel组的用户无需验证可执行所有命令

####通过which命令,获取parted分区命令的绝对路径 [root@liruilong ~]$ which parted /usr/sbin/parted ###最后一行追加,允许tom用户,可以以任何人的身份,从任何客户端,无密码使用parted命令 ##立刻生效 [root@liruilong ~]$ visudo ...... jerry ALL=(ALL) /usr/bin/systemctl tom ALL=(ALL) NOPASSWD:/usr/sbin/parted ######测试,验证 ##切换到tom用户下 [root@liruilong ~]$ su - tom 上一次登录:二 8月 18 10:40:50 CST 2020pts/0 上 ##sudo提权后,tom用户下,查看磁盘/dev/sda的分区情况 [tom@liruilong ~]$ sudo parted /dev/sda print Model: VMware, VMware Virtual S (scsi) Disk /dev/sda: 21.5GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 1049kB 1075MB 1074MB primary xfs boot 2 1075MB 21.5GB 20.4GB primary lvm [tom@liruilong ~]$ exit #退出tom用户登录

分析sudo提权的使用情况: 修改全局配置,启动日志Defaults logfile="/var/log/sudo"

##########修改全局配置,启动的日志,该日志记录sudo提权的使用情况 ##最后一行添加:Defaults logfile="/var/log/sudo" [root@liruilong ~]$ visudo ...... jerry ALL=(ALL) /usr/bin/systemctl tom ALL=(ALL) NOPASSWD:/usr/sbin/parted Defaults logfile="/var/log/sudo" ########验证日志信息,需先执行一次提权命令 [root@liruilong ~]$ su - tom 上一次登录:二 8月 18 10:56:52 CST 2020pts/0 上 ##sudo提权后,tom用户下,查看磁盘/dev/sda的分区情况 [tom@liruilong ~]$ sudo parted /dev/sda print Model: VMware, VMware Virtual S (scsi) Disk /dev/sda: 21.5GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 1049kB 1075MB 1074MB primary xfs boot 2 1075MB 21.5GB 20.4GB primary lvm [tom@liruilong ~]$ exit #退出tom用户的登录状态 ######查看日志,看看sudo提权的使用信息 [root@liruilong ~]$ cat /var/log/sudo Aug 18 13:02:12 : jerry : TTY=pts/0 ; PWD=/home/jerry ; USER=root ; COMMAND=/bin/systemctl restart sshd Aug 18 13:18:34 : tom : TTY=pts/0 ; PWD=/home/tom ; USER=root ; COMMAND=/sbin/parted /dev/sda print 三、sshd访问控制SSH基本防护SSH防护概述

  • 存在的安全隐患
    • 密码嗅探、键盘记录
    • 暴力枚举账号、猜解密码
  • 常见的防护措施
    • 用户限制、黑白名单
    • 更改验证方式(密码 --> 密钥对)
    • 防火墙…
sshd基本安全配置

配置文件 /etc/ssh/sshd_config

  • Port 3389 //改用非标准端口
  • ListenAddress 192.168.168.174
  • PermitrootLogin //禁止root登录

#####修改ssh配置时,先备份sshd主配置文件 [root@liruilong ~]$ cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak ####修改虚拟机ssh远程连接得端口为3389 [root@liruilong ~]$ vim /etc/ssh/sshd_config 17 Port 3389 ##重启sshd服务 [root@liruilong ~]$ systemctl restart sshd #xshell测试使用ssh远程时必须加端口号3389 [c:~]$ ssh root@192.168.2.100 3389 ####用户只能通过192.168.2.100这个IP地址远程liruilong这台虚拟机 [root@liruilong ~]$ vim /etc/ssh/sshd_config 20 ListenAddress 192.168.2.100 ##重启sshd服务,虚拟机新添加网卡配置其他IP地址测试 [root@liruilong ~]$ systemctl restart sshd #xshell测试使用ssh远程时必须加端口号3389 [c:~]$ ssh root@192.168.2.100 3389

#####禁止root远程登录虚拟机liruilong [root@liruilong ~]$ vim /etc/ssh/sshd_config 38 PermitRootLogin no ##重启sshd服务,xshell使用root远程登录liruilong失败 [root@liruilong ~]$ systemctl restart sshd #####xshell以普通用户jerry的身份可以登录liruilong虚拟机 ##使用su -切换成root身份,或者使用sudo提权命令 [c:~]$ ssh jerry@192.168.2.100 3389 #密码123456 [tom@liruilong ~]$ [tom@liruilong ~]$ su - root #su - 切换root用户 密码: #输入root密码 [root@liruilong ~]$

  • 配置文件 /etc/ssh/sshd_configUseDNS no //不解析客户机地址LoginGraceTime 1m //登录限时MaxAuthTries 3//每连接最多认证次数

UseDNS no #不对客户机进行域名解析,访问网站的普通用户是没有域名的,不需要解析
LoginGraceTime 1m #用户在ssh远程服务器时,如果1分钟内用户没有输入用户名和密码,则断开连接

#########举例演示 ##登录限时修改为10s,真实环境需要长一点 [root@liruilong ~]$ vim /etc/ssh/sshd_config 37 LoginGraceTime 10s 115 UseDNS no ##重启sshd服务 [root@liruilong ~]$ systemctl restart sshd ###使用xshell远程连接时,不输入密码,等待10s中,会出现连接关闭的提示 [c:~]$ ssh jerry@192.168.2.100 3389 Connection closing...Socket close.

MaxAuthTries 3 : #用户远程服务器时,密码错误,可以尝试多少次

#这里的3不是指的3次,是一个概数,需要不断尝试错误连接,来得出这里得数字 #########举例演示 ##修改连接认证次数为3 [root@liruilong ~]$ vim /etc/ssh/sshd_config 40 MaxAuthTries 3 ##重启sshd服务 [root@liruilong ~]$ systemctl restart sshd ##使用xshell远程连接,输入错误密码,输入两次就会出现连接端口的提示 [c:~]$ ssh jerry@192.168.2.100 3389 Connection closing...Socket close.

ssh经常一段时间就断掉解决办法去掉注释,改成

vim /etc/ssh/sshd_config ClientAliveInterval 30 ClientAliveCountMax 86400

这两行的意思分别是

  1. 、客户端每隔多少秒向服务发送一个心跳数据
  2. 、客户端多少秒没有相应,服务器自动断掉连接

重启sshd服务

#service sshd restart

  • sshd黑/白名单配 配置文件 /etc/ssh/sshd_configDenyUsers USER1 USER2 …AllowUsers USER1@HOST USER2 …DenyGroups GROUP1 GROUP2 …AllowGroups GROUP1 GROUP2 …

#####设置黑白名单时,如果要允许或拒绝多个用户,用户之间以空格作为分隔符 DenyUsers #设置黑名单,拒绝某些用户登录本机 AllowUsers #设置白名单,允许某些用户登录本机 DenyGroups #设置黑名单,拒绝一个或多个用户组登录本机 AllowGroups #设置白名单,允许一个或多个用户组登录本机 AllowUsers USER1@HOST #设置白名单,允许用户USER1从HOST这台主机登录本机

应用示例:仅允许一部分用户(从指定地点)登入,其他任何用户均禁止登入

####使用xshell让用户jerry使用3389端口登录 [c:~]$ ssh jerry@192.168.2.100 3389 [jerry@liruilong ~]$ su - root #切换为root身份 [jerry@liruilong ~]$ #######设置白名单,仅允许tom可以ssh远程登录服务器,其他任何用户都无法登录 ##如果设置的是白名单,则不需要设置黑名单了,默认是拒绝其他用户远程登录 [root@liruilong ~]$ vim /etc/ssh/sshd_config 42 AllowUsers tom ##重启sshd服务 [root@liruilong ~]$ systemctl restart sshd ######xshell远程测试 ##jerry无法再登录了 [c:~]$ ssh jerry@192.168.2.100 3389 #登录密码123456 ##tom用户可以远程登录 [c:~]$ ssh tom@192.168.2.100 3389 #登录密码 123456 [tom@liruilong ~]$ ```bash #######设置黑名单,仅拒绝tom通过ssh远程登录服务器,其他用户都允许 [root@liruilong ~]$ vim /etc/ssh/sshd_config 42 DenyUsers tom ##重启sshd服务 [root@liruilong ~]$ systemctl restart sshd ######xshell远程测试 ##tom无法再登录了 [c:~]$ ssh tom@192.168.2.100 3389 #登录密码123456 ##jerry用户可以远程登录 [c:~]$ ssh jerry@192.168.2.100 3389 #登录密码 123456 [tom@liruilong ~]$

#######设置黑名单,拒绝用户tom从IP地址为192.168.2.1的主机,来远程服务器svr7 [root@svr7 ~]$ vim /etc/ssh/sshd_config 42 DenyUsers tom@192.168.2.1 ##重启sshd服务 [root@svr7 ~]$ systemctl restart sshd SSH密钥对验证

sshd验证方式控制

  • 口令验证::检查登录用户的口令是否一致:密码验证:#当windows被攻击,系统被植入木马,容易被攻击者从键盘记录等方式中获取密码
  • 密钥验证:检查客户端私钥与服务器上的公钥是否匹配:密钥验证:#密钥验证的安全度很高;#不会有输入密码的过程,键盘工具方式无效;
  • PasswordAuthentication yes #ssh支持密码验证

47 AuthorizedKeysFile .ssh/authorized_keys ##指定公钥的存放位置,在用户的家目录 下的.ssh目录中的authorized_keys文件中 密钥对验证的实现思路

  • 第一步:客户机创建密钥对,私钥文件:id_rsa 公钥文件: id_rsa.pub;
  • 第二步: 客户机上传公钥到服务器上用户的家目录下 ./ssh/authorized_keys文件;
    ssh-copy-id 命令,会自动将公钥放到指定用户家目录的对应文件中

创建SSH密钥对:使用工具 ssh-keygen

  • 可以手动指定加密算法(-t rsa 或 -t dsa)
  • 若不指定,默认采用RSA加密

######非交互的方式创建密钥对 [root@svr7 ~]$ ssh-keygen -N '' -f /root/.ssh/id_rsa Generating public/private rsa key pair. Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: SHA256:+pb7aZI5xtlulc1Z3MQjjsNGLu5mbCHxU5JfPtWOe+w root@svr7 The keys randomart image is: +---[RSA 2048]----+ | . | | . . .o| | = o .o+| | . + B o .=| | S * ++.= | | o = .oo= .| | ..+*o. .o | | .@*+. . o| | o*O+ oE| +----[SHA256]-----+ ###密钥对会生成在/root/.ssh/目录下 [root@svr7 ~]$ ls /root/.ssh/ id_rsa id_rsa.pub known_hosts

部署SSH公钥

#方法一:将公钥通过ssh-copy-id放到192.168.2.200的服务器上 [root@svr7 ~]$ ssh-copy-id root@192.168.2.200 #查看公钥文件的保存路径 [root@client ~]$ ls /root/.ssh/ authorized_keys 四、加密与解密加解密概述加密目的及方式

  • 确保数据的机密性对称加密:加密/解密用同一个密钥非对称加密:加密/解密用不同的密钥(公钥、私钥)
  • 保护信息的完整性(常用于做数据完整性校验)信息摘要:基于输入的信息生成长度较短、位数固定的散列值
常见的加密算法
  • 对称加密DES,Data Encryption StandardAES,Advanced Encryption Standard
  • 非对称加密RSA,Rivest Shamirh AdlemanDSA,Digital Signature Algorithm
  • Hash散列技术,用于信息摘要MD5, Message Digest Algorithm 5 : 根据输入的文本(长度不限) ,生成固定长度(比如128位)的摘要文本SHA, Secure Hash Algorithm1 : 只要输入的文本不同,则生成的摘要文本也不一样
MD5完整性检验
  • 使用md5sum校验工具
    • 生成MD5校验值
    • 与软件官方提供的校验值比对
GPG加解密厂具GnuPG简介

GnuPG,GNU Privacy Guard : http://www.gnupg.org/ 最流行的数据加密、数字签名工具软件

########查看gpg的版本,以及支持的算法 [root@node1 ~]$ gpg --version gpg (GnuPG) 2.0.22 libgcrypt 1.5.3 Copyright (C) 2013 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Home: ~/.gnupg 支持的算法: 公钥:RSA, ?, ?, ELG, DSA 对称加密:IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH, CAMELLIA128, CAMELLIA192, CAMELLIA256 散列:MD5, SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224 压缩:不压缩, ZIP, ZLIB, BZIP2 GPG对称加解密

基本用法

  • 加密操作:--symmetric 或 -c
  • 解密操作:--decrypt 或 -d

####定义一个测试文件test.txt [root@node1 ~]$ echo "hello the world" > test.txt ####使用gpg -c 对文件进行加密,输入加密密码 123456【tab键切换,回车确定】 [root@node1 ~]$ gpg -c test.txt

####加密完成后,会生成一个以.gpg结尾的加密文件 [root@node1 ~]$ ls -l test.txt.gpg -rw-r--r-- 1 root root 63 8月 20 09:58 test.txt.gpg ###删除原始文件 [root@node1 ~]$ rm -rf test.txt

######使用gpg -d解密数据,将数据解密后放到/opt/test02.txt文件中 ###解密密钥存放在/root/.gnupg/secring.gpg文件中 ##加密和解密在同一台服务器上,有解密密钥的存在,不需要输入密码直接解密 [root@node1 ~]$ gpg -d test.txt.gpg > /opt/test02.txt gpg: CAST5 加密过的数据 gpg: 以 1 个密码加密 hello the world gpg: 警告:报文未受到完整的保护 ###查看解密后的文件内容 [root@node1 ~]$ cat /opt/test02.txt hello the world

#######在node1上加密文件,在node2上解密文件 [root@node1 ~]$ scp test.txt.gpg root@192.168.2.200:/root/ ####客户端node2上查看加密数据 [root@node2 ~]$ ls -l test.txt.gpg -rw-r--r-- 1 root root 63 8月 20 10:16 test.txt.gpg ######解密数据,存放到test.txt文件中 ##根据提示需要输入密码 123456 [root@node2 ~]$ gpg -d test.txt.gpg > /root/test.txt ##查看解密后的数据 [root@node2 ~]$ ls -l test.txt -rw-r--r-- 1 root root 16 8月 20 10:17 test.txt [root@node2 ~]$ cat test.txt hello the world GPG非对称加解密

  • 基本过程
  • 前期准备工作UserB 创建密钥对:--gen-keyUserB 导出公钥:--export、--armor 或 -aUserA 导入公钥:--import

[root@node1 ~]$ gpg --gen-key gpg (GnuPG) 2.0.22; Copyright (C) 2013 Free Software Foundation, Inc. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. 请选择您要使用的密钥种类: (1) RSA and RSA (default) #默认使用密钥类型 (2) DSA and Elgamal (3) DSA (仅用于签名) (4) RSA (仅用于签名) 您的选择? #直接回车选择默认密钥类型 RSA 密钥长度应在 1024 位与 4096 位之间。 您想要用多大的密钥尺寸?(2048) #密钥长度,默认2048 您所要求的密钥尺寸是 2048 位 请设定这把密钥的有效期限。 0 = 密钥永不过期 #默认选项 <n> = 密钥在 n 天后过期 #3 代表3天后过期 <n>w = 密钥在 n 周后过期 #3w 代表3周后过期 <n>m = 密钥在 n 月后过期 #3m 代表3月后过期 <n>y = 密钥在 n 年后过期 #3y 代表3年后后期 密钥的有效期限是?(0) #回车,默认选择永不过期 密钥永远不会过期 以上正确吗?(y/n)y #选择y,确定以上选择 You need a user ID to identify your key; the software constructs the user ID from the Real Name, Comment and Email Address in this form: "Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>" 真实姓名:userb #填写密钥名称 电子邮件地址:userb@tedu.cn #填写密钥邮箱 注释:test key #注释信息,任意填写 您选定了这个用户标识: “userb (test key) <userb@tedu.cn>” 更改姓名(N)、注释(C)、电子邮件地址(E)或确定(O)/退出(Q)? #大写O确定,回车 ##这里输入的密码,是解密数据时需要输入的,选择“回车”,则代表解密不需要额外的密码验证,直接解密出 数据

#####生成密钥对时,需要大量的随机数,是从/dev/random获取的,如果无法很快生成密钥,ctrl+C 结束 命令,修改随机数生成器 ###修改随机数的生成器为 /dev/urandom [root@node1 ~]$ mv /dev/random /dev/random.bak [root@node1 ~]$ ln -s /dev/urandom /dev/random ###根据上面的操作重新生成密钥对,如果终端异常,输入 reset 重置终端 [root@node1 ~]$ gpg --gen-key ####查看生成的密钥 [root@node1 ~]$ gpg --list-keys /root/.gnupg/pubring.gpg ------------------------ pub 2048R/8B8D56D4 2020-08-20 uid userb (test key) <userb@tedu.cn> sub 2048R/90116CE3 2020-08-20

####根据密钥名称userb导出公钥 [root@node1 ~]$ gpg -a --export userb > /tmp/userb.pub ###也可以根据密钥邮箱userb@tedu.cn导出公钥 [root@node1 ~]$ gpg -a --export userb@tedu.cn > /tmp/userb02.pub #####查看导出的公钥userb.pub内容 [root@node1 ~]$ cat /tmp/userb.pub -----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v2.0.22 (GNU/Linux) mQENBF895QwBCACwfDPG4vzoazhIGnLIghIN49ByACQG1YB2cHvoqITQ06KDve0p EHDayr2mcGGwZbv96tp3HDIoS70QpbMdiqri5zD3Jnms2C37pfRmPDjUJ6eQQQJJ ...... #####查看导出的公钥userb02.pub内容 [root@node1 ~]$ cat /tmp/userb02.pub -----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v2.0.22 (GNU/Linux) mQENBF895QwBCACwfDPG4vzoazhIGnLIghIN49ByACQG1YB2cHvoqITQ06KDve0p EHDayr2mcGGwZbv96tp3HDIoS70QpbMdiqri5zD3Jnms2C37pfRmPDjUJ6eQQQJJ ......

########客户机node2导入来自node1的公钥 ####第一步:node1拷贝公钥到node2虚拟机中的/tmp目录下 [root@node1 ~]$ scp /tmp/userb.pub 192.168.2.200:/tmp/ ####第二步:客户机client导入公钥/tmp/userb.pub #首先,查看列表,是否有公钥 [root@node2 ~]$ gpg --list-keys gpg: /root/.gnupg/trustdb.gpg:建立了信任度数据库 #然后,根据文件导入公钥 [root@node2 ~]$ gpg --import /tmp/userb.pub gpg: 密钥 8B8D56D4:公钥“userb (test key) <userb@tedu.cn>”已导入 gpg: 合计被处理的数量:1 gpg: 已导入:1 (RSA: 1) #最后,再次查看列表,新的公钥已经导入 [root@node2 ~]$ gpg --list-keys /root/.gnupg/pubring.gpg ------------------------ pub 2048R/8B8D56D4 2020-08-20 uid userb (test key) <userb@tedu.cn> sub 2048R/90116CE3 2020-08-20

  • 基本用法加密操作:--encrypt 或 -e指定目标用户:--recipient 或 -r解密操作:--decrypt 或 -d

######在客户机node2上生成一个测试文件clear.txt [root@node2 ~]$ echo test > /root/clear.txt #####-e 加密,-r 使用公钥userb对文件clear.txt进行加密 [root@node2 ~]$ gpg -e -r userb clear.txt gpg: 90116CE3:没有证据表明这把密钥真的属于它所声称的持有者 pub 2048R/90116CE3 2020-08-20 userb (test key) <userb@tedu.cn> 主钥指纹: 0644 7DE7 C2A8 EE21 F41F 939B C53B 6BCA 8B8D 56D4 子钥指纹: 80B5 C5AB 7AA9 287C F411 AD7C 0105 14A9 9011 6CE3 这把密钥并不一定属于用户标识声称的那个人。如果您真的知道自 己在做什么,您可以在下一个问题回答 yes。 无论如何还是使用这把密钥吗?(y/N)y #y 确定使用公钥userb加密 #####加密数据生成,以后发送文件也是发送.gpg结尾的加密文件 #####加密文件发送过去以后,再通过私钥进行解密 [root@node2 ~]$ ls -l /root/clear.txt.gpg -rw-r--r-- 1 root root 346 8月 20 11:10 /root/clear.txt.gpg #######客户端client发送加密文件给svr7 [root@client ~]$ scp /root/clear.txt.gpg root@192.168.2.100:/root/ ######-d 解密数据;-r 使用userb私钥解密,要解密文件为clear.txt.gpg ##解密后的数据存放到 clear.txt文件中 [root@node1 ~]$ gpg -d -r userb clear.txt.gpg > clear.txt gpg: 由 2048 位的 RSA 密钥加密,钥匙号为 90116CE3、生成于 2020-08-20 “userb (test key) <userb@tedu.cn>” ##查看clear.txt中解密后的数据 [root@node1 ~]$ cat clear.txt test GPG软件签名与验证

软件签名与验证过程

软件官方以私钥对软件包执行数字签名

用户下载软件包、软件官方的公钥

以官方公钥验证软件包签名,确保数据来源正确

服务器使用私钥对发送出的所以数据文件进行签名;客户端可以使用公钥来对数据文件进行验证,查看其是否是有服务器发送的;如果是,则代表来源正确;如果不是,则数据文件不安全,删除

GPG软件签名与验证

命令

为软件包建立签名文件

分离式签名:--detach-sign 或 -b

验证软件包签名

验证签名:--verify

node1

####### -b 服务器node1对文件clear.txt进行签名 ##签名后会生成一个签名文件 [root@node1 ~]$ gpg -b clear.txt [root@node1 ~]$ ls -l clear.txt.sig -rw-r--r-- 1 root root 287 8月 20 11:29 clear.txt.sig ######将数据文件clear.txt和签名文件clear.txt.sig发送给客户端client [root@node1 ~]$ scp clear.txt clear.txt.sig root@192.168.2.200:/root/

node2

#########客户端node2通过 --verify 验证数据文件clear.txt的来源 ##验证签名时,签名文件放到前面,数据文件跟在后面 [root@node2 ~]$ gpg --verify clear.txt.sig clear.txt gpg: 于 2020年08月20日 星期四 11时29分15秒 CST 创建的签名,使用 RSA,钥匙号 8B8D56D4 gpg: 完好的签名,来自于“userb (test key) <userb@liruilong.cn>” gpg: 警告:这把密钥未经受信任的签名认证! gpg: 没有证据表明这个签名属于它所声称的持有者。 主钥指纹: 0644 7DE7 C2A8 EE21 F41F 939B C53B 6BCA 8B8D 56D4 五、AIDE入侵检测初始化系统安装软件包

AIDE(Advanced intrusion detection environment),该软件为一套入侵检测系统,配置yum源即可安装aide软件

[root@node1 ~]$ yum -y install aide

aide原理:

在没有被人篡改之前对我们的计算机做一个全面的检查;

记录每个文件的状态(包括数据的时间,大小,权限,哈希值等);

当计算机被入侵以后,aide对计算机做同样的校验,同样的检查;

最后,通过对比入侵之前检查的结果和入侵之后的检查结果,找到哪些数据发生了哪些变化

修改配置文件

**AIDE默认配置文件为/etc/aide.conf**嗯,这个系统不一样会有出入

[root@node1 ~]$ vim /etc/aide.conf 1 # Example configuration file for AIDE. 2 3 @@define DBDIR /var/lib/aide #aide对数据校验后,结果文件的存放位置 4 @@define LOGDIR /var/log/aide #aide日志文件的目录 ...... ###当系统被入侵后,需要将入侵前的数据aide.db.new.gz,更名为aide.db.gz ##系统被入侵后,aide重新校验时会将新生成的校验结果aide.db.new.gz和以前校验结果aide.db.gz进行对比 7 database=file:@@{DBDIR}/aide.db.gz ...... #####定义校验完数据后,将校验结果存放到哪个目录下的哪个文件中 ##默认存放到/var/lib/aide目录下;保存的文件名问aide.db.new.gz 12 database_out=file:@@{DBDIR}/aide.db.new.gz ...... 28 #p: permissions #校验文件的权限是否被修改 29 #i: inode: #校验文件的inode节点是否被修改 30 #n: number of links #校验文件的链接数量是否增多或减少 31 #u: user #校验文件的所有者是否被修改 32 #g: group #校验文件的所属组否是被修改 33 #s: size #校验文件的大小是否变化 ...... 42 #md5: md5 checksum #校验文件md5生成的哈希值 43 #sha1: sha1 checksum #校验文件sha1生成的哈希值 44 #sha256: sha256 checksum #校验文件sha256生成的哈希值 ...... ######定义变量,变量中包含以上的所有校验 54 FIPSR = p+i+n+u+g+s+m+c+acl+selinux+xattrs+sha256 ...... 71 NORMAL = sha256 #定义变量,校验哈希值,会调用 修改配置文件

校验的目录设置

[root@node1 ~]$ vim /etc/aide.conf ...... 99 /boot/ NORMAL #对/boot目录,进行sha256校验,NORMAL为变量 100 /bin/ NORMAL #同上 101 /sbin/ NORMAL 102 /lib/ NORMAL 103 /lib64/ NORMAL 104 /opt/ NORMAL ...... 112 !/usr/src/ #! 取反,设置不需要校验的目录 113 !/usr/tmp/

第一步:批量注释掉所有的校验目录


步骤一: vim 打开文件/etc/aide.conf

步骤二: 末行模式下,光标移动到99行/boot/的首字母上【末行模式 :99】

步骤三: Ctrl + v 进入到可视化模式,按键盘的下键,拉到最后一行

步骤四: Shift + i 进入到插入模式,插入注释符号#;

步骤五: 按键盘左上角的Esc键,批量注释完成

第二步:插入一行校验目录

[root@node1 ~]$ vim /etc/aide.conf ...... 93 DATAONLY = p+n+u+g+s+acl+selinux+xattrs+sha256 ...... ######对/tmp/目录进行校验,校验选项由变量DATAONLY决定 98 /tmp/ DATAONLY 99 #/boot/ CONTENT_EX 100 #/bin/ CONTENT_EX ...... 初始化检查

在没有被攻击入侵前,根据配置文件,对数据进行校验操作

#####对/tmp/目录进行校验操作 [root@node1 ~]$ aide --init AIDE, version 0.15.1 ### AIDE database at /var/lib/aide/aide.db.new.gz initialized.

######查看生成的校验结果数据 #aide每次校验,生成的校验结果文件名都相同 [root@node1 ~]$ ls /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.new.gz 备份数据库

在被入侵前,将校验的数据库文件备份到安全的地方 如,优盘、光盘、移动硬盘、网络存储

######将校验的结果数据文件备份到/mnt目录下 [root@node1 ~]$ mv /var/lib/aide/aide.db.new.gz /mnt/ 入侵检查执行入侵检查

将之前备份的校验数据库文件还原

#####将之前备份的校验数据库文件拷贝会 /var/lib/aide ##配置文件中已经定义了新生成的数据库文件会和aide.db.gz进行比对,所以需要改名 [root@node1 ~]$ cp /mnt/aide.db.new.gz /var/lib/aide/aide.db.gz

根据数据库执行入侵检测

#####没做任何改变前,进行比对,结果正常 [root@node1 ~]$ aide --check AIDE, version 0.15.1 ### All files match AIDE database. Looks okay! ######对/tmp目录下的文件进行多次修改,重新使用aide进行校验比对 [root@node1 ~]$ echo aide >> /tmp/test.txt [root@node1 ~]$ rm -rf /tmp/userb.pub [root@node1 ~]$ echo "xxx" > /tmp/x.txt [root@node1 ~]$ echo "ccc" > /tmp/c.txt #####没做任何改变前,进行比对,会列出详细的文件修改信息 [root@node1 ~]$ aide --check AIDE 0.15.1 found differences between database and filesystem!! Start timestamp: 2022-04-27 13:06:18Summary: Total number of files: 17 Added files: 2 Removed files: 1 Changed files: 1 --------------------------------------------------- Added files: --------------------------------------------------- added: /tmp/c.txt added: /tmp/x.txt --------------------------------------------------- Removed files: --------------------------------------------------- removed: /tmp/userb.pub --------------------------------------------------- Changed files: --------------------------------------------------- changed: /tmp/test.txt --------------------------------------------------- Detailed information about changes: --------------------------------------------------- File: /tmp/test.txt Size : 0 , 5 SHA256 : 47DEQpj8HBSa+/TImW+5JCeuQeRkm5NM , OP7pCdRCH5j0ENIbJ9BV1SZScyCe+FEY 六,端口扫描为什么需要扫描?

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

扫描方式及工具

典型的扫描方式

Scan,主动探测(主动扫描百度或天猫的服务器)

Sniff,被动监听/嗅探 (A机器给B机器发送数据包时,B可以进行监听数据包)

Capture,数据包捕获(抓包)

数据包捕获 通过地址伪装,欺骗,把数据诱导到我们的主机上,对数据抓包;在交换机和路由器上也可以抓包;

常见的安全分析工具

扫描器:NMAP ——> 主动去扫描其他的主机

协议分析:tcpdump、WireShark ——> 网络上抓包,截取数据

NMAP扫描

NMAP一款强大的网络探测利器工具,支持多种探测技术

  • ping 扫描
  • 多端口扫描
  • TCP/IP指纹检验

基本用法 :nmap [扫描类型] [选项] <扫描目标 ...>

常用的扫描类型

  • -sS,TCP SYN扫描(半开)
  • -sT,TCP 连接扫描(全开)
  • -sU,UDP扫描
  • -sP,ICMP扫描
  • -A,目标系统全面分析

TCP SYN扫描(全开):
#左边图:要检查目标主机的80端口是否打开,扫描时,A主机向目标主机的80端口发送请求建立连接的
请求syn,目标主机回应syn和ack,A主机也回应一个ack,连接建立,目标主机的80端口是打开的;

TCP SYN扫描(半开):
#右边图:要检查目标主机的80端口是否打开,扫描时,A主机向目标主机的80端口发送请求建立连接的
请求syn,目标主机回应syn和ack, 目标主机回应了,代表目标主机的80端口是打开的,A主机不再回应
ack,节省一个ack回应的资源;
#因为并不需要建立连接,只要目标主机回应即可,当扫描更多主机时会节省更多的系统资源;

NMAP应用示例

检查哪些主机开启FTP、SSH服务端
嗯,这个代码不对应该,这里扫描的的是53端口

#####扫描查看UDP协议的端口状态 ##-n 取消客户端的反向域名解析; -p 指定扫描的端口号 [root@node1 ~]$ nmap -n -sU 192.168.2.200 -p 53 Starting Nmap 6.40 ( http://nmap.org ) at 2020-08-20 15:05 CST Nmap scan report for 192.168.2.200 Host is up (0.0012s latency). #up状态,网络延迟为0.0012s PORT STATE SERVICE 53/udp closed domain ##53端口,处于关闭状态 MAC Address: 00:0C:29:3D:40:D8 (VMware) Nmap done: 1 IP address (1 host up) scanned in 0.04 seconds

扫描查看UDP协议53-55的端口状态

#####扫描查看UDP协议53-55的端口状态 ##-n 取消客户端的反向域名解析; -p 指定扫描的端口号 [root@node1 ~]$ nmap -n -sU 192.168.2.200 -p 53-55 Starting Nmap 6.40 ( http://nmap.org ) at 2020-08-20 15:07 CST Nmap scan report for 192.168.2.200 Host is up (0.00053s latency). #up状态,网络延迟为0.00053s PORT STATE SERVICE 53/udp closed domain #53端口,关闭 54/udp closed xns-ch #53端口,关闭 55/udp closed isi-gl #53端口,关闭 MAC Address: 00:0C:29:3D:40:D8 (VMware) Nmap done: 1 IP address (1 host up) scanned in 0.05 seconds

扫描查看TCP协议53-55和25的端口状态

#####扫描查看TCP协议53-55和25的端口状态 ###对于不连续的端口号用逗号【,】分隔 ##-n 取消客户端的反向域名解析; -p 指定要扫描的端口号 [root@node1 ~]$ nmap -n 192.168.2.200 -p 53-55,25 Starting Nmap 6.40 ( http://nmap.org ) at 2020-08-20 15:10 CST Nmap scan report for 192.168.2.200 Host is up (0.00050s latency). #up状态,网络延迟为0.00050s PORT STATE SERVICE 25/udp closed smtp #25端口,关闭 53/udp closed domain #53端口,关闭 54/udp closed xns-ch #54端口,关闭 55/udp closed isi-gl #55端口,关闭 MAC Address: 00:0C:29:3D:40:D8 (VMware) Nmap done: 1 IP address (1 host up) scanned in 0.05 seconds

扫描http端口

#######client上安装httpd服务,开启80端口 [root@node2 ~]$ yum -y install httpd [root@node2 ~]$ systemctl start httpd ######在node1扫描查看node2上的80端口的状态 [root@node1 ~]$ nmap -n 192.168.2.200 -p 80 Starting Nmap 6.40 ( http://nmap.org ) at 2020-08-20 15:22 CST Nmap scan report for 192.168.2.200 Host is up (0.00034s latency). PORT STATE SERVICE 80/tcp open http #打开,服务http MAC Address: 00:0C:29:3D:40:D8 (VMware) Nmap done: 1 IP address (1 host up) scanned in 0.06 seconds #########扫描查看网络中所有2.0网段上的80端口的状态 [root@node1 ~]$ nmap -n 192.168.2.0/24 -p 80 Starting Nmap 6.40 ( http://nmap.org ) at 2020-08-20 15:24 CST Nmap scan report for 192.168.2.200 #2.200主机 Host is up (0.00030s latency). PORT STATE SERVICE 80/tcp open http #打开,服务http MAC Address: 00:0C:29:3D:40:D8 (VMware) Nmap scan report for 192.168.2.254 #2.254主机 Host is up (0.00030s latency). PORT STATE SERVICE 80/tcp closed http #打开,服务http MAC Address: 00:50:56:C0:00:02 (VMware) Nmap scan report for 192.168.2.100 #2.100主机 Host is up (0.000032s latency). PORT STATE SERVICE 80/tcp closed http #打开,服务http Nmap done: 256 IP addresses (3 hosts up) scanned in 4.74 seconds

检查目标主机的存活状态(是否可ping通)

#####使用ping扫描整个2.0网段的主机,查看是否开机 [root@node1 ~]$ nmap -n -sP 192.168.2.0/24 Starting Nmap 6.40 ( http://nmap.org ) at 2020-08-20 15:28 CST Nmap scan report for 192.168.2.200 Host is up (0.00011s latency). #2.200开机 MAC Address: 00:0C:29:3D:40:D8 (VMware) Nmap scan report for 192.168.2.254 Host is up (0.00027s latency). #2.254开机 MAC Address: 00:50:56:C0:00:02 (VMware) Nmap scan report for 192.168.2.100 #2.100开机 Host is up. Nmap done: 256 IP addresses (3 hosts up) scanned in 5.69 seconds

复合扫描:检查操作系统指纹、软件版本等信息

#######全面扫描整个目标主机 [root@node1 ~]$ nmap -n -A 192.168.2.200 Starting Nmap 6.40 ( http://nmap.org ) at 2020-08-20 15:31 CST Nmap scan report for 192.168.2.200 Host is up (0.00079s latency). Not shown: 998 closed ports ###目标主机开启了22端口,使用的是ssh服务,使用软件为OpenSSH 7.4 22/tcp open ssh OpenSSH 7.4 (protocol 2.0) | ssh-hostkey: 2048 37:68:ae:d7:23:48:16:74:ed:c9:d8:de:44:8a:b5:50 (RSA) |_256 c7:14:c1:8f:1a:1b:64:e8:c1:06:56:74:ec:9a:50:29 (ECDSA) ###目标主机开启了80端口,使用的是http服务,使用软件为 Apache httpd 2.4.6 ##目标主机的操作系统为CentOS 80/tcp open http Apache httpd 2.4.6 ((CentOS)) | http-methods: Potentially risky methods: TRACE |_See http://nmap.org/nsedoc/scripts/http-methods.html |_http-title: Apache HTTP Server Test Page powered by CentOS MAC Address: 00:0C:29:3D:40:D8 (VMware) No exact OS matches for host (If you know what OS is running on it, see http://nmap.org/submit/ ). TCP/IP fingerprint: OS:SCAN(V=6.40%E=4%D=8/20%OT=22%CT=1%CU=43694%PV=Y%DS=1%DC=D%G=Y%M=000C29%T ###########目标主机使用的是红帽的linux系统 OS:M=5F3E26E1%P=x86_64-redhat-linux-gnu)SEQ(SP=102%GCD=1%ISR=10E%TI=Z%CI=I% OS:TS=A)SEQ(SP=102%GCD=1%ISR=10D%TI=Z%TS=A)SEQ(SP=102%GCD=1%ISR=10D%TI=Z%II OS:=I%TS=A)OPS(O1=M5B4ST11NW7%O2=M5B4ST11NW7%O3=M5B4NNT11NW7%O4=M5B4ST11NW7 OS:%O5=M5B4ST11NW7%O6=M5B4ST11)WIN(W1=7120%W2=7120%W3=7120%W4=7120%W5=7120% OS:W6=7120)ECN(R=Y%DF=Y%T=40%W=7210%O=M5B4NNSNW7%CC=Y%Q=)T1(R=Y%DF=Y%T=40%S OS:=O%A=S+%F=AS%RD=0%Q=)T2(R=N)T3(R=N)T4(R=Y%DF=Y%T=40%W=0%S=A%A=Z%F=R%O=%R OS:D=0%Q=)T5(R=Y%DF=Y%T=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)T6(R=Y%DF=Y%T=40%W= OS:0%S=A%A=Z%F=R%O=%RD=0%Q=)T7(R=Y%DF=Y%T=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)U OS:1(R=Y%DF=N%T=40%IPL=164%UN=0%RIPL=G%RID=G%RIPCK=G%RUCK=G%RUD=G)IE(R=Y%DF OS:I=N%T=40%CD=S) ####连接到目标主机所经过的路由器跳转的数量 ##同一网段下,直连,为1 Network Distance: 1 hop TRACEROUTE HOP RTT ADDRESS 1 0.79 ms 192.168.2.200 ##网络延迟为0.79ms OS and Service detection performed. Please report any incorrect results at http://nmap.org/submit/ . ######整个检测一共花费了19.51秒 Nmap done: 1 IP address (1 host up) scanned in 19.51 seconds

嗯,这是我扫描自己的win10的结果

┌──(liruilong㉿Liruilong)-[/mnt/c/Users/lenovo] └─$ nmap -n -A 172.30.0.1 Starting Nmap 7.91 ( https://nmap.org ) at 2021-09-27 20:41 CST Stats: 0:00:50 elapsed; 0 hosts completed (1 up), 1 undergoing Service Scan Service scan Timing: About 80.00% done; ETC: 20:42 (0:00:12 remaining) Nmap scan report for 172.30.0.1 Host is up (0.87s latency). Not shown: 990 closed ports PORT STATE SERVICE VERSION 135/tcp open msrpc Microsoft Windows RPC 139/tcp open netbios-ssn Microsoft Windows netbios-ssn 443/tcp open ssl/https VMware Workstation SOAP API 16.1.2 | fingerprint-strings: | FourOhFourRequest: | HTTP/1.1 404 Not Found | Date: Mon, 27 Sep 2021 12:41:49 GMT | Connection: close | Content-Security-Policy: block-all-mixed-content | Content-Type: text/plain; charset=utf-8 | Strict-Transport-Security: max-age=31536000 | X-Content-Type-Options: nosniff | X-Frame-Options: DENY | X-XSS-Protection: 1 | Content-Length: 0 | GetRequest: | HTTP/1.1 403 Forbidden | Date: Mon, 27 Sep 2021 12:41:49 GMT | Connection: close | Content-Security-Policy: block-all-mixed-content | Content-Type: text/plain; charset=utf-8 | Strict-Transport-Security: max-age=31536000 | X-Content-Type-Options: nosniff | X-Frame-Options: DENY | X-XSS-Protection: 1 | Content-Length: 0 | HTTPOptions: | HTTP/1.1 501 Not Implemented | Date: Mon, 27 Sep 2021 12:41:49 GMT | Connection: close | Content-Security-Policy: block-all-mixed-content | Content-Type: text/plain; charset=utf-8 | Strict-Transport-Security: max-age=31536000 | X-Content-Type-Options: nosniff | X-Frame-Options: DENY | X-XSS-Protection: 1 | Content-Length: 0 | RTSPRequest: | HTTP/1.1 400 Bad Request | Date: Mon, 27 Sep 2021 12:41:59 GMT | Connection: close | Content-Type: text/html | Content-Length: 50 | <HTML><BODY><H1>400 Bad Request</H1></BODY></HTML> | SIPOptions: | HTTP/1.1 400 Bad Request | Date: Mon, 27 Sep 2021 12:43:06 GMT | Connection: close | Content-Type: text/html | Content-Length: 50 |_ <HTML><BODY><H1>400 Bad Request</H1></BODY></HTML> |_http-title: Site doesn't have a title (text/plain; charset=utf-8). | ssl-cert: Subject: commonName=VMware/countryName=US | Not valid before: 2021-02-17T10:21:06 |_Not valid after: 2022-02-17T10:21:06 |_ssl-date: TLS randomness does not represent time | vmware-version: | Server version: VMware Workstation 16.1.2 | Build: 17966106 | Locale version: INTL | OS type: win32-x86 |_ Product Line ID: ws 445/tcp open microsoft-ds? 903/tcp open ssl/vmware-auth VMware Authentication Daemon 1.10 (Uses VNC, SOAP) 1027/tcp open msrpc Microsoft Windows RPC 1057/tcp open msrpc Microsoft Windows RPC 3306/tcp open mysql MySQL (unauthorized) 3389/tcp open ms-wbt-server Microsoft Terminal Services | rdp-ntlm-info: | Target_Name: LIRUILONG | NetBIOS_Domain_Name: LIRUILONG | NetBIOS_Computer_Name: LIRUILONG | DNS_Domain_Name: Liruilong | DNS_Computer_Name: Liruilong | Product_Version: 10.0.19041 |_ System_Time: 2021-09-27T12:43:57+00:00 | ssl-cert: Subject: commonName=Liruilong | Not valid before: 2021-09-07T13:31:59 |_Not valid after: 2022-03-09T13:31:59 |_ssl-date: 2021-09-27T12:44:02+00:00; 0s from scanner time. 4000/tcp open remoteanything? | fingerprint-strings: | GetRequest: | HTTP/1.1 200 OK | X-Powered-By: Hexo | Content-Type: text/html | Date: Mon, 27 Sep 2021 12:41:42 GMT | Connection: close | <!doctype html> | <html lang="zh"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"><meta><title> | </title><link rel="manifest" href="/manifest.json"><meta name="application-name" content=" | "><meta name="msapplication-TileImage" content="https://cdn.jsdelivr.net/gh/removeif/removeif-demo@latest/img/favicon.png"><meta name="apple-mobile-web-app-capable" content="yes"><meta name="apple-mobile-web-app-title" content=" | "><meta name="apple-mobile-web-app-status-bar-style" content="default"><meta property="og:type" content="blog"><meta property="og:title" content=" | "><meta property="og:url" content="https://removeif.github.io/"><meta property="og:site_name" cont | HTTPOptions: | HTTP/1.1 404 Not Found | X-Powered-By: Hexo | Content-Security-Policy: default-src 'none' | X-Content-Type-Options: nosniff | Content-Type: text/html; charset=utf-8 | Content-Length: 143 | Date: Mon, 27 Sep 2021 12:41:47 GMT | Connection: close | <!DOCTYPE html> | <html lang="en"> | <head> | <meta charset="utf-8"> | <title>Error</title> | </head> | <body> | <pre>Cannot OPTIONS /</pre> | </body> | </html> | NoMachine, RPCCheck, RTSPRequest: | HTTP/1.1 400 Bad Request |_ Connection: close 1 service unrecognized despite returning data. If you know the service/version, please submit the following fingerprint at https://nmap.org/cgi-bin/submit.cgi?new-service : SF-Port4000-TCP:V=7.91%I=7%D=9/27%Time=6151BC06%P=x86_64-pc-linux-gnu%r(Ge SF:tRequest,3890,"HTTP/1.1x20200x20OKrnX-Powered-By:x20HexornConte SF:nt-Type:x20text/htmlrnDate:x20Mon,x2027x20Sepx202021x2012:41:42 SF:x20GMTrnConnection:x20closernrn<!doctypex20html>n<htmlx20lan SF:g="zh"><head><metax20charset="utf-8"><metax20name="viewport"x2 SF:0content="width=device-width,x20initial-scale=1,x20maximum-scale=1" SF:><meta><title>xe5xb1xb1xe6xb2xb3xe5xb7xb2xe6x97xa0xe6x81 SF:x99</title><linkx20rel="manifest"x20href="/manifest.json"><meta SF:x20name="application-name"x20content="xe5xb1xb1xe6xb2xb3xe5 SF:xb7xb2xe6x97xa0xe6x81x99"><metax20name="msapplication-TileIma SF:ge"x20content="https://cdn.jsdelivr.net/gh/removeif/removeif-demo@ SF:latest/img/favicon.png"><metax20name="apple-mobile-web-app-capable SF:"x20content="yes"><metax20name="apple-mobile-web-app-title"x20co SF:ntent="xe5xb1xb1xe6xb2xb3xe5xb7xb2xe6x97xa0xe6x81x99"> SF:<metax20name="apple-mobile-web-app-status-bar-style"x20content="de SF:fault"><metax20property="og:type"x20content="blog"><metax20prop SF:erty="og:title"x20content="xe5xb1xb1xe6xb2xb3xe5xb7xb2xe6 SF:x97xa0xe6x81x99"><metax20property="og:url"x20content="https: SF://removeif.github.io/"><metax20property="og:site_name"x20cont")% SF:r(NoMachine,2F,"HTTP/1.1x20400x20Badx20RequestrnConnection:x20cl SF:osernrn")%r(HTTPOptions,180,"HTTP/1.1x20404x20Notx20FoundrnX- SF:Powered-By:x20HexornContent-Security-Policy:x20default-srcx20'none SF:'rnX-Content-Type-Options:x20nosniffrnContent-Type:x20text/html; SF:x20charset=utf-8rnContent-Length:x20143rnDate:x20Mon,x2027x20Se SF:px202021x2012:41:47x20GMTrnConnection:x20closernrn<!DOCTYPEx SF:20html>n<htmlx20lang="en">n<head>n<metax20charset="utf-8">n<t SF:itle>Error</title>n</head>n<body>n<pre>Cannotx20OPTIONSx20/</pre> SF:n</body>n</html>n")%r(RTSPRequest,2F,"HTTP/1.1x20400x20Badx20Requ SF:estrnConnection:x20closernrn")%r(RPCCheck,2F,"HTTP/1.1x20400x SF:20Badx20RequestrnConnection:x20closernrn"); Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows, cpe:/o:vmware:Workstation:16.1.2 Host script results: |_nbstat: NetBIOS name: LIRUILONG, NetBIOS user: <unknown>, NetBIOS MAC: 00:15:5d:1d:9f:bd (Microsoft) | smb2-security-mode: | 2.02: |_ Message signing enabled but not required | smb2-time: | date: 2021-09-27T12:43:57 |_ start_date: N/A Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 148.10 seconds ┌──(liruilong㉿Liruilong)-[/mnt/c/Users/lenovo] └─$

您可以还会对下面的文章感兴趣

最新评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

使用微信扫描二维码后

点击右上角发送给好友