目录
[一、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
命令。
配置步骤
-
编辑
/etc/pam.d/su
文件:bashvim /etc/pam.d/su
-
修改内容: 默认情况下,文件内容可能如下:
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 用户也被禁用。 -
将用户添加到
wheel
组:bashgpasswd -a zhangsan wheel
- 添加用户
zhangsan
到wheel
组中。
- 添加用户
-
确认
wheel
组成员:bashgrep wheel /etc/group
- 确认
wheel
组的成员列表。
- 确认
-
启用
pam_wheel
认证:bash#%PAM-1.0 auth sufficient pam_rootok.so auth required pam_wheel.so use_uid
- 未加入到
wheel
组的其他用户将无法使用su
命令,尝试进行切换时将提示"拒绝权限"。
- 未加入到
-
切换用户测试:
- 使用
su
命令切换用户的操作会记录到/var/log/secure
文件中,可以根据需要进行查看。
- 使用
1.2PAM 配置文件结构
PAM 配置文件中的每一行由四部分组成:
-
模块类型:
-
auth
:对用户身份进行识别。 -
account
:对账号各项属性进行检查。 -
password
:使用用户信息来更新数据。 -
session
:定义登录前及退出后所要进行的会话操作管理。
-
-
控制标记:
-
required
:该行及所涉及模块的成功是用户通过鉴别的必要条件。 -
requisite
:与required
相似,但失败会立即返回错误。 -
sufficient
:该行及所涉及模块验证成功是用户通过鉴别的充分条件。 -
optional
:即使该行所涉及的模块验证失败用户仍能通过认证。 -
include
:调用其他 PAM 配置文件。
-
-
模块名称:
- 默认在
/lib64/security/
目录下,如pam_wheel.so
。
- 默认在
-
模块参数:
- 传递给模块的参数,可以有多个,之间用空格分隔开。
实例说明
以下是一个 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 认证的基本流程可以分为以下几个步骤:
-
确定服务:首先确定哪个服务需要进行认证。
-
加载配置文件 :加载该服务对应的 PAM 配置文件,通常位于
/etc/pam.d/
目录下。 -
调用认证模块 :根据配置文件中的指示,调用相应的 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 命令
-
编辑 sudoers 文件:
bashvisudo
-
添加以下配置:
bashwangliu ALL=(root) /usr/sbin/useradd,/usr/sbin/usermod
-
验证配置:
bashsu - wangliu sudo /usr/sbin/useradd tom
5.4.2案例二:用户 Tom 可以临时创建网卡
-
编辑 sudoers 文件:
bashvisudo
-
添加以下配置:
bashTom ALL=(root) NOPASSWD:/usr/sbin/ifconfig
-
验证配置:
bashsu - Tom sudo /usr/sbin/ifconfig ens33:0 192.168.1.11/24
5.5使用别名简化 sudo 配置
当使用相同授权的用户较多,或者授权的命令较多时,可以采用集中定义的别名。用户、主机、命令部分都可以定义为别名,通过关键字 User_Alias
、Host_Alias
、Cmnd_Alias
来进行设置。
5.5.1案例一:定义用户别名、主机别名和命令别名
-
编辑 sudoers 文件:
bashvisudo
-
添加以下配置:
bashHost_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
-
解释:
MYHOSTS
定义了主机别名,包含kgc
和localhost
。MYUSERS
定义了用户别名,包含zhangsan
、wangwu
和lisi
。MYCMNDS
定义了命令别名,包含/sbin/
目录下的所有命令,但排除了reboot
、poweroff
、init
和rm
命令。
5.5.2案例二:用户别名和命令别名的综合使用
-
编辑 sudoers 文件:
bashvisudo
-
添加以下配置:
bashUser_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
-
解释:
USERADMIN
定义了用户别名,包含wangliu
用户和wangliu
、useradmin
两个用户组。USERADMINCMND
定义了命令别名,包含useradd
、usermod
、userdel
和passwd
命令,但排除了passwd root
。USERADMIN
在所有主机上可以无密码执行USERADMINCMND
别名下的命令。
5.6启用 sudo 操作日志
为了更好地审计和追踪 sudo 操作,可以启用 sudo 操作日志。
-
编辑 sudoers 文件:
bashvisudo
-
添加以下配置:
bashDefaults logfile="/var/log/sudo"
-
解释:
- 该配置将 sudo 的操作日志记录到
/var/log/sudo
文件中。
5.7验证 sudo 配置
-
使用
sudo -l
查看当前用户获得的 sudo 授权:bashsudo -l
-
通过 sudo 执行特权命令:
bashsudo /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菜单密码步骤:
-
生成加密密码:
bashgrub2-mkpasswd-pbkdf2
按提示输入并确认密码,生成的PBKDF2加密字符串会被用于GRUB配置。
-
备份配置文件:
bashcp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak cp /etc/grub.d/00_header /etc/grub.d/00_header.bak
-
修改配置文件 : 编辑
/etc/grub.d/00_header
文件,添加以下内容:bashcat << EOF set superusers="root" password_pbkdf2 root grub.pbkdf2.sha512.10000.<加密字符串> EOF
-
生成新的GRUB配置文件:
bashgrub2-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:
-
下载和解包:
bashtar zxvf john-1.8.0.tar.gz -C /opt/
-
安装编译环境:
bashyum install gcc gcc-c++ -y cd /opt/john-1.8.0/src make clean linux-x86-64
-
添加测试用户并准备文件:
bashuseradd zhangsan passwd zhangsan cp /etc/shadow /root/shadow.txt
-
运行John the Ripper:
bashcd /opt/john-1.8.0/run ./john /root/shadow.txt ./john --show /root/shadow.txt
-
使用字典文件检测弱口令:
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响应包,就认为端口开放。
bashnmap -sS <target>
-
-sT,TCP 连接扫描:建立完整的TCP连接,确认端口是否开放。
bashnmap -sT <target>
-
-sF,TCP FIN 扫描:发送FIN数据包,开放的端口会忽略,关闭的端口会回应RST数据包。
bashnmap -sF <target>
-
-sU,UDP 扫描:探测目标主机提供的UDP服务。
bashnmap -sU <target>
-
-sP,ICMP 扫描:类似于ping检测,快速判断目标主机是否存活。
bashnmap -sP <target>
-
-P0,跳过ping检测:直接扫描目标主机,适用于对方不响应ICMP请求的情况。
bashnmap -P0 <target>
7.4实例演示
下面是一些具体的Nmap使用实例:
-
扫描本地主机的常用TCP端口:
bashnmap -sT 127.0.0.1
-
扫描本地主机的常用UDP端口:
bashnmap -sU 127.0.0.1
-
使用ICMP扫描判断主机是否存活:
bashnmap -sP 127.0.0.1
-
跳过ping检测,扫描一个网段:
bashnmap -P0 192.168.10.0/24
-
扫描特定端口(如文件共享服务端口):
bashnmap -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命令,可以进一步加强系统的安全性。希望这篇博客能帮助初学者快速掌握这些基本的网络安全技能。