应用及安全
目录
一、PAM 安全认证及配置
1.1配置 su 命令的认证
1.2PAM 配置文件结构
二、账号和密码安全管理
2.1账号管理
2.2系统账号清理
2.3密码安全控制
2.4密码重设示例
2.5参考命令
三、命令历史限制
3.1设置命令历史记录条数
3.2自动清除命令历史记录
3.4终端自动注销
3.5结论
四、Linux 系统安全管理:PAM 安全认证
4.1什么是 PAM
4.2PAM 的工作原理
4.3PAM 配置文件结构
4.4PAM 认证模块的控制标记
4.5实际应用
4.6结论
五、Linux 系统安全管理:使用 sudo 提升权限
5.1什么是 sudo
5.2sudo 配置文件 /etc/sudoers
5.3sudo 常用参数
5.4实例:配置 sudo 提权
5.5使用别名简化 sudo 配置
5.6启用 sudo 操作日志
5.7验证 sudo 配置
5.8总结
六、如何确保服务器的开关机安全
6.1 物理环境安全防护
6.2 限制更改GRUB引导参数
6.3终端登录安全控制
6.4系统弱口令检测
6.5总结
七、使用Nmap进行网络端口扫描与安全管理
7.1 网络协议基础
7.2 安装Nmap
7.3.基本Nmap扫描类型
7.4实例演示
7.5禁用与启用Ping
7.6 PAM模块防止暴力破解
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
文件:vim /etc/pam.d/su
-
修改内容: 默认情况下,文件内容可能如下:
# 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
组:gpasswd -a zhangsan wheel
-
添加用户
zhangsan
到wheel
组中。
-
-
确认
wheel
组成员:grep wheel /etc/group
-
确认
wheel
组的成员列表。
-
-
启用
pam_wheel
认证:#%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 认证过程的实例:
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锁定和解锁账号:
锁定账号:
usermod -L zhangsan # 锁定账号 zhangsan
passwd -S zhangsan # 查看账号状态
passwd -l zhangsan # 锁定用户账户
解锁账号:
usermod -U zhangsan # 解锁账号 zhangsan
passwd -u zhangsan # 解锁用户账户
删除无用账号:
userdel -r 用户名 # 删除无用的账号,并删除用户的主目录
锁定账号配置文件:
使用 chattr
命令锁定或解锁账号配置文件,防止账号配置文件被修改:
chattr +i /etc/passwd /etc/shadow # 锁定文件
lsattr /etc/passwd /etc/shadow # 查看文件锁定状态
chattr -i /etc/passwd /etc/shadow # 解锁文件
测试文件是否锁住:
useradd lisi # 查看是否能添加用户
2.2系统账号清理
查找使用 /sbin/nologin
作为登录 shell 的用户:
grep "/sbin/nologin$" /etc/passwd
修改用户的登录 shell:
usermod -s /sbin/nologin 用户名
2.3密码安全控制
编辑 /etc/login.defs
文件:
vi /etc/login.defs
设置密码有效期:
PASS_MAX_DAYS 30 # 设置密码有效期为30天
设置最小密码修改间隔:
PASS_MIN_DAYS 0 # 密码最小修改间隔为0天
设置密码最小长度:
PASS_MIN_LEN 5 # 密码最小长度为5
设置密码到期警告天数:
PASS_WARN_AGE 7 # 密码到期前7天开始警告
使用 chage
命令设置密码时限:
设置用户密码最大有效期:
chage -M 30 lisi # 设置lisi用户的密码最大有效期为30天
强制用户下次登录时重设密码:
chage -d 0 zhangsan # 强制zhangsan下次登录时重设密码
查看用户密码到期信息:
chage -l zhangsan
chage -l lisi
2.4密码重设示例
当密码过期时,用户会被强制要求在下次登录时更改密码,具体操作如下:
登录提示:
WARNING: Your password has expired.
You must change your password now and login again!
用户更改密码:
(当前) UNIX 密码:
新的 密码:
无效的密码:密码未通过字典检查 - 它基于字典单词
新的 密码:
无效的密码:密码未提供
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
2.5参考命令
锁定文件:
chattr +i /etc/passwd /etc/shadow
解锁文件:
chattr -i /etc/passwd /etc/shadow
查看文件锁定状态:
lsattr /etc/passwd /etc/shadow
三、命令历史限制
在 Linux 系统中,命令历史记录可以帮助用户追溯以前执行的命令,但在某些情况下(如安全或隐私需要),我们可能希望限制命令历史的记录和保存。
3.1设置命令历史记录条数
3.1.1为新登录用户设置历史记录条数:
编辑 /etc/profile
文件(适用于所有用户):
vim /etc/profile
添加以下行:
HISTSIZE=18
3.1.2为当前用户设置历史记录条数:
编辑用户的 ~/.bashrc
文件:
vim ~/.bashrc
添加以下行:
export HISTSIZE=15
使配置生效:
source ~/.bashrc
验证效果:
history
确认 history
命令只显示最近的 15 条记录。
3.1.3临时清除历史记录:
清除当前 session 的历史记录:
history -c
3.1.4永久清除历史记录:
清空 .bash_history
文件:
echo " " > ~/.bash_history
3.2自动清除命令历史记录
3.2.1配置自动清除命令历史记录:
在用户的 ~/.bashrc
文件中添加:
echo '' > ~/.bash_history
3.2.2每次用户登出时清除历史记录:
编辑 /etc/skel/.bash_logout
文件,确保新用户创建时包含该配置:
vim /etc/skel/.bash_logout
添加以下行:
rm -f $HOME/.bash_history
3.3.3环境变量的读取顺序
用户登录顺序:
用户登录时,首先加载 ~/.bash_profile
文件。
~/.bash_profile
中通常配置加载 ~/.bashrc
文件:
if [ -f ~/.bashrc ]; then. ~/.bashrc
fi
3.4终端自动注销
为了防止用户长时间闲置在终端,可以设置自动注销时间。
3.4.1设置自动注销时间:
编辑 /etc/profile
文件(适用于所有用户):
vim /etc/profile
添加以下行:
export TMOUT=600 # 闲置600秒后自动注销
使配置生效:
source /etc/profile
为当前用户设置自动注销时间:
export TMOUT=600
取消自动注销:
unset TMOUT
3.4.2登出时清除历史记录:
编辑用户的 ~/.bash_logout
文件:
vim ~/.bash_logout
添加以下行:
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
:
#%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
组:
gpasswd -a username wheel
修改 /etc/pam.d/su
文件:
auth sufficient pam_rootok.so
auth required pam_wheel.so use_uid
验证配置:
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 文件的基本格式
user MACHINE=COMMANDS
-
user:可以是一个具体的用户名,也可以是一个用户组(使用
%组名
表示)。 -
MACHINE:主机名,通常设置为
ALL
代表所有主机。 -
COMMANDS:用户被允许执行的命令的完整路径,多个命令之间以逗号
,
分隔。
5.3sudo 常用参数
-
-l
:列出用户在主机上可用的和被禁止的命令。 -
-v
:验证用户的时间戳。 -
-u
:指定以某个用户执行特定操作。 -
-k
:删除时间戳,下一个 sudo 命令要求用户提供密码。
5.4实例:配置 sudo 提权
5.4.1案例一:用户 wangliu 可以使用 useradd 和 usermod 命令
-
编辑 sudoers 文件:
visudo
-
添加以下配置:
wangliu ALL=(root) /usr/sbin/useradd,/usr/sbin/usermod
-
验证配置:
su - wangliu sudo /usr/sbin/useradd tom
5.4.2案例二:用户 Tom 可以临时创建网卡
-
编辑 sudoers 文件:
visudo
-
添加以下配置:
Tom ALL=(root) NOPASSWD:/usr/sbin/ifconfig
-
验证配置:
su - 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 文件:
visudo
-
添加以下配置:
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
-
解释:
MYHOSTS
定义了主机别名,包含kgc
和localhost
。MYUSERS
定义了用户别名,包含zhangsan
、wangwu
和lisi
。MYCMNDS
定义了命令别名,包含/sbin/
目录下的所有命令,但排除了reboot
、poweroff
、init
和rm
命令。
5.5.2案例二:用户别名和命令别名的综合使用
-
编辑 sudoers 文件:
visudo
-
添加以下配置:
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
-
解释:
USERADMIN
定义了用户别名,包含wangliu
用户和wangliu
、useradmin
两个用户组。USERADMINCMND
定义了命令别名,包含useradd
、usermod
、userdel
和passwd
命令,但排除了passwd root
。USERADMIN
在所有主机上可以无密码执行USERADMINCMND
别名下的命令。
5.6启用 sudo 操作日志
为了更好地审计和追踪 sudo 操作,可以启用 sudo 操作日志。
-
编辑 sudoers 文件:
visudo
-
添加以下配置:
Defaults logfile="/var/log/sudo"
-
解释:
- 该配置将 sudo 的操作日志记录到
/var/log/sudo
文件中。
5.7验证 sudo 配置
-
使用
sudo -l
查看当前用户获得的 sudo 授权:sudo -l
-
通过 sudo 执行特权命令:
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菜单密码步骤:
-
生成加密密码:
grub2-mkpasswd-pbkdf2
按提示输入并确认密码,生成的PBKDF2加密字符串会被用于GRUB配置。
-
备份配置文件:
cp /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
文件,添加以下内容:cat << EOF set superusers="root" password_pbkdf2 root grub.pbkdf2.sha512.10000.<加密字符串> EOF
-
生成新的GRUB配置文件:
grub2-mkconfig -o /boot/grub2/grub.cfg
重启系统进入GRUB菜单时,按e
键需要输入账号和密码才能修改引导参数。
6.3终端登录安全控制
为了增强终端登录的安全性,限制root
只在安全终端登录,并且在需要时禁止普通用户登录。
6.3.1限制root只在安全终端登录:
编辑/etc/securetty
文件,注释掉不需要的终端,例如:
#tty4
禁止普通用户登录:
当服务器进行备份或调试时,可以暂时禁止普通用户登录:
touch /etc/nologin
删除/etc/nologin
文件或重启主机后恢复正常。
使用last命令显示用户或终端登录情况:
last
6.4系统弱口令检测
检测系统中的弱口令可以有效提高安全性。使用John the Ripper
工具进行弱口令检测。
6.4.1安装和使用John the Ripper:
-
下载和解包:
tar zxvf john-1.8.0.tar.gz -C /opt/
-
安装编译环境:
yum install gcc gcc-c++ -y cd /opt/john-1.8.0/src make clean linux-x86-64
-
添加测试用户并准备文件:
useradd zhangsan passwd zhangsan cp /etc/shadow /root/shadow.txt
-
运行John the Ripper:
cd /opt/john-1.8.0/run ./john /root/shadow.txt ./john --show /root/shadow.txt
-
使用字典文件检测弱口令:
./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已安装在你的系统中:
rpm -qa | grep nmap
yum install -y nmap
7.3.基本Nmap扫描类型
Nmap支持多种扫描类型,每种类型适用于不同的检测需求:
-
-sS,TCP SYN 扫描(半开扫描):发送SYN数据包,如果收到SYN/ACK响应包,就认为端口开放。
nmap -sS <target>
-
-sT,TCP 连接扫描:建立完整的TCP连接,确认端口是否开放。
nmap -sT <target>
-
-sF,TCP FIN 扫描:发送FIN数据包,开放的端口会忽略,关闭的端口会回应RST数据包。
nmap -sF <target>
-
-sU,UDP 扫描:探测目标主机提供的UDP服务。
nmap -sU <target>
-
-sP,ICMP 扫描:类似于ping检测,快速判断目标主机是否存活。
nmap -sP <target>
-
-P0,跳过ping检测:直接扫描目标主机,适用于对方不响应ICMP请求的情况。
nmap -P0 <target>
7.4实例演示
下面是一些具体的Nmap使用实例:
-
扫描本地主机的常用TCP端口:
nmap -sT 127.0.0.1
-
扫描本地主机的常用UDP端口:
nmap -sU 127.0.0.1
-
使用ICMP扫描判断主机是否存活:
nmap -sP 127.0.0.1
-
跳过ping检测,扫描一个网段:
nmap -P0 192.168.10.0/24
-
扫描特定端口(如文件共享服务端口):
nmap -p 139,445 192.168.4.100-200
7.5禁用与启用Ping
临时禁用Ping:
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
启用Ping:
echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all
永久禁用Ping: 编辑/etc/sysctl.conf
文件,添加或修改以下行:
net.ipv4.icmp_echo_ignore_all = 1
刷新配置:
sysctl -p
7.6 PAM模块防止暴力破解
通过PAM模块,可以防止暴力破解登录: 编辑/etc/pam.d/sshd
,在第一行下面添加:
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用户锁定时间。
手动解除锁定: 查看某用户错误登录次数:
pam_tally2 --user <username>
清空某用户错误登录次数:
pam_tally2 --user <username> --reset
7.7 使用netstat查看网络状态
netstat
命令可以查看当前操作系统的网络连接状态、路由表、接口统计等信息:
netstat -natp # 查看正在运行的使用TCP协议的网络状态信息
netstat -naup # 查看正在运行的使用UDP协议的网络状态信息
常用参数:
-
-n
:以数字形式显示主机地址和端口。 -
-r
:显示路由表信息。 -
-a
:显示所有活动的网络连接信息。 -
-l
:显示处于监听状态的网络连接及端口信息。 -
-t
:查看TCP相关信息。 -
-u
:查看UDP相关信息。 -
-p
:显示与网络连接相关联的进程信息(需要root权限)。
7.8总结
通过使用Nmap和其他工具,可以有效地检测和管理网络端口,确保网络安全。同时,结合PAM模块和netstat命令,可以进一步加强系统的安全性。希望这篇博客能帮助初学者快速掌握这些基本的网络安全技能。
相关文章:
应用及安全
目录 一、PAM 安全认证及配置 1.1配置 su 命令的认证 1.2PAM 配置文件结构二、账号和密码安全管理 2.1账号管理 2.2系统账号清理 2.3密码安全控制 2.4密码重设示例 2.5参考命令三、命令历史限制 3.1设置命令历史记录…...
字节流和字符流的相关知识
目录 1. Writer1.1 写两行数据1.2 换一种方式1.3 追加数据1.4 写很多数据,记得要清一下缓存1.5 用数组、字符串写入 2. Reader2.1 读个文件2.2 读取字符2.3 读取数据到数组2.4 复制文件 3. InputStream4. OutputStream5. 参考链接 1. Writer Writer类是Java.io包中…...
LLM意图识别器实践
利用 Ollama 和 LangChain 强化条件判断语句的智能提示分类 ❝ 本文译自Supercharging If-Statements With Prompt Classification Using Ollama and LangChain一文,以Lumos工具为例,讲解了博主在工程实践中,如何基于LangChain框架和本地LLM优…...
常见的反爬手段和解决思路(爬虫与反爬虫)
常见的反爬手段和解决思路(爬虫与反爬虫) 学习目标1 服务器反爬的原因2 服务器长反什么样的爬虫(1)十分低级的应届毕业生(2)十分低级的创业小公司(3)不小心写错了没人去停止的失控小…...
Stable Diffusion【真人模型】:人像光影摄影极限写实真实感大模型
大家好,我是极客菌 今天和大家分享一个基于SD1.5的真人大模型:人像光影摄影极限写实真实感大模型。 该模型具有以下特点: 真实肤感(在面部肌理和皮肤肌理上均有加强学习,拒绝ai出图假的问题) 永不脱妆&a…...
java实现图片添加水印
文章目录 前言一、工具类WatermarkUtil二、工具类介绍2.1 图片来源类型2.2 水印类型2.3 读取本地图片2.4 读取网络图片2.5 水印处理2.6 添加水印 三、测试添加水印总结 前言 给图片添加水印是一个很常见的需求,一般是用来防盗用。比如我们csdn上面写的文章中&#…...
CSS规则——font-face
font-face 什么是font-face? 想要让网页文字千变万化,仅靠font-family还不够,还要借助font-face(是一个 CSS 规则,它允许你在网页上使用自定义字体,而不仅仅是用户系统中预装的字体。这意味着你可以通过提…...
【单片机毕业设计选题24034】-基于STM32的手机智能充电系统
系统功能: 系统可以设置充电时长,启动充电后按设置的充电时长充电,充电时间到后自动 停止充电,中途检测到温度过高也会结束充电并开启风扇和蜂鸣器报警。 系统上电后,OLED显示“欢迎使用智能充电系统请稍后”,两秒钟…...
[C++][数据结构][图][中][图的遍历][最小生成树]详细讲解
目录 1.图的遍历1.广度优先遍历2.深度优先遍历 2.最小生成树1.Kruskal算法2.Prim算法 1.图的遍历 给定一个图G和其中任意一个顶点 v 0 v_0 v0,从 v 0 v_0 v0出发,沿着图中各边访问图中的所有顶点,且每个顶 点仅被遍历一次 “遍历”&…...
退市新规解读—财务类强制退市
一、退市风险警示:第一年触及相关指标 上市公司最近一个会计年度触及下列退市风险指标之一,公司股票或存托凭证被实施退市风险警示(*ST): 第1项 组合类财务指标 仅发行A股或B股,最近一个会计年度或追溯重述后最近一个会计年度 …...
小程序的生命周期使用方法和应用场景
小程序生命周期 初始化(App Launch) • 触发时机:小程序首次启动时。 • 主要事件:onLaunch。 • 功能与适用场景: • 全局数据初始化:设置应用的全局状态和变量。 • 登录状态检查:判断用户是…...
什么是C++模块化系统?C++20的模块化系统。
C20引入的模块化系统是一种新的代码组织和编译机制,它旨在替代传统的头文件机制,提供更好的代码组织、更快的编译速度和更强的封装性。模块化系统的主要目标包括: 减少编译时间:通过减少冗余的头文件解析和宏定义传播,…...
智慧校园-档案管理系统总体概述
智慧校园档案管理系统,作为教育信息化进程中的重要一环,它运用现代信息技术的力量,彻底改变了传统档案管理的面貌,为学校档案资源的收集、整理、存储、检索与利用开辟了全新的途径。这一系统全面覆盖学生、教职工、教学科研及行政…...
文心一言 VS 讯飞星火 VS chatgpt (290)-- 算法导论21.3 3题
三、给出一个包含 m 个 MAKE-SET 、UNION 和 FINDSET 操作的序列(其中有 n 个是 MAKE-SET 操作),当仅使用按秩合并时,需要 Ω(mlgn) 的时间。如果要写代码,请用go语言。 文心一言: 在并查集(Union-Find)数…...
逻辑回归梯度推导
逻辑回归是一种广泛使用的分类算法,用于估计一个事件发生的概率。它是线性回归的扩展,通过sigmoid函数将线性回归的输出映射到[0, 1]区间,从而用于分类任务。 在逻辑回归中,我们使用对数似然损失函数(log-likelihood l…...
Python 使用函数输出一个整数的逆序数
在Python中,你可以定义一个函数来输出一个整数的逆序数。这里有一个简单的实现方法: def reverse_integer(x):# 检查输入是否为整数if not isinstance(x, int):raise ValueError("Input must be an integer")# 将整数转换为字符串,…...
【Linux】Wmware Esxi磁盘扩容
目录 一、概述 1.1 磁盘分区概念 1.2 LVM概念 二、扩容步骤 二、报错 一、概述 1.1 磁盘分区概念 在 Linux 中,每一个硬件设备都映射到一个系统的文件,对于硬盘、光驱等 IDE 或 SCSI 设备也不例外。Linux把各种 IDE 设备分配了一个由 hd 前缀组成的文…...
树莓派4B_OpenCv学习笔记15:OpenCv定位物体实时坐标
今日继续学习树莓派4B 4G:(Raspberry Pi,简称RPi或RasPi) 本人所用树莓派4B 装载的系统与版本如下: 版本可用命令 (lsb_release -a) 查询: Opencv 版本是4.5.1: 今日学习 OpenCv定位物体实时位置,代码来源是…...
MySQL之如何定位慢查询
1、如何定位慢查询 1.1、使用开源工具 调试工具:Arthas 运维工具:Promethuss、Skywalking 1.2、MySQL自带慢日志 慢查询日志记录了所有执行时间超过指定参数(long_query_time,单位:秒,默认10秒&#x…...
Open3D 删除点云中重复的点
目录 一、算法原理1、重叠点2、主要函数二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT。 一、算法原理 1、重叠点 原始点云克隆一份 构造重叠区域 合并点云获得重叠点 2、主要…...
填报志愿选专业是兴趣重要还是前景重要?
进行专业评估,找到一个适合自己的专业是一件非常困难的事情。在进行专业选择时,身上理想化色彩非常严重的人,会全然不顾及他人的劝阻,义无反顾的以兴趣为主,选择自己热爱的专业。一些较多考虑他人建议,能听…...
python开发基础——day9 函数基础与函数参数
一、初识函数(function) 编程函数!数学函数,里面的是逻辑,功能,而不是套公式 编程函数的作用实现特定操作的一段代码 你现在请客,每个人都点同样的一份吃的,请100个人 1.薯条 2.上校鸡块 3.可乐 那…...
STM32——使用TIM输出比较产生PWM波形控制舵机转角
一、输出比较简介: 只有高级定时器和通用寄存器才有输入捕获/输出比较电路,他们有四个CCR(捕获/比较寄存器),共用一个CNT(计数器),而输出比较功能是用来输出PWM波形的。 红圈部分…...
第十五章 集合(set)(Python)
文章目录 前言一、集合 前言 集合(set)是一个无序的不重复元素序列。 一、集合 set {1, 2, 3, 4}...
面试-javaIO机制
1.BIO BIO:是传统的javaIO以及部分java.net下部分接口和类。例如,socket,http等,因为网络通信同样是IO行为。传统IO基于字节流和字符流进行操作。提供了我们最熟悉的IO功能,譬如基于字节流的InputStream 和OutputStream.基于字符流…...
在.NET Core中,config和ConfigureServices的区别和作用
在.NET Core中,config和ConfigureServices是两个不同的概念,它们在应用程序的启动和配置过程中扮演着不同的角色。 ConfigureServices:这是ASP.NET Core应用程序中的一个方法,位于Startup类的内部。它的作用是配置依赖注入(DI)容器…...
App Inventor 2 如何实现多个定时功能?
1、可以使用多个“计时器”组件。 2、也可以用一个计时器,定时一分钟。也就是一分钟就会触发一次事件执行,定义一个全局数字变量,在事件中递增,用逻辑判断这个变量的值即可完成多个想要定时的任务(о∀о) 代码块请参考…...
技术驱动的音乐变革:AI带来的产业重塑
📑引言 近一个月来,随着几款音乐大模型的轮番上线,AI在音乐产业的角色迅速扩大。这些模型不仅将音乐创作的门槛降至前所未有的低点,还引发了一场关于AI是否会彻底颠覆音乐行业的激烈讨论。从初期的兴奋到现在的理性审视࿰…...
重生之我要学后端0--HTTP协议和RESTful APIs
http和RESTful APIs HTTP协议RESTful APIs设计RESTful API设计实例 HTTP协议 HTTP(超文本传输协议)是用于分布式、协作式和超媒体信息系统的应用层协议。它是网页数据通讯的基础。工作原理简述如下: 客户端请求(Request…...
深度之眼(二十八)——神经网络基础知识(三)-卷积神经网络
文章目录 一、前言二、卷积操作2.1 填充(padding)2.2 步长2.3 输出特征图尺寸计算2.4 多通道卷积 三、池化操作四、Lenet-5及CNN结构进化史4.1 Lenet-5 一、前言 卷积神经网络–AlexNet(最牛)-2012 Lenet-5-大规模商用(1989) 二、…...
做信息网站怎么赚钱/代写文章价格表
自从2008年以来,太多的同学、朋友,QQ等网络帐号被盗。 然后,盗号者来骗钱。比如 借用账号、帮忙支付费用等。 盗号者固然可恶,传统骗子的网络版。 可是,这些帐号的主人就仅仅是可怜么? 自己的号被盗&#x…...
深圳网站开发招聘/站长素材音效
一、软件工程的定义 软件工程学是一门指导软件开发和维护的工程学科,是为了经济地获得能够在实际机器上有效运行的可靠软件而建立和使用的一系列完善的工程化原则。它应用计算机科学、数学及管理科学等原理,借鉴传统工程的原则、方法来生产软件ÿ…...
聊城建网站/推广网站文案
Idera SQL碎片整理管理,自动分析与碎片相关 SQL Defrag Manager 可以快速找到并修复 SQL 碎片热点。 自动识别索引碎片中的“热点” 计划索引碎片整理作业 系统资源预检查可以帮助您避免数据库争用 索引填充因子控制可以减少页面拆分 Idera SQL碎片整理管理集中管理,…...
营销型网站建设哪好/竞价排名是什么意思
转载于:https://www.cnblogs.com/chenman/p/3624396.html...
php做电商网站的难点/企业网络的组网方案
《JAVA面试题集合》word版.docJAVA面试题集 基础知识1.C或Java中的异常处理机制的简单原理和应用。当JAVA程序违反了JAVA的语义规则时,JAVA虚拟机就会将发生的错误表示为一个异常。违反语义规则包括2种情况。一种是JAVA类库内置的语义检查。例如数组下标越界,会引发…...
做图标的网站/什么是网络推广营销
本文实例讲述了PHPAjax实现无刷新分页的方法。分享给大家供大家参考,具体如下:注:这里使用到的一些类库在前面文章都能找到源代码,因此为了缩短文章篇幅,都指明链接所在。本文讲解内容为: Ajax 实现无刷新分…...