Linux系统安全
一:账号安全控制
1.1:基本安全设置
[ ~]# cat /etc/passwd ##查看用户账号
[ ~]# grep "/sbin/nologin$" /etc/passwd
[ ~]# useradd zhangsan ##创建用户
[ ~]# usermod -L zhangsan ##锁定账号
[ ~]# passwd -S zhangsan ##查看账号状态
zhangsan LK 2020-06-16 0 30 7 -1 (密码已被锁定。)
[~]#usermod -U zhangsan ##解锁账号
[~]#passwd -S zhangsan ##查看账号状态
zhangsan PS 2020-06-16 0 30 7 -1 (密码已设置,使用 SHA512 算法。)
[ ~]# chattr +i /etc/passwd /etc/shadow ##锁定文件
[ ~]# lsattr /etc/passwd /etc/shadow ##查看锁定的状态
----i----------- /etc/passwd
----i----------- /etc/shadow
[~]#chattr -i /etc/passwd /etc/shadow ##解锁文件
[~]#lsattr /etc/passwd /etc/shadow ##查看解锁的状态
---------------- /etc/passwd
---------------- /etc/shadow
tag1:账号文件锁定的情况下,内容不允许更改,因此无法添加、删除账号,也不能更改用户的密码等。
[ ~]# useradd a
useradd:无法打开 /etc/passwd
1.2:密码安全控制
tag2:chage命令用来设置密码时限
[~]#vim /etc/login.defs
修改:
PASS_MAX_DAYS 30
[~]#chage -M 30 zhangsan ##-M:最大有效天数
[~]#chage -d 0 zhangsan ##-d:还有几天修改密码
1.3:命令历史、自动注销
tag3:Bash终端环境中,历史命令的记录条数由变量HISTSIZE控制,默认为1000条
[~]#vim /etc/profile
修改:
HISTSIZE=200 ##历史命令的记录改为200条
[~]#export HISTSIZE=200
[~]#vim ~/.bash_logout
添加:
history -c
clear
tag4:修改用户宿主目录中的~/.bash_logout文件,添加清空历史命令的操作语句。
[~]#vim /etc/profile
修改:
export TMOUT=600 ##闲置超时时间
[~]#export TMOUT=600
tag5:需要注意的是,正在执行代码的操作时,避免设置TMOUT变量。必要时可以执行"unset TMOUT"命令取消TMOUT变量设置。
1.2用户切换与提权
tag6:su命令主要用来切换用户,而sudo命令用来提升执行权限
1:su命令 —— 切换用户
[~]#su zhangsan ##切换到zhangsan用户
[ root]#su - root
密码: ##普通用户切换root需要输入root密码
[localhost~]# ##验证成功后获得root权限
tag7:选项"-"等同于"--login"或"-l",表示切换用户后进入目标用户的登录shell环境。
[~]#gpasswd -a zhangsan wheel ##添加授权用户zhangsan 允许zhangsan,不允许aaa
正在将用户“zhangsan”加入到“wheel”组中
[~]#grep wheel /etc/group ##确认wheel组成员
wheel:x:10:benet,zhangsan
[~]#vim /etc/pam.d/su
auth sufficient pam_rootok.so
auth required pam_wheel.so use_uid ##去掉#
[ root]#su - root ##切换root
密码:
su:拒绝权限
[ root] ##切换失败,仍为原用户
tag8:使用su命令切换用户的操作将会记录到安全日志/var/log/secure
2:sudo — 提升执行权限
tag9:sudo的配置文件为:/etc/sudoers,文件的默认权限为440,需使用专门的visudo工具编辑,也可以使用vim编辑,但保存时必须执行":W!"命令。授权配置主要包括:用户、主机、命令三个部分。
[~]#visudo ##开启sudo日志功能
添加
Defaults logfile="/var/log/sudo"
[ ~]# visudo
末尾添加
aaa localhost=/sbin/ifconfig
%wheel ALL=NOPASSWD: ALL ##NOPASSWD指无需使用密码验证即可直接执行命令
[ ~]# su aaa
[ root]$ sudo /sbin/ifconfig eth0:0 10.2.2.2/8 ##需要有aaa的密码验证
[ root]$ sudo -l
[ root]$ su zhangsan
密码:
[ root]$ sudo /sbin/ifconfig eth0:0 20.1.1.1/8 ##zhangsan属于wheel组,可直接修改,而不验证
Defaults logfile="/var/log/sudo"
[ root]$ sudo -l
或
[ ~]# tail /var/log/sudo ##root
tag10:若启用sudo日志,则可以从/var/log/sudo文件中看到用户的sudo操作记录。
二.系统引导和登录控制
2.1:开关机安全控制
1.调整BIOS引导设置
2.禁止Ctrl+Alt+Del快捷键重启(字符终端,桌面无效)
[~]#cat /etc/inittab ##执行命令可以得知ctrl+alt+del快捷键功能由/usr/lib/systemd/system/ctrl-alt-del.tar.get文件进行设置
[ ~]# systemctl mask ctrl-alt-del.target ##禁用
[ ~]# systemctl daemon-reload ##重载systemd配置
[ ~]# systemctl unmask ctrl-alt-del.target ##开启
3.限制更改GRUB引导参数
[ ~]# grub2-mkpasswd-pbkdf2
输入口令:
Reenter password:
PBKDF2 hash of your password is grub.pbkdf2.sha512.10000.26012A1550E071A5120FBEFA57C751256F2642AF0B9D9D97971A36C1A902A8DC69AF4D5AE3E11B36BE086BBB989D4D1A16C20ECAFA6863A0A705791430CD61F8.EED048F257E8782B533B5641C4B7000F46299103B7F1AD3E8A63AB176E64DF6EFA348D9920886056F6BEF135E3A25A3C00F64D95B92AF4E94EB5A81946BFB54E
[ ~]# 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_pbkdf2root grub.pbkdf2.sha512.10000.26012A1550E071A5120FBEFA57C751256F2642AF0B9D9D97971A36C1A902A8DC69AF4D5AE3E11B36BE086BBB989D4D1A16C20ECAFA6863A0A705791430CD61F8.EED048F257E8782B533B5641C4B7000F46299103B7F1AD3E8A63AB176E64DF6EFA348D9920886056F6BEF135E3A25A3C00F64D95B92AF4E94EB5A81946BFB54E
EOF
[ ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-514.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-514.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-00686d1a1cfe4b14a87a05f34e412c0b
Found initrd image: /boot/initramfs-0-rescue-00686d1a1cfe4b14a87a05f34e412c0b.img
done
重启系统进入grub菜单验证
三.终端及登录控制
3.1禁止root用户登录
[ ~]# vi /etc/securetty ##登陆时会提示密码错
加注释#
#tty5
#tty6
3.2禁止普通用户登陆
[ ~]# touch /etc/nologin
四:弱口令探测、端口扫描
1:安装john-1.8.0
[ ~]# useradd aaa
[ ~]# passwd aaa ##设置一个简单的密码比如123
[ ~]# cd /usr/src
[ src]# tar zxf john-1.8.0.tar.gz
[ src]# cd john-1.8.0
[ john-1.8.0]# ls -ld *
[ john-1.8.0]# ls doc/
[ john-1.8.0]# cd src
[ src]# make linux-x86-64
[ src]# ls ../run/john ##确认已生成可执行程序john
2:检测弱口令账号
1):暴力破解
[ src]# cp /etc/shadow /root/shadow.txt ##准备待破解的密码文件
[ src]# cd ../run
[ run]# ./john /root/shadow.txt ##执行暴力破解
[ run]# ./john --show /root/shadow.txt ##查看已破解出的账户列表
2):密码字典破解
[ run]# :>john.pot ##清空已破解出的账户列表,以便重新分析
[ run]# ./john --show /root/shadow.txt
0 password hashes cracked, 2 left
[ run]# vi password.lst ##john自带有密码字典就在src目录下
[ run]# ./john --wordlist=./password.lst /root/shadow.txt
3:网络扫描——NMAP
这个实验可以将linux桥接到物理网络中,
1:安装NMAP软件包
[ ~]# mount /dev/cdrom /media/cdrom
[ ~]# yum install -y nmap
2:扫描语法及类型
[ ~]# nmap 127.0.0.1
[ ~]# nmap -sU 127.0.0.1 ##扫描常用端口
[ ~]# ifconfig
[ ~]# nmap -p 21 192.168.10.0/24 ##扫描网段中哪些主机启用的端口21
[ ~]# nmap -n -sP 192.168.10.0/24 ##扫描存活主机
[ ~]# nmap -p 139,445 192.168.10.10-20 ##扫描主机是否开了共享