应用及安全

目录

[一、PAM 安全认证及配置](#一、PAM 安全认证及配置)
[1.1配置 su 命令的认证](#1.1配置 su 命令的认证)
[1.2PAM 配置文件结构](#1.2PAM 配置文件结构)
二、账号和密码安全管理
2.1账号管理
2.2系统账号清理
2.3密码安全控制
2.4密码重设示例
2.5参考命令
三、命令历史限制
3.1设置命令历史记录条数
3.2自动清除命令历史记录
3.4终端自动注销
3.5结论
[四、Linux 系统安全管理:PAM 安全认证](#四、Linux 系统安全管理:PAM 安全认证)
[4.1什么是 PAM](#4.1什么是 PAM)
[4.2PAM 的工作原理](#4.2PAM 的工作原理)
[4.3PAM 配置文件结构](#4.3PAM 配置文件结构)​​​​​​​
[4.4PAM 认证模块的控制标记](#4.4PAM 认证模块的控制标记)
4.5实际应用
4.6结论
[五、Linux 系统安全管理:使用 sudo 提升权限](#五、Linux 系统安全管理:使用 sudo 提升权限)
[5.1什么是 sudo](#5.1什么是 sudo)
[5.2sudo 配置文件 /etc/sudoers](#5.2sudo 配置文件 /etc/sudoers)
[5.3sudo 常用参数](#5.3sudo 常用参数)
[5.4实例:配置 sudo 提权](#5.4实例:配置 sudo 提权)
[5.5使用别名简化 sudo 配置](#5.5使用别名简化 sudo 配置)
[5.6启用 sudo 操作日志](#5.6启用 sudo 操作日志)
[5.7验证 sudo 配置](#5.7验证 sudo 配置)
5.8总结
六、如何确保服务器的开关机安全
[6.1 物理环境安全防护](#6.1 物理环境安全防护)
[6.2 限制更改GRUB引导参数](#6.2 限制更改GRUB引导参数)
6.3终端登录安全控制
6.4系统弱口令检测
6.5总结
七、使用Nmap进行网络端口扫描与安全管理
[7.1 网络协议基础](#7.1 网络协议基础)
[7.2 安装Nmap](#7.2 安装Nmap)
7.3.基本Nmap扫描类型
7.4实例演示
7.5禁用与启用Ping
[7.6 PAM模块防止暴力破解](#7.6 PAM模块防止暴力破解)
[7.7 使用netstat查看网络状态](#7.7 使用netstat查看网络状态)
​​​​​​​7.8总结


一、PAM 安全认证及配置

PAM(Pluggable Authentication Modules,可插拔认证模块)是 Linux 系统中用于管理认证的一个灵活机制。PAM 配置文件位于 /etc/pam.d/ 目录下,每个文件对应一个服务或命令的认证设置。

1.1配置 su 命令的认证

默认情况下,所有用户都可以使用 su 命令切换到其他用户。这带来了一定的安全风险,因为恶意用户可以反复尝试其他用户(如 root)的登录密码。通过配置 pam_wheel 认证模块,可以限制只有特定组(如 wheel 组)的用户才能使用 su 命令。

配置步骤

  1. 编辑 /etc/pam.d/su 文件

    bash 复制代码
    vim /etc/pam.d/su
  2. 修改内容: 默认情况下,文件内容可能如下:

    bash 复制代码
    # auth       sufficient   pam_rootok.so
    # auth       required     pam_wheel.so use_uid

    配置文件的每一行是一个独立的认证过程,它们按从上往下的顺序依次由 PAM 模块调用。以下是几种配置状态的解释:

    a) 默认状态plaintext auth sufficient pam_rootok.so # auth required pam_wheel.so use_uid - 允许所有用户使用 su 命令进行切换。

    b) 两行都注释plaintext # auth sufficient pam_rootok.so # auth required pam_wheel.so use_uid - 所有用户可以使用 su 命令,但 root 用户切换到其他用户需要输入密码。

    c) 开启第二行plaintext # auth sufficient pam_rootok.so auth required pam_wheel.so use_uid - 只有 root 用户和 wheel 组内的用户可以使用 su 命令。

    d) 注释第一行,开启第二行plaintext # auth sufficient pam_rootok.so auth required pam_wheel.so use_uid - 只有 wheel 组内的用户可以使用 su 命令,root 用户也被禁用。

  3. 将用户添加到 wheel

    bash 复制代码
    gpasswd -a zhangsan wheel
    • 添加用户 zhangsanwheel 组中。
  4. 确认 wheel 组成员

    bash 复制代码
    grep wheel /etc/group
    • 确认 wheel 组的成员列表。
  5. 启用 pam_wheel 认证

    bash 复制代码
    #%PAM-1.0
    auth sufficient pam_rootok.so
    auth required pam_wheel.so use_uid
    • 未加入到 wheel 组的其他用户将无法使用 su 命令,尝试进行切换时将提示"拒绝权限"。
  6. 切换用户测试

    • 使用 su 命令切换用户的操作会记录到 /var/log/secure 文件中,可以根据需要进行查看。

1.2PAM 配置文件结构

PAM 配置文件中的每一行由四部分组成:

  1. 模块类型

    • auth:对用户身份进行识别。

    • account:对账号各项属性进行检查。

    • password:使用用户信息来更新数据。

    • session:定义登录前及退出后所要进行的会话操作管理。

  2. 控制标记

    • required:该行及所涉及模块的成功是用户通过鉴别的必要条件。

    • requisite:与 required 相似,但失败会立即返回错误。

    • sufficient:该行及所涉及模块验证成功是用户通过鉴别的充分条件。

    • optional:即使该行所涉及的模块验证失败用户仍能通过认证。

    • include:调用其他 PAM 配置文件。

  3. 模块名称

    • 默认在 /lib64/security/ 目录下,如 pam_wheel.so
  4. 模块参数

    • 传递给模块的参数,可以有多个,之间用空格分隔开。

实例说明

以下是一个 PAM 认证过程的实例:

bash 复制代码
auth required pam_env.so
auth sufficient pam_unix.so nullok try_first_pass
auth required pam_deny.so

用户通过 PAM 模块进行认证的过程:

  • 用户1 :成功通过所有 auth 模块的认证。

  • 用户2 :在 pam_unix.so 认证失败,因此最终认证失败。

  • 用户3 :通过 pam_unix.so 认证,但失败于 pam_deny.so

  • 用户4 :成功通过所有 auth 模块的认证。

二、账号和密码安全管理

在 Linux 系统中,账号和密码安全管理是确保系统安全的重要措施之一。以下是一些常见的操作和配置方法。

2.1账号管理

2.1.1锁定和解锁账号

锁定账号

bash 复制代码
usermod -L zhangsan  # 锁定账号 zhangsan
passwd -S zhangsan   # 查看账号状态
passwd -l zhangsan   # 锁定用户账户

解锁账号

bash 复制代码
usermod -U zhangsan  # 解锁账号 zhangsan
passwd -u zhangsan   # 解锁用户账户

删除无用账号

bash 复制代码
userdel -r 用户名  # 删除无用的账号,并删除用户的主目录

锁定账号配置文件

使用 chattr 命令锁定或解锁账号配置文件,防止账号配置文件被修改:

bash 复制代码
chattr +i /etc/passwd /etc/shadow  # 锁定文件
lsattr /etc/passwd /etc/shadow     # 查看文件锁定状态
chattr -i /etc/passwd /etc/shadow  # 解锁文件

测试文件是否锁住:

bash 复制代码
useradd lisi  # 查看是否能添加用户

2.2系统账号清理

查找使用 /sbin/nologin 作为登录 shell 的用户

bash 复制代码
grep "/sbin/nologin$" /etc/passwd

修改用户的登录 shell

bash 复制代码
usermod -s /sbin/nologin 用户名

2.3密码安全控制

编辑 /etc/login.defs 文件

bash 复制代码
vi /etc/login.defs

设置密码有效期:

bash 复制代码
PASS_MAX_DAYS 30  # 设置密码有效期为30天

设置最小密码修改间隔:

bash 复制代码
PASS_MIN_DAYS 0  # 密码最小修改间隔为0天

设置密码最小长度:

bash 复制代码
PASS_MIN_LEN 5  # 密码最小长度为5

设置密码到期警告天数:

bash 复制代码
PASS_WARN_AGE 7  # 密码到期前7天开始警告

使用 chage 命令设置密码时限

设置用户密码最大有效期:

bash 复制代码
chage -M 30 lisi  # 设置lisi用户的密码最大有效期为30天

强制用户下次登录时重设密码:

bash 复制代码
chage -d 0 zhangsan  # 强制zhangsan下次登录时重设密码

查看用户密码到期信息

bash 复制代码
chage -l zhangsan
chage -l lisi

2.4密码重设示例

当密码过期时,用户会被强制要求在下次登录时更改密码,具体操作如下:

登录提示:

bash 复制代码
WARNING: Your password has expired.
You must change your password now and login again!

用户更改密码:

bash 复制代码
(当前) UNIX 密码:
新的 密码:
无效的密码:密码未通过字典检查 - 它基于字典单词
新的 密码:
无效的密码:密码未提供
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。

2.5参考命令

锁定文件

bash 复制代码
chattr +i /etc/passwd /etc/shadow

解锁文件

bash 复制代码
chattr -i /etc/passwd /etc/shadow

查看文件锁定状态

bash 复制代码
lsattr /etc/passwd /etc/shadow

三、命令历史限制

在 Linux 系统中,命令历史记录可以帮助用户追溯以前执行的命令,但在某些情况下(如安全或隐私需要),我们可能希望限制命令历史的记录和保存。

3.1设置命令历史记录条数

3.1.1为新登录用户设置历史记录条数

编辑 /etc/profile 文件(适用于所有用户):

bash 复制代码
vim /etc/profile

添加以下行:

bash 复制代码
HISTSIZE=18

3.1.2为当前用户设置历史记录条数

编辑用户的 ~/.bashrc 文件:

bash 复制代码
vim ~/.bashrc

添加以下行:

bash 复制代码
export HISTSIZE=15

使配置生效:

bash 复制代码
source ~/.bashrc

验证效果:

bash 复制代码
history

确认 history 命令只显示最近的 15 条记录。

3.1.3临时清除历史记录

清除当前 session 的历史记录:

bash 复制代码
history -c

3.1.4永久清除历史记录

清空 .bash_history 文件:

bash 复制代码
echo " " > ~/.bash_history

3.2自动清除命令历史记录

3.2.1配置自动清除命令历史记录

在用户的 ~/.bashrc 文件中添加:

bash 复制代码
echo '' > ~/.bash_history

3.2.2每次用户登出时清除历史记录

编辑 /etc/skel/.bash_logout 文件,确保新用户创建时包含该配置:

bash 复制代码
vim /etc/skel/.bash_logout

添加以下行:

bash 复制代码
rm -f $HOME/.bash_history

3.3.3环境变量的读取顺序

用户登录顺序

用户登录时,首先加载 ~/.bash_profile 文件。

~/.bash_profile 中通常配置加载 ~/.bashrc 文件:

bash 复制代码
if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi

3.4终端自动注销

为了防止用户长时间闲置在终端,可以设置自动注销时间。

3.4.1设置自动注销时间

编辑 /etc/profile 文件(适用于所有用户):

bash 复制代码
vim /etc/profile

添加以下行:

bash 复制代码
export TMOUT=600  # 闲置600秒后自动注销

使配置生效:

bash 复制代码
source /etc/profile

为当前用户设置自动注销时间:

bash 复制代码
export TMOUT=600

取消自动注销:

bash 复制代码
unset TMOUT

3.4.2登出时清除历史记录

编辑用户的 ~/.bash_logout 文件:

bash 复制代码
vim ~/.bash_logout

添加以下行:

bash 复制代码
history -c
clear

通过以上配置和操作,能够有效地管理 Linux 系统的命令历史记录和终端自动注销,确保系统安全和用户隐私。

3.5结论

在 Linux 系统中,通过合理配置账号和密码管理策略、限制命令历史记录以及设置终端自动注销时间,可以显著提升系统的安全性和用户隐私保护。这些措施在企业环境和个人使用中都具有重要的实际意义。

四、Linux 系统安全管理:PAM 安全认证

在 Linux 系统中,确保系统的安全性是至关重要的。PAM(Pluggable Authentication Modules)提供了一种灵活和可定制的认证机制,使得系统管理员可以根据需要配置和管理各种服务的认证方式。

4.1什么是 PAM

PAM 是 Linux 系统中的可插拔认证模块,允许系统管理员灵活地配置和管理各种服务的认证方式。PAM 的可插拔性并不意味着它是一个物理上的设备(如外部设备或 U 盘),而是指其可配置、可定制的特性。通过编辑配置文件,管理员可以定制某个服务的认证模块,实现灵活高效的用户级认证。

4.1.1以 .so 结尾的模块是什么?

这些模块是动态函数库模块。当一个服务运行时,会将认证过程交给 PAM,PAM 读取相应的配置文件,然后根据配置调用适当的 PAM 认证模块来实现认证功能。如果认证不成功,用户将无法访问该服务。

4.2PAM 的工作原理

PAM 认证的基本流程可以分为以下几个步骤:

  1. 确定服务:首先确定哪个服务需要进行认证。

  2. 加载配置文件 :加载该服务对应的 PAM 配置文件,通常位于 /etc/pam.d/ 目录下。

  3. 调用认证模块 :根据配置文件中的指示,调用相应的 PAM 认证模块,这些模块通常位于 /lib64/security/ 目录下。

具体来说,PAM 认证遵循以下顺序:服务 -> 配置文件 -> 认证模块

  • 服务:用户访问服务器时,某个服务程序会接收到用户的请求。

  • 配置文件:该服务会查找并加载对应的 PAM 配置文件。

  • 认证模块:根据配置文件中的内容,服务会调用相应的 PAM 认证模块,进行安全认证。

如果认证成功,用户将被允许访问该服务;如果认证失败,用户将被拒绝访问。

4.3PAM 配置文件结构

PAM 配置文件中的每一行都是一个独立的认证过程,包含以下四个字段:

4.3.1认证类型

  • auth:对用户身份进行识别,如提示输入密码。
  • account:检查账号属性,如是否允许登录系统。
  • password:用于修改用户密码。
  • session:管理会话,如记录登录信息。

4.3.2控制标记

  • required:模块必须成功,失败则整个认证失败,但要继续执行其他模块。
  • requisite:模块必须成功,失败则立即返回失败,终止认证过程。
  • sufficient:模块成功则立即返回成功,忽略其他模块,失败则继续执行其他模块。
  • optional:模块的成功与否无关紧要,通常用于 session 类型。
  • include:表示在验证过程中调用其他的 PAM 配置文件。

模块名称 :指定使用的 PAM 模块,如 pam_unix.so

模块参数:传递给模块的参数,可以有多个,之间用空格分隔。

以下是一个示例配置文件 /etc/pam.d/su

bash 复制代码
#%PAM-1.0
auth       sufficient   pam_rootok.so
auth       required     pam_wheel.so use_uid

4.3.3示例解释

  • auth sufficient pam_rootok.so:如果调用者是 root 用户,则认证立即成功。

  • auth required pam_wheel.so use_uid :只有 wheel 组的用户才可以使用 su 命令。

4.4PAM 认证模块的控制标记

PAM 的控制标记决定了各个模块的执行顺序和结果处理方式:

required

解释:表示该行及所涉及模块的成功是用户通过鉴别的必要条件。如果失败,不会立刻返回失败,而是继续执行其他模块,所有此类型的模块都执行完毕后再返回失败。

举例:如同面试时,面试官虽然对某个问题的回答不满意,但仍然继续面试,最后才决定结果。

requisite

解释:与 required 类似,但如果该模块失败,则立即返回失败,终止认证过程。

举例:如同面试时,只要有一个问题回答不上来,面试官立即宣布面试失败。

sufficient

解释:如果该模块成功,则立即返回成功,忽略后续的模块;如果失败,继续执行其他模块。

举例:如同面试时,如果有关系背景,只要回答上来某个关键问题,就直接通过面试。

optional

解释:表示该行及所涉及模块的成功与否无关紧要,通常用于 session 类型的模块。

举例:如同面试时,某个问题的回答仅作参考,不影响最终结果。

include

解释:表示在验证过程中调用其他的 PAM 配置文件。

举例:如同面试时,某个问题需要引用其他人的评价来辅助判断。

4.5实际应用

通过配置 PAM,可以限制 su 命令的使用。例如,只有 wheel 组的用户才能使用 su 命令:

将用户添加到 wheel 组:

bash 复制代码
gpasswd -a username wheel

修改 /etc/pam.d/su 文件:

bash 复制代码
auth       sufficient   pam_rootok.so
auth       required     pam_wheel.so use_uid

验证配置:

bash 复制代码
su - anotheruser  # 尝试切换用户

4.6结论

Linux 系统的安全管理需要多方面的努力,通过灵活配置 PAM 安全认证,可以显著提升系统的安全性。PAM 提供了一种高效、灵活的认证机制,允许管理员根据需要对服务进行细粒度的认证控制,从而确保系统和用户数据的安全。通过深入理解和正确配置 PAM 模块,可以有效地防止未经授权的访问,保护系统的完整性和机密性。

五、Linux 系统安全管理:使用 sudo 提升权限

在 Linux 系统中,确保系统的安全性和管理的便捷性是至关重要的。使用 su 命令可以方便地切换为另一个用户,但前提是必须知道目标用户的密码。这对于生产环境中的 Linux 服务器来说,每多一个人知道特权密码,其安全风险也就增加一分。那么有没有一种折中的办法,既可以让普通用户拥有部分管理权限,又不需要将 root 用户的密码告诉他们呢?答案是肯定的,使用 sudo 命令就可以提升执行权限。本文将详细介绍 sudo 的使用方法和配置。

5.1什么是 sudo

sudo(superuser do)命令允许普通用户在不泄露 root 密码的情况下执行特权命令。管理员可以预先进行授权,指定哪些用户可以以超级用户(或其他用户)的身份执行哪些命令。

5.2sudo 配置文件 /etc/sudoers

/etc/sudoers 文件是 sudo 的配置文件,用于定义哪些用户可以在哪些主机上以谁的身份执行哪些命令。该文件的默认权限为 440,因此需要使用 visudo 工具进行编辑。虽然也可以用 vi 进行编辑,但保存时必须执行 :w! 命令来强制操作,否则系统将提示为只读文件而拒绝保存。

5.2.1sudoers 文件的基本格式

bash 复制代码
user MACHINE=COMMANDS
  • user :可以是一个具体的用户名,也可以是一个用户组(使用 %组名 表示)。

  • MACHINE :主机名,通常设置为 ALL 代表所有主机。

  • COMMANDS :用户被允许执行的命令的完整路径,多个命令之间以逗号 , 分隔。

5.3sudo 常用参数

  • -l:列出用户在主机上可用的和被禁止的命令。

  • -v:验证用户的时间戳。

  • -u:指定以某个用户执行特定操作。

  • -k:删除时间戳,下一个 sudo 命令要求用户提供密码。

5.4实例:配置 sudo 提权

5.4.1案例一:用户 wangliu 可以使用 useradd 和 usermod 命令

  1. 编辑 sudoers 文件:

    bash 复制代码
    visudo
  2. 添加以下配置:

    bash 复制代码
    wangliu ALL=(root) /usr/sbin/useradd,/usr/sbin/usermod
  3. 验证配置:

    bash 复制代码
    su - wangliu
    sudo /usr/sbin/useradd tom

5.4.2案例二:用户 Tom 可以临时创建网卡

  1. 编辑 sudoers 文件:

    bash 复制代码
    visudo
  2. 添加以下配置:

    bash 复制代码
    Tom ALL=(root) NOPASSWD:/usr/sbin/ifconfig
  3. 验证配置:

    bash 复制代码
    su - Tom
    sudo /usr/sbin/ifconfig ens33:0 192.168.1.11/24

5.5使用别名简化 sudo 配置

当使用相同授权的用户较多,或者授权的命令较多时,可以采用集中定义的别名。用户、主机、命令部分都可以定义为别名,通过关键字 User_AliasHost_AliasCmnd_Alias 来进行设置。

5.5.1案例一:定义用户别名、主机别名和命令别名

  1. 编辑 sudoers 文件:

    bash 复制代码
    visudo
  2. 添加以下配置:

    bash 复制代码
    Host_Alias MYHOSTS = kgc,localhost
    User_Alias MYUSERS = zhangsan,wangwu,lisi
    Cmnd_Alias MYCMNDS = /sbin/*,!/sbin/reboot,!/sbin/poweroff,!/sbin/init,!/usr/bin/rm
    MYUSERS MYHOSTS=NOPASSWD:MYCMNDS
  3. 解释:

  • MYHOSTS 定义了主机别名,包含 kgclocalhost
  • MYUSERS 定义了用户别名,包含 zhangsanwangwulisi
  • MYCMNDS 定义了命令别名,包含 /sbin/ 目录下的所有命令,但排除了 rebootpoweroffinitrm 命令。

5.5.2案例二:用户别名和命令别名的综合使用

  1. 编辑 sudoers 文件:

    bash 复制代码
    visudo
  2. 添加以下配置:

    bash 复制代码
    User_Alias USERADMIN = wangliu,%wangliu,%useradmin
    Cmnd_Alias USERADMINCMND = /usr/sbin/useradd,/usr/sbin/usermod,/usr/sbin/userdel,/usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd root
    USERADMIN ALL=(root) NOPASSWD: USERADMINCMND
  3. 解释:

  • USERADMIN 定义了用户别名,包含 wangliu 用户和 wangliuuseradmin 两个用户组。
  • USERADMINCMND 定义了命令别名,包含 useraddusermoduserdelpasswd 命令,但排除了 passwd root
  • USERADMIN 在所有主机上可以无密码执行 USERADMINCMND 别名下的命令。

5.6启用 sudo 操作日志

为了更好地审计和追踪 sudo 操作,可以启用 sudo 操作日志。

  1. 编辑 sudoers 文件:

    bash 复制代码
    visudo
  2. 添加以下配置:

    bash 复制代码
    Defaults logfile="/var/log/sudo"
  3. 解释:

  • 该配置将 sudo 的操作日志记录到 /var/log/sudo 文件中。

5.7验证 sudo 配置

  1. 使用 sudo -l 查看当前用户获得的 sudo 授权:

    bash 复制代码
    sudo -l
  2. 通过 sudo 执行特权命令:

    bash 复制代码
    sudo /sbin/ifconfig ens33:0 192.168.1.11/24

5.8总结

通过合理配置 sudo,可以在不泄露 root 密码的情况下,灵活地为普通用户分配特权命令的执行权限。这不仅提高了系统的安全性,还使得管理更加方便和高效。通过定义别名和启用操作日志,可以进一步简化配置和加强审计,确保系统的安全性和可追溯性。对于初学者,理解 sudo 的基本概念和配置方法是迈向 Linux 系统管理的重要一步。

六、如何确保服务器的开关机安全

在互联网环境中,大部分服务器是通过远程登录进行管理的,而本地引导和终端登录过程往往容易被忽视,从而留下安全隐患。特别是当服务器所在的机房环境缺乏严格、安全的管控制度时,防止其他用户的非授权介入就变得尤为重要。本文将详细介绍如何确保服务器的开关机安全,包括物理安全防护、GRUB引导参数的限制、更改终端登录安全控制、以及系统弱口令检测等方面的内容。

6.1 物理环境安全防护

服务器的物理环境安全防护至关重要:

  • 机箱和机柜保护:确保机箱完好,机柜锁闭,防止非授权人员接触硬件设备。

  • 人员进出控制:严格控制机房的人员进出,只有授权人员才能进入机房。

  • 硬件设备接触:限制对硬件设备的现场接触,防止设备被非法操作或破坏。

6.2 限制更改GRUB引导参数

修改GRUB引导参数可以修复系统问题,但如果任何人都能修改GRUB引导参数,对服务器的安全构成极大威胁。为此,可以为GRUB菜单设置一个密码,只有提供正确的密码才被允许修改引导参数。

6.2.1设置GRUB菜单密码步骤:

  1. 生成加密密码

    bash 复制代码
    grub2-mkpasswd-pbkdf2

    按提示输入并确认密码,生成的PBKDF2加密字符串会被用于GRUB配置。

  2. 备份配置文件

    bash 复制代码
    cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak
    cp /etc/grub.d/00_header /etc/grub.d/00_header.bak
  3. 修改配置文件 : 编辑/etc/grub.d/00_header文件,添加以下内容:

    bash 复制代码
    cat << EOF
    set superusers="root"
    password_pbkdf2 root grub.pbkdf2.sha512.10000.<加密字符串>
    EOF
  4. 生成新的GRUB配置文件

    bash 复制代码
    grub2-mkconfig -o /boot/grub2/grub.cfg

重启系统进入GRUB菜单时,按e键需要输入账号和密码才能修改引导参数。

6.3终端登录安全控制

为了增强终端登录的安全性,限制root只在安全终端登录,并且在需要时禁止普通用户登录。

6.3.1限制root只在安全终端登录:

编辑/etc/securetty文件,注释掉不需要的终端,例如:

bash 复制代码
#tty4

禁止普通用户登录:

当服务器进行备份或调试时,可以暂时禁止普通用户登录:

bash 复制代码
touch /etc/nologin

删除/etc/nologin文件或重启主机后恢复正常。

使用last命令显示用户或终端登录情况:

bash 复制代码
last

6.4系统弱口令检测

检测系统中的弱口令可以有效提高安全性。使用John the Ripper工具进行弱口令检测。

6.4.1安装和使用John the Ripper:

  1. 下载和解包

    bash 复制代码
    tar zxvf john-1.8.0.tar.gz -C /opt/
  2. 安装编译环境

    bash 复制代码
    yum install gcc gcc-c++ -y
    cd /opt/john-1.8.0/src
    make clean linux-x86-64
  3. 添加测试用户并准备文件

    bash 复制代码
    useradd zhangsan
    passwd zhangsan
    cp /etc/shadow /root/shadow.txt
  4. 运行John the Ripper

    bash 复制代码
    cd /opt/john-1.8.0/run
    ./john /root/shadow.txt
    ./john --show /root/shadow.txt
  5. 使用字典文件检测弱口令

    bash 复制代码
    ./john --wordlist=./password.lst /root/shadow.txt

通过上述步骤,可以有效检测并处理系统中的弱口令,提升系统安全性。

6.5总结

确保服务器的开关机安全涉及多个方面,包括物理环境安全防护、限制GRUB引导参数、更改终端登录安全控制、以及系统弱口令检测。通过实施这些措施,可以大大减少服务器被非授权用户介入的风险,提升服务器的整体安全性。

七、使用Nmap进行网络端口扫描与安全管理

网络端口扫描是网络安全评估的重要步骤。通过Nmap,可以检测网络中开放的端口和服务,从而识别潜在的安全风险。本文将详细介绍Nmap的使用方法及相关的网络安全管理措施,适合初学者。

7.1 网络协议基础

在开始使用Nmap之前,了解一些基本的网络协议是非常重要的:

  • SYN (synchronous 建立联机)

  • ACK (acknowledgement 确认)

  • PSH (push 传送)

  • FIN (finish 结束)

  • RST (reset 重置)

  • URG (urgent 紧急)

每个TCP包都包含顺序号码(Sequence number)和确认号码(Acknowledge number),这些字段用于确保数据的有序传输和确认。

7.2 安装Nmap

首先,确保Nmap已安装在你的系统中:

bash 复制代码
rpm -qa | grep nmap
yum install -y nmap

7.3.基本Nmap扫描类型

Nmap支持多种扫描类型,每种类型适用于不同的检测需求:

  • -sS,TCP SYN 扫描(半开扫描):发送SYN数据包,如果收到SYN/ACK响应包,就认为端口开放。

    bash 复制代码
    nmap -sS <target>
  • -sT,TCP 连接扫描:建立完整的TCP连接,确认端口是否开放。

    bash 复制代码
    nmap -sT <target>
  • -sF,TCP FIN 扫描:发送FIN数据包,开放的端口会忽略,关闭的端口会回应RST数据包。

    bash 复制代码
    nmap -sF <target>
  • -sU,UDP 扫描:探测目标主机提供的UDP服务。

    bash 复制代码
    nmap -sU <target>
  • -sP,ICMP 扫描:类似于ping检测,快速判断目标主机是否存活。

    bash 复制代码
    nmap -sP <target>
  • -P0,跳过ping检测:直接扫描目标主机,适用于对方不响应ICMP请求的情况。

    bash 复制代码
    nmap -P0 <target>

7.4实例演示

下面是一些具体的Nmap使用实例:

  • 扫描本地主机的常用TCP端口:

    bash 复制代码
    nmap -sT 127.0.0.1
  • 扫描本地主机的常用UDP端口:

    bash 复制代码
    nmap -sU 127.0.0.1
  • 使用ICMP扫描判断主机是否存活:

    bash 复制代码
    nmap -sP 127.0.0.1
  • 跳过ping检测,扫描一个网段:

    bash 复制代码
    nmap -P0 192.168.10.0/24
  • 扫描特定端口(如文件共享服务端口):

    bash 复制代码
    nmap -p 139,445 192.168.4.100-200

7.5禁用与启用Ping

临时禁用Ping:

bash 复制代码
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

启用Ping:

bash 复制代码
echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all

永久禁用Ping: 编辑/etc/sysctl.conf文件,添加或修改以下行:

bash 复制代码
net.ipv4.icmp_echo_ignore_all = 1

刷新配置:

bash 复制代码
sysctl -p

7.6 PAM模块防止暴力破解

通过PAM模块,可以防止暴力破解登录: 编辑/etc/pam.d/sshd,在第一行下面添加:

bash 复制代码
auth required pam_tally2.so deny=3 unlock_time=600 even_deny_root root_unlock_time=1200

参数说明:

  • deny:指定最大认证错误次数。

  • unlock_time:锁定多长时间(秒)。

  • even_deny_root:锁定root用户。

  • root_unlock_time:root用户锁定时间。

手动解除锁定: 查看某用户错误登录次数:

bash 复制代码
pam_tally2 --user <username>

清空某用户错误登录次数:

bash 复制代码
pam_tally2 --user <username> --reset

7.7 使用netstat查看网络状态

netstat命令可以查看当前操作系统的网络连接状态、路由表、接口统计等信息:

bash 复制代码
netstat -natp   # 查看正在运行的使用TCP协议的网络状态信息
netstat -naup   # 查看正在运行的使用UDP协议的网络状态信息

常用参数:

  • -n:以数字形式显示主机地址和端口。

  • -r:显示路由表信息。

  • -a:显示所有活动的网络连接信息。

  • -l:显示处于监听状态的网络连接及端口信息。

  • -t:查看TCP相关信息。

  • -u:查看UDP相关信息。

  • -p:显示与网络连接相关联的进程信息(需要root权限)。

7.8总结

通过使用Nmap和其他工具,可以有效地检测和管理网络端口,确保网络安全。同时,结合PAM模块和netstat命令,可以进一步加强系统的安全性。希望这篇博客能帮助初学者快速掌握这些基本的网络安全技能。

相关推荐
Koi慢热29 分钟前
路由基础(全)
linux·网络·网络协议·安全
hzyyyyyyyu2 小时前
内网安全隧道搭建-ngrok-frp-nps-sapp
服务器·网络·安全
网络研究院2 小时前
国土安全部发布关键基础设施安全人工智能框架
人工智能·安全·框架·关键基础设施
Daniel 大东4 小时前
BugJson因为json格式问题OOM怎么办
java·安全
EasyNVR8 小时前
NVR管理平台EasyNVR多个NVR同时管理:全方位安防监控视频融合云平台方案
安全·音视频·监控·视频监控
黑客Ash11 小时前
【D01】网络安全概论
网络·安全·web安全·php
阿龟在奔跑12 小时前
引用类型的局部变量线程安全问题分析——以多线程对方法局部变量List类型对象实例的add、remove操作为例
java·jvm·安全·list
.Ayang12 小时前
SSRF漏洞利用
网络·安全·web安全·网络安全·系统安全·网络攻击模型·安全架构
.Ayang13 小时前
SSRF 漏洞全解析(概述、攻击流程、危害、挖掘与相关函数)
安全·web安全·网络安全·系统安全·网络攻击模型·安全威胁分析·安全架构