首页 > 代码库 > Linux系统管理11——系统安全及应用

Linux系统管理11——系统安全及应用

Linux系统管理11——系统安全及应用

基本安全措施

1、系统账号清理

1)将非登录用户的shell设为/sbin/nologin

·方法一: usermod -s

·方法二: chsh命令,交互式修改

·方法三: chsh -s

示例:

技术分享 

除了上述三种方法,也可以直接vi编辑/etc/passwd文件进行修改。

2)锁定长期不使用的账号

·方法一: passwd -l  (将在密文前增加2个“!”)解锁 passwd -u 查看passwd -S

·方法二: usermod -L(将在密文前增加1个“!”)解锁 usermod -U

示例:

 1>锁定:

技术分享 

2>解锁:

技术分享

技术分享

注意:若用passwd -l命令对某账号进行锁定,若用usermod -U命令解锁,需要进行两次操作才可以。如下:

 技术分享

除了上述两种方法,也可以直接vi编辑/etc/shadow文件进行修改。

3)删除无用的账号

·userdel [-r] 用户名 (此处不过多解释,详见Linux系统管理03

4)锁定账号文件 /etc/passwd/etc/shadow

1>锁定:chattr +i /etc/passwd /etc/shadow

2>解锁:chattr -i /etc/passwd /etc/shadow

3>查看:lsattr /etc/passwd /etc/shadow

4>示例:

技术分享 

注意:锁定后即使是超户,也不能修改该文件,即不能创建、删除、修改用户信息。

2、密码安全控制

1)设置密码有效期

1>修改某个已存在用户的密码有效期:

chage -M 天数 用户名

passwd -x 天数 用户名

2>示例: 

技术分享 

2>设置今后添加用户时的默认密码有效期:

·方法:vi编辑/etc/login.defs文件,修改“PASS_MAX_DAY”后面的数值

·示例:

[root@crushlinux ~]# vi /etc/login.defs 

99999天改为60

2)要求用户下次登录时修改密码

1>方法:chage -d 0 用户名

2>示例:

[root@crushlinux ~]# chage -d 0 user1

3、命令历史限制

1)减少历史的命令条数

1>方法一:vi编辑/etc/profile文件,修改“HISTSIZE=”后面的数值

2>方法二:export HISTSIZE=数值

2>示例:

·方法一:vi编辑/etc/profile文件,修改“HISTSIZE=100

[root@crushlinux ~]# vi /etc/profile 

[root@crushlinux ~]# source /etc/profile 使/etc/profile配置文件生效,此时全局生效

·方法二:export HISTSIZE=100

[root@crushlinux ~]# export HISTSIZE=100 仅当前用户环境下生效

2)注销时自动清空历史命令

1>方法:vi编辑宿主目录下的“.bash_logout”文件,添加“history -c

2>示例:设置amber用户注销时自动清空历史命令

[root@crushlinux ~]# vi ~amber/.bash_logout

4、终端自动注销

1)方法一:vi编辑/etc/profile文件,添加“TMOUT=数值”

2)方法二:export TMOUT=数值

3)示例:闲置600秒后自动注销

·方法一:vi编辑/etc/profile文件,添加“TMOUT=600

[root@crushlinux ~]# vi /etc/profile 

[root@crushlinux ~]# source /etc/profile 使/etc/profile配置文件生效,此时全局生效

·方法二:export TMOUT=600

[root@crushlinux ~]# export TMOUT=600 仅当前用户环境下生效

切换用户  su命令

1、作用:切换用户(Substitute User

2、格式:su [-] 目标用户 (有-”初始化环境变量,无“-”环境变量不改变)

3、查看su操作记录

安全日志文件:/var/log/secure 

提升权限sudo命令

1su命令的缺点:

在使用su命令时,不指定用户名默认切换至root用户,需要输入root密码,但实际生产中root密码是不可以被广泛告知的。如果需要执行root用户才有权限的命令,需要通过sudo命令或wheel组的设置来实现。

2sudo命令

1)作用:以其他用户身份(默认root身份)执行授权的命令

2)用法:

sudo 授权命令

默认设置为首次执行时,需输入当前用户的登录密码,5分钟内再次执行sudo 令时则无需再输入密码。

3)配置sudo授权

1>方法一:添加单个用户的sudo授权

·visudo或者vi /etc/sudoers(效果相同),添加配置内容

·格式:用户 主机名列表=命令程序列表,命令前加“!”表示“除了”此命令

示例:

技术分享 

2>方法二:批量授权

·wheel

技术分享 

(将希望提权的用户加入wheel组,略)

·别名

技术分享 

·根据示例以及实际需求,设置别名。(建议先复制行,再粘贴修改)

·设置别名后,添加格式:

用户别名 主机别名=命令别名(所有别名均大写) 

4)查看sudo操作记录

·方法:

第一步:visudo或者vi /etc/sudoers 添加“Defaults logfile=/var/log/sudo

第二步:cat /var/log/sudo

示例:启用Defaults logfile配置,给amber用户所有/sbin/以及/usr/sbin下的命令执行权限,除了关机以及重启。

[root@crushlinux ~]# visudo

技术分享

技术分享

5)查询授权操作 sudo -l

示例:

 技术分享

PAM安全认证

1su命令的安全隐患

默认情况下,任何用户都允许使用su命令,从而有机会反复尝试其他用户(如root)的登录密码,带来安全风险。为了增强su命令的使用控制,可以借助PAM认证模块,只允许极个别用户使用su命令进行切换。

 

2、可插拔认证模块PAMPluggable Authentication Modules

1PAM简介

PAM是一种高效而且灵活便利的用户级别的认证方式,它也是当前Linux服务器普遍使用的认证方式。

PAM提供了对所有服务进行认证的中央机制,适用于login,远程登录(telentrloginfshftp),su等应用程序。系统管理员通过PAM配置文件来制定不同应用程序的不同认证策略。

2PAM认证原理

PAM认证一般遵循的顺序:Service(服务)→PAM→pam_*.so

PAM认证首先要确定哪一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(32位系统位于/lib/security下,64位系统位于/lib64/security下)进行安全认证。下图为Linux x86_64位系统中PAM的配置文件:

技术分享

用户访问服务器的时候,服务器的某一个服务进程把用户的请求发送到PAM模块进行认证。不同的应用程序所对应的PAM模块也是不同的。

如果想查看某个程序是否支持PAM认证,可以用ls命令进行查看,如查看su是否支持PAM模块认证:ls /etc/pam.d|grep su

3PAM认证的构成

·每一行都是一个独立的认证过程

·每一行可以区分为三个字段:认证类型、控制类型、PAM模块及其参数

示例:查看suPAM配置文件

技术分享

4、常见的四种认证类型

1auth  认证管理(authentication management

·作用:接受用户名和密码,进而对该用户的密码进行认证

2account  账户管理(account management

·作用:检查账户是否被允许登录系统,账号是否已过期,账号的登录是否有时间段的 限制等

3password  密码管理(password management

·作用:主要是用来修改用户的密码

4session  会话管理(session management

·作用:主要是提供对会话的管理和记账(accounting

 

认证类型

意义

作用

auth

认证管理

接受用户名和密码,进而对该用户的密码进行认证

account

账户管理

检查账户是否被允许登录系统,账号是否已过期,账号的登录是否有时间段的限制等 权限

password

密码管理

主要是用来修改用户的密码

session

会话管理

主要是提供对会话管理记账

 

 

5、常见的五种控制类型

1required 验证失败时仍然继续,但返回Fail

2requisite 验证失败则立即结束整个验证过程,返回Fail

3sufficient 验证成功则立即返回,不再继续,否则忽略结果并继续

4optional 不用于验证,只是显示信息(通常用于session类型)

5include 不进行认证,转到后面PAM模块进行认证 

技术分享 

技术分享

6、使用PAM认证模块,限制某个命令或是服务的使用权限

1vi编辑该命令在/etc/pam.d/下对应的配置文件,启用pam_wheel模块

2)添加授权用户到wheel

3)示例:设置仅允许用户amberuser1使用su命令进行切换 

技术分享

技术分享

技术分享

 

技术分享

五、开关机安全控制

1、调整BOIS引导设置

1)将第一引导设备设为当前系统所在硬盘

技术分享

2禁止其他设备(光盘、U盘、网络)引导系统 

3)将安全级别设为setup,并设置管理员密码 

技术分享 

技术分享

2、禁用重启热键Ctrl+Alt+Del

1)目的:避免用户误操作

2)方法:vi编辑/etc/init/control-alt-delete.conf,将最后两行改为注解

 技术分享

[root@crushlinux ~]# init q 不重启,即时生效配置文件

 

3gurb菜单限制

1)未经授权禁止修改启动参数(第一个“title”前加密码)

2)未经授权禁止进入指定系统(每个“title”后加密码)

技术分享  

技术分享

技术分享

3)密码设置方式

1>password 明文串

2>password --md5 加密密码串

·使用grub-md5-crpypt命令获取加密密码串 

·将加密密码串复制进grub.conf文件

六、终端登录安全控制

1、减少开放终端个数

1)方法:vi编辑/etc/init/start-ttus.conf以及/etc/sysconfig/init两个配置文件

2)示例:设置所用用户仅可从tty1tty2tty3三个终端登录 

重启后,所有用户仅可从tty1tty2tty3登录 

2、限制root只在安全终端登录

1)方法:vi编辑/etc/securetty配置文件,将禁止的终端注解掉

2)示例:禁止root用户从tty2tty3终端登录

技术分享 

此文件修改后立即生效

 

3、禁止普通用户登录

1)方法:touch /etc/nologin,删除/etc/nologin这个空文件即可恢复。

2)示例:

技术分享

、弱口令检测  JRJoth the Ripper

1JRJoth the Ripper)简介

·一款密码分析工具,支持字典式的暴力破解

·通过对shadow文件的口令分析,可以检测密码

·官方网站:http://crushlinux.openwall.com/john/

2、安装JR工具

1tar包解压

2)进到解压后的src目录下,执行make clean

3)进到解压后的run目录下,执行命令

字典式暴力破解,可添加内容至字典

查看破解记 

清空破解记录

八、端检测  NMAP

1NMAP简介

·一款强大的网络扫描、安全检测工具

·官方网站:http://nmap.org/

·可从光盘中安装nmap-5.51-3.el6.x86_64.rpm

2NMAP的扫描语法

nmap [扫描类型] [选项] <扫描目标>

3、常用的扫描类型

-sS TCP SYN扫描(半开)

-sT TCP链接扫描(全开)

-sF TCP FIN扫描

-sU UDP扫描

-sP ICMP扫描

-s0 跳过ping检测【较少使用】

 

4、常用选项:

-n 禁止DNS反向解析

-p 指定端口号

 

安装nmap 

技术分享

1、扫描本机开放了哪些TCP端口、UDP端口

 技术分享

2检测当前192.168.1.0/24网段有哪些主机提供FTP服务

  技术分享

3、检测192.168.1.0/24网段有哪些存活主机

 技术分享

4、检测192.168.1.100~254/24有哪些主机开启了文件共享服务

  技术分享

【课外知识补充】(来自百度百科)

·TCPTransmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。

·TCP三次握手的过程如下:

客户端发送SYNSEQ=x)报文给服务器端,进入SYN_SEND状态。

服务器端收到SYN报文,回应一个SYN SEQ=yACK(ACK=x+1)报文,进入SYN_RECV状态。

客户端收到服务器端的SYN报文,回应一个ACK(ACK=y+1)报文,进入Established 状态。

三次握手完成,TCP客户端和服务器端成功地建立连接,可以开始传输数据了。

技术分享 

ACK表示Acknowledgment Number字段有意义

PSH表示Push功能,RST表示复位TCP连接

SYN表示SYN报文(在建立TCP连接的时候使用)

FIN表示没有数据需要发送了(在关闭TCP连接的时候使用)

 

·UDPUser Datagram Protocol)协议全称是用户数据报协议,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。根据OSI(开放系统互连)参考模型,UDPTCP都属于传输层协议。

·ICMP是(Internet Control Message ProtocolInternet控制报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。

·Linux常用端口:

端口号码 /

名称

注释

1

tcpmux

TCP 端口服务多路复用

5

rje

远程作业入口

7

echo

Echo 服务

9

discard

用于连接测试的空服务

11

systat

用于列举连接了的端口的系统状态

13

daytime

给请求主机发送日期和时间

17

qotd

给连接了的主机发送每日格言

18

msp

消息发送协议

19

chargen

字符生成服务;发送无止境的字符流

20

ftp-data

FTP 数据端口

21

ftp

文件传输协议(FTP)端口;有时被文件服务协议(FSP)使用

22

ssh

安全 ShellSSH)服务

23

telnet

Telnet 服务

25

smtp

简单邮件传输协议(SMTP

37

time

时间协议

39

rlp

资源定位协议

42

nameserver

互联网名称服务

43

nicname

WHOIS 目录服务

49

tacacs

用于基于 TCP/IP 验证和访问的终端访问控制器访问控制系统

50

re-mail-ck

远程邮件检查协议

53

domain

域名服务(如 BIND

63

whois++

WHOIS++,被扩展了的 WHOIS 服务

67

bootps

引导协议(BOOTP)服务;还被动态主机配置协议(DHCP)服务使用

68

bootpc

BootstrapBOOTP)客户;还被动态主机配置协议(DHCP)客户使用

69

tftp

小文件传输协议(TFTP

70

gopher

Gopher 互联网文档搜寻和检索

71

netrjs-1

远程作业服务

72

netrjs-2

远程作业服务

73

netrjs-3

远程作业服务

73

netrjs-4

远程作业服务

79

finger

用于用户联系信息的 Finger 服务

80

http

用于万维网(crushlinux)服务的超文本传输协议(HTTP

88

kerberos

Kerberos 网络验证系统

95

supdup

Telnet 协议扩展

101

hostname

SRI-NIC 机器上的主机名服务

102/tcp

iso-tsap

ISO 开发环境(ISODE)网络应用

105

csnet-ns

邮箱名称服务器;也被 CSO 名称服务器使用

107

rtelnet

远程 Telnet

109

pop2

邮局协议版本2

110

pop3

邮局协议版本3

111

sunrpc

用于远程命令执行的远程过程调用(RPC)协议,被网络文件系统(NFS)使用

113

auth

验证和身份识别协议

115

sftp

安全文件传输协议(SFTP)服务

117

uucp-path

Unix Unix 复制协议(UUCP)路径服务

119

nntp

用于 USENET 讨论系统的网络新闻传输协议(NNTP

123

ntp

网络时间协议(NTP

137

netbios-ns

在 红帽企业 Linux 中被 Samba 使用的 NETBIOS 名称服务

138

netbios-dgm

在 红帽企业 Linux 中被 Samba 使用的 NETBIOS 数据报服务

139

netbios-ssn

在 红帽企业 Linux 中被 Samba 使用的 NETBIOS 会话服务

143

imap

互联网消息存取协议(IMAP

161

snmp

简单网络管理协议(SNMP

162

snmptrap

SNMP 的陷阱

163

cmip-man

通用管理信息协议(CMIP

164

cmip-agent

通用管理信息协议(CMIP

174

mailq

MAILQ 电子邮件传输队列

177

xdmcp

X 显示管理器控制协议(XDMCP

178

nextstep

NeXTStep 窗口服务器

179

bgp

边界网络协议

191

prospero

Prospero 分布式文件系统服务

194

irc

互联网中继聊天(IRC

199

smux

SNMP UNIX 多路复用

201

at-rtmp

AppleTalk 选路

202

at-nbp

AppleTalk 名称绑定

204

at-echo

AppleTalk echo 服务

206

at-zis

AppleTalk 区块信息

209

qmtp

快速邮件传输协议(QMTP

210

z39.50

NISO Z39.50 数据库

213

ipx

互联网络分组交换协议(IPX),被 Novell Netware 环境常用的数据报协议

220

imap3

互联网消息存取协议版本3

245

link

LINK / 3-DNS iQuery 服务

347

fatserv

FATMEN 文件和磁带官吏服务器

363

rsvp_tunnel

RSVP 隧道

369

rpc2portmap

Coda 文件系统端口映射器

370

codaauth2

Coda 文件系统验证服务

372

ulistproc

UNIX LISTSERV

389

ldap

轻型目录存取协议(LDAP

427

svrloc

服务位置协议(SLP

434

mobileip-agent

可移互联网协议(IP)代理

435

mobilip-mn

可移互联网协议(IP)管理器

443

https

安全超文本传输协议(HTTP

444

snpp

小型网络分页协议

445

microsoft-ds

通过 TCP/IP 的服务器消息块(SMB

464

kpasswd

Kerberos 口令和钥匙改换服务

468

photuris

Photuris 会话钥匙管理协议

487

saft

简单不对称文件传输(SAFT)协议

488

gss-http

用于 HTTP 的通用安全服务(GSS

496

pim-rp-disc

用于协议独立的多址传播(PIM)服务的会合点发现(RP-DISC

500

isakmp

互联网安全关联和钥匙管理协议(ISAKMP

535

iiop

互联网内部对象请求代理协议(IIOP

538

gdomap

GNUstep 分布式对象映射器(GDOMAP

546

dhcpv6-client

动态主机配置协议(DHCP)版本6客户

547

dhcpv6-server

动态主机配置协议(DHCP)版本6服务

554

rtsp

实时流播协议(RTSP

563

nntps

通过安全套接字层的网络新闻传输协议(NNTPS

565

whoami

whoami 用户ID列表

587

submission

邮件消息提交代理(MSA

610

npmp-local

网络外设管理协议(NPMP)本地 / 分布式排队系统(DQS

611

npmp-gui

网络外设管理协议(NPMPGUI / 分布式排队系统(DQS

612

hmmp-ind

HyperMedia 管理协议(HMMP)表示 / DQS

631

ipp

互联网打印协议(IPP

636

ldaps

通过安全套接字层的轻型目录访问协议(LDAPS

674

acap

应用程序配置存取协议(ACAP

694

ha-cluster

用于带有高可用性的群集的心跳服务

749

kerberos-adm

Kerberos 版本5v5)的“kadmin”数据库管理

750

kerberos-iv

Kerberos 版本4v4)服务

765

webster

网络词典

767

phonebook

网络电话簿

873

rsync

rsync 文件传输服务

992

telnets

通过安全套接字层的 TelnetTelnetS

993

imaps

通过安全套接字层的互联网消息存取协议(IMAPS

994

ircs

通过安全套接字层的互联网中继聊天(IRCS

995

pop3s

通过安全套接字层的邮局协议版本 3POPS3

Linux系统管理11——系统安全及应用