打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
22个必须学习的Linux安全命令

Linux系统的安全性涉及很多方面,从设置帐户到确保用户合法,限制比完成工作所需的更多权限。这里是关于Linux系统日常工作的一些最基本的安全命令。

sudo

使用sudo运行特权命令,而不是将用户切换到root,是一个必不可少的良好实践,因为它有助于确保在需要时仅使用root权限并限制错误的影响。对sudo命令的访问权限取决于/etc/sudoers和/etc/group文件中的设置。

$ sudo adduser shark

Addinguser`shark' ...

Adding newgroup`shark' (1007) ...

Adding newuser`shark' (1007) with group `shark'...

Creating home directory `/home/shark' ...

Copying filesfrom`/etc/skel' ...

Enter new UNIXpassword:

Retype new UNIXpassword:

passwd:passwordupdated successfully

Changing theuserinformationforshark

Enter the new value,orpress ENTERforthedefault

FullName[]: shark

Room Number []:

WorkPhone []:

Home Phone []:

Other []:

Isthe information correct? [Y/n] Y

例如,如果运行sudo并询问你是谁,将确认以root身份运行该命令。

$ sudo whoami

root

如果为用户管理sudo设置,还需要熟悉visudo命令。

visudo

visudo命令允许通过在文本编辑器中打开文件并检查更改的语法来更改//etc/sudoers文件。 使用“sudo visudo”运行命令,并确保理解语法。权限可以由用户或组分配。在大多数Linux系统上,/etc/sudoers文件已经配置了如下所示的组,这些组允许将权限分配给/etc/group文件中设置的组。在这些情况下,根本不需要使用visudo命令,只需熟悉以这种方式赋予root权限的组,并对/etc/group文件进行更新。

%adminALL=(ALL)ALL

%sudoALL=(ALL:ALL)ALL

%wheelALL=(ALL:ALL)ALL

请注意,组名称前面带有%符号。

可以在/etc、group文件中显示提供sudo访问权限的组,因为它可能是以下之一:

$ egrep'admin|sudo|wheel'/etc/group

sudo:x:27:shs,jdoe

给予某人sudo特权的最简单方法是将它们添加到/etc/group中的授权组。但是,这意味着它们可以以root身份运行任何命令。如果希望某些用户对一组有限的命令具有root权限(例如,添加和删除帐户),可以定义希望它们能够通过命令别名运行的命令,如下所示:

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

然后让用户或组使用sudo运行这些命令,并使用以下命令之一:

nemoALL=(ALL) ACCT_CMDS

%techsALL=(ALL:ALL) ACCT_CMDS

第一行允许用户“nemo”使用sudo运行twp(adduser和deluser)命令,而第二行则为/etc/group文件中“tech”组中的任何人分配相同的权限。

who和w

who和w命令显示谁登录系统,虽然w显示更多信息,例如他们登录的位置,登录时间以及他们空闲的时间。

$ w

18:03:35 up 9 days, 22:48, 2 users,loadaverage: 0.00, 0.00, 0.00

USERTTYFROMLOGIN@ 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

last

last命令显示用户最近的登录信息,在尝试跟踪更改或其他活动时通常很有用。

$lastnemo

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

Nemo一段时间没有登录了。他可能正在度假(也许是钓鱼?)或刚刚离开公司。这种信息可用于决定是否需要对此进行跟进。

find

find命令用于许多类型的搜索。在安全性方面,可能会发现自己在寻找没有owner(没有相应帐户)或者都是可写和可执行文件的文件。find命令很容易编写,但需要熟悉它的许多选项来定义要查找的内容。以下两个命令中的第一个将查找当前没有定义所有者的文件。 第二个将找到可能任何人都可以运行和修改的文件。

$ sudo find /home -nouser

$ sudo find / -perm -o=wx

请记住,第二个命令中的-o引用“其他”组,不是所有者,不是与文件关联的组。

file

file命令查看文件并根据其内容而不是其名称确定文件的类型。许多文件(如jpeg文件)在标识它们的文件的开头附近包含标识符。以下示例中的“.jpg”文件显然不是真正的jpeg文件,而是可执行文件 ,尽管它的名称包含jpg。

jdoe@stinkbug:~$ ls -ltotal 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 trythisjdoe@stinkbug:~$ file myphoto.jpgmyphoto.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命令标识在键入其名称时将运行的可执行文件。这并不总是你的想法。如果特洛伊木马程序已插入文件系统中的某个位置,该位置显示在合法帐户之前的搜索路径中,则会运行该木马程序。这是一个很好的理由,以确保搜索路径包含/usr/bin之类的目录,然后添加较少的标准位置,特别是在“.”(当前目录)之前。

$ whichdate/usr/local/bin/date

可以通过切换到用户并回显用户来检查用户的搜索路径:

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

即使用户的搜索路径设置在/etc/profile或/etc/bash.bashrc等系统文件中,它们也可能已被本地设置更改。

$ whichdate/usr/local/bin/date

SS

ss命令是一个用于调查套接字的工具,允许执行显示侦听端口和活动连接等操作。在不添加某些约束的情况下,ss将显示比可能想要查看的信息更多的信息。毕竟,操作系统的许多部分都通过套接字进行通信。如果要生成已建立的连接或侦听端口列表(即外部系统可用的服务),这些命令将非常有用。

建立连接:

$ ss -tState Recv-Q Send-QLocalAddress:Port Peer Address:Port ESTAB 0 224 192.168.0.20:ssh 192.168.0.15:56647$ ss | grep ESTAB | grep tcptcp ESTAB 0 64 192.168.0.20:ssh 192.168.0.15:64885

监听端口:

$ ss -ltnState Recv-Q Send-QLocalAddress: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)仅侦听环回接口(127.0.0.1)。

ufw

如果在Linux系统上运行防火墙 ,这是控制系统访问的重要步骤,则用于启动/停止,启用/禁用,修改和显示状态或活动规则的命令至关重要。以下是ufw的一些示例命令,可以在许多Ubuntu系统上找到的“简单防火墙”:

$ sudo ufw status verboseStatus: activeLogging:on(low)Default: deny (incoming), allow (outgoing), disabled (routed)New profiles: skipToActionFrom-- ------ ----22 ALLOW IN 192.168.0.0/24

此防火墙处于活动状态,仅允许来自本地网络的连接进行ssh。

以下命令将1)设置上面显示的规则和2)禁用防火墙。

$ sudo ufw allowfrom192.168.0.0/24toanyport 22$ sudo ufw disable

iptables

了解如何列出iptables的防火墙规则也很重要。 这些命令将提供netfilter规则的完整列表:

sudo iptables -vL -t filtersudo iptables -vL -t natsudo iptables -vL -t manglesudo iptables -vL -t rawsudo iptables -vL -t security

ip

ip命令允许显示网络接口上的信息。 在下面的示例中,我们看到了环回和公共接口。

$ ip a1: lo: mtu 65536 qdisc noqueue state UNKNOWNgroupdefaultqlen 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 forever2: enp0s25:

mtu 1500 qdisc pfifo_fast state UPgroupdefaultqlen 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 scopeglobaldynamicenp0s25 valid_lft 59794sec preferred_lft 59794sec inet6 fe80::f233:4f72:4556:14c2/64 scope link valid_lft forever preferred_lft forever

ip route

ip route命令将显示路由表:

$ ip routedefault via 192.168.0.1 dev enp0s25 protostaticmetric 100169.254.0.0/16 dev enp0s25 scope link metric 1000192.168.0.0/24 dev enp0s25 proto kernel scope link src 192.168.0.20 metric 100

kill,pkill和killall

正如在“有多种方法可以杀死Unix进程”中所看到的,Unix和Linux系统提供了一个方便的命令选择,用于终止进程,无论希望它们死亡的原因。可以按进程ID或名称终止。可以一次单独或一组进程。在任何情况下,都可以使用各种kill命令,并且应该准备好根据需要使用它们。 例子包括:

$ kill 1234$ pkill bad$ killall badproc

passwd

虽然passwd命令在系统安全性方面可能是一个明显的命令,但它也不应该从任何安全性要点列表中省略。拥有合理的密码更改策略,尤其是在用户来去或更改角色时,这一点非常重要。

但是,passwd命令不仅用于更改密码。还可以将其与sudo权限一起使用,以更改其他用户的密码,锁定/解锁或过期帐户,检查帐户状态以及更改确定密码何时到期或设置时间密码警告的设置。

查看手册页(man passwd)了解详细信息并使用以下命令:

$ sudo passwd nemo

pwck

pwck命令对/etc/passwd和/etc/shadow文件进行完整性检查,确保存在必需的字段,存在文件和目录等。

$ sudo pwckuser'squash': directory'/home/squash'doesnotexistuser'squash': program'/bin/bsh'doesnotexist

setfacl&getfacl

不要轻易显示rwxr-x ---类型权限,会让你想象这就是Linux系统上的文件权限。使用setfacl和getfacl命令,可以授予不是文件所有者且不是关联组(并且不希望它们)访问文件的成员。假设希望nemo具有对文件的读取权限,该文件概述了ufw设置说明文件,但仅此而已。 使用这样的命令修改文件的访问控制列表:

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

然后getfacl命令将显示已进行的更改:

$ getfacl ufw-setup# file: ufw-setup# owner: shs#group: shsuser::rwxuser:nemo:r--

sestatus&apparmor

sestatus和apparmor命令可以显示SELinux和apparmor工具的状态,这些工具使用强制访问控制在应用程序之间提供隔离。如果使用这些工具中的一个或另一个,应该知道如何显示其状态。

sestatus

https://www.networkworld.com/article/3272286/open-source-tools/22-essential-security-commands-for-linux.html

apparmor

$ sudo apparmor_statusapparmor moduleisloaded.18 profiles are loaded.18 profiles areinenforce 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/tcpdump0 profiles areincomplain mode.3 processes have profiles defined.3 processes areinenforce mode. /sbin/dhclient (705) /usr/sbin/cups-browsed (30173) /usr/sbin/cupsd (26828)0 processes areincomplain mode.0 processes are unconfined but have a profile defined.

还应该知道如何启动和停止这些工具。

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

而对于SELinux,各种模式代表什么:

enforcing-- SELinux security policy is enforcedpermissive -- SELinux prints warnings instead of enforcingdisabled -- SELinux is fully disabled

Linux系统上的许多命令可以帮助管理安全性。上面的描述旨在介绍这些命令,但不解释有关它们如何工作或可以使用的所有内容。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
不在 sudoers 文件中。此事将被报告。
用管理员登录centos和普通登录centos有什么区别?
Linux 文件系统详解
sudo与su的用法
图文详解Linux/ubuntu安装cloudstack
关于su和sudo以及visudo的很好的介绍性文档
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服