2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > Linux 运维安全策略(一)

Linux 运维安全策略(一)

时间:2023-02-08 08:42:26

相关推荐

Linux 运维安全策略(一)

来源:/weixin_42595012/article/details/101703081

侧重账号管理和安全扫描

Linux 是一种类 Unix 的操作系统。从理论上讲,Unix 本身的设计并没有什么重大的安全缺陷。多年来,绝大多数在 Unix 操作系统上发现的安全问题主要存在于个别程序中,所以大部分 Unix 厂商都声称有能力解决这些问题,提供安全的 Unix 操作系统。但 Linux 有些不同,因为它不属于某一家厂商,没有厂商宣称对它提供安全保证,因此用户只有自己解决安全问题。

Linux 是一个开放式系统,可以在网络上找到许多现成的程序和工具,这既方便了用户,也方便了黑客,因为他们也能很容易地找到程序和工具来潜入 Linux 系统,或者盗取 Linux 系统上的重要信息。不过,只要我们仔细地设定 Linux 的各种系统功能,并且加上必要的安全措施,就能让黑客们无机可乘。

下面主要从账户安全、系统引导、登录控制的角度,优化Linux系统的安全性。

一、账户安全控制

用户账号,是计算机使用者的身份凭证,每个访问系统资源的人,必须要有账号才能登录计算机,在 Linux 中,提供了多种机制来确保用户账号的安全使用。

1. 基本安全措施

(1)系统账号清理、锁定

在 Linux 系统中,除了用户手动创建的各种账号外,还包括随系统或程序安装过程中生成的大量其他账号,用来维护系统运作、启动或保持服务进程,一般不允许登陆,称为非登录用户。为了保持系统安全,这些用户的登陆 shell 通常是/sbin/nologin,表示禁止终端登录,应确保不被人为改动。

[root@localhost ~]# grep "/sbin/nologin$" /etc/passwd

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

adm:x:3:4:adm:/var/adm:/sbin/nologin

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

…… //省略部分内容

各种非登录用户中,有一些很少用到,如 news、uucp、games、gopher。可使用冗余账户,直接删除即可,还有一些随着应用程序的卸载未能自动删除,则需要管理员手动清除

[root@localhost ~]# userdel uucp

[root@localhost ~]# userdel games

[root@localhost ~]# userdel gopher

对于一些长期不用的账号,若无法确定是否删除,应暂时锁定(用usermod、passwd命令都可以锁定、解锁账号)

[root@localhost ~]# usermod -L ysf //锁定账号

[root@localhost ~]# passwd -S ysf //查看账号状态

ysf LK -12-22 0 99999 7 -1 (密码已被锁定。)

[root@localhost ~]# usermod -U ysf //解锁账号

[root@localhost ~]# passwd -S ysf

ysf PS -12-22 0 99999 7 -1 (密码已设置,使用 SHA512 加密。)

[root@localhost ~]# passwd -l ysf

锁定用户 ysf 的密码 。

passwd: 操作成功

[root@localhost ~]# passwd -u ysf

解锁用户 ysf 的密码 。

passwd: 操作成功

如果服务器中的账号已经固定,不进行更改,可以采用锁定账号配置文件的方法。使用 chattr 命令锁定、解锁文件,使用lsattr 查看文件锁定情况

[root@localhost ~]# chattr +i /etc/passwd /etc/shadow //+i,锁定文件

[root@localhost ~]# lsattr /etc/passwd /etc/shadow //查看文件锁定情况

----i--------e- /etc/passwd

----i--------e- /etc/shadow

[root@localhost ~]# useradd yangshufan //文件锁定,无法添加、删除用户,也不能更改用户的密码、登陆shell、宿主目录等属性

useradd: cannot open /etc/passwd

[root@localhost ~]# chattr -i /etc/passwd /etc/shadow //-i,解锁文件

[root@localhost ~]# useradd yangshufan //正常创建用户

[root@localhost ~]#

(2)密码安全控制

为了降低密码被猜出或暴力破解的风险,应避免长期使用同一个密码。管理员可以在服务器端限制用户密码使用最大有效期天数,对密码已过期的用户,登录时要求重新设置密码,否则拒绝登录

[root@localhost ~]# vim /etc/login.defs //适应于新建的用户

PASS_MAX_DAYS 30 //密码最多使用30天,必须更改密码

PASS_MIN_DAYS 0 //密码最少使用0天,才能更改密码

PASS_MIN_LEN 5 //可接受的密码长度

PASS_WARN_AGE 7 //密码到期前的警告时间

[root@localhost ~]# chage -M 30 ysf //适用于以存在的用户,密码30天过期

[root@localhost ~]# chage -d 0 yangshufan //下次登录时,必须更改密码

(3)命令历史、自动注销

shell 环境下,命令历史机制为用户提供了极大的便利,也带来了一些潜在的风险。只有获得用户的命令历史记录,该用户的命令操作将一览无余,服务器的安全将受到威胁。历史命令记录条数有变量 HISTSIZE 控制,默认1000 条,可修改配置文件,影响系统中的所有用户。

[root@localhost ~]# vim /etc/profile //适用于新登录用户

HISTSIZE=100

[root@localhost ~]# HISTSIZE=5 //适用于当前用户

[root@localhost ~]# history

96 chage -d 0 yangshufan

97 vim /etc/profile

98 export HISTSIZE=100

99 export HISTSIZE=5

100 history

[root@localhost ~]# vim ~/.bash_logout //添加以下语句,用户退出登录bash时,自动清空历史命令

history -c

clear

bash 终端环境中,可设置一个闲置超时时间,当超过指定的时间没有任何输入时,自动注销终端。由变量 TMOUT 控制,默认单位

[root@localhost ~]# vim /etc/profile //适用于新登录用户

export TMOUT=600

[root@localhost ~]# TMOUT=600 //适用于当前用户

[root@localhost ~]# unset TMOUT //如果进行耗时较长的操作,避免打扰,可取消TMOUT变量

2. 用户切换与提权

一般情况下,不建议直接使用 root 用户登录,一是减少因操作失误而造成的破坏;二是降低特权密码被泄露的风险。鉴于这些原因,需要为普通用户提供一种身份切换或权限提升机制,以进行管理任务

(1)su命令——切换用户

使用su命令,可以切换一个指定的用户,拥有该用户的所有权限

[root@localhost ~]# su - ysf //root切换为普通用户,不需要密码验证

[ysf@localhost ~]$ su - //普通用户切换为root,需要验证,root可省略

密码:

[root@localhost ~]#

默认所有用户允许使用 su 命令,从而有机会反复尝试其他用户(root)的登陆密码,带来安全风险。可以使用 pam_wheel认证模块,只允许极个别用户使用 su 命令进行切换

[root@localhost ~]# vim /etc/pam.d/su

auth required pam_wheel.so use_uid //这行去掉注释 #

[root@localhost ~]# su - ysf

[ysf@localhost ~]$ su - root //再次尝试切换,就会提示密码错误

密码:

su: 密码不正确

[ysf@localhost ~]$ exit

logout

[root@localhost ~]# gpasswd -a ysf wheel //添加授权用户到wheel组

Adding user ysf to group wheel

[root@localhost ~]# grep wheel /etc/group //查看wheel组成员

wheel:x:10:ysf

[root@localhost ~]# su - ysf

[ysf@localhost ~]$ su - //再次尝试切换,切换成功

密码:

[root@localhost ~]#

(2)sudo命令——提升执行权限

使用 su 命令虽然可以切换为 root 用户,但必须知道 root 密码要知道每多一个人知道特权密码,就多一份风险。而 sudo 命令可以让普通用户拥有一部分 root 用户才能执行的命令,又不用知道特权密码

1)修改配置文件 /etc/sudoers

[root@localhost ~]# visudo //也可使用vi进行编辑,但保存是必须执行“:w!”强制执行

%wheel ALL=(ALL) NOPASSWD: ALL //wheel组的用户不需要密码验证

yangshufan localhost=/sbin/ifconfig //yangshufan能在主机localhost上执行ifconfig命令修改IP地址

User_Alias USER=ysf,yang

Host_Alias HOST=win,www

Cmnd_Alias CMND=/bin/rpm,/usr/bin/yum

USER HOST=CMND //这四行表示允许用户ysf,yang在主机win,www上执行rpm,yum命令

yang localhost=/sbin/*,!/sbin/ifconfig //yang可以执行在/sbin目录下除了ifconfig外所有的命令程序

Defaults logfile="/var/log/sudo" //启用sudo日志记录以备管理员查看

2)通过 sudo 执行特权命令

[yangshufan@localhost ~]$ ifconfig eth0:0 10.0.0.1/8 //未用sudo命令

SIOCSIFADDR: 权限不够

SIOCSIFFLAGS: 权限不够

[yangshufan@localhost ~]$ sudo ifconfig eth0:0 10.0.0.1/8 //使用sudo命令

…… //省略部分内容

[sudo] password for yangshufan: //验证密码

[yangshufan@localhost ~]$ ifconfig eth0:0 //查看命令,执行成功

eth0:0 Link encap:Ethernet HWaddr 00:0C:29:1C:B4:FB

inet addr:10.0.0.1 Bcast:10.255.255.255 Mask:255.0.0.0

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

[yangshufan@localhost ~]$ sudo -l //查看获得哪些sudo授权

[sudo] password for yangshufan:

用户 yangshufan 可以在该主机上运行以下命令:

(root) /sbin/ifconfig

[root@localhost ~]# tail /var/log/sudo //可以看到用户的sudo操作记录

Dec 27 07:49:35 : yangshufan : TTY=pts/0 ; PWD=/home/yangshufan ; USER=root ;

COMMAND=/sbin/ifconfig eth0:0 10.0.0.1/8

二、系统引导和登录控制

现在,大部分服务器是通过远程登录的方式来进行管理的,本地引导和终端登录过程往往被忽视,从而留下安全隐患。

1. 开关机安全控制

对于服务器主机,其物理安全是非常重要的,除了要保持机箱完好、机柜锁闭、严格控制机房人员进出、硬件设备现场接触等,在开关机方面,还要做好系统本身的安全措施

(1)调整 BIOS 引导设置

* 将第一优先引导设备设为当前系统所在磁盘

* 禁止从其他设备引导系统,对应的项为 Disabled

* 将 BIOS 安全级别改为 setup,并设好管理密码,以防止未授权修改

(2)禁止 Ctrl+Alt+Del 快捷键重启

[root@localhost ~]# vim /etc/init/control-alt-delete.conf

#exec /sbin/shutdown -r now "Control-Alt-Delete pressed" //加#,注释信息

[root@localhost ~]# reboot //重启生效

(3)限制更改 GRUB 引导参数

通过修改 GRUB 引导参数进入单用户模式,不需要密码就可以进入系统,而且还用于 root 权限,只应在紧急情况下使用。从系统安全角度来看,如果任何人都能修改 GRUB 引导参数,对服务器来说是个极大地威胁。所以需要为 GRUB 菜单设置一个密码,只有提供正确的密码才被允许修改引导参数。

[root@localhost ~]# grub-md5-crypt //经过MD5算法加密的字符串,安全性更好

Password:

Retype password:

$1$vkPke/$TRfLUURiy7XMKa13XgvIH1 //经过加密的密码字符串

[root@localhost ~]# vim /boot/grub/grub.conf

password --md5 $1$vkPke/$TRfLUURiy7XMKa13XgvIH1 //复制密码,添加到第一个title之前就可以了

…… //省略部分内容

再次修改 GRUB 菜单时,必须输入正确的 GRUB 密码。

2. 终端及登录控制

在 Linux 中,默认开启了留个 tty 终端,允许任何用户进行本地登录,可从以下方面限制本地登录:

(1)减少开放的 tty 终端个数

对于远程维护的Linux服务器,六个 tty 终端有些多余

/etc/init/tty.conf //控制tty终端的开启

/etc/init/start-ttys.conf //控制tty终端的开启数量、设备文件

/etc/sysconfig/init //控制tty终端的开启数量、终端颜色

[root@localhost ~]# vim /etc/init/start-ttys.conf

env ACTIVE_CONSOLES=/dev/tty[1-3] //修改为1-3

[root@localhost ~]# vim /etc/sysconfig/init

ACTIVE_CONSOLES=/dev/tty[1-3] //修改为1-3

[root@localhost ~]# reboot

重启后,将无法切换到 tty4、tty5、tty6

(2)禁止 root 用户登录

在Linux系统中,login 程序会读取 /etc/securetty 文件,以决定允许 root 用户从哪些终端登录。若要禁止 root 用户从指定的终端登录,只需注释或删除对应的行即可

[root@localhost ~]# vim /etc/securetty

#tty1

#tty2

(3)禁止普通用户登录

当服务器在维护时,不希望普通用户登录系统,只需建立 /etc/nologin 文件即可。当 login 程序检测到 /etc/nologin 文件存在时,将拒绝普通用户登录系统(root 除外)

[root@localhost ~]# touch /etc/nologin

当收到删除/etc/nologin文件或重启主机后,即可恢复正常

3.弱口令检测、端口扫描

(1)弱口令检测 —— John the Ripper

过于简单的密码是服务器面临的最大风险,尽管大家知道设置一个更长、更复杂的密码会更安全,但总有人贪图方便而采用简单、易记的密码。对于任何一个承担着安全责任的管理员,及时找出这些弱口令账户是非常重要的,这样更容易采取安全措施(如提醒重设更安全的密码)

John the Ripper 是一款开源的密码破解工具,能在已知密文的情况下,快速分析明文的密码字串,支持 DES、MD5等多种加密算法,允许使用密码字典进行暴力破解。通过 John the Ripper,可以检测 Linux/UNIX 系统用户的密码强度

[root@localhost ~]# tar zxf john-1.8.0.tar.gz

[root@localhost ~]# cd john-1.8.0

[root@localhost john-1.8.0]# ls -ld *

drwxr-xr-x. 2 root root 4096 12月 27 09:45 doc //手册文档

lrwxrwxrwx. 1 root root 10 12月 27 09:45 README -> doc/README //链接文件

drwxr-xr-x. 2 root root 4096 12月 27 09:45 run //运行程序

drwxr-xr-x. 2 root root 4096 12月 27 09:45 src //源码文件

[root@localhost john-1.8.0]# cd src/

[root@localhost src]# make clean linux-x86-64 //切换到src目录下,编译

…… //省略编译信息

[root@localhost src]# ls ../run/john //run子目录生成john可执行程序

../run/john

[root@localhost src]# cp /etc/shadow /etc/shadow.txt //准备待破解的密码文件

[root@localhost src]# cd ../run

[root@localhost run]# ./john /etc/shadow.txt //执行暴力破解,破解后信息保存到john.pot文件

Loaded 3 password hashes with 3 different salts (crypt, generic crypt(3) [?/64])

Press 'q' or Ctrl-C to abort, almost any other key for status

ysf (ysf)

123 (yangshufan)

…… //按Ctrl+C,终止后续过程

[root@localhost run]# ./john --show /etc/shadow.txt //可通过--show选项,查看已破解的账户列表

ysf:ysf:17527:0:30:7:::

yangshufan:123:17527:0:99999:7:::

2 password hashes cracked, 1 left

[root@localhost run]# :> john.pot //清空以破解的账户列表,以便使用密码字典重新破解

[root@localhost run]# ./john --wordlist=./password.lst /etc/shadow.txt //提供默认的密码字典password.lst,可往里添加更多密码组合

Loaded 3 password hashes with 3 different salts (crypt, generic crypt(3) [?/64])

Press 'q' or Ctrl-C to abort, almost any other key for status

123 (yangshufan)

1g 0:00:00:18 100% 0.05467g/s 193.8p/s 393.0c/s 393.0C/s !@#$%..sss

Use the "--show" option to display all of the cracked passwords reliably

Session completed

从上可看出,由于密码字典的密码组合较少,仅破解出一个其中密码。也不难看出像这类密码有多么脆弱了

(2) 网络扫描——NMAP

NMAP 是一款强大的端口扫描类安全评测工具,支持 ping 扫描、多端口检测、OS 识别等多种技术。使用 NMAP 定期扫描内部网络,可以找出网络中不可控的应用服务,及时关闭不安全的服务,较少安全风险

[root@localhost ~]# mount /dev/cdrom /media/

mount: block device /dev/sr0 is write-protected, mounting read-only

[root@localhost ~]# rpm -ivh /media/Packages/nmap-5.51-3.el6.x86_64.rpm

NMAP 的扫描程序位于 /usr/bin/nmap 目录下,命令基本格式如下:

nmap [扫描类型] [选项] [扫描目标...]

其中:

扫描目标:可以是主机名、IP 地址、网络地址等,多个目标以空格分隔

选项:-p 指定扫描的端口;-n 禁用反向解析(加快扫描)

常用的 扫描类型 如下

-sS:TCP SYN 扫描(半开扫描),只向目标发送 SYN 数据包,如果收到 SYN/ACK 响应就认为目标正在监听,并立即断开连接;否则就认为目标端口未开放。

-sT:TCP连接扫描,完整的TCP扫描方式,如果成功连接就认为目标端口正在监听;否则就认为目标端口未开放

-sF:TCP FIN扫描,开放的端口会忽略,关闭的端口会回应RST数据包。这种方式扫描可间接检测防火墙的健壮性

-sU:UDP扫描,探测目标主机提供哪些UDP服务,UDP扫描会比较慢

-sP:ICMP扫描,快速判断目标主机是否存活,不做其他扫描

-s0:跳过ping检测,当对方不响应ICMP请求时,使用这种方式可避免因无法ping通而放弃扫描

[root@localhost ~]# nmap 127.0.0.1 //扫描常用的TCP端口

Not shown: 995 closed ports

PORT STATE SERVICE

22/tcp open ssh

25/tcp open smtp

111/tcp open rpcbind

631/tcp open ipp

3306/tcp open mysql

[root@localhost ~]# nmap -sU 127.0.0.1 //扫描常用的UDP端口

PORT STATE SERVICE

111/udp open rpcbind

631/udp open|filtered ipp

[root@localhost ~]# nmap -p 21 192.168.1.0/24 //检测192.168.1.0/24网段有哪些主机提供FTP服务

[root@localhost ~]# nmap -n -sP 192.168.1.0/24 //检测192.168.1.0/24网段有哪些主机存活(能ping通)

[root@localhost ~]# nmap -p 139,445 192.168.4.10-20 //检测192.168.10-20的主机是否开启文件共享服务

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。