CentOS 7中系统安全及应用
账户安全控制
用户账号是计算机使用者的身份凭证或标识,每个要访问系统资源的人,必须凭借其用户账号才能进入计算机。
基本安全措施
1、系统账号清理
将非登录用户的shell设为
/sbin/nologin删除无用的账号
锁定长期不使用的账号
chattr +i锁定文件chattr -i解锁文件lsattr查看文件锁定情况- 我们可以通过锁定
passwd、shadow文件阻止创建新的用户
[root@localhost ~]# chattr +i /etc/passwd /etc/shadow //锁定passwd、shadow文件[root@localhost ~]# lsattr /etc/passwd /etc/shadow //查看锁定情况----i----------- /etc/passwd----i----------- /etc/shadow //文件已锁定[root@localhost ~]# useradd siti //创建用户useradd:无法打开 /etc/passwd //无法打开文件,用户无法创建[root@localhost ~]# chattr -i /etc/passwd /etc/shadow //解锁文件[root@localhost ~]# lsattr /etc/passwd /etc/shadow //查看文件锁定信息---------------- /etc/passwd //文件已解锁---------------- /etc/shadow[root@localhost home]# useradd st11 //创建用户[root@localhost home]# echo "123123" | passwd --stdin st11 //设置用户密码更改用户 st11 的密码 。passwd:所有的身份验证令牌已经成功更新。 //设置成功2、密码安全控制
- 设置密码有效期
vim /etc/login.defs配置文件中设置。适用于新建用户- 用过命令
chage -M [密码有效期] [用户名]设置用户密码有效期
[root@localhost home]# vim /etc/shadow //查看所用户密码信息root:$6$DErFk.wqtcw55ui.$sbinnItTXo1wtxsOmThAEwBXHluuCC04as2tSUvoCEdDTHMTumpl/VcjH6KCYkJh0xc3KqLdcTq2NTe3K7nTi1::0:99999:7::: //root用户密码有效期为99999bin:*:17110:0:99999:7:::daemon:*:17110:0:99999:7:::...//省略部分内容...tcpdump:!!:18117::::::sun:$6$g2hmfiVD2XG/zY37$53BhBT.2ILsuF22KZ2BRaE/6hmG/HsylLi1EuARoWzc8EgBbqN64T0DmyCfGsowWGFuCKDubUkBIxh2TM69Vv0:18117:0:99999:7::: //sun用户密码有效期为99999st11:$6$ZGozUglO$ymyQEtkL//rzx8UdgDcy1yd3WVLiET9K6xrC.dT0lUnNH17dzkuSxkqepAC5plPlad5VWrewJOkAKJxdmiYLZ.:18136:0:99999:7::: //st11用户密码有效期为99999:q //退出[root@localhost home]# vim /etc/login.defs //进入密码配置文件,设置密码有效期...//省略部分内容...# PASS_MIN_DAYS Minimum number of days allowed between password changes.# PASS_MIN_LEN Minimum acceptable password length.# PASS_WARN_AGE Number of days warning given before a password expires.#PASS_MAX_DAYS 30 //密码最长有效期 更改99999为30PASS_MIN_DAYS 0 //密码最短有效期PASS_MIN_LEN 5 //密码最短字符长度PASS_WARN_AGE 7 //密码过期前提前几天提醒...//省略部分内容.../99999 //查找定位99999位置 //更改完成后:wq保存退出[root@localhost ~]# useradd siti //创建用户[root@localhost ~]# passwd siti //设置用户密码更改用户 siti 的密码 。新的 密码:无效的密码: 密码少于 8 个字符重新输入新的 密码:passwd:所有的身份验证令牌已经成功更新。[root@localhost ~]# vim /etc/shadow //查看所有用户密码信息root:$6$DErFk.wqtcw55ui.$sbinnItTXo1wtxsOmThAEwBXHluuCC04as2tSUvoCEdDTHMTumpl/VcjH6KCYkJh0xc3KqLdcTq2NTe3K7nTi1::0:99999:7::: //密码有效期未变bin:*:17110:0:99999:7:::daemon:*:17110:0:99999:7:::nome-initial-setup:!!:18117::::::...//省略部分内容...avahi:!!:18117::::::postfix:!!:18117::::::tcpdump:!!:18117::::::sun:$6$g2hmfiVD2XG/zY37$53BhBT.2ILsuF22KZ2BRaE/6hmG/HsylLi1EuARoWzc8EgBbqN64T0DmyCfGsowWGFuCKDubUkBIxh2TM69Vv0:18117:0:99999:7::: //密码有效期未变st11:$6$ZGozUglO$ymyQEtkL//rzx8UdgDcy1yd3WVLiET9K6xrC.dT0lUnNH17dzkuSxkqepAC5plPlad5VWrewJOkAKJxdmiYLZ.:18136:0:99999:7::: //密码有效期未变siti:$6$RUXRmwz/$046PV4WYKzGpp.32FT7GKu04jvaCkut/d2GjtseMi1MnU1YfGMy1.AJdtOPZByWCyfP05LqoRNe0OT5tz1FUv1:18136:0:30:7::: //新创建的用户siti用户密码有效期为30天[root@localhost ~]# chage -M 30 st11 //更改st11用户密码有效期为30天[root@localhost ~]# vim /etc/shadow //查看所有用户密码信息root:$6$DErFk.wqtcw55ui.$sbinnItTXo1wtxsOmThAEwBXHluuCC04as2tSUvoCEdDTHMTumpl/VcjH6KCYkJh0xc3KqLdcTq2NTe3K7nTi1::0:99999:7:::bin:*:17110:0:99999:7:::daemon:*:17110:0:99999:7:::...//省略部分内容...tcpdump:!!:18117::::::sun:$6$g2hmfiVD2XG/zY37$53BhBT.2ILsuF22KZ2BRaE/6hmG/HsylLi1EuARoWzc8EgBbqN64T0DmyCfGsowWGFuCKDubUkBIxh2TM69Vv0:18117:0:99999:7:::st11:$6$ZGozUglO$ymyQEtkL//rzx8UdgDcy1yd3WVLiET9K6xrC.dT0lUnNH17dzkuSxkqepAC5plPlad5VWrewJOkAKJxdmiYLZ.:18136:0:30:7::: //st11用户密码有效期更改未30天siti:$6$RUXRmwz/$046PV4WYKzGpp.32FT7GKu04jvaCkut/d2GjtseMi1MnU1YfGMy1.AJdtOPZByWCyfP05LqoRNe0OT5tz1FUv1:18136:0:30:7:::要求用户下次登录时修改密码
chage -d 0 用户名:强制用户在下次登录时更改密码使用这条命令后,当指定用户登录设置密码时,设置的密码是有条件的,就是设置的密码不允许用连续的字母和阿拉伯数字设置密码,否则无法重新设置密,因此此命令不建议使用。
[root@localhost ~]# chage -d -0 st11

3、历史命令的限制
历史命令查看与清除
history:查看历史命令history -c:清除历史命令
[root@localhost ~]# history //查看历史命令 1 vim /ect/sysconfig/network-scripts/ifcfg-ens33 2 vim /etc/sysconfig/network-scripts/ifcfg-ens33 3 vim /ect/sysconfig/network-scripts/ifcfg-ens33 4 vim /ect/sysconfig/network-scripts/ifcfg-ens33 5 vim /ect/sysconfig/netwok-scripts/ifcfg-ens33 6 vim /etc/sysconfig/network-scripts/ifcfg-ens-33 7 vim /etc/sysconfig/network-scirpts/ifcfg-ens33 8 vim /etc/sysconfig/network-scripts/ifcfg-ens33 9 vim /etc/sysconfig/network-scirpts/ifcfg-ens33 10 vim /etc/sysconfig/network-scripts/ifcfg-ens33 11 service network restart 12 ifconfig 13 chattr +i /etc/passwd /etc/shadow 14 lsattr /etc/passwd /etc/shadow 15 chattr -i /etc/passwd /etc/shadow 16 lsattr /etc/passwd /etc/shadow 17 chattr +i /etc/passwd/ /etc/shadow 18 chattr +i /etc/passwd /etc/shadow 19 lsattr 20 lsattr /etc/passwd /etc/shadow 21 useradd siti 22 chattr -i /etc/passwd /etc/shadow 23 lsattr /etc/passwd /etc/shadow 24 useradd siti 25 passwd siti 26 history[root@localhost ~]# history -c //清除历史命令[root@localhost ~]# history //查看历史命令 1 history减少记录的命令条数
vim /etc/profile:系统环境变量配置文件今日其中更改历史命令记录条数source /etc/profile:使更改的配置生效
[root@localhost ~]# vim /etc/profile[root@localhost ~]# history //查看历史命令,这个时候设置并没有生效 1 history 2 vim /etc/profile 3 history[root@localhost ~]# source /etc/profile //输入命令,使更改的配置生效[root@localhost ~]# history //再次查看历史命令 4 history //只显示一条命令闲置自动注销
vim /etc/profile配置文件中编辑添加闲置注销条目,并设定自动注销时间export TMOUT=时间(单位:秒):设定限制注销时间条目
[root@localhost ~]# vim /etc/profile //进入编辑配置文件 pathmunge /usr/local/sbin after pathmunge /usr/sbin after# /etc/profile# System wide environment and startup programs, for login setup# Functions and aliases go in /etc/bashrc# It's NOT a good idea to change this file unless you know what you# are doing. It's much better to create a custom.sh shell script in...//省略部分内容... fi fidoneunset iunset -f pathmungeexport TMOUT=60 //添加设定条目~ :wq //保存退出[root@localhost ~]# source /etc/profile //输入命令,使更添加的条目生效设置完成后系统将在60秒后自动注销。注销时间可以根据自己的操作习惯设置。
注销时自动清空命令历史
vim ~/.basf_logout:用户环境变量配置文件
在用户环境变量文件中添加history -c、clear命令,可以使用户注销时自动清除历史命令与缓存,提高安全性。
[root@localhost ~]# cd /home //进入用户家目录[root@localhost home]# ls //查看用户siti st11 sun[root@localhost home]# cd st11 //进入到st11用户目录[root@localhost st11]# ls -a //查看目录中隐藏文件是否有 .bash_logout配置文件. .bash_logout .bashrc .config .ICEauthority .mozilla 模板 图片 下载 桌面.. .bash_profile .cache .esd_auth .local 公共 视频 文档 音乐[root@localhost st11]# vim .bash_logout //进入编辑配置文件# ~/.bash_logouthistory -c //添加命令清除历史命令clear //添加命令清除缓存~ ~~:wq //保存退出4、用户切换与提权
大多数 Linux 服务器并不建议用户直接以 root 用户进行登录。一方面可以大大减少因误操作而导致的破坏,另一方面也降低了特权密码在不安全的网络中被泄露的风险。
su命令su命令:切换用户su- 命令:切换用户后直接到用户家目录
[root@localhost /]# su siti //切换到siti用户[siti@localhost /]$ //进入siti用户[siti@localhost /]$ su - root //切换到root用户,并回到家目录密码:上一次登录:三 8月 28 11:55:19 CST 2019从 192.168.144.1pts/0 上[root@localhost ~]# //进入root用户,并在家目录下PAM认证
PAM(Pluggable Authentication Modules),是Linux系统可插拔认证模块,是一种高效而且灵活便利的用户级别的认证方式,它也是当前Linux服务器普遍使用的认证方式 。PAM 认证原理
PAM认证一般遵循的顺序:Service(服务)→PAM(配置文件)→pam_*.soPAM认证首先要确定哪一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/lib/security下)进行安全认证。- 用户访问服务器的时候,服务器的某一个服务程序把用户的请求发送到
PAM模块进行认证。不同的应用程序所对应的PAM模块也是不同的。
PAM 认证类型包括四种
认证管理:接受用户名和密码,进而对该用户的密码进行认证;
帐户管理:检查帐户是否被允许登录系统,帐号是否已经过期,帐号的登录是否有时间段的限制等;
密码管理:主要是用来修改用户的密码;
会话管理:主要是提供对会话的管理和记账。控制类型,用于 PAM 验证类型的返回结果
required验证失败时仍然继续,但返回Failrequisite验证失败则立即结束整个验证过程,返回Failsufficient验证成功则立即返回,不再继续,否则忽略结果并继续optional不用于验证,只是显示信息(通常用于session类型)
可以通过查看PAM配置文件目录来查看支持PAM认证的服务项
[root@localhost ~]# ls /etc/pam.d //查看pam配置文件目录atd gdm-pin postlogin-ac suchfn gdm-smartcard ppp sudochsh ksu remote sudo-iconfig-util liveinst runuser su-lcrond login runuser-l system-authcups other setup system-auth-acfingerprint-auth passwd smartcard-auth systemd-userfingerprint-auth-ac password-auth smartcard-auth-ac vlockgdm-autologin password-auth-ac smtp vmtoolsdgdm-fingerprint pluto smtp.postfix xservergdm-launch-environment polkit-1 sshd gdm-password postlogin sssd-shadowutils //支持认证的服务项每一个服务项目录下都存放着不同的安全认证配置文件,在/etc/security目录下同样存放在安全认证的配置文件。
[root@localhost ~]# ls /etc/securityaccess.conf console.handlers group.conf namespace.conf opasswd sepermit.confchroot.conf console.perms limits.conf namespace.d pam_env.conf time.confconsole.apps console.perms.d limits.d namespace.init pwquality.conf进入pam配置文件下目录服务项目录,查看安全认证信息。
[root@localhost ~]# vim /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每一行都是一个独立的认证过程;每一行可以区分为三个字段:auth:认证类型sufficient:控制类型pam_rook.so:PAM 模块及其参
在此模式下开启pam认证。
[root@localhost ~]# vim /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_uid //去掉此条目前# 开启pam认证auth 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.sowheel组
在Linux中wheel组就类似于一个管理员的组。在pam认证开启的情况下只有wheel组内的用户才可以通过su命令通过root用户密码进入root用户界面。如果不在wheel组内的普通用户即使有root密码也无法用su命令切换至root用户。这样也大大提高了root用户的安全性。
[root@localhost ~]# vim /etc/group //查看组...//省略部分内容...mem:x:8:kmem:x:9:wheel:x:10:sun //wheel组,现在只有sun一个用户cdrom:x:11:mail:x:12:postfixman:x:15:dialout:x:18:...//省略部分内容...[root@localhost ~]# su - sun //切换至sun用户上一次登录:三 8月 28 16:22:56 CST 2019pts/0 上[sun@localhost ~]$ su - root //切换到root用户密码:上一次登录:三 8月 28 16:23:23 CST 2019pts/0 上[root@localhost ~]# su - siti //切换到siti用户上一次登录:三 8月 28 16:23:14 CST 2019pts/0 上[siti@localhost ~]$ su - root //切换到root用户密码:su: 拒绝权限 //无法切换,拒绝访问[siti@localhost ~]$ sudo提权通过
su命令可以非常方便地切换为另一个用户,但前提条件是必须知道目标用户的登录密码。对于生产环境中的Linux服务器,每多一个人知道特权密码,其安全风险也就增加一分。这个时候可以使用sudo命令就提升执行权限。不过,需要由管理员预先进行授权,指定允许哪些用户以超级用户(或其他普通用户)的身份来执行哪些命令。在配置文件
/etc/sudoers或visudo中添加授权授权记录的基本配置格式
用户 主机名列表=命令程序列表
用户:直接授权指定的用户名,或采用"%组名"的形式(授权一个组的所有用户)。
主机:使用此配置文件的主机名称。此部分主要是方便在多个主机间共用同一份sudoers文件,一般设为 localhost 或者实际的主机名即可。
命令:允许授权的用户通过sudo方式执行的特权命令,需填写命令程序的完整路径,多个命令之间以逗号","进行分隔。
首先我们先查看wheel组中的成员,然后用不在wheel组中的用户登录系统,来执行更改网络地址的指令,看是否能够更改。
[root@localhost ~]# vim /etc/group...//省略部分内容...lp:x:7:mem:x:8:kmem:x:9:wheel:x:10:sun //只有sun一个用户cdrom:x:11:mail:x:12:postfixman:x:15:dialout:x:18:ppy:x:19:...//省略部分内容...[siti@localhost ~]$ ifconfig //查看网卡信息ens33: flags=4163 mtu 1500 inet 192.168.144.133 netmask 255.255.255.0 broadcast 192.168.144.255 inet6 fe80::a85a:c203:e2e:3f3c prefixlen 64 scopeid 0x20 ether 00:0c:29:5b:d3:a0 txqueuelen 1000 (Ethernet) RX packets 49 bytes 7062 (6.8 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 86 bytes 9493 (9.2 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...//省略部分内容...[siti@localhost ~]$ ifconfig ens33 192.168.144.138 //更改ens33网卡IP地址SIOCSIFADDR: 不允许的操作 //提示不允许操作SIOCSIFFLAGS: 不允许的操作[siti@localhost ~]$ sudo ifconfig ens33 192.168.144.138 //用sudo执行[sudo] siti 的密码:siti 不在 sudoers 文件中。此事将被报告。 //不在sudo中,无法执行[siti@localhost ~]$ ifconfig //查看网卡,看IP地址是否更改ens33: flags=4163 mtu 1500 inet 192.168.144.133 netmask 255.255.255.0 broadcast 192.168.144.255 inet6 fe80::a85a:c203:e2e:3f3c prefixlen 64 scopeid 0x20 ether 00:0c:29:5b:d3:a0 txqueuelen 1000 (Ethernet) RX packets 27 bytes 5649 (5.5 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 89 bytes 9710 (9.4 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 ...//省略部分内容... 这个时候我们来在root用户来给siti用户添加授权条目
[root@localhost ~]# vim /etc/sudoers...//省略部分内容...## Sudoers allows particular users to run various commands as## the root user, without needing the root password.#ar groups## (ie, from files, LDAP, NIS, etc) in this file - just use %groupname ## rather than USERALIAS# User_Alias ADMINS = jsmith, mikemsiti localhost = /sbin/ifconfig //输入授权记录,注意:命令路径要写全## Command Aliases...//省略部分内容...## Installation and management of software# Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum## Services@ @ :w! //强制保存,在输入:q退出 完成操作后注销系统,用siti用户登录,使用sudo提权再来更改IP地址,看是否可以更改。
[siti@localhost ~]$ sudo ifconfig ens33 192.168.144.138 //使用sudo命令提权执行命令[sudo] siti 的密码:[siti@localhost ~]$ ifconfig //查看IP是否更改ens33: flags=4163 mtu 1500 inet 192.168.144.138 netmask 255.255.255.0 broadcast 192.168.144.255 inet6 fe80::a85a:c203:e2e:3f3c prefixlen 64 scopeid 0x20 ether 00:0c:29:5b:d3:a0 txqueuelen 1000 (Ethernet) RX packets 445 bytes 39033 (38.1 KiB) RX errors 0 dropped 0 overruns 0 frame 0...//省略部分内容... //IP地址已更改 5、开关机安全控制
调整BIOS引导设置
- 将第一优先引导设备设为当前系统所在磁盘。
- 禁止其他设备引导系统,对应的设置项为
"Disabled"。 - 将BIOS安全级别改为
"setup",并设置好管理密码,以防止未授权的修改。
- 限制更改GRUB引导参数
- 使用
grub2-mkpasswd-pbkdf2生成密钥 - 修改
/etc/grub.d/00_header文件中,添加密码记录 - 生成新的
grud.cfg配置文件
- 使用
[root@localhost ~]# cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak //备份配置文件[root@localhost ~]# cp /etc/grub.d/00_header /etc/grub.d/00_header.bak //备份配置文件[root@localhost ~]# grub2-mkpasswd-pbkdf2 //制作grub的哈希密码输入口令: //输入密码Reenter password: //再次输入确认密码PBKDF2 hash of your password is grub.pbkdf2.sha512.10000.DFD8DA01D53B3B06F6023E9FF1D2C293B897FB5240235A28FD2B3633E53AEFA3920E8F04F59054995C305A00BE0EAC51381199F61351D3B75522B0D8FF9024E6.FB8C7B18FB79AC3AD20C1D5F580791DAB4C63A31DAD407E4F35DD2CBBA9C3AA6305B4B9DFBEC8743ECE211EBBC1ECD9E62241D80936E3602B17C1E1DA145394B //生成的哈希密码,复制PBKDF2 hash of your password is后面的部分[root@localhost ~]# vim /etc/grub.d/00_header //编辑grub的头部配置文件...//省略部分内容... echo "play ${GRUB_INIT_TUNE}"fiif [ "x${GRUB_BADRAM}" != "x" ] ; then echo "badram ${GRUB_BADRAM}"ficat << EOF //添加条目,设置grub密码set superusers="root"password_pbkdf2 root grub.pbkdf2.sha512.10000.DFD8DA01D53B3B06F6023E9FF1D2C293B897FB5240235A28FD2B3633E53AEFA3920E8F04F59054995C305A00BE0EAC51381199F61351D3B75522B0D8FF9024E6.FB8C7B18FB79AC3AD20C1D5F580791DAB4C63A31DAD407E4F35DD2CBBA9C3AA6305B4B9DFBEC8743ECE211EBBC1ECD9E62241D80936E3602B17C1E1DA145394B~:wq //完成后保存退出 [root@localhost ~]# grub2-mkconfig -o /boot/grub2/grub.cfg //从新制作grub配置文件Generating grub configuration file .../etc/grub.d/00_header: line 362: warning: here-document at line 359 delimited by end-of-file (wanted `EOF')Found linux image: /boot/vmlinuz-3.10.0-693.el7.x86_64Found initrd image: /boot/initramfs-3.10.0-693.el7.x86_64.imgFound linux image: /boot/vmlinuz-0-rescue-53d38298b286406e9641157795cda5dbFound initrd image: /boot/initramfs-0-rescue-53d38298b286406e9641157795cda5db.imgdone //配置完成[root@localhost ~]# init 6 //重启系统6、禁止 root 用户登录
在 Linux 系统中,login 程序会读取/etc/securetty 文件,以决定允许 root 用户从哪些终端(安全终端)登录系统。若要禁止 root 用户从指定的终端登录,只需从该文件中删除或者注释掉对应的行即可。若要禁止 root 用户从 tty5、tty6 登录,可以修改/etc/securetty 文件,将 tty5、tty6 行注释掉。
[root@localhost ~]# vim /etc/securetty...//省略部分内容...tty4#tty5#tty6tty7...//省略部分内容...~:wq 弱口令检测
在 Internet 环境中,过于简单的口令是服务器面临的最大风险。尽管大家都知道设置一个更长、更复杂的口令会更加安全,但总是会有一些用户因贪图方便而采用简单、易记的口令字串。对于任何一个承担着安全责任的管理员,及时找出这些弱口令账号是非常必要的,这样便于采取进一步的安全措施。
1、安装弱口令检测软件john
我的john安装包在我的宿主机中,通过文件共享的方式让虚拟机Linux系统查找到john软件包,并安装使用。
[root@localhost ~]# smbclient -L //192.168.144.128/ //查看宿主机共享信息Enter SAMBA\root's password: //我共享的主机没有设置密码,直接回车OS=[Windows 10 Enterprise 10240] Server=[Windows 10 Enterprise 6.3] Sharename Type Comment --------- ---- ------- ADMIN$ Disk 远程管理 C$ Disk 默认共享 IPC$ IPC 远程 IPC share Disk //john软件包存放位置 Users Disk Connection to 192.168.144.128 failed (Error NT_STATUS_RESOURCE_NAME_NOT_FOUND)NetBIOS over TCP disabled -- no workgroup available[root@localhost ~]# mount.cifs //192.168.144.128/share /mnt/tast //将目录挂载到本地目录中Password for root@//192.168.144.128/share: //回车 [root@localhost ~]# df -h文件系统 容量 已用 可用 已用% 挂载点/dev/sda2 20G 3.6G 17G 18% /devtmpfs 898M 0 898M 0% /devtmpfs 912M 0 912M 0% /dev/shmtmpfs 912M 9.0M 903M 1% /runtmpfs 912M 0 912M 0% /sys/fs/cgroup/dev/sda5 10G 37M 10G 1% /home/dev/sda1 6.0G 174M 5.9G 3% /boottmpfs 183M 12K 183M 1% /run/user/42tmpfs 183M 0 183M 0% /run/user/0//192.168.144.128/share 60G 11G 50G 18% /mnt/tast //成功挂载[root@localhost ~]# cd /mnt/tast //到挂载的目录下查看[root@localhost tast]# lsjohn-1.8.0.tar.gz //john软甲包[root@localhost tast]# tar zxvf john-1.8.0.tar.gz -C /mnt //将软件包解压到mnt目录下john-1.8.0/READMEjohn-1.8.0/doc/CHANGESjohn-1.8.0/doc/CONFIGjohn-1.8.0/doc/CONTACT...//省略部分内容...[root@localhost tast]# cd .. //回到mnt目录[root@localhost mnt]# ls //查看john-1.8.0 tast //显示解压的软件包[root@localhost mnt]# cd john-1.8.0/ //进入软件包查看信息[root@localhost john-1.8.0]# lsdoc README run src [root@localhost john-1.8.0]# cd run [root@localhost run]# ls //进入run目录查看可执行文件,这个时候是没有可执行文件的,需要我们自己来配置ascii.chr digits.chr john.conf lm_ascii.chr mailer makechr password.lst relbench[root@localhost run]# yum install gcc gcc-c++ //安装源码包,来配置john执行文件已加载插件:fastestmirror, langpacksbase | 3.6 kB 00:00:00 extras | 3.4 kB 00:00:00 updates | 3.4 kB 00:00:00 Loading mirror speeds from cached hostfile * base: centos.ustc.edu.cn * extras: mirrors.cn99.com * updates: mirrors.163.com正在解决依赖关系--> 正在检查事务---> 软件包 gcc.x86_64.0.4.8.5-36.el7_6.2 将被 安装--> 正在处理依赖关系 libgomp = 4.8.5-36.el7_6.2,它被软件包 gcc-4.8.5-3...//省略部分内容...[root@localhost run]# cd .. //回到上一层目录[root@localhost john-1.8.0]# ls //查看doc README run src[root@localhost john-1.8.0]# cd src //进入源码包 [root@localhost src]# ls //查看是否有源码信息AFS_fmt.c charset.h DES_std.c john.asm MD5_fmt.c pa-risc.h signals.c unshadow.calpha.h common.c DES_std.h john.c MD5_std.c path.c signals.h vax.halpha.S common.h detect.c john.com MD5_std.h path.h single.c wordlist.cbatch.c compiler.c dummy.c john.h memory.c ppc32alt.h single.h wordlist.h...//省略部分内容...[root@localhost src]# make linux-x86-64 //在源码包目录下直接编译ln -sf x86-64.h arch.hmake ../run/john ../run/unshadow ../run/unafs ../run/unique \ JOHN_OBJS="DES_fmt.o DES_std.o DES_bs.o DES_bs_b.o BSDI_fmt.o MD5_fmt.o MD5_std.o BF_fmt.o BF_std.o AFS_fmt.o LM_fmt.o trip_fmt.o dummy.o batch.o bench.o charset.o common.o compiler.o config.o cracker.o crc32.o external.o formats.o getopt.o idle.o inc.o john.o list.o loader.o logger.o math.o memory.o misc.o options.o params.o path.o recovery.o rpp.o rules.o signals.o single.o status.o tty.o wordlist.o unshadow.o unafs.o unique.o c3_fmt.o x86-64.o" \ CFLAGS="-c -Wall -Wdeclaration-after-statement -O2 -fomit-frame-pointer -DHAVE_CRYPT" \ LDFLAGS="-s -lcrypt"make[1]: 进入目录"/mnt/john-1.8.0/src"gcc -c -Wall -Wdeclaration-after-statement -O2 -fomit-frame-pointer -DHAVE_CRYPT -funroll-loops DES_fmt.c...//省略部分内容...rm -f ../run/unshadowln -s john ../run/unshadowrm -f ../run/unafsln -s john ../run/unafsrm -f ../run/uniqueln -s john ../run/uniquemake[1]: 离开目录"/mnt/john-1.8.0/src" //编译完成[root@localhost src]# cd /mnt/john-1.8.0/run/ //进入run目录[root@localhost run]# ls //查看可执行脚本文件是否出现ascii.chr john lm_ascii.chr makechr relbench uniquedigits.chr john.conf mailer password.lst unafs unshadow//目录下成功编译出john执行脚本文件,这样就成功完成了john的安装2、利用john软件检测弱口令
[root@localhost ~]# cd /mnt/john-1.8.0/run //进入run目录[root@localhost run]# ls //查看执行确定可执行脚本ascii.chr john lm_ascii.chr makechr relbench uniquedigits.chr john.conf mailer password.lst unafs unshadow[root@localhost run]# ./john /etc/shadow //执行john软件检查用户密码存放目录shadow目录Loaded 2 password hashes with 2 different salts (crypt, generic crypt(3) [?/64])Press 'q' or Ctrl-C to abort, almost any other key for status123123 (root) //成功检测出用户弱口令密码123123 (sun)2g 0:00:00:15 100% 2/3 0.1332g/s 420.1p/s 452.0c/s 452.0C/s leslie..bostonUse the "--show" option to display all of the cracked passwords reliablySession completed网络端口扫描
利用nmap工具检测网络连接的端口,可以找出网络中不可控的应用服务,及时关闭不安全的服务,
减小安全风险。
1、安装nmap工具
[root@localhost run]# yum install nmap -y //可以直接用yum安装工具就可以了已加载插件:fastestmirror, langpacksLoading mirror speeds from cached hostfile * base: centos.ustc.edu.cn * extras: centos.ustc.edu.cn * updates: centos.ustc.edu.cn正在解决依赖关系--> 正在检查事务---> 软件包 nmap.x86_64.2.6.40-16.el7 将被 安装--> 正在处理依赖关系 nmap-ncat = 2:6.40-16.el7,它被软件包 2:nmap-6.40-16.el7.x86_64 需要--> 正在检查事务...//省略部分内容...2、是使用你nmap工具检测网络端口
命令格式
nmap [扫描类型] [选项] <扫描目标...>常用的扫描类型
-sS:TCP SYN扫描,只向目标发出SYN数据包,如果收到SYN/ACK响应包就认为目标端口正在监听,并立即断开连接;否则认为目标端口并未开放。-sT:TCP连接扫描,这是完整的TCP扫描方式,用来建立一个TCP连接,如果成功则认为目标端口正在监听服务,否则认为目标端口并未开放。-sF:TCP FIN扫描,开放的端口会忽略这种数据包,关闭的端口会回应RST数据包。-sU:UDP扫描:探测目标主机提供哪些UDP服务,UDP扫描的速度会比较慢。-sP:ICMP扫描:类似于ping检测,快速判断目标主机是否存活,不做其他扫描。-P0:跳过ping检测:这种方式认为所有的目标主机是存活的,当对方不响应ICMP请求时,使用这种方式可以避免因无法 ping 通而放弃扫描。
[root@localhost run]# nmap -sT 127.0.0.1 //检测本地开放的TCP端口Starting Nmap 6.40 ( http://nmap.org ) at 2019-09-02 03:19 CSTNmap scan report for localhost (127.0.0.1)Host is up (0.00082s latency).Not shown: 996 closed portsPORT STATE SERVICE22/tcp open ssh25/tcp open smtp111/tcp open rpcbind631/tcp open ippNmap done: 1 IP address (1 host up) scanned in 0.06 seconds[root@localhost run]# nmap -sU 127.0.0.1 //检测本地开放的TCP端口Starting Nmap 6.40 ( http://nmap.org ) at 2019-09-02 03:21 CSTNmap scan report for localhost (127.0.0.1)Host is up (0.000049s latency).Not shown: 997 closed portsPORT STATE SERVICE68/udp open|filtered dhcpc111/udp open rpcbind5353/udp open|filtered zeroconfNmap done: 1 IP address (1 host up) scanned in 48.95 seconds[root@localhost run]# nmap -sP 192.168.31.12 //检测地址主机是否存活Starting Nmap 6.40 ( http://nmap.org ) at 2019-09-02 03:24 CSTNmap scan report for 192.168.31.12Host is up (0.00067s latency).Nmap done: 1 IP address (1 host up) scanned in 0.17 seconds[root@localhost run]# nmap -sT 192.168.31.12 //检测目标地址主机开放的TCP端口Starting Nmap 6.40 ( http://nmap.org ) at 2019-09-02 03:30 CSTNmap scan report for 192.168.31.12Host is up (0.0019s latency).Not shown: 995 filtered portsPORT STATE SERVICE135/tcp open msrpc139/tcp open netbios-ssn443/tcp open https445/tcp open microsoft-ds902/tcp open iss-realsecureNmap done: 1 IP address (1 host up) scanned in 9.32 seconds谢谢观看!!!