Linux是完全免费使用和自由传播的符合POSIX标准的类Unix操作系统,遵循公共版权许可证(GPL),源代码公开.自由修改、自由发布,能在各类硬件平台上运行的多用户。多任务的操作系统。
Linux在服务器、嵌人式等领域应用广泛并取得了很好的成绩,在桌面系统方面,也逐渐受到人们的欢迎, Linux系统的安全问题也逐渐受到人们的重视。用户可以根据自已的环境定制Linux系统.提供补丁。
检查源代码中的安全漏洞,也可以对Linux系统作- - 些简单的防范措施来增强系统的安全。
●将非登录用户的ShelI设为/sbin/nologin
●锁定长期不使用的账号
●删除无用的账号
●锁定账号文件passwd、shadow
查看当前不可登录用户
查看当前可登录用户
锁定长期不用的账号
passwd,usermod命令都可以用来锁定和解锁账号
锁定文件和解锁文件
如果服务器中的用户账号已经固定,不在进行更改,还可以采取锁定账号配置文件的方法
使用chattr命令,分别结合“+i”“-i”选项来锁定,解锁文件,使用lsattr命令可以查看文件锁定情况
●设置密码有效期
●要求用户下次登录时修改密码
对于未创建的用户,使用此命令修改配置文件
对于已创建的用户,用这条命令
[root@localhost ~]# chage -M 30 tom2
要求用户下次登录时修改密码
在某些情况下会要求用户初次登录的时候必须更改密码
[root@localhost ~]# chage -d 0 tom1
●减少记录的命令条数
●注销时自动清空命令历史
设置最多只记录200条历史命令
[root@localhost ~]# vi /etc/profile
将其中的HISTSIZE=1000,修改为HISTSIZE=200
[root@localhost ~]# source /etc/profile
[root@localhost ~]# vi .bash_logout
#~/.bash_logout
rm -rf .bash_history ##删除此文件
history -c ##清除历史命令
clear
终端自动注销
闲置600秒后自动注销
[root@localhost ~]# vi /etc/profile ##适用于新登录用户
export TMOUT=60 ##将闲置时间设为60S
[root@localhost ~]# source /etc/profile ##使设置生效
[root@localhost ~]# export TMOUT=30 ##对当前用户生效
默认情况下,任何用户都允许使用su 命令,从而有机会反复尝试其他用户(如root)
的登录密码,这样带来了安全风险。为了加强su命令的使用控制,可以借助于pam _wheel
将允许使用su命令的用户加入wheel组
●默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户(如root) 的登录密码,带来安全风险
●为了加强su命令的使用控制,可借助于PAM认证模块,只允许极个别用户使用su命令进行切换
●是一种高效而且灵活便利的用户级别的认证方式
●也是当前Linux服务器普遍使用的认证方式
●PAM认证一-般遵循的顺序: Service (服务) - >PAM (配置文件) - -pam *.so;
●PAM认证首先要确定哪一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d
下),最后调用认证文件(位于lib/security下)进行安全认证;
用户访问服务器的时候,服务器的某- -个服务程序把用户的请求发送到PAM模块进行
认证。不同的应用程序所对应的PAM模块也是不同的。
●如果想查看某个程序是否支持PAM认证,可以用Is 命令进行查看,例如执行以下命令
可以查看su是否支持PAM模块认证。
■查看某个程序是否支持PAM认证,可以用Is命令
●示例:查看su是否支持PAM模块认证
Is /etc/pam.d | grep su
查看su的PAM配置文件: cat /etc/pam.d/su
●每一-行都是一个独立的认证过程:
●每一-行可以区分为三个字段
认证类型
◆控制类型
◆PAM模块及其参数
■控制类型也称做Control Flags,
用于PAM验证类型的返回结果
1.required验证失败时仍然继续,但返回Fail
2.requisite验证失败则立即结束整个验证过程,返回Fail
3. sufficient验证成功则立即返回,不再继续,否则忽略结果并继续
4.optional不用于验证,只显示信息(通常用于session类型)
用过su命令可以非常方便的切换为另一个用户,但前提条件是必须知道目标用户的登录密码
对于生产环境中的Linux服务器,每多一个人知道特权密码,其安全风险也就增加一分
sudo 是一种权限管理机制,管理员可以授权于一些普通用户去执行一些 root 执行的操作,而不需要知道 root 的密码
语法格式:sudo [参数]
visudo 或者 vi /etc/sudoers :sudo机制的配置文件为/etc/sudoers,文件的默认权限是440,需要使用专门的visudo工具进行编辑。若使用vi编辑,保存时必须执行“:w!”命令强制操作,否则系统将提示为只读文件而拒绝保存
[root@localhost ~]# visudo
...
## Same thing without a password
tom1 localhost=/sbin/ifconfig ##tom1在本地主机拥有ifconfig权限
%wheel ALL=(ALL) NOPASSWD: ALL
[root@localhost ~]# su - tom2 ##我们先切换到tom2用户
[tom2@localhost ~]$ sudo ifconfig ens33 11.11.11.11 ##尝试更改IP地址
[sudo] tom2 的密码:
tom2 不在 sudoers 文件中。此事将被报告。 ##无法修改IP地址
[tom2@localhost ~]$ exit ##登出
[root@localhost ~]# su - tom1 ##切换到tom1用户
[tom1@localhost ~]$ sudo ifconfig ens33:2 11.11.11.11 ##修改网卡地址
[sudo] tom1 的密码:
[tom1@localhost ~]$ ifconfig ##修改成功
●将第一-引导设备设为当前系统所在硬盘
●禁止从其他设备(光盘、U盘、网络)引导系统
●将安全级别设为setup,并设置管理员密码
●使用grub2-mkpasswd-pbkdf2生成密钥
●修改/etc/grub.d/0O_ header文件中,添加密码记录
●生成新的grub.cfg配置文件
[root@localhost ~]# grub2-setpassword ##生成grub2菜单密码
Enter password:
Confirm password:
[root@localhost ~]# cat /boot/grub2/user.cfg ##查看密码是否添加
GRUB2_PASSWORD=grub.pbkdf2.sha512.10000.C3428AF0D7A62E00D540E2C8F9014F64CE6CDAD3632BD5B1D388AA09F6EE038B9494BD1E5B98AA7C7E97BC4936BDF34D8B08158E04009461BB4807BA13953D5D.DBAE85EFE16710D093B543E210F1636880957802C82141ECCB688E5D021B46DFA42778BDAF4E72C63BFC25427B78EE28BA92917A800B444556DA4D8968E1035E
[root@localhost ~]# reboot ##重新启动
在Linux服务器中,默认开启了六个ty 终端,允许任何用户进行本地登录。关于本地
登录的安全控制,可以从以下几个方面着手。
在Linux系统中,login 程序会读取/etc/securetty文件,以决定允许root 用户从哪些终
端(安全终端)登录系统。若要禁止root 用户从指定的终端登录,只需从该文件中删除或
者注释掉对应的行即可。例如,若要禁止root用户从tty5、tty6登录,可以修改/etc/securetty
文件,将tty5、 tty6 行注释掉。
限制root登录6和7终端
当服务器正在进行备份或调试等维护工作时,可能不希望再有新的用户登录系统。这时
候,只需要简单地建立/etc/nologin文件即可。login 程序会检查/etc/nologin文件是否存在,
如果存在,则拓绝普通用户吞录系统(root用户不受限制)。
建立/etc/nologin文件
删除nologin文件或重启后即恢复正常
[root@localhost ~]# touch /etc/nologin ##创建此文件后其他用户已经无法登陆
[root@localhost ~]# rm -rf /etc/nologin ##删除此文件即可取消限制
Joth the Ripper, 简称为JR
款密码分析工具,支持字典式的暴力破解
●通过对shadow文件的口令分析,可以检测密码强度
[root@localhost opt]# tar zxvf john-1.8.0.tar.gz ##进行解压
[root@localhost opt]# cd john-1.8.0/ ##进入解压后的目录
[root@localhost john-1.8.0]# cd src/ ##进入src目录
[root@localhost src]# make clean linux-x86-64 ##进行编译
[root@localhost src]# cd /opt/john-1.8.0
[root@localhost john-1.8.0]# cd run ##进入run目录
[root@localhost run]# cp /etc/shadow /root/shadow.tx ##拷贝shadow文件到/root/shadow.txt
[root@localhost run]# ./john /root/shadow.txt ##执行暴力破解
Loaded 3 password hashes with 3 different salts (crypt, generic crypt(3) [?/64])
Press 'q' or Ctrl-C to abort, almost any other key for status
123456 (root) ##破解成功
123456 (tom2)
2g 0:00:01:42 17% 2/3 0.01947g/s 355.0p/s 356.9c/s 356.9C/s kevin2..rocky2
Use the "--show" option to display all of the cracked passwords reliably
Session aborted
一款强大的网络扫描,安全检测工具
可以探测局域网中那些主机在线,或者某台主机中开了那些端口
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检测,快速判断目标主机是否存活,不做其他扫描。
-PO,跳过ping检测:这种方式认为所有的目标主机是存活的,当对方不响应ICMP请求时,使用这种方式可以避免因无法ping通而放弃扫描。
Starting Nmap 6.40 ( http://nmap.org ) at 2020-06-22 20:48 CST
Nmap scan report for 192.168.50.129
Host is up.
Nmap done: 101 IP addresses (1 host up) scanned in 4.12 seconds
[root@localhost run]# nmap -sT 192.168.50.129 ##查看主机192.168.50.129开了哪些TCP端口
Starting Nmap 6.40 ( http://nmap.org ) at 2020-06-22 20:51 CST
Nmap scan report for 192.168.50.129
Host is up (0.0013s latency).
Not shown: 999 closed ports
PORT STATE SERVICE
22/tcp open ssh
Nmap done: 1 IP address (1 host up) scanned in 0.14 seconds