盤(pán)點(diǎn)|22個(gè)基本的Linux安全命令-創(chuàng)新互聯(lián)

盤(pán)點(diǎn) | 22個(gè)基本的Linux安全命令

站在用戶的角度思考問(wèn)題,與客戶深入溝通,找到澤州網(wǎng)站設(shè)計(jì)與澤州網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類(lèi)型包括:網(wǎng)站建設(shè)、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、主機(jī)域名、網(wǎng)絡(luò)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋澤州地區(qū)。

如果您正在關(guān)注Linux系統(tǒng)的安全性,那么這些命令是您必須知道的。

Linux系統(tǒng)的安全性有很多問(wèn)題——從設(shè)置帳戶到確保合法用戶的權(quán)限沒(méi)有超出工作所需。本文將介紹用于Linux系統(tǒng)日常工作的一些最基本的安全命令。

sudo

使用sudo運(yùn)行特權(quán)命令——而不是將用戶切換到根用戶,是一種必不可少的良好實(shí)踐,因?yàn)樗兄诖_保只在需要時(shí)使用根特權(quán),并限制錯(cuò)誤的影響。您對(duì)sudo命令的訪問(wèn)取決于/etc/sudoers和/etc/group文件中的設(shè)置。

$ sudo adduser shark
Adding user `shark' ...
Adding new group `shark' (1007) ...
Adding new user `shark' (1007) with group `shark' ...
Creating home directory `/home/shark' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for shark
Enter the new value, or press ENTER for the default
        Full Name []: shark
        Room Number []:
        Work Phone []:
        Home Phone []:
        Other []:
Is the information correct? [Y/n] Y

例如,如果您運(yùn)行sudo并詢(xún)問(wèn)您是誰(shuí),您將得到以root身份運(yùn)行該命令的確認(rèn)。

$ sudo whoami
root

如果要為用戶管理sudo設(shè)置,還需要熟悉visudo命令。

visudo

visudo命令允許您在文本編輯器中打開(kāi)文件并檢查語(yǔ)法更改,從而更改/etc/sudoers文件。使用“sudo visudo”運(yùn)行命令,并確保理解語(yǔ)法。特權(quán)可以由用戶或組分配。在大多數(shù)Linux系統(tǒng)上,/etc/sudoers文件已經(jīng)配置了如下所示的組,這些組允許將特權(quán)分配給在/etc/group文件中設(shè)置的組。在這些情況下,您根本不需要使用visudo命令—只需熟悉以這種方式授予根特權(quán)的組,并更新/etc/group文件。

%admin ALL=(ALL) ALL
%sudo ALL=(ALL:ALL) ALL
%wheel ALL=(ALL:ALL) ALL

注意組名前面有%符號(hào)。

您可以像這樣在/etc/group文件中顯示提供sudo訪問(wèn)的組,因?yàn)樗赡苁沁@些文件之一:

$ egrep "admin|sudo|wheel" /etc/group
sudo:x:27:shs,jdoe

給某人sudo特權(quán)最簡(jiǎn)單的方法是將他們添加到/etc/group.中的授權(quán)組中但是,這意味著它們可以作為根用戶運(yùn)行任何命令。如果你想讓一些用戶對(duì)有限的命令集擁有根權(quán)限(例如,添加和刪除帳戶),你可以定義你想讓他們能夠通過(guò)命令別名運(yùn)行的命令:

Cmnd_Alias ACCT_CMDS = /usr/sbin/adduser, /usr/sbin/deluser

然后讓用戶或組能夠運(yùn)行這些命令使用sudo命令與這些命令之一:

nemo ALL=(ALL) ACCT_CMDS
%techs  ALL=(ALL:ALL) ACCT_CMDS

第一行允許用戶“nemo”使用sudo運(yùn)行twp (adduser和deluser)命令,而第二行將相同的特權(quán)分配給/etc/group文件中“tech”組中的任何人。

who和w

who和w命令將向您顯示誰(shuí)已經(jīng)登錄到系統(tǒng)中,但是w將顯示更多信息,例如登錄位置、登錄時(shí)間和空閑時(shí)間。

$ w
 18:03:35 up 9 days, 22:48,  2 users,  load average: 0.00, 0.00, 0.00
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
joe      tty2     /dev/tty2        27Apr18  9days  7:34   0.09s /usr/lib/x86_64-linux
shs      pts/1    192.168.0.15     09:50    7.00s  0.28s  0.00s w

如果不喜歡運(yùn)行visudo命令時(shí)調(diào)用的默認(rèn)編輯器,請(qǐng)使用“sudo update-alternatives - config editor”命令。它將提供許多編輯器作為選項(xiàng)并更改您的設(shè)置。

last

last命令顯示了用戶最近的登錄信息,當(dāng)您試圖跟蹤更改或其他活動(dòng)時(shí),它通常非常有用。

$ last nemo
nemo  pts/1   192.168.0.15   Wed May  2 07:01 - 08:29  (01:27)
wtmp begins Tue May  1 10:21:35 2018

尼莫有一段時(shí)間沒(méi)有登錄了。他可能在度假(也許是釣魚(yú)?)或者剛剛離開(kāi)公司。這類(lèi)信息可以幫助您決定是否需要對(duì)此進(jìn)行后續(xù)工作。

find

find命令用于許多類(lèi)型的搜索。當(dāng)涉及到安全性時(shí),您可能會(huì)發(fā)現(xiàn)自己在尋找沒(méi)有所有者(沒(méi)有對(duì)應(yīng)的帳戶)或既可寫(xiě)又可執(zhí)行的文件。Find命令很容易組合,但是需要熟悉它的許多選項(xiàng),以便定義您要查找的內(nèi)容。這兩個(gè)命令中的第一個(gè)將找到當(dāng)前沒(méi)有定義所有者的文件。第二種方法是找到任何人都可以運(yùn)行和修改的文件。

$ sudo find /home -nouser
$ sudo find / -perm -o=wx

請(qǐng)記住,第二個(gè)命令中的-o指的是“其他”組——不是所有者,也不是與文件關(guān)聯(lián)的組。

file

file命令查看一個(gè)文件,并根據(jù)其內(nèi)容(而不是名稱(chēng))確定文件的類(lèi)型。許多文件(如jpeg文件)在標(biāo)識(shí)它們的文件的開(kāi)頭附近包含標(biāo)識(shí)符。下面示例中的“.jpg”文件顯然不是真正的jpeg文件,而是可執(zhí)行文件——盡管它的名稱(chēng)不同。

jdoe@stinkbug:~$ ls -l
total 24
-rw-r--r-- 1 root root     0 Apr 13 09:59 empty
-rwxr-xr-x 1 jdoe jdoe 18840 May 10 17:39 myphoto.jpg
-rwx------ 1 jdoe jdoe    24 May  2 07:06 trythis
jdoe@stinkbug:~$ file myphoto.jpg
myphoto.jpg: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=5d19f7a492405ea9b022a9aa8151f6fb4143633d, stripped

which

which命令標(biāo)識(shí)將在鍵入其名稱(chēng)時(shí)運(yùn)行的可執(zhí)行文件。這并不總是你想的那樣。如果一個(gè)木馬病毒已經(jīng)被插入到文件系統(tǒng)的一個(gè)位置,顯示在你的搜索路徑之前,合法的,它將運(yùn)行。這是一個(gè)很好的理由,以確保您的搜索路徑包括目錄,如/usr/bin之前,它添加較少的標(biāo)準(zhǔn)位置,特別是之前”。(當(dāng)前目錄)。

$ which date
/usr/local/bin/date <=== probably not what we wanted

你可以檢查用戶的搜索路徑,切換到用戶和呼應(yīng):

shs@stinkbug:~$ sudo su - nemo
nemo@stinkbug:~$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/snap/bin

即使用戶的搜索路徑是在/etc/profile或/etc/bash這樣的系統(tǒng)文件中設(shè)置的bashrc,它們可能已經(jīng)被本地設(shè)置更改。

$ which date
/usr/local/bin/date	<=== probably not what we wanted

你可以檢查用戶的搜索路徑,切換到用戶和呼應(yīng):

shs@stinkbug:~$ sudo su - nemo
nemo@stinkbug:~$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/snap/bin

即使用戶的搜索路徑是在/etc/profile或/etc/bash這樣的系統(tǒng)文件中設(shè)置的bashrc,它們可能已經(jīng)被本地設(shè)置更改。

ss

ss命令是研究套接字的工具,允許您執(zhí)行諸如顯示監(jiān)聽(tīng)端口和活動(dòng)連接之類(lèi)的操作。在不添加一些約束的情況下,ss將顯示比您希望看到的更多的信息。畢竟,操作系統(tǒng)的許多部分都是通過(guò)套接字進(jìn)行通信的。如果您希望生成已建立連接或監(jiān)聽(tīng)端口的列表(即這樣的命令將被證明非常有用)。

建立連接:

$ ss -t
State   Recv-Q Send-Q Local Address:Port     Peer Address:Port   
ESTAB   0      224    192.168.0.20:ssh      192.168.0.15:56647
$ ss | grep ESTAB | grep tcp
tcp    ESTAB   0    64   192.168.0.20:ssh   192.168.0.15:64885

監(jiān)聽(tīng)端口 :

$ ss -ltn
State   Recv-Q Send-Q Local Address:Port     Peer Address:Port     
LISTEN  0      128          *:22             *:*
LISTEN  0      5      127.0.0.1:631          *:*                 
LISTEN  0      50           *:445            *:*
LISTEN  0      50           *:139            *:*
LISTEN  0      128          *:5355           *:*
LISTEN  0      128         :::22             :::*
LISTEN  0      5          ::1:631            :::*
LISTEN  0      50         :::445             :::*
LISTEN  0      128        :::5355            :::*
LISTEN  0      50         :::139             :::*

注意,端口631 (CUPS)只監(jiān)聽(tīng)環(huán)回接口(127.0.0.1)。

ufw

如果您在Linux系統(tǒng)上運(yùn)行防火墻——這是控制對(duì)系統(tǒng)訪問(wèn)的重要步驟,用于啟動(dòng)/停止、啟用/禁用、修改和顯示狀態(tài)或活動(dòng)規(guī)則的命令非常關(guān)鍵。下面是ufw的一些示例命令——你會(huì)在許多Ubuntu系統(tǒng)上找到的“簡(jiǎn)單防火墻”:

$ sudo ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
To                         Action      From
--                         ------      ----
22                         ALLOW IN    192.168.0.0/24

該防火墻是活動(dòng)的,只允許從本地網(wǎng)絡(luò)連接到 ssh。

以下命令將 1)設(shè)置上述規(guī)則,2)禁用防火墻。

$ sudo ufw allow from 192.168.0.0/24 to any port 22
$ sudo ufw disable

iptables

了解如何為iptables列出防火墻規(guī)則也很重要。這些命令將為您提供一個(gè)完整的netfilter規(guī)則列表:

sudo iptables -vL -t filter
sudo iptables -vL -t nat
sudo iptables -vL -t mangle
sudo iptables -vL -t raw
sudo iptables -vL -t security

ip

ip命令允許您在網(wǎng)絡(luò)接口上顯示信息。在下面的例子中,我們看到了環(huán)回和公共接口。

$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: enp0s25: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:1e:4f:c8:43:fc brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.20/24 brd 192.168.0.255 scope global dynamic enp0s25
       valid_lft 59794sec preferred_lft 59794sec
    inet6 fe80::f233:4f72:4556:14c2/64 scope link
       valid_lft forever preferred_lft forever

ip route

ip路由命令將顯示您的路由表:

$ ip route
default via 192.168.0.1 dev enp0s25 proto static metric 100
169.254.0.0/16 dev enp0s25 scope link metric 1000
192.168.0.0/24 dev enp0s25 proto kernel scope link src 192.168.0.20 metric 100

kill, pkill & killall

正如您在“殺死Unix進(jìn)程的方法不止一種”中所看到的那樣,Unix和Linux系統(tǒng)提供了一種方便的命令選擇,用于終止進(jìn)程,而不管您為什么希望它們死亡。您可以通過(guò)進(jìn)程ID或名稱(chēng)終止。你可以一次殺死一個(gè)人或一群人。在任何情況下,您都可以使用各種kill命令,并且應(yīng)該準(zhǔn)備在需要時(shí)使用它們。例子包括:

$ kill 1234
$ pkill bad
$ killall badproc

passwd

當(dāng)涉及到系統(tǒng)安全性時(shí),passwd命令可能是一個(gè)明顯的命令,但它也不應(yīng)該從任何安全性要點(diǎn)列表中被忽略。對(duì)于密碼更改,特別是當(dāng)用戶來(lái)來(lái)往往或更改角色時(shí),有一個(gè)合理的策略是很重要的。

然而,passwd命令不僅僅用于更改密碼。您還可以使用它與sudo特權(quán)來(lái)更改其他用戶的密碼、鎖定/解鎖或過(guò)期帳戶、檢查帳戶狀態(tài)并更改決定密碼何時(shí)過(guò)期或時(shí)間密碼警告的設(shè)置。

查看手冊(cè)頁(yè)(man passwd)了解詳細(xì)信息,并使用以下命令:

$ sudo passwd nemo	<== change nemo's password
$ sudo passwd -e dory   <== expire dory's password (forces her to reset it)
$ sudo passwd -i shark  <== disable shark's account

pwck

pwck命令對(duì)/etc/passwd和/etc/shadow文件進(jìn)行一些完整性檢查——確保出現(xiàn)了必需的字段、文件和目錄等等。

$ sudo pwck
user 'squash': directory '/home/squash' does not exist
user 'squash': program '/bin/bsh' does not exist

setfacl & getfacl

不要讓rwxr-x- type權(quán)限的簡(jiǎn)單顯示誘使您認(rèn)為這就是在Linux系統(tǒng)上文件權(quán)限的全部。使用setfacl和getfacl命令,您可以讓不屬于文件所有者、不屬于相關(guān)組成員(您不希望他們成為)的人訪問(wèn)文件。假設(shè)您希望nemo能夠讀取概述ufw設(shè)置說(shuō)明文件的文件,但僅此而已。使用如下命令修改文件的訪問(wèn)控制列表(ACL):

$ setfacl -m u:nemo:r ufw-setup

然后getfacl命令將顯示所做的更改:

$ getfacl ufw-setup
# file: ufw-setup
# owner: shs
# group: shs
user::rwx
user:nemo:r--        <===
group::rw-                      #effective:r--
mask::r--
other::---

sestatus & apparmor

sestatus和apparmor命令可以顯示SELinux和apparmor工具的狀態(tài),這些工具使用強(qiáng)制訪問(wèn)控制在應(yīng)用程序之間提供隔離。如果您正在使用這些工具之一,您應(yīng)該知道如何顯示它們的狀態(tài)。

sestatus

$ sudo sestatus
SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing
Mode from config file:          enforcing
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Max kernel policy version:      28
apparmor
$ sudo apparmor_status
apparmor module is loaded.
18 profiles are loaded.
18 profiles are in enforce mode.
   /sbin/dhclient
   /usr/bin/evince
   /usr/bin/evince-previewer
   /usr/bin/evince-previewer//sanitized_helper
   /usr/bin/evince-thumbnailer
   /usr/bin/evince-thumbnailer//sanitized_helper
   /usr/bin/evince//sanitized_helper
   /usr/lib/NetworkManager/nm-dhcp-client.action
   /usr/lib/NetworkManager/nm-dhcp-helper
   /usr/lib/connman/scripts/dhclient-script
   /usr/lib/cups/backend/cups-pdf
   /usr/lib/snapd/snap-confine
   /usr/lib/snapd/snap-confine//mount-namespace-capture-helper
   /usr/sbin/cups-browsed
   /usr/sbin/cupsd
   /usr/sbin/cupsd//third_party
   /usr/sbin/ippusbxd
   /usr/sbin/tcpdump
0 profiles are in complain mode.
3 processes have profiles defined.
3 processes are in enforce mode.
   /sbin/dhclient (705)
   /usr/sbin/cups-browsed (30173)
   /usr/sbin/cupsd (26828)
0 processes are in complain mode.
0 processes are unconfined but have a profile defined.

你還應(yīng)該知道如何啟動(dòng)和停止這些工具。

$ sudo /etc/init.d/apparmor start
$ sudo /etc/init.d/apparmor stop
$ sudo /etc/init.d/apparmor restart

對(duì)于SELinux,不同的模式代表什么:

enforcing -- SELinux security policy is enforced
permissive -- SELinux prints warnings instead of enforcing
disabled -- SELinux is fully disabled

Linux系統(tǒng)上的許多命令可以幫助您管理安全性。上面的描述是為了介紹這些命令,而不是解釋關(guān)于它們?nèi)绾喂ぷ骰蛉绾问褂玫乃袃?nèi)容。

分享標(biāo)題:盤(pán)點(diǎn)|22個(gè)基本的Linux安全命令-創(chuàng)新互聯(lián)
轉(zhuǎn)載注明:http://muchs.cn/article22/dphocc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊(cè)、營(yíng)銷(xiāo)型網(wǎng)站建設(shè)、App設(shè)計(jì)、小程序開(kāi)發(fā)、軟件開(kāi)發(fā)、搜索引擎優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁(yè)設(shè)計(jì)公司