linux系统——系统安全及应用

账号安全控制

基本安全措施

系统账号清理
  • 在Linux系统中,除了用户手动创建的用户,还有随着系统或程序安装过程而自动生成的其他账号。除了超级用户root之外,其他大量账号只是用于维护系统运作,启动或保持服务进程,一般不允许登录,因此也称为非登录用户账号。常见的非登录账号包括:bin,deamon,lp,main等。为了确保系统安全这些账号的登录通常是/sbin/nologin,表示禁止终端登录,应确保不被别人改动。当程序被卸载但账号未能删除,则需要手动删除。
  • 对于长期不用的账号,而且不知道是否该删除,可以暂时将其锁定。
  1. usermod -L  账号名        锁定账号
  2. passwd -S 账号名          查看账号状态
  3. usermod -U 账号名        解锁账号
  •  如果服务器中的用户已经固定,不需要更改,可以采取锁定账号配置文件的方法:使用chattr命令,分别加“+i”“-i”来锁定,解锁文件,lsattr命令可以查看文件锁定情况 。(在账号文件被锁定的情况下,内容不允许改变,所以无法添加,删除账号 ,也不能更改用户的密码,登录shell,宿主目录等属性信息)(扩展:chattr “+a”“-a”选项,+a:选择不允许用户编辑文件内容,但允许用户追加;-a:则允许用户编辑。)

  • 如果不希望某个用户登录系统可以在创建该用户时加上“-s”选项+/sbin/nologin。例如:useradd  用户名 -s  /sbin/nologin 

 密码安全控制
  • 在不安全的网络环境中,为了降低密码被猜出或暴力破解的风险,用户应定期修改密码,避免长期使用一个密码。管理员可以设置密码的最大有效时间,密码过期的用户登录时会被要求重新设置密码,否则就拒绝登录
  • 要求由批量创建的用户初次登录时必须自设新密码
  • 修改/etc/pam.d/system-auth设置密码错误多少次结束会话
命令历史,自动注销
  1. xshell远程的历史命令机制为用户提供便利,但也给用户带来了潜在的风险。只要获得用户的命令历史文件,该用户的命令操作就一览无余,如在命令行中输入了明文密码,可能对服务器的安全存在巨大隐患。为防止此隐患,我们可以通过修改/etc/perofile文件中的HISTSIZE的值限制历史记录的条数,该操作可以影响系统中所有新登录的用户。如设置最多50条: 
  2. 还可以修改用户宿主目录中的~/.bash_logout文件,设置用户退出Bash环境以后,所有记录的历史命令将自动清空

2.用户切换与提权   

su命令——切换用户   

su命令后面跟上想要切换到的用户名,例如su username。这将使你切换到指定的用户,但并不会加载该用户的完整环境变量和配置文件。 su -命令则会加载目标用户的完整环境,包括其家目录、shell配置文件                                                                                                       

sudo命令——提升执行权限

sudo命令允许普通用户以其他用户(通常是root用户)的身份执行命令。它在安全控制中起到重要作用,因为它提供了权限管理的灵活性,同时避免了直接以root用户登录带来的安全风险。通过配置sudoers文件,可以精细控制哪些用户可以执行哪些命令,以及是否需要输入密码等。

条件:

使用sudo命令前,需要由超级管理员预先进行授权,sudo的配置文件为/etc/sudores,文件的默认权限为440.需使用专门的visudo进行编辑,虽然也可以用vi进行编辑,但保存时必须执行:W!命令来强制执行,否则系统将提示为只读文件而拒绝保存。

授权格式为:user MACHINE=COMMANDS

授权配置文件包括用户,主机,命令三个部分,即授权那些人在哪些人在哪些主机上执行那些命令:

用户(user):直接授权指定的用户名,或采用“%组名”的形式(授权一个组的所有用户)

主机(MACHINE):使用此配置文件的主机名称,此部分主要是方便在多个主机间共用同一个sudores文件,一般设为localhost或者实际的主机名即可。

命令(COMMANDS):允许授权的用户通过sudo方式执行的特权命令,需填写命令程序的完整路径,多个命令之间以逗号“,”进行分隔。

%组名 ALL=NOPASSWD:ALL设置该组内用户无需验证密码即可执行任何命令。

同时为多个用户,在多个主机上授权相同的命令时,可以以起别名的方式进行:分别通过关键字User_Alias,Host_Alias,Cmnd_ALies来进行设置。(别名必须为大写)如:

User_Alias   大写别名=用户1,用户2,用户3...

Host_Alias   大写别名=主机1,主机2,主机3...

Cmnd_Alias  大写别名=命令位置1,命令位置2,命令位置3...

用户别名   主机别名=命令别名

系统引导和登录控制

1.开关机安全控制 

调整BIOS引导设置
  1. 将第一优先引导设备(First Boot Device)设为当前系统所在磁盘
  2. 禁止从其他设备(如光盘,U盘,网络等)引导系统,对应的项设为“Disabled”
  3. 将BIOS的安全级别改为“setup”,并设置好管理密码,以防未授权的修改
限制更改GRUB引导参数
  1.  通过备份GRUB引导参数,可以对一些系统问题进行修复,但从系统安全的角度考虑,为防止任何人都可以修改GRUB引导参数,可以为GRUB设置一个密码,只有提供正确密码才允许修改引导参数;为GRUB设置密码建议采用“grub2-mkpasswd-pbkdf2”命令生成,表现为经过PBKDF2算法加密的字符串,生成密码后再/etc/grub.d/00_hearder配置文件中,添加对应的用户,密码等配置,具体添加内容如下:
  2.  使用grub2-mkconfig命令生成新的grub.cfg配置文件

        命令:grub2-mkconfig -o /boot/grub2/grub.cfg  //生成新的grub文件

2.终端及登录控制

在Linux服务器中默认开启6个tty终端(也通过自行配置开启更多),允许任何用户进行本地登录。

禁止root用户登录

在Linux系统中,通过login程序读取/etc/securetty文件,决定允许root用户能登录那些终端,如果想禁止root登录某个终端,只需注释或者删除/etc/securetty文件对应的执行即可。

禁止普通用户登录

当服务器正在进行备份或者调试等维护工作时,可能不希望再有新的用户登录系统,这时候,只需要简单建立/etc/nologin文件即可。login程序如果检测到此文件存在,则拒绝普通用户登录系统(实际是利用了shutdown延迟机关的限制机制),当删除此文件或重新启动主机以后,恢复正常。

弱口令检测,端口扫描

1.弱口令检测——John the Ripper

下载并安装John the Ripper

John the Ripper的官方网站是http://www.openwall.com/john/,可在此网站获得稳定版源码包

以源码包john-1.8.0.tar.gz为例,解压候可以看到是三个目录——doc手册文档,run运行程序,src源码文件,doc/README链接的说明文件;切换到src子目录并执行“make clean linux-x86-64”命令,即可执行编译过程;编译完成后,run子目录下会生产一个名为john的可执行程序及相关的配置文件,字典文件等,可复制到任何位置使用。

检测弱口令账号

在安装有John的服务器中,只需执行run目录下的John程序,将待检测的shadow文件作为命令行参数,可以直接对/etc/shadow文件进行弱口令分析检测,其他服务器可以对shadow文件进行复制,传递给John进行检测,检测时间过长可以使用Ctrl+C终止。检测的结果密码在前用户名在后保存在john.pot文件中,可以结合“--show”选项进行查看

使用密码字典文件

John the Ripper默认提供的字典文件为password.lst,并列出除了3000多个常见的弱口令,有必要用户可以自行添加密码组合,完善字典,使用John程序时,可以结合“--wordlist=”选项来指定字典文件的位置,以便对指定密码文件进行暴力分析。

2.网络扫描——NMAP

安装NMAP软件包

在CentOS7中,既可以使用光盘自带的nmap-6.40-el7.x86_64.rpm安装包,也可以使用从NMAP官方网站下载的最新版资源包;

命令:yum -y install nmap

扫描语法及类型

NMAP扫描程序位于/usr/bin/nmap目录下。

命令格式: nmap  【扫描类型】 【选项】<扫描目标...>

其中扫描目标可以是主机名,IP地址或网络地址等,多个目标以空格分隔;常用的选项有“-p”用来指定扫描的端口,“-n”禁用反向DNS解析(以加快扫描速度);扫描类型决定着检测方式,也直接影响扫描的结果。常见的扫描类型:

  • -sS,TCP SYN扫描(半开扫描):只向目标发出SYN数据包,若收到SYN/ACK响应包就认为目标端口正在监听,并立即断开扫描;否则认为目标端口未开放;
  • -sT,TCP连接扫描:这时完整的TCP扫描方式,用于建立一个TCP连接,如果成功则认为目标端口正在监听服务,否则我认为目标端口并未开放。
  • -sF,TCP FIN扫描:开放的端口会忽略这种数据包,关闭的端口会回应RST数据包。许多的防火墙只对SYN数据包进行简单过滤,而忽略了其它形式的TCP攻击包,这种类型的扫描可简介检测防火墙的健壮性。
  • -sU,UDP扫描:探测目标主机提供哪些UDP服务,UDP扫描的速度会比较慢。
  • -sP,ICMP扫描:类似于ping检测,快速判断目标主机是否存活,不做其他扫描。
  • -P0,跳过ping检测:这种方式认为所有的目标主机是存活的,当对方不响应ICMP请求时,使用这种方式可以避免因无法ping通而放弃扫描。
扫描操作示例
  • 扫描本机,检查开放了哪些常用的TCP端口
  • 扫描本机,检查开放了哪些常用的UDP端口

扫描结果中,STATE列若为open则表示端口为开放状态,为fultered表示可能被防火墙过滤,为closed表示端口为关闭状态

  • 检查192.168.4.0/24(网段)中有那些主机提供FTP服务
  • 快速检测192.168.4.0/24网段中有哪些存活主机(能ping通)
  • 检测IP地址位于192.168.4.100~200的主机是否开启文件共享服务
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值