您好,登錄后才能下訂單哦!
用戶賬號是計算機使用者的身份憑證或標識,每個要訪問系統資源的人,必須憑借其用戶賬號才能進入計算機。
將非登錄用戶的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:所有的身份驗證令牌已經成功更新。 //設置成功
vim /etc/login.defs
配置文件中設置。適用于新建用戶chage -M [密碼有效期] [用戶名]
設置用戶密碼有效期[root@localhost home]# vim /etc/shadow //查看所用戶密碼信息
root:$6$DErFk.wqtcw55ui.$sbinnItTXo1wtxsOmThAEwBXHluuCC04as2tSUvoCEdDTHMTumpl/VcjH6KCYkJh0xc3KqLdcTq2NTe3K7nTi1::0:99999:7::: //root用戶密碼有效期為99999
bin:*:17110:0:99999:7:::
daemon:*:17110:0:99999:7:::
...//省略部分內容...
tcpdump:!!:18117::::::
sun:$6$g2hmfiVD2XG/zY37$53BhBT.2ILsuF22KZ2BRaE/6hmG/HsylLi1EuARoWzc8EgBbqN64T0DmyCfGsowWGFuCKDubUkBIxh2TM69Vv0:18117:0:99999:7::: //sun用戶密碼有效期為99999
st11:$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為30
PASS_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
歷史命令查看與清除
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
fi
done
unset i
unset -f pathmunge
export 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_logout
history -c //添加命令清除歷史命令
clear //添加命令清除緩存
~
~
~
:wq //保存退出
大多數 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_*.so
PAM
認證首先要確定哪一項服務,然后加載相應的PAM
的配置文件(位于/etc/pam.d
下),最后調用認證文件(位于/lib/security
下)進行安全認證。PAM
模塊進行認證。不同的應用程序所對應的 PAM
模塊也是不同的。PAM 認證類型包括四種
認證管理:接受用戶名和密碼,進而對該用戶的密碼進行認證;
帳戶管理:檢查帳戶是否被允許登錄系統,帳號是否已經過期,帳號的登錄是否有時間段的限制等;
密碼管理:主要是用來修改用戶的密碼;
會話管理:主要是提供對會話的管理和記賬。
控制類型,用于 PAM 驗證類型的返回結果
required
驗證失敗時仍然繼續,但返回 Fail
requisite
驗證失敗則立即結束整個驗證過程,返回 Fail
sufficient
驗證成功則立即返回,不再繼續,否則忽略結果并繼續optional
不用于驗證,只是顯示信息(通常用于 session
類型)可以通過查看PAM
配置文件目錄來查看支持PAM認證的服務項
[root@localhost ~]# ls /etc/pam.d //查看pam配置文件目錄
atd gdm-pin postlogin-ac su
chfn gdm-smartcard ppp sudo
chsh ksu remote sudo-i
config-util liveinst runuser su-l
crond login runuser-l system-auth
cups other setup system-auth-ac
fingerprint-auth passwd smartcard-auth systemd-user
fingerprint-auth-ac password-auth smartcard-auth-ac vlock
gdm-autologin password-auth-ac smtp vmtoolsd
gdm-fingerprint pluto smtp.postfix xserver
gdm-launch-environment polkit-1 sshd
gdm-password postlogin sssd-shadowutils //支持認證的服務項
每一個服務項目錄下都存放著不同的安全認證配置文件,在/etc/security
目錄下同樣存放在安全認證的配置文件。
[root@localhost ~]# ls /etc/security
access.conf console.handlers group.conf namespace.conf opasswd sepermit.conf
chroot.conf console.perms limits.conf namespace.d pam_env.conf time.conf
console.apps console.perms.d limits.d namespace.init pwquality.conf
進入pam
配置文件下目錄服務項目錄,查看安全認證信息。
[root@localhost ~]# vim /etc/pam.d/su
#%PAM-1.0
auth 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
auth substack system-auth
auth include postlogin
account sufficient pam_succeed_if.so uid = 0 use_uid quiet
account include system-auth
password include system-auth
session include system-auth
session include postlogin
session optional pam_xauth.so
每一行都是一個獨立的認證過程;每一行可以區分為三個字段:auth
:認證類型sufficient
:控制類型pam_rook.so
:PAM
模塊及其參
在此模式下開啟pam認證。
[root@localhost ~]# vim /etc/pam.d/su
#%PAM-1.0
auth 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-auth
auth include postlogin
account sufficient pam_succeed_if.so uid = 0 use_uid quiet
account include system-auth
password include system-auth
session include system-auth
session include postlogin
session optional pam_xauth.so
wheel組
在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:postfix
man: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:postfix
man:x:15:
dialout:x:18:
ppy:x:19:
...//省略部分內容...
[siti@localhost ~]$ ifconfig //查看網卡信息
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> 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<link>
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 0
lo: flags=73<UP,LOOPBACK,RUNNING> 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<UP,BROADCAST,RUNNING,MULTICAST> 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<link>
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 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
...//省略部分內容...
這個時候我們來在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, mikem
siti 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<UP,BROADCAST,RUNNING,MULTICAST> 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<link>
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地址已更改
調整BIOS引導設置
“Disabled”
。“setup”
,并設置好管理密碼,以防止未授權的修改。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}"
fi
if [ "x${GRUB_BADRAM}" != "x" ] ; then
echo "badram ${GRUB_BADRAM}"
fi
cat << 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_64
Found initrd image: /boot/initramfs-3.10.0-693.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-53d38298b286406e9641157795cda5db
Found initrd image: /boot/initramfs-0-rescue-53d38298b286406e9641157795cda5db.img
done //配置完成
[root@localhost ~]# init 6 //重啟系統
在 Linux
系統中,login
程序會讀取/etc/securetty
文件,以決定允許 root
用戶從哪些終端(安全終端)登錄系統。若要禁止 root
用戶從指定的終端登錄,只需從該文件中刪除或者注釋掉對應的行即可。若要禁止 root
用戶從 tty5
、tty6 登錄,可以修改/etc/securetty
文件,將 tty5
、tty6
行注釋掉。
[root@localhost ~]# vim /etc/securetty
...//省略部分內容...
tty4
#tty5
#tty6
tty7
...//省略部分內容...
~
:wq
在 Internet
環境中,過于簡單的口令是服務器面臨的最大風險。盡管大家都知道設置一個更長、更復雜的口令會更加安全,但總是會有一些用戶因貪圖方便而采用簡單、易記的口令字串。對于任何一個承擔著安全責任的管理員,及時找出這些弱口令賬號是非常必要的,這樣便于采取進一步的安全措施。
我的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% /dev
tmpfs 912M 0 912M 0% /dev/shm
tmpfs 912M 9.0M 903M 1% /run
tmpfs 912M 0 912M 0% /sys/fs/cgroup
/dev/sda5 10G 37M 10G 1% /home
/dev/sda1 6.0G 174M 5.9G 3% /boot
tmpfs 183M 12K 183M 1% /run/user/42
tmpfs 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]# ls
john-1.8.0.tar.gz //john軟甲包
[root@localhost tast]# tar zxvf john-1.8.0.tar.gz -C /mnt //將軟件包解壓到mnt目錄下
john-1.8.0/README
john-1.8.0/doc/CHANGES
john-1.8.0/doc/CONFIG
john-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]# ls
doc 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, langpacks
base | 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.c
alpha.h common.c DES_std.h john.c MD5_std.c path.c signals.h vax.h
alpha.S common.h detect.c john.com MD5_std.h path.h single.c wordlist.c
batch.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.h
make ../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/unshadow
ln -s john ../run/unshadow
rm -f ../run/unafs
ln -s john ../run/unafs
rm -f ../run/unique
ln -s john ../run/unique
make[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 unique
digits.chr john.conf mailer password.lst unafs unshadow
//目錄下成功編譯出john執行腳本文件,這樣就成功完成了john的安裝
[root@localhost ~]# cd /mnt/john-1.8.0/run //進入run目錄
[root@localhost run]# ls //查看執行確定可執行腳本
ascii.chr john lm_ascii.chr makechr relbench unique
digits.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 status
123123 (root) //成功檢測出用戶弱口令密碼
123123 (sun)
2g 0:00:00:15 100% 2/3 0.1332g/s 420.1p/s 452.0c/s 452.0C/s leslie..boston
Use the "--show" option to display all of the cracked passwords reliably
Session completed
利用nmap
工具檢測網絡連接的端口,可以找出網絡中不可控的應用服務,及時關閉不安全的服務,
減小安全風險。
[root@localhost run]# yum install nmap -y //可以直接用yum安裝工具就可以了
已加載插件:fastestmirror, langpacks
Loading 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 需要
--> 正在檢查事務
...//省略部分內容...
命令格式
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 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00082s latency).
Not shown: 996 closed ports
PORT STATE SERVICE
22/tcp open ssh
25/tcp open smtp
111/tcp open rpcbind
631/tcp open ipp
Nmap 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 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000049s latency).
Not shown: 997 closed ports
PORT STATE SERVICE
68/udp open|filtered dhcpc
111/udp open rpcbind
5353/udp open|filtered zeroconf
Nmap 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 CST
Nmap scan report for 192.168.31.12
Host 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 CST
Nmap scan report for 192.168.31.12
Host is up (0.0019s latency).
Not shown: 995 filtered ports
PORT STATE SERVICE
135/tcp open msrpc
139/tcp open netbios-ssn
443/tcp open https
445/tcp open microsoft-ds
902/tcp open iss-realsecure
Nmap done: 1 IP address (1 host up) scanned in 9.32 seconds
謝謝觀看!!!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。