目 录CONTENT

文章目录

系统安全及应用基础

简中仙
2020-02-15 / 0 评论 / 0 点赞 / 62 阅读 / 0 字 / 正在检测是否收录...
温馨提示:
本文最后更新于2024-01-22,若内容或图片失效,请留言反馈。 本文如有错误或者侵权的地方,欢迎您批评指正!

一、账号安全控制

1、基本安全措施

1、系统账号清理

查找登录Shell是/sbin/nologin的用户

grep  "/sbin/nologin$"  /etc/passwd

锁定账号

usermod -L 账号名称

查看账号状态

passwd -S 账号名称

解锁账号

usermod -U 账号名称

锁定文件

chattr +i /etc/passwd /etc/shadow

查看为锁定的状态

lsattr /etc/passwd /etc/shadow

解锁文件

chattr -i /etc/passwd /etc/shadow

查看为解锁的状态

Isattr /etc/passwd /etc/shadow

2、密码安全控制

# vim /etc/pam.d/password-auth
password    requisite     pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=  difok=1 minlen=8 ucredit=-1 lcredit=-1 dcredit=-1 
  • difok= 定义新密码中必须要有几个字符和旧密码不同
  • minlen=新密码的最小长度
  • ucredit= 新密码中可以包含的大写字母的最大数目。-1 至少一个
  • lcredit=新密码中可以包含的小写字母的最大数
  • dcredit=定新密码中可以包含的数字的最大数目

注:这个密码强度的设定只对"普通用户"有限制作用,root用户无论修改自己的密码还是修改普通用户的时候,不符合强度设置依然可以设置成功

1、将密码的有效期设为30天,

# vim /etc/login.defs              # 适用于新建的用户
PASS_MAX_DAYS   30
# chage -M 30 lisi             # 适用于已有的用户

2、强制要求用户下次登录时重设密码

# chage -d 0 lisi

3、命令历史、自动注销

1、设置最多只记录200 条历史命令

# vim /etc/profile             # 适用于新登录用户
HISTSIZE=200
# export HISTSIZE=200             # 适用于当前用户

2、当用户退出已登录Bash环境以后,所记录的历史命令将自动清空

# vim ~/.bash_logout 
history -c
clear

3、当超过指定的时间没有任何输入时即自动注销终端,闲置超时由变量TMOUT来控制,默认单位为秒估)

# vim /etc/profile             # 适用于新登录用户
export TMOUT=600
# export TMOUT=600             # 适用于当前用户

2、用户切换与提权

1、su命令:切换用户

# su - root

借助于pam_wheel认证模块,只允许极个别用户使用su命令进行切换

将授权使用su命令的用户添加到wheel组,修改 /etc/pam. d/su认证配置以启用pam_wheel认证

# gpasswd -a zhangsan wheel
正在将用户“zhangsan”加入到“wheel”组中
# grep wheel /etc/group
wheel:x:10:lisi,zhangsan
# vim /etc/pam.d/su
auth            required        pam_wheel.so use_uid             # 去掉此行开头的#号

启用pam_wheel认证以后,未加入到wheel组内的其他用户将无法使用su命令

# su - zhangsan
[zhangsan@localhost ~]$ su - root
密码:
上一次登录:四 7月 16 20:31:08 CST 2020pts/0 上
# su - wangwu
[wangwu@localhost ~]$ su - root
密码:
su: 拒绝权限

2、sudo命令:提升执行权限

在配置文件/etc/sudoers中添加授权

# visudo

格式:用户(%组名) 主机=命令

例如:

授权用户jerry能够执行ifconfig命令来修改IP地址,而wheel组的用户无需验证密码即可执行任何命令

jerry ALL=(root) NOPASSWD: /sbin/ifconfig
%wheel ALL=(ALL) NOPASSWD: ALL

用户、主机、 命令部分都可以定义为别名(必须为大写),分别通过关键字User_Alias、 Host_Alias、Cmnd_Alias来进行设置

允许用户jerrys,tom,tsengyia在主机smtp、pop中执行rpm、yum命令

User_Alias operators=jerry,tom,tsengyia  
Host_Alias MAILSVRS=smtp,pop  
Cmnd_Alias PKGTOOLS=/bin/rpm,/usr/bin/yum  
operators MAILSVRS=PKGTOOLS

通配符"*"、取反符号"!"

授权用户synaner可以执行/sbin/目录下除ifconfig、 route以外的其他所有命令程序

syrianer		localhost=/sbin/*,!/sbin/ifconfig,!/sbin/route

启用sudo日志记录以备管理员查看

Defults logfile = "/var/log/sudo"

3、通过sudo执行特权命令

查看用户获得哪些sudo授权

# sudo -l

查看用户的sudo操作记录

# tail /var/log/sudo

3、用户帐号限制

  • /etc/login.defs配置文件是设置用户帐号限制的文件,可配置密码的最大过期天数,密码的最大长度约束等内容。

  • 该文件里的配置对root用户无效。此文件中的配置与 /etc/passwd/etc/shadow 文件中的用户信息有冲突时,系统会以/etc/passwd/etc/shadow 为准。

  • /etc/login.defs 文件用于在Linux创建用户时,对用户的一些基本属性做默认设置,例如指定用户 UID 和 GID 的范围,用户的过期时间,密码的最大长度,等等。

设置项含义
MAIL_DIR /var/spool/mail创建用户时,系统会在目录 /var/spool/mail 中创建一个用户邮箱,比如 lamp 用户的邮箱是 /var/spool/mail/lamp。
PASS_MAX_DAYS 99999密码有效期,99999 是自 1970 年 1 月 1 日起密码有效的天数,相当于 273 年,可理解为密码始终有效。
PASS_MIN_DAYS 0表示自上次修改密码以来,最少隔多少天后用户才能再次修改密码,默认值是 0。
PASS_MIN_LEN 5指定密码的最小长度,默认不小于 5 位,但是现在用户登录时验证已经被 PAM 模块取代,所以这个选项并不生效。
PASS_WARN_AGE 7指定在密码到期前多少天,系统就开始通过用户密码即将到期,默认为 7 天。
UID_MIN 500指定最小 UID 为 500,也就是说,添加用户时,默认 UID 从 500 开始。注意,如果手工指定了一个用户的 UID 是 550,那么下一个创建的用户的 UID 就会从 551 开始,哪怕 500~549 之间的 UID 没有使用。
UID_MAX 60000指定用户最大的 UID 为 60000。
GID_MIN 500指定最小 GID 为 500,也就是在添加组时,组的 GID 从 500 开始。
GID_MAX 60000用户 GID 最大为 60000。
CREATE_HOME yes指定在创建用户时,是否同时创建用户主目录,yes 表示创建,no 则不创建,默认是 yes。
UMASK 077用户主目录的权限默认设置为 077。
USERGROUPS_ENAB yes指定删除用户的时候是否同时删除用户组,准备地说,这里指的是删除用户的初始组,此项的默认值为 yes。
ENCRYPT_METHOD SHA512指定用户密码采用的加密规则,默认采用 SHA512,这是新的密码加密模式,原先的 Linux 只能用 DES 或 MD5 加密。

二、系统引导和登录控制

1、开关机安全控制

1、调整BIOS引导设置

(1)将第一优先引导设备(First Boot Device)设为当前系统所在磁盘。

(2)禁止从其他设备(如光盘、U盘、网络等)引导系统,对应的项设为"Disabled"。

(3)将BOS的安全级别改为"setup",并设置好管理密码,以防止未授权的修改。

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

# systemctl mask ctrl-alt-del.target              # 禁止Ctrl+Alt+Del快捷键重启
Created symlink from /etc/systemd/system/ctrl-alt-del.target to /dev/null.
# systemctl daemon-reload             			 # 刷新配置
# systemctl unmask ctrl-alt-del.target            	 # 开启Ctrl+Alt+Del快捷键重启
# systemctl daemon-reload             				# 刷新配置

3、限制更改GRUB引导参数

# grub2-mkpasswd-pbkdf2 
输入口令:
Reenter password: 
PBKDF2 hash of your password is grub.pbkdf2.sha512.10000.0231854D0AD301240629102B62FCFB09E7347E7E3254E34ACE0186A41BA65A2A749B6A5F59AC37B6431649D5D0F3238CFC2ED92C407468C0CE2B29C2F3FFF9A8.1906AC682652E7EEC736AC3F4E866D2C5038EB4AED72D980331CE80ED4D05A9929F043A5EB7190FD3775294CE50FCFA745C16E783A93E52F77E0D3A9695C246A
# cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak
# cp /etc/grub.d/00_header /etc/grub.d/00_header.bak
# vim /etc/grub.d/00_header
......
cat<<  EOF
set superusers = "root"
password_pbkdf2 root grub.pbkdf2.sha512.10000.0231854D0AD301240629102B62FCFB09E7347E7E3254E34ACE0186A41BA65A2A749B6A5F59AC37B6431649D5D0F3238CFC2ED92C407468C0CE2B29C2F3FFF9A8.1906AC682652E7EEC736AC3F4E866D2C5038EB4AED72D980331CE80ED4D05A9929F043A5EB7190FD3775294CE50FCFA745C16E783A93E52F77E0D3A9695C246A
EOF
# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-1127.8.2.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-1127.8.2.el7.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-1062.18.1.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-1062.18.1.el7.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-957.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-957.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-fc8e001937cb4a35b289459e53090806
Found initrd image: /boot/initramfs-0-rescue-fc8e001937cb4a35b289459e53090806.img
done

在这里插入图片描述

2、终端登录控制

1、禁止root用户登录

# vim /etc/securetty             # 禁止root用户从tty5、tty6登录
tty1
tty2
tty3
tty4
#tty5
#tty6
tty7
tty8

2、禁止普通用户登录(root用户不受限制),当手动删除/etc/nologin文件或者重新启动主机以后,即可恢复正常。

# touch /etc/nologin

三、弱口令检测、端口扫描

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

安装John the Ripper

# wget https://www.openwall.com/john/k/john-1.9.0.tar.gz
# tar zxf john-1.9.0.tar.gz -C /usr/src/
# cd /usr/src/john-1.9.0/src/
# make clean linux-x86-64
# cp /etc/shadow /root/shadow.txt
# cd /usr/src/john-1.9.0/run/
# ./john /root/shadow.txt
Loaded 2 password hashes with 2 different salts (crypt, generic crypt(3) [?/64])
Press 'q' or Ctrl-C to abort, almost any other key for status
123456           (root)
123456           (teacher)
2g 0:00:00:10 100% 2/3 0.1881g/s 566.4p/s 581.8c/s 581.8C/s 123456..pepper
Use the "--show" option to display all of the cracked passwords reliably
Session completed

查看已破解出的账户列表

./john --show /root/shadow.txt
root:123456::0:99999:7:::
teacher:123456:19743:0:99999:7:::

2 password hashes cracked, 0 left

使用密码字典文件

清空己破解出的账户列表后重新分析

# :> john.pot
# ./john --wordlist=./password.lst /root/shadow.txt
Loaded 2 password hashes with 2 different salts (crypt, generic crypt(3) [?/64])
Press 'q' or Ctrl-C to abort, almost any other key for status
123456           (root)
123456           (teacher)
2g 0:00:00:00 100% 5.714g/s 274.2p/s 548.5c/s 548.5C/s 123456..pepper
Use the "--show" option to display all of the cracked passwords reliably
Session completed

2、网络扫描——NMAP

1、安装NMAP软件包

# yum -y install nmap
参数说明参数说明
-p指定扫描的端口-n禁用反向DNS解析(以加快扫描速度)
-sS查看目标端口是否正在监听,并立即断开连接;否则认为目标端口并未开放-sT查看目标端口正在监听服务,否则认为目标端口并未开放
-sF间接检测防火墙的健壮性-sU探测目标主机提供哪些UDP服务
-sP快速判断目标主机是否存活-P0跳过ping检测

扫描常用的TCP端口

# nmap 127.0.0.1

Starting Nmap 6.40 ( http://nmap.org ) at 2024-01-22 21:25 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000020s latency).
Not shown: 997 closed ports
PORT    STATE SERVICE
22/tcp  open  ssh
111/tcp open  rpcbind
873/tcp open  rsync

Nmap done: 1 IP address (1 host up) scanned in 1.58 seconds

扫描常用的UDP端口

# nmap -sU 127.0.0.1

Starting Nmap 6.40 ( http://nmap.org ) at 2024-01-22 21:25 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000020s latency).
Not shown: 998 closed ports
PORT     STATE         SERVICE
111/udp  open          rpcbind
5355/udp open|filtered llmnr

Nmap done: 1 IP address (1 host up) scanned in 2.68 seconds

例如:

检查192.168.4.0/24网段中有哪些主机提供FTP服务:

nmap -p 21 192.168.4.0/24

检测192.168.4.0/24网段中有哪些存活主机(能ping通):

nmap -n -sP 192.168.4.0/24

检测IP地址位于192.168.4.100-200的主机是否开启文件共享服务:

nmap -p 139,445 192.168.4.100-200
0

评论区