Linux/Centos7系统管理之系统安全及应用
Linux/Centos7系统管理之系统安全及应用
1.账号安全控制
2.系统引导和登录控制
3.弱口令检测
4.端口扫描
一、账号安全控制
1.1基本安全措施
1.1.1系统账号清理
(1)在Linux系统中,除了用户手动创建的各种账号之外,还包括一些随系统或程序安装过程而产生的其他大量账号。除了root用户,大部分的非登录用户(bin、daemon、adm、nobody、lp、apache等)是不能登录的。
使用grep命令可以查看非登录用户如下:
[root@localhost ~]# grep "/sbin/nologin$" /etc/passwdbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/sbin/nologinmail:x:8:12:mail:/var/spool/mail:/sbin/nologinoperator:x:11:0:operator:/root:/sbin/nologingames:x:12:100:games:/usr/games:/sbin/nologinftp:x:14:50:FTP User:/var/ftp:/sbin/nologinnobody:x:99:99:Nobody:/:/sbin/nologinsystemd-network:x:192:192:systemd Network Management:/:/sbin/nologindbus:x:81:81:System message bus:/:/sbin/nologinpolkitd:x:999:998:User for polkitd:/:/sbin/nologinabrt:x:173:173::/etc/abrt:/sbin/nologinlibstoragemgmt:x:998:996:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologinrpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologincolord:x:997:995:User for colord:/var/lib/colord:/sbin/nologinsaslauth:x:996:76:Saslauthd user:/run/saslauthd:/sbin/nologinrtkit:x:172:172:RealtimeKit:/proc:/sbin/nologinpulse:x:171:171:PulseAudio System Daemon:/var/run/pulse:/sbin/nologinchrony:x:995:991::/var/lib/chrony:/sbin/nologinrpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologinnfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologinntp:x:38:38::/etc/ntp:/sbin/nologintss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologinusbmuxd:x:113:113:usbmuxd user:/:/sbin/nologingeoclue:x:994:989:User for geoclue:/var/lib/geoclue:/sbin/nologinqemu:x:107:107:qemu user:/:/sbin/nologinradvd:x:75:75:radvd user:/:/sbin/nologinsetroubleshoot:x:993:988::/var/lib/setroubleshoot:/sbin/nologinsssd:x:992:987:User for sssd:/:/sbin/nologingdm:x:42:42::/var/lib/gdm:/sbin/nologingnome-initial-setup:x:991:986::/run/gnome-initial-setup/:/sbin/nologinsshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologiavahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologinpostfix:x:89:89::/var/spool/postfix:/sbin/nologintcpdump:x:72:72::/:/sbin/nologin
(2)而对于Linux服务器中长期不用的用户账号,若无法确定是否应该删除,可以暂时将其锁定。
[root@localhost ~]# usermod -L zhangsan[root@localhost ~]# passwd -S zhangsanzhangsan LK 2019-11-15 0 99999 7 -1 (密码已被锁定。)[root@localhost ~]# passwd -u zhangsan解锁用户 zhangsan 的密码。passwd: 操作成功
(3)当然,在服务器中如果说用户账号已经固定,不再更改,还可以采取锁定账号配置文件的方法,使用chattr(change attribution -更改文件状态)命令。
[root@localhost ~]# chattr +i /etc/passwd /etc/shadow[root@localhost ~]# lsattr /etc/passwd /etc/shadow----i----------- /etc/passwd----i----------- /etc/shadow[root@localhost ~]# useradd lisiuseradd:无法打开 /etc/passwd[root@localhost ~]# chattr -i /etc/passwd /etc/shadow[root@localhost ~]# lsattr /etc/passwd /etc/shadow---------------- /etc/passwd---------------- /etc/shadow[root@localhost ~]# useradd lisi
命令解释:+i表示锁定,-i表示解锁,lsattr表示查看状态
1.1.2密码安全控制
设定密码期限的方法结合实例来讲述
[root@localhost ~]#head -25 /etc/login.defs |tail -1PASS_MAX_DAYS 99999[root@localhost ~]# vim /etc/login.defs [root@localhost ~]# head -25 /etc/login.defs |tail -1PASS_MAX_DAYS 30[root@localhost ~]# useradd wangwu[root@localhost ~]# passwd wangwu更改用户 wangwu 的密码 。新的 密码:无效的密码: 密码少于 8 个字符重新输入新的 密码:passwd:所有的身份验证令牌已经成功更新。[root@localhost ~]# tail -1 /etc/shadowwangwu:$6$pDVLca5K$iy9JAb4PzbG14d3XfG8ei7dV0YnJFjOwRJVMzs3bMFyp.XPEkv0WO5XaGViv.4.n1jp5fPSCDHanJh3j3Am4f1:18215:0:30:7:::
操作解释:查看/etc/login.defs文件中第25行内容,用vim编辑器进去修改,将其改为30,表示最长使用时间,即密码的有效期为30天。该方式只针对之后新建的用户,那么对于原有用户如何操作呢?答案是使用chage命令。
[root@localhost ~]# tail -3 /etc/passwdzhangsan:x:1001:1001::/home/zhangsan:/bin/bashlisi:x:1002:1002::/home/lisi:/bin/bashwangwu:x:1003:1003::/home/wangwu:/bin/bash[root@localhost ~]# chage -M 20 lisi[root@localhost ~]# chage -M 20 wangwu[root@localhost ~]# tail -3 /etc/shadowzhangsan:$6$WsyIZguS$ZsJObVyyFzwxT2p0RoIemdrQjLUmoKDkzY8DlrtctYLBzxl0ja3rcp84BP3D5MTHfK.pj1IKAZpezYUwv1d/p0:18215:0:99999:7:::lisi:$6$yo1cSlqf$tR5J63h7yOdhqearLDVb8nOfpBlJE6Oem9h5bkREzCRDBA.7OsT.wsX5zJ3I.BUbHxfaw56JbP0IkDyAGwbCi0:18215:0:20:7:::wangwu:$6$pDVLca5K$iy9JAb4PzbG14d3XfG8ei7dV0YnJFjOwRJVMzs3bMFyp.XPEkv0WO5XaGViv.4.n1jp5fPSCDHanJh3j3Am4f1:18215:0:20:7:::
当然了,如果是批量创建的用户初次登录时必须自设密码,由管理员执行强制策略,以便下次登录时必须修改密码。使用"chage -d 0 用户名"来进行设置。
1.1.3命令历史、自动注销
一般情况下,历史命令默认是记录1000条,对于新登录用户修改/etc/profile文件将HISTSIZE更改即可
当前用户则直接在当前bash终端更改:export HISTSIZE=100
[root@localhost ~]# echo "HISTSIZE=10" >> /etc/profile //对于新登录用户[root@localhost ~]# tail -1 /etc/profileHISTSIZE=10[root@localhost ~]#su - lisi[lisi@localhost ~]$ history 22 clear 23 ls 24 cd /etc/ 25 ls 26 cd .. 27 cd 28 ls 29 history 30 ls 31 history [root@localhost ~]# export HISTSIZE=5 //对于当前bash终端用户[root@localhost ~]# history 6 grub2-mkconfig -o /boot/grub2/grub.cfg 7 init 6 8 cd 9 export HISTSIZE=5 10 history
当然,还可以修改用户宿主目录下的~/.bash_logout文件,当用户退出后所记录的历史命令将自动清空。
也可以设置一个闲置超时时间--多久不操作就自动注销(修改TMOUT变量,不推荐)
[root@localhost ~]# cat ~/.bash_logout # ~/.bash_logout[root@localhost ~]# echo "history -c" >> ~/.bash_logout [root@localhost ~]# echo "clear" >> ~/.bash_logout [root@localhost ~]# cat ~/.bash_logout # ~/.bash_logouthistory -cclear[root@localhost ~]# source ~/.bash_logout [root@localhost ~]# history 3 history [root@localhost ~]#
1.2用户切换与提权
一般情况下,大多数Linux服务器不建议用户直接以root用户进行登录。一方面可以大大减少因误操作而导致的破坏,另一方面也降低了特权密码在不安全的网络中被泄露的风险。
在Linux系统为我们提供su、sudo两种命令,其中su命令主要用来切换用户,而sudo命令用来提升执行的权限。
1.2.1 su命令--切换用户
su命令,可以切换为指定的另一个用户,从而具有该用户的所有权限。其中选项"-"表示切换用户后进入目标用户的登录shell环境,若没有选择该选项,则只是切换用户,不切换用户环境。对于切换为root用户的情况,"root"可以省略。
默认情况下,任何用户都允许使用su命令,从而有机会反复尝试其他用户的登录密码,带来安全风险。为了加强su命令的使用控制,可以借助于pam_wheel认证模块,只允许个别用户使用su命令进行切换。具体实例如下:
[root@localhost ~]# su - lisi上一次登录:五 11月 15 10:24:08 CST 2019pts/0 上[lisi@localhost ~]$ su -密码:上一次登录:五 11月 15 10:25:26 CST 2019从 192.168.68.1pts/1 上[root@localhost ~]# su zhangsan[zhangsan@localhost root]$ su密码:[root@localhost ~]# gpasswd -a zhangsan wheel正在将用户"zhangsan"加入到"wheel"组中[root@localhost ~]# grep wheel /etc/groupwheel:x:10:zhangsan[root@localhost ~]# head -6 /etc/pam.d/su | tail -1#auth required pam_wheel.so use_uid[root@localhost ~]# vim /etc/pam.d/su[root@localhost ~]# head -6 /etc/pam.d/su | tail -1auth required pam_wheel.so use_uid[root@localhost ~]# su - lisi上一次登录:五 11月 15 10:48:56 CST 2019pts/1 上[lisi@localhost ~]$ su - 密码:su: 拒绝权限[lisi@localhost ~]$ exit登出[root@localhost ~]# su - zhangsan上一次登录:五 11月 15 10:49:10 CST 2019pts/1 上最后一次失败的登录:五 11月 15 10:56:24 CST 2019pts/1 上最有一次成功登录后有 1 次失败的登录尝试。[zhangsan@localhost ~]$ su -密码:上一次登录:五 11月 15 10:49:17 CST 2019pts/1 上最后一次失败的登录:五 11月 15 10:57:26 CST 2019pts/1 上最有一次成功登录后有 2 次失败的登录尝试。
命令解释:
使用gpasswd命令将zhangsan用户添加到wheel组中,编辑/etc/pam.d/su文件,删除第6行的#号,尝试切换其他用户,由于lisi不在wheel组中,所以是拒绝权限的,但是张三可以正常切换到root,是因为他在wheel组中。su命令的执行操作将会记录到安全日志/var/log/secure中。
[root@localhost ~]# vim /var/log/secure 1 Nov 14 11:43:22 localhost polkitd[572]: Loading rules from directory /etc/polkit-1/rules.d 2 Nov 14 11:43:22 localhost polkitd[572]: Loading rules from directory /usr/share/polkit-1/rules.d 3 Nov 14 11:43:22 localhost polkitd[572]: Finished loading, compiling and executing 8 rules 4 Nov 14 11:43:22 localhost polkitd[572]: Acquired the name org.freedesktop.PolicyKit1 on the system bus 5 Nov 14 11:43:23 localhost sshd[1030]: Server listening on 0.0.0.0 port 22. 6 Nov 14 11:43:23 localhost sshd[1030]: Server listening on :: port 22. 7 Nov 14 11:44:00 localhost polkitd[572]: Registered Authentication Agent for unix-process:10820:4415 (system bus name :1.133 [/usr/bin/pkttyagent --no tify-fd 5 --fallback], object path /org/freedesktop/PolicyKit1/AuthenticationAgent, locale zh_CN.UTF-8) 8 Nov 14 11:44:00 localhost polkitd[572]: Unregistered Authentication Agent for unix-process:10820:4415 (system bus name :1.133, object path /org/freed esktop/PolicyKit1/AuthenticationAgent, locale zh_CN.UTF-8) (disconnected from bus) 9 Nov 14 11:44:00 localhost polkitd[572]: Registered Authentication Agent for unix-process:10843:4423 (system bus name :1.134 [/usr/bin/pkttyagent --no tify-fd 5 --fallback], object path /org/freedesktop/PolicyKit1/AuthenticationAgent, locale zh_CN.UTF-8) 10 Nov 14 11:44:00 localhost polkitd[572]: Unregistered Authentication Agent for unix-process:10843:4423 (system bus name :1.134, object path /org/freed esktop/PolicyKit1/AuthenticationAgent, locale zh_CN.UTF-8) (disconnected from bus) 11 Nov 14 11:44:00 localhost gdm-launch-environment]: pam_unix(gdm-launch-environment:session): session opened for user gdm by (uid=0) 12 Nov 14 11:44:01 localhost polkitd[572]: Registered Authentication Agent for unix-session:c1 (system bus name :1.140 [/usr/bin/gnome-shell], object pa th /org/freedesktop/PolicyKit1/AuthenticationAgent, locale zh_CN.UTF-8) 13 Nov 14 11:44:11 localhost gdm-password]: pam_unix(gdm-password:session): session opened for user root by (uid=0) 14 Nov 14 11:44:11 localhost polkitd[572]: Unregistered Authentication Agent for unix-session:c1 (system bus name :1.140, object path /org/freedesktop/P olicyKit1/AuthenticationAgent, locale zh_CN.UTF-8) (disconnected from bus) 15 Nov 14 11:44:12 localhost polkitd[572]: Registered Authentication Agent for unix-session:1 (system bus name :1.161 [/usr/bin/gnome-shell], object pat h /org/freedesktop/PolicyKit1/AuthenticationAgent, locale zh_CN.UTF-8) 16 Nov 14 20:21:09 localhost polkitd[572]: Registered Authentication Agent for unix-process:19734:78501 (system bus name :1.254 [/usr/bin/pkttyagent --n otify-fd 5 --fallback], object path /org/freedesktop/PolicyKit1/AuthenticationAgent, locale zh_CN.UTF-8) 17 Nov 14 20:21:11 localhost polkitd[572]: Unregistered Authentication Agent for unix-process:19734:78501 (system bus name :1.254, object path /org/free desktop/PolicyKit1/AuthenticationAgent, locale zh_CN.UTF-8) (disconnected from bus) 18 Nov 14 20:21:25 localhost sshd[20138]: Accepted password for root from 192.168.68.1 port 59169 ssh3 19 Nov 14 20:21:25 localhost sshd[20138]: pam_unix(sshd:session): session opened for user root by (uid=0) 20 Nov 14 20:21:46 localhost sshd[20138]: pam_unix(sshd:session): session closed for user root 21 Nov 15 09:24:35 localhost polkitd[572]: Registered Authentication Agent for unix-process:24514:117799 (system bus name :1.302 [/usr/bin/pkttyagent -- notify-fd 5 --fallback], object path /org/freedesktop/PolicyKit1/AuthenticationAgent, locale zh_CN.UTF-8) 22 Nov 15 09:25:41 localhost polkitd[555]: Loading rules from directory /etc/polkit-1/rules.d 23 Nov 15 09:25:41 localhost polkitd[555]: Loading rules from directory /usr/share/polkit-1/rules.d 24 Nov 15 09:25:41 localhost polkitd[555]: Finished loading, compiling and executing 8 rules 25 Nov 15 09:25:41 localhost polkitd[555]: Acquired the name org.freedesktop.PolicyKit1 on the system bus 26 Nov 15 09:25:42 localhost sshd[951]: Server listening on 0.0.0.0 port 22. 27 Nov 15 09:25:42 localhost sshd[951]: Server listening on :: port 22.
注意:务必编辑/etc/pam.d/su文件!才能正常操作,否则都是默认正常切换的。
1.2.2sudo命令--提升执行权限
(1)在配置文件/etc/sudoers中添加授权(注意需要:wq!强制保存)
首先我们来看一下这个配置文件
[root@localhost ~]# grep -v "^#" /etc/sudoers //反向检索出不是以#号开头的内容Defaults !visiblepwDefaults always_set_homeDefaults match_group_by_gidDefaults env_resetDefaults env_keep = "COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS"Defaults env_keep += "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE"Defaults env_keep += "LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES"Defaults env_keep += "LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE"Defaults env_keep += "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY"Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/binroot ALL=(ALL) ALL%wheel ALL=(ALL) ALL
其中我们看最后的两个,root 和%wheel,分别表示root用户可以执行所有权限,在wheel组中的成员也可以执行所有权限。
那我们使用一个不属于wheel组的用户,赋予他一个修改ip地址的权限来验证。
[root@localhost ~]# vim /etc/sudoers //在该文件中添加命令:lisi localhost=/sbin/ifconfig[root@localhost ~]# su - lisi上一次登录:五 11月 15 10:55:54 CST 2019pts/1 上[lisi@localhost ~]$ su -密码:su: 拒绝权限 [lisi@localhost ~]$ ifconfig ens33 1.1.1.1 //没有使用sudo是无法操作的SIOCSIFADDR: 不允许的操作SIOCSIFFLAGS: 不允许的操作[lisi@localhost ~]$ sudo ifconfig ens33 1.1.1.1 //第一次需要输入自己的密码,只要不超过5min,就无需再次输入我们信任您已经从系统管理员那里了解了日常注意事项。总结起来无外乎这三点: #1) 尊重别人的隐私。 #2) 输入前要先考虑(后果和风险)。 #3) 权力越大,责任越大。[sudo] lisi 的密码:[lisi@localhost ~]$ ifconfigens33: flags=4163 mtu 1500 inet 1.1.1.1 netmask 255.0.0.0 broadcast 1.255.255.255 inet6 fe80::7eb1:2dde:8a54:6927 prefixlen 64 scopeid 0x20 ether 00:0c:29:56:d3:4a txqueuelen 1000 (Ethernet) RX packets 3105 bytes 231965 (226.5 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 981 bytes 150502 (146.9 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0lo: flags=73 mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10 loop txqueuelen 1 (Local Loopback) RX packets 16 bytes 1752 (1.7 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 16 bytes 1752 (1.7 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0virbr0: flags=4099 mtu 1500 inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255 ether 52:54:00:71:37:09 txqueuelen 1000 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
1.3PAM安全认证
1.3.1PAM及其作用
PAM(Pluggable Authentication Modules),是Linux系统可插拔认证模块。
(1)高效且灵活的用户级别认证方式,也是当前Linux服务器普遍使用的认证方式;
(2)其提供看=了对所有服务进行认证的中央机制,适用于login,远程登录等;
(3)系统管理员通过PAM配置文件来制定不同应用程序的不同认证策略。
1.3.2PAM支持的四种管理界面:
1、认证管理(authentication management)
主要是接受用户名和密码,进而对该用户的密码进行认证,并负责设置用户的一些秘密
信息。
2、帐户管理(account management)
主要是检查帐户是否被允许登录系统,帐号是否已经过期,帐号的登录是否有时间段的
限制等等。
3、密码管理(password management)
主要是用来修改用户的密码。
4、会话管理(session management)
主要是提供对会话的管理和记账(accounting)。
1.3.3PAM认证原理
(1)PAM认证一般遵循这样的顺序:Service(服务)→PAM(配置文件)→pam_*.so
(2)PAM认证首先要确定那一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/lib/security下)进行安全认证。
1.3.4PAM认证的构成
例如查看su的PAM配置文件
[root@localhost ~]# cat /etc/pam.d/su#%PAM-1.0auth sufficient pam_rootok.so# Uncomment the following line to implicitly trust users in the "wheel" group.#auth sufficient pam_wheel.so trust use_uid# Uncomment the following line to require a user to be in the "wheel" group.#auth required pam_wheel.so use_uidauth substack system-authauth include postloginaccount sufficient pam_succeed_if.so uid = 0 use_uid quietaccount include system-authpassword include system-authsession include system-authsession include postloginsession optional pam_xauth.so
(1)每一行都是一个独立的认证过程
(2)每一行可以区分为三个字段:认证类型、控制类型和PAM模块及其参数
二、系统引导和登录控制
2.1开关机安全控制
2.1.1调整BIOS引导设置
- 将第一引导设备设为当前系统所在硬盘
- 禁止从其他设备(光盘、U盘、网络)引导系统
- 将安全级别设为isetup,并设置管理员密码
备注:禁止从其他设备引导系统操作,感觉若是出现忘记root密码就可能无法从光驱去修改,所以还是谨慎操作
2.1.2限制更改GTUB引导参数
- 使用grub2-mkpasswd-pbkdf2生成密钥
- 修改/etc/grub.d//00_header文件中,添加密码记录
- 生成新的grub.cfg配置文件
2.2终端及登录控制
2.2.1禁止root用户登录
修改/etc/securetty文件,禁止root用户从tty6登录就将该行注释掉
[root@localhost ~]# vim /etc/securetty[root@localhost ~]# head -18 /etc/securetty |tail -1#tty6
2.2.2禁止普通用户登录
只需要创建一个/etc/nologin文件即可
[root@localhost ~]# touch /etc/nologin
三、弱口令检测、端口扫描
3.1弱口令检测--John the Ripper
[root@localhost tarpkg]# lsapr-1.4.6.tar.gz apr-util-1.4.1.tar.gz httpd-2.4.2.tar.gz john-1.8.0.tar.gz[root@localhost tarpkg]# tar zxf john-1.8.0.tar.gz -C /opt/ //解压缩到/opt下[root@localhost tarpkg]# ls /opt/john-1.8.0 rh[root@localhost tarpkg]# cd /opt/john-1.8.0/[root@localhost john-1.8.0]# lsdoc README run srcroot@localhost john-1.8.0]# cd src/ //查看文件信息,根据内容我们知道需要安装编译器[root@localhost src]# ls AFS_fmt.c config.c ia64.h MD5_fmt.c ppc64alt.h trip_fmt.calpha.h config.h idle.c MD5_std.c ppc64.h tty.calpha.S cracker.c idle.h MD5_std.h recovery.c tty.hbatch.c cracker.h inc.c memory.c recovery.h unafs.cbatch.h crc32.c inc.h memory.h rpp.c unique.cbench.c crc32.h john.asm mips32.h rpp.h unshadow.cbench.h DES_bs_b.c john.c mips64.h rules.c vax.hbest.c DES_bs.c john.com misc.c rules.h wordlist.cbest.sh DES_bs.h john.h misc.h sboxes.c wordlist.hBF_fmt.c DES_fmt.c list.c nonstd.c sboxes-s.c x86-64.hBF_std.c DES_std.c list.h options.c signals.c x86-64.SBF_std.h DES_std.h LM_fmt.c options.h signals.h x86-any.hBSDI_fmt.c detect.c loader.c os.h single.c x86-mmx.hc3_fmt.c dummy.c loader.h params.c single.h x86-mmx.Scharset.c external.c logger.c params.h sparc32.h x86.Scharset.h external.h logger.h pa-risc.h sparc64.h x86-sse.hcommon.c formats.c Makefile path.c status.c x86-sse.Scommon.h formats.h Makefile.dep path.h status.hcompiler.c getopt.c math.c ppc32alt.h symlink.ccompiler.h getopt.h math.h ppc32.h times.h[root@localhost src]# ls ../run ascii.chr john.conf mailer password.lstdigits.chr lm_ascii.chr makechr relbench
(2)安装编译器编译安装,得到可执行文件john,然后运行即可破解简单密码。
[root@localhost src]# yum install -y gcc gcc-c++... //省略过程完毕![root@localhost src]# rpm -q gccgcc-4.8.5-39.el7.x86_64[root@localhost src]# rpm -q gcc-c+[root@localhost src]# make linux-x86-64 //进行编译... //省略过程[root@localhost src]# cd ../run[root@localhost run]# lsascii.chr john lm_ascii.chr makechr relbench uniquedigits.chr john.conf mailer password.lst unafs unshadow[root@localhost run]# ./john /etc/passwd /etc/shadowLoaded 3 password hashes with 3 different salts (crypt, generic crypt(3) [?/64])Press 'q' or Ctrl-C to abort, almost any other key for status123456 (lokott)123456 (root)2g 0:00:01:06 7% 2/3 0.03025g/s 284.7p/s 287.6c/s 287.6C/s pookie1..mary1Use the "--show" option to display all of the cracked passwords reliably
根据以上步骤,我们即可获取root和lokott用户的密码了。
3.2网络扫描--NMAP
NMAP是个强大的端口扫描类安全评测工具,检测主机数量众多的巨大网络,支持ping扫描、多端口检测、OS识别等多种技术。使用NMAP定期扫描内部网络,可以找出网络中不可控的应用服务,及时关闭不安全的服务,减小安全风险。
nmap命令
命令格式:nmap [扫描类型] [选项] <扫描目标...>
-sS:TCP SYN扫描(半开扫描)
-sT:TCP 连接扫描
-sF:TCP FIN扫描
-sU:UDP扫描
-sP: ICMP扫描
-P0:跳过ping检测
[root@localhost ~]# rpm -q nmapnmap-6.40-19.el7.x86_64[root@localhost ~]# netstat -ntap //查看tcpActive Internet connections (servers and established)Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemd tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 1267/dnsmasq tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 942/sshd tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 944/cupsd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1252/master tcp 0 52 192.168.68.130:22 192.168.68.1:52378 ESTABLISHED 3578/sshd: root@pts tcp6 0 0 :::111 :::* LISTEN 1/systemd tcp6 0 0 :::22 :::* LISTEN 942/sshd tcp6 0 0 ::1:631 :::* LISTEN 944/cupsd tcp6 0 0 ::1:25 :::* LISTEN 1252/master [root@localhost ~]# netstat -nuap //查看udpActive Internet connections (servers and established)Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name udp 0 0 0.0.0.0:58802 0.0.0.0:* 3456/dhclient udp 0 0 0.0.0.0:46033 0.0.0.0:* 563/avahi-daemon: r udp 0 0 192.168.122.1:53 0.0.0.0:* 1267/dnsmasq udp 0 0 0.0.0.0:67 0.0.0.0:* 1267/dnsmasq udp 0 0 0.0.0.0:68 0.0.0.0:* 3456/dhclient udp 0 0 0.0.0.0:5353 0.0.0.0:* 563/avahi-daemon: r udp6 0 0 :::42353 :::* 3456/dhclient
我们安装一个httpd服务,并且启动httpd服务,会发现80端口被使用了。
[root@localhost ~]# yum install -y httpd已加载插件:fastestmirror, langpacks... //省略内容[root@localhost ~]# systemctl start httpd.service[root@localhost ~]# nmap -sT 127.0.0.1Starting Nmap 6.40 ( http://nmap.org ) at 2019-11-15 13:32 CSTNmap scan report for localhost (127.0.0.1)Host is up (0.00060s latency).Not shown: 995 closed portsPORT STATE SERVICE22/tcp open ssh25/tcp open smtp80/tcp open http111/tcp open rpcbind631/tcp open ippNmap done: 1 IP address (1 host up) scanned in 0.07 seconds
四、总结
本文主要介绍的是Linux/Centos7系统管理中系统安全与应用的理论知识,通过实例操作来加强对命令的理解。通过本文的学习,可以方便查找安全隐患,从而及时采取有针对性的防护措施。