Linux系统安全及应用

系统账号清理

·将非登录用户的Shell设为/sbin/nologin
·锁定长期不使用的账号
·删除无用的账号
·锁定帐号文件passwd、shadow

[root@localhost~]# chattr +i /etc/passwd /etc/shadow (锁定文件并查看状态)
[root@localhost~]# lsattr /etc/passwd /etc/shadow
----i------------ /etc/passwd
----i------------/etc/shadow

shell环境设置为 /sbin/nologin
usermod tom -s /sbin/nologin (让tom账户不能登录)
usermod -s /bin/bash tom (让tom能登录)

假设tom能登录,现在将其锁定
usermod -L tom (锁定tom账户)
passwd -S tom (查看tom账户状态)

删除无用的账号
userdel -r tom

锁定帐号文件passwd、shadow
chattr +i /etc/passwd /etc/shadow (+i代表不能动,包括超级账户root)





密码安全控制

·设置密码有效期
[root@localhost~]# vi /etc/login.defs (适用于新建账户,默认有效期30天)

PASS_MAX_DAYS 30

[root@localhost~]# chage -M 30 lisi (适用于已有账户,设置有效期30天)

·要求用户喜爱次登录时修改密码
[root@localhost~]# chage -d 0 tom (强制在下次登录时修改密码)




命令历史限制

·减少记录的命令条数
·注销时自动清空命令历史

终端自动注销
·闲置600秒后自动注销
[root@localhost~]# vi /etc/profile
export TMOUT=600
[root@localhost~]# vi ~/.bash_logout
history -c
clear





使用su命令切换用户

·用途:切换用户
·格式:su - 目标用户

密码验证
·root→任意用户,不验证密码
·普通用户→其他用户,验证目标用户的密码

[root@localhost~]# su - root (带 - 选项表示将使用目标用户的登录Shell环境)
口令:
[root@localhost~]# whoami
root

限制使用su命令的用户
·将允许使用su命令的用户加入wheel组
·启用pam_wheel认证模块

[root@localhost~]# vi /etc/pam.d/su
#%PAM-1.0
auth sufficient pam_rootok.so
auth required pam_wheel.so use_uid

[root@localhost~]# echo “SU_WHEEL_ONLY yes”>>/etc/login.defs
加入语句到行末以上操作完毕后,建立一个新用户。用这个新建的用户测试会发现,没有加入wheel组的用户,运行”su - ”命令。即使输入了正确的rootpassword,也无法登录root用户。


查看su操作记录

·安全日志文件: /var/log/secure


Linux中的安全认证

su命令的安全隐患:
默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户(如root)的登陆密码,带来安全风险。为了加强su命令的使用控制,可借助于PAM认证模块,只允许极个别用户使用su命令进行切换。



PAM可插拔式认证模块
·是一种高效而且灵活便利的用户级别的认证方式
·也是当前Linux服务器普遍使用的认证方式



PAM认证原理

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



PAM认证的构成

·查看某个程序是否支持PAM认证,可以用ls命令
示例:查看su是否支持PAM模块认证
ls /etc/pam.d |grep su
·查看su的PAM配置文件:cat /etc/pam.d/su
·每一行都是一个独立的认证过程
·每一行可以区分为三个字段
·认证类型
·控制类型
·PAM模块及其参数




PAM认证类型
·认证管理:接受用户名和密码,进行对该用户的密码进行认证
·账户管理:检查账户是否被允许登录系统,账号是否过期,账号的登录是否有时间限制
·密码管理:主要用来修改用户的密码
·回话管理:主要提供对回话的管理和记账


PAM控制类型
控制类型也可以叫做control falgs ,用于PAM验证类型的返回结果。有以下四种类型:
1、required验证失败时仍然继续,但返回fail
2、requisite验证失败则立即结束整个验证过程,返回fail
3、sufficient验证成果则立即返回,不再继续,否则忽略结果并继续
4、optional不用于验证,只是显示信息(通常用于session)




使用sudo机制提升权限

配置sudo授权
·visudo或者vi /etc/sudoers
·记录格式:用户 主机名=命令程序列表
[root@localhost~]# visudo

%wheel ALL=NOPASSWD:ALL
jerry localhost=/sbin/ifconfig
syrianer localhost=/sbin/*,!/sbin/ifconfig,!/sbin/route
Cmnd_Alias PKGTOOLS=/bin/rpm,/usr/bin/yum
mike localhost=PKGTOOLS

场景举例:
现要在tom账户下不可以创建网卡信息:
[root@localhost~]# ifconfig ens33:1 192.168.16.100
SIOCSIFADDR:不允许的操作
SIOCSIFFLAGS:不允许的操作

现在我非要这么操作:
登录root账户,在/etc/sudoers 给tom设置权限
vi /etc/sudoers
##编辑sudosers文件,在末尾插入
tom localhost=/sbin/,!sbin/reboot
tom localhost=/sbin/
,!/sbin/rebooot
(tom用户在localhost主机下执行/sbin下所有命令,除reboot)

这个时候网卡就可以用了
sudo ifconfig ens33:1 192.168.16.100
(可以执行命令,输入密码,可以用五分钟,五分钟过后,要输入密码)





开关机安全控制

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

GRUB限制
·使用grub2-mkpasswd-pbkdf2生成密钥
·修改/etc/grub.d/00_header文件中,添加密码记录
·生成新的grub.cfg配置文件


密码记录的位置
1、全局部分(第一个“title”之前)
2、系统引导部分(每个title部分之后)

password --md5 (加密密码串)

GRUB限制的实现
·使用grub-md5-crypt获得加密字串
·修改grub.conf文件,添加密码记录

CentOS7 修改法:
[root@localhost~]# grub2-setpassword (设置密码)




使用su命令切换用户

限制使用su命令的用户
·将允许使用su命令的用户加入wheel组
·启用pam_wheel认证模块
[root@localhost~]# gpasswd -a tom wheel 将用户“tom”加入到“wheel”组中



终端登录安全控制

限制root只在安全终端登录
·安全终端配置:/etc/securetty
[root@localhost~]# vi /etc/securetty

#tty5
#tty6
(禁止root用户从终端tty5、tty6登录)

禁止普通用户登录
·建立 /etc/nologin文件
·删除nologin文件或重启后即恢复正常
[root@localhost~]# touch /etc/nologinn (禁止普通用户登录)
[root@localhost~]# rm -rf /etc/nologin (取消上述登录限制)




网络端口扫描

NMAP
·一款强大的网络扫描、安全检测工具
·官网:http://nmap.org/
·CentOS 7光盘中安装包 nmap-6.40-7.el7.x86_64.rpm

安装流程:
[root@localhost~]# mount /dev/cdrom /mnt
[root@localhost~]# rpm -ivh /mnt/Packages/nmap-6.40-7.el7.x86_64.rpm

NMAP的扫描
nmap [扫描类型] [选项] <扫描目标>


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

-sT,TCP连接扫描:这是完整的TCP扫描方式,用来建立一个TCP连接,如果成功则认为目标端口正在监听服务,否则认为目标端口并未开放。

-sF,TCP FIN扫描:开放的端口会忽略这种数据包,关闭的端口会回应RST数据包。许多防火墙只对SYN数据包进行简单过滤,而忽略了其他形式的TCP攻击包。这种类型的扫描可间接检测防火墙的健壮性。

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

-sP,ICMP扫描:类似于ping检测,快速判断目标主机是否存活,不做其他扫描。

-P0,跳过ping检测:这种方式认为所有的目标主机是存活的,当对方不响应ICMP请求时,使用这种方式可以避免因无法ping通而放弃扫描。


扫描操作示例:
[root@localhost~]# nmap 127.0.0.1 (扫描常用的TCP端口)

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

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

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

[root@localhost~]# nmap -p 139,445 192.168.4.100-200 (检测IP地址位于192.168.4.100~200的主机是否开启文件共享服务)

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