Linux 系统的安全性有很多方面-从设置帐户到确保其他用户没有超过他们完成工作所需的权限。以下是 Linux 系统日常工作中一些最重要的安全命令。
下面每一个基本的Linux命令都有明确的功能和任务定义,例如如何编写命令。一些命令对于长期使用 Linux 的用户来说太熟悉了,但仍然有相当新的命令。如果您对 Linux 系统上的安全问题感兴趣,请不要忽略这些有用的安全命令。
22 个 Linux 安全命令
- 须藤命令
- Visudo 命令
- 谁和谁下订单
- 最后下单
- 查找命令
- 文件命令
- 订购哪个
- Ss 订单
- Ufw 命令
- Iptables 命令
- ip 命令
- IP路由命令
- Kill、pkill 和 killall 命令
- 密码命令
- 订购密码
- Setfacl 和 getfacl 命令
- 订购 sestatus &服装
- 状态
- apparmor
须藤命令
使用 sudo 运行特权命令,而不是将用户切换到 root,这是必要的操作,因为它有助于确保您仅在需要时使用 root 特权并限制错误的影响。您对 sudo 命令的访问权限取决于 /etc/sudoers file 和 /etc/group 中的设置。
$ sudo adduser shark
添加用户 `shark'。
添加新组 `shark '(1007) 。
新用户 `shark '(1007) với nhóm` shark' 。
创建主目录`/home/shark'。
Sao chép từ tập tin `/etc/skel '。
输入新的 UNIX 密码:
重新输入新的 UNIX 密码:
passwd:密码更新成功
Đang thay đổi thông tin người dùng cho Shark
Hãy nhập giá trị mới, hoặc bấm ENTER để mặc định
全名[]:shark
房间号[]:
工作电话[]:
家庭电话[]:
其他[]:
信息是否正确? [是/否]是的
例如,如果您运行 sudo 并想了解您的角色是什么,您将收到确认以 root 身份运行该命令。
$ sudo whoami
root
如果您为多个用户管理 sudo 设置,您也会对 visudo 命令感到满意。
Visudo 命令
visudo 命令允许您通过在文本编辑器中打开文件并检查您对语法所做的更改来更改 /etc/sudoers 文件。运行命令“sudo visudo”并确保您理解语法。权限可以由用户或组分配。在大多数 Linux 系统上,/etc/sudoers 文件 将配置如下所示的相同组,允许在 /etc/group 文件中设置分配给组的权限。 在这种情况下,您绝对不需要使用 visudo 命令,只需通过这种方式熟悉具有 root 权限的组,并为 /etc/group 文件进行更新。
% admin ALL=(ALL) ALL
% sudo ALL=(ALL: ALL) ALL
% wheel ALL=(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 运行这些命令的能力:
nemo ALL=(ALL) ACCT_CMDS
% techs ALL=(ALL: ALL) ACCT_CMDS
第一行允许用户“Nemo”使用 sudo 运行 twp 命令(adduser 和 deluser),而第二个命令将相同的权限分配给“tec”中的任何人h" 组在 /etc/group 文件中。
谁和 w 订单
who 和 w 命令告诉你谁登录了系统,其中 w 显示了更多的信息,例如他们在哪里登录、何时登录以及登录时长在。
$ w
18:03:35 up 9 days, 22:48, 2 users, average load: 0.00, 0.00, 0.00
USER TTY LOGIN FROM 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.00sw
如果您不喜欢使用运行 visudo 时调用的默认编辑器,请使用“sudo update-alternatives-config editor”命令。它将提供一些可选的编辑器并更改您的设置。
最后订单
最后一个命令显示最近的用户登录信息,在您尝试跟踪其他更改或活动时通常很有用。
最后 $ nemo
nemo pts/1 192.168.0.15 Wed May 2 07:01-08:29 (01:27)
wtmp 开始 Tue May 1 10:21:35 2018
'Nemo' 有一段时间没有登录了。他可以去度假(或者去钓鱼?)或者干脆离开公司。此类信息有助于您决定是否需要对此进行监控。
查找命令
find 命令用于多种类型的搜索。在安全性方面,您可能会发现自己正在寻找没有所有者(没有相应帐户)的文件或任何人都可以编写和执行的文件。 find 命令很容易实现,但需要一些熟悉的功能和许多选项来确定您要查找的内容。这两个命令中的第一个命令将查找没有特定所有者的文件。第二个命令将查找任何人都可以运行和修改的文件。
$ sudo find/home-nouser
$ sudo find/-perm-o=wx
请记住,第二个命令中的-o 指的是“其他”组-不是所有者,也不是与文件关联的组。
文件命令
file 命令查看文件并根据文件的内容而不是文件名确定文件类型。下例中的“.jpg”文件显然不是真正的.jpeg文件,而是可执行文件。
jdoe @ stinkbug: ~ $ ls-l <br> 总计 24
-rw-r-r--1 root root 0 Apr 13 09:59 empty
-rwxr-xr-x 1 jdoe jdoe 18840 5 月 10 日 17:39 myphoto.jpg
-rwx------1 jdoe jdoe 24 May 2 07:06 trythis
jdoe @ stinkbug: ~ $ file myphoto.jpg
myphoto.jpg: ELF 64 位 LSB 可执行文件,x86-64,版本 1 (SYSV),动态链接,解释器/lib64/ld-linux-x86-64.so.2,适用于 GNU/Linux 3.2.0,BuildID [sha1]=5d19f7a492405ea9b022a9aa8151f6fb4143633d , 剥离
订购哪个
which 命令指定当您键入其名称时要运行的可执行文件。这并不总是和你想象的一样。如果特洛伊木马已被插入到文件系统中搜索路径中显示的位置,它将被运行。这是确保您的搜索路径在添加较少标准位置之前,尤其是在“.(当前目录)。
$ which date
/usr/local/bin/date <===可能不是我们想要的
您可以通过切换到用户角色并执行以下操作来检查用户的搜索路径:
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.bashrc等系统文件中设置了用户的搜索路径, strong> 它们可能已被本地设置更改。
$ which date
/usr/local/bin/date <===可能不是我们想要的
SS订单
ss 命令是一个用于调查套接字的工具,允许您执行诸如显示侦听端口和活动连接之类的操作。如果您不添加某些条件,ss 将显示比您可能想要考虑的更多信息。毕竟,操作系统的许多部分都是通过套接字进行通信的。如果要创建已建立连接或侦听端口的列表(即外部系统可用的服务),像这样的命令将非常有用。
对于已建立的连接:
$ ss-t
Send-Q Local Recv-Q Local Address: Port Peer Address: Port
ESTAB 0 224 192.168.0.20:ssh 192.168.0.15 m²6647
$ ss | grep ESTAB | grep tcp
tcp ESTAB 0 64 192.168.0.20:ssh 192.168.0.15:64885
监听端口:
$ ss-ltn
Send-Q Local Recv-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) 只监听环回接口 (127.0.0.1)。
Ufw 命令
如果你在你的Linux系统上运行防火墙——控制系统访问的重要一步,命令用于启动/结束、打开/关闭、修改和显示状态。还是操作规则很重要。以下是您可以在许多 Ubuntu 系统上找到的一些 ufw 示例命令:
$ sudo ufw status verbose
状态:活动
日志记录:开启(低)
默认值:拒绝(传入)、允许(传出)、禁用(路由)
新配置文件:跳过
来自
-----------
22 ALLOW IN 192.168.0.0/24
此防火墙处于活动状态,只允许从本地网络连接到 ssh。以下命令将:
- 设置如上所示的规则
- 禁用防火墙。
$ sudo ufw 允许从 192.168.0.0/24 到任何端口 22
$ sudo ufw disable
Iptables 命令
了解如何列出 iptables 的防火墙规则很重要。这些命令将为您提供完整的 netfilter 规则列表:
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 命令允许您在网络接口上显示信息。在下面的例子中,我们将看到环回(loop)和公共接口。
$ ip a
1: 担心:mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00: 00:00:00 brd 00: 00: 00: 00:00
inet 127.0.0.1/8 范围主机 lo
valid_lft 永远首选_lft 永远
inet6 :: 1/128 范围主机
valid_lft 永远首选_lft
2: enp0s25 :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
59794sec valid_lft valid_lft 59794sec
inet6 fe80 :: f233: 4f72: 4556: 14c2/64 scope link
valid_lft forever preferred_lft forever 广播,多播,up,lower_up>
IP路由命令
ip route 命令会显示你的路由表:
$ ip route
默认通过 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 公制 100
Kill、pkill 和 killall 命令
Unix 和 Linux 系统为命令提供了一个方便的选项,可以随时终止进程。您可以以进程 ID 或名称结束。您可以按一个或按组结束每个进程。在任何情况下,您都可以在需要时使用不同的结束命令。示例包括:
$ kill 1234
$ pkill 坏
$ killall badproc
密码命令
passwd 命令在系统安全方面可能是相当明显的,但在任何必要的安全列表中都不应该忽略它。更改密码非常重要,尤其是当许多用户来来往往或他们的角色发生变化时。
但是passwd命令不仅仅用来修改密码。您还可以通过 sudo 权限使用它来更改其他用户的密码、锁定/解锁或过期帐户、检查帐户状态和更改设置以确定密码过期或时间密码警告。
查看手册页(man passwd)了解详情并使用以下命令:
<上一页>$ sudo passwd nemo <==更改 nemo 的密码$ sudo passwd-e dory <==使 dory 的密码过期(强制她重置)
$ sudo passwd-i Shark <==禁用 Shark 的帐户
订购 pwck
pwck 命令检查您的 /etc/passwd 和 /etc/shadow 文件,确保存在必填字段, 文件和目录存在等。
$ sudo pwck
用户'squash':目录'/home/squash'不存在
用户'squash':程序'/bin/bsh'不存在
Setfacl 和 getfacl 命令
不要让 rwxr-x--- 让您误以为这就是在 Linux 系统上授权文件所需的全部内容。使用 setfacl 和 getfacl 命令,您可以授予不是文件所有者且不是链接组成员(并且您也不希望他们成为该组成员)的人访问文件。假设您希望“Nemo”有权读取概述您的 ufw 设置指南的文件,仅此而已。使用以下命令修改文件的访问控制列表 (ACL):
$ setfacl-mu: 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 &服装
sestatus 和 apparmor 命令可以显示 SELinux 工具和 apparmor 的状态,提供使用强制访问控制的应用程序之间的隔离。如果您使用一种或多种工具,您应该知道如何显示它们的状态。
状态
$ sudo sestatus
SELinux 状态:启用
SELinuxfs 挂载:/sys/fs/selinux
SELinux 根目录:/etc/selinux
加载策略名称:targeted
当前模式:强制执行
配置文件中的模式:强制执行
策略 MLS 状态:启用
策略拒绝未知状态:允许
最大内核策略版本:28
apparmor
$ sudo apparmor_status
apparmor 模块已加载。
已加载 18 个配置文件。
18 个个人资料 là trong chế độ chế độ。
/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 个配置文件处于抱怨模式。
3 个进程定义了配置文件。
3 个进程处于强制模式。
/sbin/dhclient (705)
/usr/sbin/cups-browsed (30173)
/usr/sbin/cupsd (26828)
0 个进程处于抱怨模式。
0 các tiến trình không được xác định, nhưng có xác định 个人资料。
您还应该知道如何启动和停止这些工具。
$ sudo/etc/init.d/apparmor start
$ sudo/etc/init.d/apparmor stop
$ sudo/etc/init.d/apparmor restart
对于SELinux,不同的模式代表:
enforcing-SELinux 安全策略被强制执行
permissive-SELinux 打印警告而不是强制执行
disabled-SELinux 被完全禁用
Linux 系统上的许多命令可以帮助您管理安全性。上面的描述只介绍了这些命令,并没有解释它们是如何工作或可以使用的。
- Unix/Linux 中的有用命令
- 终端中的 14 个有趣的 Linux 命令
评论