Linux----系统安全及应用

文章目录

  • 一、账号安全控制
    • 1.1:账号安全基本措施
      • 1.1.1:系统账号清理
    • 1.2:密码安全控制
      • 1.2.1:设置密码有效期
      • 1.2.2:下次登录时要求修改密码
    • 1.3:切换用户与提权
      • 1.3.1:su命令----切换用户
      • 1.3.2:sudo命令----提权
    • 1.4:Linux中的PAM安全认证
      • 1.4.1:PAM认证原理
      • 1.4.2:PAM认证流程
  • 二、系统引导与登录控制
    • 2.1:开关机安全控制
      • 2.1.1:调整BIOS引导设置
      • 2.1.2:GRUB限制
    • 2.2:终端控制
      • 2.2.1:限制root只在安全终端登录
  • 三、弱口令检测
    • 3.1:Joth the Ripper,简称为 JR
    • 3.2:使用过程
  • 四、端口扫描
    • 4.1:网络扫描-------NMAP
      • 4.1.1:安装NMAP软件包
      • 4.1.2:常见的扫描类型
      • 4.1.3:格式、参数和用法

一、账号安全控制

1.1:账号安全基本措施

1.1.1:系统账号清理

  • 将非登录用户的shell设为/sbin/nologin
    在Linux系统中,除了用户手动创建的各种账号之外,还包括随系统或程序安装过程而产生的其他大量账号除了root之外,其他大量账号只是用来维护系统运作,启动或保持服务进程,一般是不允许登录的,也称为非登录用户。
    常见的非登录用户包括bin,daemon,adm,lp,mail,nobody,apache,mysql,dbus,ftp,gdm,haldaemon等。
    为了确保系统安全,这些用户的登录shell通常是/sbin/nologin,表示禁止终端登录,应确保不被人为改动
  • 锁定长期不使用的账号
    对于长期不用的用户账号,若无法确定是否删除,可以暂时将其锁定
命令:usermod -L tom   ------锁定tom用户
     passwd -S tom    ------查看锁定信息
     usermod -U tom   ------解锁tom用户
     passwd -S tm     ------查看
  • 删除无用账号
    在非登录用户中,还有一部分是很少用到的,如news,uucp,games,gopher等,这些用户可视为冗余账号,可以直接删除
    此外,还有一些随着应用程序安装的用户账号,若程序卸载以后未能自动删除,需要人为手动删除
  • 锁定账号文件passwd,shadow
    账号文件被锁定的情况下,其内容将不允许变更,因此无法添加,删除账号,也不能更改用户的密码,登录shell,宿主目录等属性信息
chattr +i /etc/passwd /etc/shadow  ----锁定文件
lsattr /etc/passwd /etc/shadow     ----查看锁定状态
  ----i--------- /etc/passwd
  ----i--------- /etc/passwd
chattr -i /etc/passwd /etc/shadow  ----解锁文件
lsattr /etc/passwd /etc/shadow     ----查看
 -------------- etc/passwd
 -------------- etc/passwd

1.2:密码安全控制

1.2.1:设置密码有效期

  • 在服务器端限制用户密码的最大有效天数
示例:vi /etc/login.defs    ------适用于新建用户
   .......
   PASS_MAX_DAYS  30       ------设置30天有效期

chage -M 30 list           ------适用于已有用户

1.2.2:下次登录时要求修改密码

示例:chage -d 0 tom     -------下次登录就修改密码

1.3:切换用户与提权

1.3.1:su命令----切换用户

  • 用法及用途
    切换用户
    格式:su - 目标用户
示例:su - root      ----切换到root用户
  • 限制使用su命令的用户
    加入wheel组的用户可以使用su命令,需要启用pam_wheel认证模块
示例:gpasswd -a tom wheel       ----将tom加入wheel组中
     vi /etc/pam.d/su      ----启用pam_wheel模块
     .....
     #auth       required        pam_wheel.so use_uid    ----将开头的#去掉
其他没有加入的用户就不能使用su命令

1.3.2:sudo命令----提权

  • 用途:以其他用户身份执行授权的命令
  • 用法:sudo 授权命令
命令:visudo 
       .....
  jerrf    localhost=/sbin/ifcoonfig
  %wheel    ALL=NOPASSWD:ALL

1.4:Linux中的PAM安全认证

  • su命令的安全隐患:默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户的登录密码,带来安全风险。
    为了加强su命令的使用控制,可借助于PAM认证模块,只允许极个别用户使用su命令进行切换
  • PAM可插拔式认证模块:是一种高效而且灵活便利的用户级别的认证方式。
    也是当前Linux服务器普遍使用的认证方式

1.4.1:PAM认证原理

  • 一般遵循顺序
    service(服务)——PAM(配置文件)——pam_*.so
  • 首先确定哪一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/lib/security下)进行安全认证
  • 用户访问服务器时,服务器的某个服务器程序把用户的请求发送到PAM模块进行认证
  • 不同的应用程序多对应的PAM模块不同

1.4.2:PAM认证流程

  • 控制类型也称做Control Flags,用于PAM验证的类型返回结果
    1.required验证失败时仍然继续,但返回Fail
    2.requisite验证失败则立即结束整个验证过程,返回Fail
    3.sufficient验证成功则立即返回,不在继续,否则忽略结果并继续
    4.optional不用于验证,只显示信息(通常用于session(会话)类型)
    Linux----系统安全及应用_第1张图片

二、系统引导与登录控制

2.1:开关机安全控制

2.1.1:调整BIOS引导设置

  • 将第一引导设备设为当前系统所在硬盘
  • 禁止从其他设备(光盘,U盘,网络)引导系统
  • 将安全级别设为setup,并设置管理员密码

2.1.2:GRUB限制

  • 生成GRUB2的密码
步骤:grub2-setpassword    ----生成grub2菜单密码  输入密码123456
     cat /boot/grub2/user.cfg   ----查看密码是否添加
     reboot    ----重启电脑验证  输入root  密码123456
  • 禁止普通用户登录
    当服务器正在备份或者维护时,可能不希望有新的用户登录系统。这时候需要拒绝普通用户登录系统(root用户不受限)
示例:[root@localhost ~]# touch /etc/nologin   ----禁止普通用户登录
     [root@localhost ~]# rm -rf  /etc/nologin ----取消限制

2.2:终端控制

2.2.1:限制root只在安全终端登录

命令:vi /etc/securetty

Linux----系统安全及应用_第2张图片

三、弱口令检测

3.1:Joth the Ripper,简称为 JR

  • 一款密码分析工具,支持字典式的暴力破解
  • 通过对shadow文件的口令分析,可以检测密码强度
  • 可以去官网下载:http://www.openwall.com/john/(我有资源私我也可以)

3.2:使用过程

1、下载安装包
2、解压安装包,进入解压后的john-1.8.0/src目录准备执行编译操作
Linux----系统安全及应用_第3张图片在这里插入图片描述
Linux----系统安全及应用_第4张图片
编译:
Linux----系统安全及应用_第5张图片
3、编译完成后进入到run目录,程序的执行命令就在这里
4、可以看到在run目录下有一个password.lst的文件,这个是密码的字典文件,我们需要用到这个来破解密码,也可以自己在字典里添加密码,每行一个。
Linux----系统安全及应用_第6张图片

5、执行./john /etc/password /etc/shadow就可以用我们的字典来暴力破解密码了,如果有提示"No password hashes loaded", “No password hashes loaded (see FAQ)”, 或者"No password hashes left to crack (see FAQ)",说明系统是类UNIX系统,在破解前还需要做一步操作,用JR自带的unshadow命令来合并/etc/shadow和/etc/passwd 两个文件
(1)umask 077
(2)unshadow /etc/passwd /etc/shadow > mypasswd
Linux----系统安全及应用_第7张图片
6、然后再执行./john /etc/password /etc/shadow就可以破解了
Linux----系统安全及应用_第8张图片

四、端口扫描

4.1:网络扫描-------NMAP

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

4.1.1:安装NMAP软件包

  • 可以官网下载,也可以用yum工具下载
yum -y install nmap

官网站点:http://nmap.org/

4.1.2:常见的扫描类型

比较常用的几种扫描类型如下。

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

4.1.3:格式、参数和用法

格式:nmap [扫描类型] [选项] <扫描目标…>
  • 常用参数:
    -P0
    在扫描之前,不必ping主机。有些网络的防火墙不允许ICMP echo请求穿过,使用这个选项可以对这些网络进行扫描。microsoft.com就是一个例子,因此在扫描这个站点时,你应该一直使用-P0或者-PT 80选项。 
    -PT
    扫描之前,使用TCP ping确定哪些主机正在运行。nmap不是通过发送ICMP echo请求包然后等待响应来实现这种功能,而是向目标网络(或者单一主机)发出TCP ACK包然后等待回应。如果主机正在运行就会返回RST包。只有在目标网络/主机阻塞了ping包,而仍旧允许你对其进行扫描时,这个选项才有效。对于非root用户,我们使用connect()系统调用来实现这项功能。使用-PT 来设定目标端口。默认的端口号是80,因为这个端口通常不会被过滤。
    -PS  
    对于root用户,这个选项让nmap使用SYN包而不是ACK包来对目标主机进行扫描。如果主机正在运行就返回一个RST包(或者一个SYN/ACK包)。 
    -v  
    冗余模式。强烈推荐使用这个选项,它会给出扫描过程中的详细信息。使用这个选项,你可以得到事半功倍的效果。使用-d选项可以得到更加详细的信息。
    -p  
    这个选项让你选择要进行扫描的端口号的范围。例如,-p 23表示:只扫描目标主机的23号端口。-p 20-30,139,60000-表示:扫描20到30号端口,139号端口以及所有大于60000的端口。在默认情况下,nmap扫描从1到1024号以及nmap-services文件(如果使用RPM软件包,一般在/usr/share/nmap/目录中)中定义的端口列表。 
    -F  
    快速扫描模式,只扫描在nmap-services文件中列出的端口。显然比扫描所有65535个端口要快。
  • 用法:
示例:
 nmap -sP 192.168.1.0/24       
进行ping扫描,打印出对扫描做出响应的主机,不做进一步测试(如端口扫描或者操作系统探测)


 nmap -PS 192.168.1.234  
探测目标主机开放的端口,可以指定一个以逗号分隔的端口列表(如-PS22,23,25,80)


你可能感兴趣的:(Linux----系统安全及应用)