(1)将非登陆用户的Shell设为/sbin/nologinlinux
首先咱们用命令“grep "bash$" /etc/passwd”查看一下能够登陆的用户。c++
若是咱们不想让“lisi”这个用户登陆,咱们能够用”usermod -s /sbin/nologin”命令禁止他登陆,再去切换“lisi”用户发现不能登陆。算法
(2)锁定长期不使用的帐号vim
锁定与解锁帐号有两组命令,“passwd -l”与“passwd -u”命令、“usermod -L”与“usermod -U”命令。咱们分别演示一下,显示密码信息用的是“passwd -S”命令。安全
(3)删除无用的帐号bash
删除帐户用的是“userdel”命令,咱们能够用“-r”选项,在删除用户时连同用户目录一同删除。服务器
(4)锁定帐号文件passwd、shadow网络
当咱们不想别人在系统建立新的用户时,能够锁定帐号文件passwd、shadow。用“lsattr”命令查看文件的锁定状态。“chattr +i”命令锁定帐号文件,“chattr -r”命令解锁已经锁定的帐号文件。此命令也能够用于其它文件。session
(1)设置密码有效期编辑器
用vim编辑器对“/etc/login.defs”配置文件中的“PASS_MAX_DAYS”后面的数值进行修改来改变密码有效期,不过这种方法只对新建用户有效,已存在用户是不会改变的。首先查看“lisi”用户的密码有效期是99999,至关于永久。
咱们将“/etc/login.defs”配置文件中的“PASS_MAX_DAYS”后面的数值修改成30(密码有效期30天),而后查看“lisi”用户的密码有效期任然是99999(天)。
咱们添加一个新用户“wangwu”,再查看“wangwu”用户的密码有效期是30(天)。
当咱们想修改已有用户的密码有效期时,能够用“chage -M”命令来修改。
(2)设置用户下次登陆时修改密码
咱们用命令“chage -d 0 用户名”便可强制用户在下次登陆时更改密码。但用了这条命令后,用户在更改密码就不能设置简单的密码了。密码最少8位字符,并且不能有连续的数字或字母(如:12三、abc等)。
咱们在终端用wangwu帐户去登陆,在输入密码后系统要求咱们更改新密码,我输入“abcd1234”系统显示密码不合格。
当我输入“qwer2019”没有连续的数字、字母是时,密码设置成功。
(1)减小记录的命令条数
咱们在系统输入命令进行操做时,系统会自动记录历史命令,默认是记录1000条。咱们用“history”命令能够查看。
有时候咱们的命令历史中会有一些密码之类的隐私信息,别人很容易经过“history”命令查看到。因此咱们能够经过减小记录命令的条数,来减小这种风险。直接用vim编辑器对“/etc/profile”配置文件进行修改便可。
修改完后是不会当即生效的,咱们须要用“source /etc/profile”命令让它生效。再用“history”命令查看命令历史,命令历史记录条数已经变成10条了。
(2)注销时自动清空命令历史
前面咱们知道命令历史可能会泄露咱们的一些隐私信息,并且命令历史在系统注销后是不会清空的。若是咱们想要在注销时自动清空命令历史,能够经过vim编辑器在“.bash_logout”配置文件里添加“history -c”与“clear”命令。
咱们能够设置终端闲置超时时间,当一段时间没有进行操做时系统自动自动注销终端。这样能够介绍别人趁咱们不在时对系统进行操做的风险,经过vim编辑器在“/etc/profile”配置文件最后一行添加“export TMOUT”的时间便可。
在配置完毕别忘了用“source /etc/profile”命令让它生效。
(1)使用su命令切换用户(格式:su [-] 目标用户)
当咱们想切换用户时能够用“su”命令,加上“-”选项将使用目标用户的登陆Shell环境。root用“su”命令切换到任意用户都不须要密码验证,而普通切换到其余用户,须要验证目标用户的密码。“exit”命令能够返回到用“su”命令切换前的用户。
(1)PAM简介:
全称PAM可插拔式认证模块(Pluggable Authentication Modules ),是由Sun提出的一种认证机制,经过提供一些动态连接库和一套统一的API,将系统提供的服务 和该服务的认证方式分开,使得系统管理员能够灵活地根据须要给不一样的服务配置不一样的认证方式而无需更改服务程序,同时也便于向系统中添加新的认证手段。它是一种高效并且灵活便利的用户级别的认证方式,它也是当前Linux服务器广泛使用的认证方式。
(2)PAM认证原理:
- PAM认证通常遵循的顺序: Service (服务) →PAM (配置文件) →pam_* .so
- PAM认证首先要肯定哪一项服务,而后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/lib/security下)进行安全认证
- 用户访问服务器的时候,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证
- 不一样的应用程序所对应的PAM模块也是不一样的
(3)PAM认证的构成:
查看某个程序是否支持PAM认证,能够用Is命令进行查看,例如查看su命令是否支持PAM模块认证咱们能够输入“ls /etc/pam.d | grep su”命令行。
查看su的PAM配置文件输入“cat /etc/pam.d/su”便可,其中每一行都是一个独立的认证过程,每一行能够区分为三个字段。认证类型、控制类型、PAM模块及其参数。
(4)PAM安全认证流程:
控制类型也能够称作ControlFlags,用于PAM验证类型的返回结果
- required验证失败时仍然继续,但返回Fail
- requisite验证失败则当即结束整个验证过程,返回Fail
- sufficient验证成功则当即返回,再也不继续,不然忽略结果并继续
- optional不用于验证,只显示信息(一般用于session类型)
(5)PAM的具体用法:限制用户使用su命令切换用户
前面咱们了解了su命令,用户切换,但su命令其实存在安全隐患。在默认状况下,任何用户都容许使用su命令,从而有机会反复尝试其余用户(如root) 的登陆密码,带来安全风险。为了增强su命令的使用控制,能够借助于PAM认证模块,只容许极个别用户使用su命令进行切换。
咱们先用vim编辑器对su命令的PAM配置文件“cat /etc/pam.d/su”进行修改,开启pam_wheel认证模块(直接删除#便可),而后“wq”保存退出。此时只有root和wheel组用户能使用su命令切换用户。
咱们用“gpasswd -a”命令,将zhangsan用户添加到wheel组,此时zhangsan用户可使用su命令。
咱们用zhangsan用户使用su命令切换用户成功,在用lisi用户使用su命令切换用户失败,显示拒绝权限。
sudo 是一种权限管理机制,管理员能够受权于一些普通用户去执行一些 root 执行的操做,而不须要知道 root 的密码。严谨些说,sudo 容许一个已受权用户以超级用户或者其它用户的角色运行一个命令。
记录格式:用户 主机名列表=命令程序列表
(1)配置sudo受权
咱们能够直接用“visudo”命令对sudo配置文件进行编辑,或是输入“vim /etc/sudoers”用vim编辑器进行编辑。
咱们先用lisi帐户登陆来更改系统的IP地址结果失败,再用sudo提权命令进行更仍是不行,由于咱们没有给lisi用户提权。
再用zhangsan用户进行操做结果能够修改,由于咱们前面将zhangsan用户添加到了wheel组,lisi用户没有添加。wheel组是默认安全组,在sudo配置文件里,wheel组默承认以执行全部sudo权限。
如今咱们进入sudo命令配置文件,给lisi用户添加上“ifconfig”命令提权,而后保存退出。再用lisi用户去修改IP地址成功。
(1)GRUB限制
通常状况下咱们在开机时的界面按“e”就能够进入grub菜单,这样很显然不安全。
下面咱们开始给grub菜单设置密码,首先咱们将它的两个配置文件进行备份,防止操做失误损坏了文件。
咱们用“grub2-mkpasswd-pbkdf2”生成由哈希算法加密的密钥。输入口令就是输入你想设置的grub密码,“is”后面的全部字符就是加密的密码。
咱们用vim编辑器在“/etc/grub.d/00_header”文件中,在文件末行下面添加它的密码命令,而后“wq”保存退出。
cat << EOF set superusers="root" password_pbkdf2 root grub.pbkdf2.sha512.10000.3F01896EA31EA9CBA8EF0A6C6CBCF2643463495ED9A3669B3D607A1C85EFD2136A4F05FEA396BDB9CC256E51EB4A3BA50D4156A2309FF846A7AC6C41FA48CF14.0B5C5D8D248C3BE1FA588F8E54F5937C68AE47FB359D715F255F43D32A69CC9C0426F8670BC718DCC9BD22C7D9E1CBE598DF766E8897E6BDE40E3541E40EE2EA
咱们再输入“grub2-mkconfig -o /boot/grub2/grub.cfg”,进行配置。
咱们再次重启系统,进入启动界面,按“e”不能直接进入grub菜单,提示咱们输入密码,输入密码后成功进入。
(1)限制root只能在安全终端登陆
当咱们想限制root用户在某个终端上登陆时,只需用vim编辑器将“/etc/securetty”文件里的那个终端加上“#”注释掉便可,例如咱们不想root在tty十、tty11终端登陆,直接把这两个终端注释掉。
(2)禁止普通用户登陆
当咱们对服务器进行备份或调试等工做时,不但愿用户登陆。能够直接创建一个/etc/nologin文件便可,删除文件或重启便可恢复登陆。
咱们用到的工具是Joth the Ripper ,简称JR。是一款密码分析工具,支持字典式的强行破解,经过对shadow文件的口令分析,能够检测密码强度。
官方网站:http://www.openwall.com/john/
首先我们将本身本地的JR工具安装包匿名共享出去,同时用Linux输入“smbclient -L //192.168.100.3/ ”查看共享。
直接用“mount.cifs //192.168.100.3/share /mnt/”命令,将“share”文件夹挂载到“/mnt/”目录下。
咱们先用“cd”命令进入“/mnt/”目录中,输入“tar -zxvf john-1.8.0.tar.gz -C /opt/”命令将工具包解压到“/opt/”目录。
用“cd”命令进入到“/opt/john-1.8.0/src/”源码包目录,可是源码包是用C语言写的,咱们须要进行编译,因此咱们须要用“yum install gcc gcc-c++ -y”命令安装编译工具。
直接用“make linux-x86-64”命令将源码包编译为适合系统版本的格式。
咱们cd到脚本所在的“run”目录,而后输入命令“./john /etc/passwd /etc/shadow”让它去分析passwd和shadow文件,稍做等待就直接分析出我系统用户的密码(由于我这个密码较简单,有些密码复杂性强的是分析不出来的,可否分析出来主要跟它的字典有关,若是字典足够强悍也是能够分析出复杂的密码的)
咱们用来扫描网络端口的是NMAP工具,它是一款强大的网络扫描、安全检测工具。
NMAP的扫描语法:nmap [扫描类型] [选项] <扫描目标...>
咱们直接输入“yum install nmap -y”命令,来从yum源安装NMAP工具便可。
咱们用命令“netstat -ntap”查看一下系统开启的TCP端口。若是查看UDP端口直接用命令“netstat -nuap”便可
用nmap工具扫描一下本地的TCP端口,输入“nmap -sT 127.0.0.1”。
扫描本地UDP端口直接输入“nmap -sU 127.0.0.1”便可。
扫描类型 | 例子 | 描述 |
---|---|---|
-sS | nmap -sS 192.168.1.1 | TCP SYN端口扫描(默认) |
-sT | nmap -sT 192.168.1.1 | TCP链接端口扫描(默认无root权限) |
-sU | nmap -sU 192.168.1.1 | UDP端口扫描 |
-P0 | nmap -P0 192.168.1.1 | 容许你关闭 ICMP pings |
-sP | nmap -sP 192.168.1.1 | 判断主机状态 |