手機版
你好,游客 登錄 注冊
背景:
閱讀新聞

CentOS 7中系統安全及應用詳述

[日期:2019-10-10] 來源:Linux社區  作者:SiceLc [字體: ]

賬戶安全控制

用戶賬號是計算機使用者的身份憑證或標識,每個要訪問系統資源的人,必須憑借其用戶賬號才能進入計算機。

基本安全措施

1、系統賬號清理

  • 將非登錄用戶的shell設為/sbin/nologin

  • 刪除無用的賬號

  • 鎖定長期不使用的賬號

    chattr +i 鎖定文件

    chattr -i 解鎖文件

    lsattr 查看文件鎖定情況

  • 我們可以通過鎖定passwdshadow文件阻止創建新的用戶
[[email protected] ~]# chattr +i /etc/passwd /etc/shadow  //鎖定passwd、shadow文件
[[email protected] ~]# lsattr /etc/passwd /etc/shadow    //查看鎖定情況
----i----------- /etc/passwd
----i----------- /etc/shadow   //文件已鎖定
[[email protected] ~]# useradd siti    //創建用戶
useradd:無法打開 /etc/passwd       //無法打開文件,用戶無法創建
[[email protected] ~]# chattr -i /etc/passwd /etc/shadow   //解鎖文件
[[email protected] ~]# lsattr /etc/passwd /etc/shadow     //查看文件鎖定信息
---------------- /etc/passwd                   //文件已解鎖
---------------- /etc/shadow
[[email protected] home]# useradd st11             //創建用戶
[[email protected] home]# echo "123123" | passwd --stdin st11  //設置用戶密碼
更改用戶 st11 的密碼 。
passwd:所有的身份驗證令牌已經成功更新。          //設置成功

2、密碼安全控制

  • 設置密碼有效期
    • vim /etc/login.defs配置文件中設置。適用于新建用戶
    • 用過命令chage -M [密碼有效期] [用戶名]設置用戶密碼有效期
[[email protected] 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/HsylLi1EuARoWzc8EgBbqN64T0DmyCfGsowWGFuCKDubUkBIxh1TM69Vv0:18117:0:99999:7:::   //sun用戶密碼有效期為99999
st11:$6$ZGozUglO$ymyQEtkL//rzx8UdgDcy1yd3WVLiET9K6xrC.dT0lUnNH17dzkuSxkqepAC5plPlad5VWrewJOkAKJxdmiYLZ.:18136:0:99999:7:::        //st11用戶密碼有效期為99999
:q                             //退出

[[email protected] 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保存退出

[[email protected] ~]# useradd siti      //創建用戶
[[email protected] ~]# passwd siti       //設置用戶密碼
更改用戶 siti 的密碼 。
新的 密碼:
無效的密碼: 密碼少于 8 個字符
重新輸入新的 密碼:
passwd:所有的身份驗證令牌已經成功更新。

[[email protected] ~]# 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/HsylLi1EuARoWzc8EgBbqN64T0DmyCfGsowWGFuCKDubUkBIxh1TM69Vv0: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天
[[email protected] ~]# chage -M 30 st11     //更改st11用戶密碼有效期為30天
[[email protected] ~]# 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/HsylLi1EuARoWzc8EgBbqN64T0DmyCfGsowWGFuCKDubUkBIxh1TM69Vv0: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 用戶名:強制用戶在下次登錄時更改密碼

    使用這條命令后,當指定用戶登錄設置密碼時,設置的密碼是有條件的,就是設置的密碼不允許用連續的字母和阿拉伯數字設置密碼,否則無法重新設置密,因此此命令不建議使用。

[[email protected] ~]# chage -d -0 st11

CentOS 7中系統安全及應用詳述CentOS 7中系統安全及應用詳述CentOS 7中系統安全及應用詳述CentOS 7中系統安全及應用詳述

3、歷史命令的限制

  • 歷史命令查看與清除

    history:查看歷史命令

    history -c:清除歷史命令

[[email protected] ~]# 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
[[email protected] ~]# history -c    //清除歷史命令
[[email protected] ~]# history       //查看歷史命令
    1  history
  • 減少記錄的命令條數

    vim /etc/profile :系統環境變量配置文件今日其中更改歷史命令記錄條數

    source /etc/profile:使更改的配置生效

[[email protected] ~]# vim /etc/profile

CentOS 7中系統安全及應用詳述CentOS 7中系統安全及應用詳述

[[email protected] ~]# history                //查看歷史命令,這個時候設置并沒有生效
    1  history
    2  vim /etc/profile
    3  history
[[email protected] ~]# source /etc/profile   //輸入命令,使更改的配置生效
[[email protected] ~]# history               //再次查看歷史命令
    4  history                            //只顯示一條命令
  • 閑置自動注銷

    vim /etc/profile 配置文件中編輯添加閑置注銷條目,并設定自動注銷時間

    export TMOUT=時間(單位:秒):設定限制注銷時間條目

[[email protected] ~]# 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                           //保存退出

[[email protected] ~]# source /etc/profile   //輸入命令,使更添加的條目生效

設置完成后系統將在60秒后自動注銷。注銷時間可以根據自己的操作習慣設置。

  • 注銷時自動清空命令歷史

    vim ~/.basf_logout:用戶環境變量配置文件

在用戶環境變量文件中添加history -c、clear命令,可以使用戶注銷時自動清除歷史命令與緩存,提高安全性。

[[email protected] ~]# cd /home               //進入用戶家目錄
[[email protected] home]# ls                  //查看用戶
siti  st11  sun
[[email protected] home]# cd st11           //進入到st11用戶目錄
[[email protected] st11]# ls -a               //查看目錄中隱藏文件是否有 .bash_logout配置文件
.   .bash_logout   .bashrc  .config    .ICEauthority  .mozilla  模板  圖片  下載  桌面
..  .bash_profile  .cache   .esd_auth  .local         公共      視頻  文檔  音樂
[[email protected] st11]# vim .bash_logout              //進入編輯配置文件
# ~/.bash_logout
history -c            //添加命令清除歷史命令
clear                 //添加命令清除緩存
~                                                                                         
~
~
:wq             //保存退出

4、用戶切換與提權

大多數 Linux 服務器并不建議用戶直接以 root 用戶進行登錄。一方面可以大大減少因誤操作而導致的破壞,另一方面也降低了特權密碼在不安全的網絡中被泄露的風險。

  • su 命令
    • su命令:切換用戶
    • su - 命令:切換用戶后直接到用戶家目錄
[[email protected] /]# su siti                //切換到siti用戶
[[email protected] /]$                        //進入siti用戶
[[email protected] /]$ su - root              //切換到root用戶,并回到家目錄
密碼:
上一次登錄:三 8月 28 11:55:19 CST 2019從 192.168.144.1pts/0 上
[[email protected] ~]#                     //進入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 類型)
      CentOS 7中系統安全及應用詳述

可以通過查看PAM配置文件目錄來查看支持PAM認證的服務項

[[email protected] ~]# 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目錄下同樣存放在安全認證的配置文件。

[[email protected] ~]# 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配置文件下目錄服務項目錄,查看安全認證信息。

[[email protected] ~]# 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.soPAM 模塊及其參

在此模式下開啟pam認證。

[[email protected] ~]# 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用戶的安全性。

[[email protected] ~]# 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:
...//省略部分內容...
[[email protected] ~]# su - sun                    //切換至sun用戶
上一次登錄:三 8月 28 16:22:56 CST 2019pts/0 上
[[email protected] ~]$ su - root                    //切換到root用戶
密碼:
上一次登錄:三 8月 28 16:23:23 CST 2019pts/0 上
[[email protected] ~]# su - siti                  //切換到siti用戶
上一次登錄:三 8月 28 16:23:14 CST 2019pts/0 上
[[email protected] ~]$ su - root                   //切換到root用戶
密碼:
su: 拒絕權限                                    //無法切換,拒絕訪問
[[email protected] ~]$       
  • sudo提權

    通過 su 命令可以非常方便地切換為另一個用戶,但前提條件是必須知道目標用戶的登錄密碼。對于生產環境中的 Linux 服務器,每多一個人知道特權密碼,其安全風險也就增加一分。這個時候可以使用 sudo 命令就提升執行權限。不過,需要由管理員預先進行授權,指定允許哪些用戶以超級用戶(或其他普通用戶)的身份來執行哪些命令。

    在配置文件/etc/sudoersvisudo 中添加授權

    授權記錄的基本配置格式

    用戶 主機名列表=命令程序列表

    用戶:直接授權指定的用戶名,或采用“%組名”的形式(授權一個組的所有用戶)。
    主機:使用此配置文件的主機名稱。此部分主要是方便在多個主機間共用同一份 sudoers 文件,一般設為 localhost 或者實際的主機名即可。
    命令:允許授權的用戶通過 sudo 方式執行的特權命令,需填寫命令程序的完整路徑,多個命令之間以逗號“,”進行分隔。

首先我們先查看wheel組中的成員,然后用不在wheel組中的用戶登錄系統,來執行更改網絡地址的指令,看是否能夠更改。

[[email protected] ~]# 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:
...//省略部分內容...
[[email protected] ~]$ 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
...//省略部分內容...
[[email protected] ~]$ ifconfig ens33 192.168.144.138   //更改ens33網卡IP地址
SIOCSIFADDR: 不允許的操作               //提示不允許操作
SIOCSIFFLAGS: 不允許的操作
[[email protected] ~]$ sudo ifconfig ens33 192.168.144.138  //用sudo執行
[sudo] siti 的密碼:
siti 不在 sudoers 文件中。此事將被報告。      //不在sudo中,無法執行
[[email protected] ~]$ 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用戶添加授權條目

[[email protected] ~]# 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地址,看是否可以更改。

[[email protected] ~]$ sudo ifconfig ens33 192.168.144.138   //使用sudo命令提權執行命令
[sudo] siti 的密碼:
[[email protected] ~]$ 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地址已更改

5、開關機安全控制

  • 調整BIOS引導設置

    • 將第一優先引導設備設為當前系統所在磁盤。
    • 禁止其他設備引導系統,對應的設置項為“Disabled”
    • 將BIOS安全級別改為“setup”,并設置好管理密碼,以防止未授權的修改。
  • 限制更改GRUB引導參數
    • 使用grub2-mkpasswd-pbkdf2生成密鑰
    • 修改/etc/grub.d/00_header文件中,添加密碼記錄
    • 生成新的grud.cfg配置文件
[[email protected] ~]# cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak  //備份配置文件
[[email protected] ~]# cp /etc/grub.d/00_header /etc/grub.d/00_header.bak   //備份配置文件
[[email protected] ~]# grub2-mkpasswd-pbkdf2   //制作grub的哈希密碼
輸入口令:                              //輸入密碼
Reenter password:                   //再次輸入確認密碼
PBKDF2 hash of your password is grub.pbkdf2.sha512.10000.DFD8DA01D53B3B06F6023E9FF1D2C293B897FB5240235A28FD2B3633E53AEFA3920E8F04F59054995C305A00BE0EAC51381199F61351D3B75522B0D8FF9024E6.FB8C7B18FB79AC3AD20C1D5F580791DAB4C63A31DAD407E4F35DD2CBBA9C3AA6305B4B9DFBEC8743ECE211EBBC1ECD9E62241D80936E3602B17C1E1DA145394B             //生成的哈希密碼,復制PBKDF2 hash of your password is后面的部分
[[email protected] ~]# 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         //完成后保存退出   
[[email protected] ~]# 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                //配置完成
[[email protected] ~]# init 6    //重啟系統

CentOS 7中系統安全及應用詳述CentOS 7中系統安全及應用詳述CentOS 7中系統安全及應用詳述

6、禁止 root 用戶登錄

Linux 系統中,login 程序會讀取/etc/securetty 文件,以決定允許 root 用戶從哪些終端(安全終端)登錄系統。若要禁止 root 用戶從指定的終端登錄,只需從該文件中刪除或者注釋掉對應的行即可。若要禁止 root 用戶從 tty5、tty6 登錄,可以修改/etc/securetty 文件,將 tty5tty6 行注釋掉。

[[email protected] ~]# vim /etc/securetty

...//省略部分內容...
tty4
#tty5
#tty6
tty7
...//省略部分內容...
~
:wq     

弱口令檢測

Internet 環境中,過于簡單的口令是服務器面臨的最大風險。盡管大家都知道設置一個更長、更復雜的口令會更加安全,但總是會有???些用戶因貪圖方便而采用簡單、易記的口令字串。對于任何一個承擔著安全責任的管理員,及時找出這些弱口令賬號是非常必要的,這樣便于采取進一步的安全措施。

1、安裝弱口令檢測軟件john

我的john安裝包在我的宿主機中,通過文件共享的方式讓虛擬機Linux系統查找到john軟件包,并安裝使用。

[[email protected] ~]# 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
[[email protected] ~]# mount.cifs //192.168.144.128/share /mnt/tast   //將目錄掛載到本地目錄中
Password for [email protected]//192.168.144.128/share:         //回車 
[[email protected] ~]# 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   //成功掛載
[[email protected] ~]# cd /mnt/tast      //到掛載的目錄下查看
[[email protected] tast]# ls
john-1.8.0.tar.gz          //john軟甲包
[[email protected] 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
...//省略部分內容...
[[email protected] tast]# cd ..    //回到mnt目錄
[[email protected] mnt]# ls     //查看
john-1.8.0  tast          //顯示解壓的軟件包
[[email protected] mnt]# cd john-1.8.0/    //進入軟件包查看信息
[[email protected] john-1.8.0]# ls
doc  README  run  src       
[[email protected] john-1.8.0]# cd run    
[[email protected] run]# ls  //進入run目錄查看可執行文件,這個時候是沒有可執行文件的,需要我們自己來配置
ascii.chr  digits.chr  john.conf  lm_ascii.chr  mailer  makechr  password.lst  relbench
[[email protected] 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
...//省略部分內容...
[[email protected] run]# cd ..      //回到上一層目錄
[[email protected] john-1.8.0]# ls     //查看
doc  README  run  src
[[email protected] john-1.8.0]# cd src   //進入源碼包  
[[email protected] 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
...//省略部分內容...
[[email protected] 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”           //編譯完成
[[email protected] src]# cd /mnt/john-1.8.0/run/    //進入run目錄
[[email protected] run]# ls      //查看可執行腳本文件是否出現
ascii.chr   john       lm_ascii.chr  makechr       relbench  unique
digits.chr  john.conf  mailer        password.lst  unafs     unshadow
//目錄下成功編譯出john執行腳本文件,這樣就成功完成了john的安裝

2、利用john軟件檢測弱口令

[[email protected] ~]# cd /mnt/john-1.8.0/run       //進入run目錄
[[email protected] run]# ls                         //查看執行確定可執行腳本
ascii.chr   john       lm_ascii.chr  makechr       relbench  unique
digits.chr  john.conf  mailer        password.lst  unafs     unshadow
[[email protected] 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工具檢測網絡連接的端口,可以找出網絡中不可控的應用服務,及時關閉不安全的服務,
減小安全風險。

1、安裝nmap工具

[[email protected] 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 需要
--> 正在檢查事務
...//省略部分內容...

2、是使用你nmap工具檢測網絡端口

  • 命令格式

    nmap [掃描類型] [選項] &lt;掃描目標...&gt;

  • 常用的掃描類型

    -sSTCP SYN 掃描,只向目標發出 SYN 數據包,如果收到 SYN/ACK 響應包就認為目標端口正在監聽,并立即斷開連接;否則認為目標端口并未開放。

    -sTTCP 連接掃描,這是完整的 TCP 掃描方式,用來建立一個 TCP 連接,如果成功則認為目標端口正在監聽服務,否則認為目標端口并未開放。

    -sFTCP FIN 掃描,開放的端口會忽略這種數據包,關閉的端口會回應 RST 數據包。

    -sUUDP 掃描:探測目標主機提供哪些 UDP 服務,UDP 掃描的速度會比較慢。

    -sPICMP 掃描:類似于 ping 檢測,快速判斷目標主機是否存活,不做其他掃描。

    -P0:跳過 ping 檢測:這種方式認為所有的目標主機是存活的,當對方不響應 ICMP請求時,使用這種方式可以避免因無法 ping 通而放棄掃描。

[[email protected] 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
[[email protected] 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
[[email protected] 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
[[email protected] 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

謝謝閱讀。

linux
相關資訊       CentOS 7安全 
本文評論   查看全部評論 (0)
表情: 表情 姓名: 字數

       

評論聲明
  • 尊重網上道德,遵守中華人民共和國的各項有關法律法規
  • 承擔一切因您的行為而直接或間接導致的民事或刑事法律責任
  • 本站管理人員有權保留或刪除其管轄留言中的任意內容
  • 本站有權在網站內轉載或引用您的評論
  • 參與本評論即表明您已經閱讀并接受上述條款
彩票平台