网络安全工作与X窗口管理指南
1. 网络安全工作
1.1 修改密码短语
要修改密码短语,可以使用
ssh-keygen
命令并加上
-p
选项。不过,在修改之前,你必须提供旧的密码短语,以防止未经授权的用户更改你的密码短语。示例如下:
oracle@BLSOL01:~$ ssh-keygen -p
Enter file in which the key is (/export/home/oracle/.ssh/id_rsa):
Enter old passphrase:
Key has comment '/export/home/oracle/.ssh/id_rsa'
Enter new passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved with the new passphrase.
1.2 公钥认证的安全风险
通过SSH连接到远程Linux/Solaris服务器时,使用公钥进行身份验证可能存在安全风险。例如,如果其他操作系统用户可以修改你的
$HOME/.ssh/authorized_keys
文件,他们可以将自己的公钥附加到该文件中,从而无需你的密码即可登录到你在远程服务器上的账户。
为了提高安全性,建议在创建公钥时设置密码短语,并且不要与任何人共享该密码短语。同时,运行
chmod 700 $HOME
命令,确保
$HOME
目录下的目录和文件只有所有者可以读写和执行,防止其他用户查看和修改这些文件。
成功登录后,可以运行以下命令验证远程服务器的主机名和用户名:
oracle@BLSOL02:~$ echo $HOSTNAME
BLSOL02
oracle@BLSOL02:~$ echo $USER
oracle
1.3 配置无提示登录
问题描述
希望在通过SSH连接到远程Linux/Solaris服务器时,无需提供远程操作系统用户的密码和公钥的密码短语即可登录。
解决方案
假设本地服务器为BLSOL01,远程服务器为BLSOL02,操作系统用户名为oracle。要实现无提示登录,可以按照以下步骤操作:
1. 在本地服务器BLSOL01上,为要发起SSH连接的操作系统用户创建公钥。
2. 运行SSH代理并将输出保存到
$HOME/ssh-agent.sh
文件中:
oracle@BLSOL01:~$ /usr/bin/ssh-agent > $HOME/ssh-agent.sh
-
运行
$HOME/ssh-agent.sh脚本,设置环境变量SSH_AUTH_SOCK和SSH_AGENT_PID:
oracle@BLSOL01:~$ source $HOME/ssh-agent.sh
Agent pid 4566
-
运行
ssh-add命令,并提供在本地服务器上创建公钥时设置的密码短语:
oracle@BLSOL01:~$ /usr/bin/ssh-add
Enter passphrase for /export/home/oracle/.ssh/id_rsa:
Identity added: /export/home/oracle/.ssh/id_rsa (/export/home/oracle/.ssh/id_rsa)
- 现在,本地服务器上的用户oracle可以无需提供操作系统用户密码和公钥密码短语,直接登录到远程服务器BLSOL02:
oracle@BLSOL01:~$ ssh BLSOL02
Last login: Wed Aug 19 20:41:48 2015 from blsol01
Oracle Corporation SunOS 5.11 11.2 June 2014
oracle@BLSOL02:~$
工作原理
在前面的方法中,虽然使用公钥进行身份验证,但仍需要输入创建公钥时生成的密码短语。为了实现完全无提示登录,需要运行
ssh-agent
和
ssh-add
命令。
ssh-agent
命令会创建一个套接字,并缓存私钥的密码短语,同时在
/tmp
目录下创建一个新的目录,该目录由环境变量
SSH_AUTH_SOCK
指定。
ssh-add
命令会将RSA和DSA身份添加到SSH代理中。这样,在连接远程服务器时,就不会再提示输入密码或密码短语。
可以使用以下命令验证密钥指纹:
oracle@BLSOL01:~$ /usr/bin/ssh-add -l
2048 8b:de:0e:b3:22:de:77:3b:fa:37:ff:90:96:22:8a:60 /export/home/oracle/.ssh/id_rsa (RSA)
oracle@BLSOL01:~$ /usr/bin/ssh-keygen -l -f $HOME/.ssh/id_rsa
2048 8b:de:0e:b3:22:de:77:3b:fa:37:ff:90:96:22:8a:60 /export/home/oracle/.ssh/id_rsa.pub
要删除SSH代理中呈现的身份,可以使用
ssh-add
命令并加上
-d
选项;如果要删除所有身份,则使用
-D
选项:
oracle@BLSOL01:~$ /usr/bin/ssh-add -d
Identity removed: /export/home/oracle/.ssh/id_rsa (/export/home/oracle/.ssh/id_rsa.pub)
为了实现无提示登录,关键是要确保在通过SSH连接之前,环境变量
SSH_AUTH_SOCK
指向正确的路径。否则,当你退出shell或注销系统后,再次连接时可能会再次提示输入密码短语。
可以通过运行
ssh-agent
命令并将输出保存到
$HOME/ssh-agent.sh
文件中,在连接远程服务器之前,运行该脚本以设置
SSH_AUTH_SOCK
环境变量。为了在cron作业中调度
ssh
或
scp
命令,建议在
$HOME/.bashrc
文件中添加以下内容:
if [ -f $HOME/ssh-agent.sh ]; then
source $HOME/ssh-agent.sh > /dev/null
fi
如果配置正确但仍然提示输入密码短语,则需要进行故障排除。首先,验证SSH代理的操作系统进程是否仍然活跃,以及环境变量是否设置正确。可以使用
ps -ef | grep ssh-agent
命令确定SSH代理的PID:
oracle@BLSOL01:~$ ps -ef | grep ssh-agent
bslopuz 1639 1601 0 Aug 17 ? 0:01 /usr/bin/ssh-agent -- gnome-session
oracle 4566 1 0 20:44:03 ? 0:00 /usr/bin/ssh-agent
使用
env | grep SSH
命令显示环境变量,确保
SSH_AGENT_PID
的值与SSH代理的PID相同:
oracle@BLSOL01:~$ env | grep SSH
SSH_AGENT_PID=4566
SSH_AUTH_SOCK=/tmp/ssh-XXXXoGaO6i/agent.4565
还需要验证环境变量
SSH_AUTH_SOCK
指向的路径是否存在:
oracle@BLSOL01:~$ ls -l /tmp/ssh-XXXXoGaO6i/agent.4565
srw------- 1 oracle staff 0 Aug 19 20:44 /tmp/ssh-XXXXoGaO6i/agent.4565
无提示登录配置流程图
graph TD;
A[创建公钥] --> B[运行ssh-agent并保存输出];
B --> C[运行ssh-agent.sh设置环境变量];
C --> D[运行ssh-add添加身份];
D --> E[无提示登录远程服务器];
2. X窗口管理
2.1 X窗口系统概述
许多数据库管理员认为,大多数Linux/Solaris服务器即使托管Oracle数据库,也不需要X窗口系统。实际上,可以使用文本控制台管理Oracle数据库,而无需图形控制台。但是,对于从Windows环境迁移过来的数据库管理员来说,通过命令行输入和记忆操作系统、SQL和RMAN命令可能会比较困难。如果你更喜欢运行基于GUI的程序,如使用DBCA创建Oracle数据库,那么了解X窗口系统将很有帮助。
在Linux/Solaris环境中,X客户端和X服务器可以托管在同一台计算机上,也可以分别位于网络中的不同计算机上。不过,其术语与传统的客户端/服务器环境有所不同。例如,在X窗口系统中,你在客户端PC上运行的用于与应用程序交互的程序实际上是X服务器,而运行在远程机器上的应用程序则是客户端。
2.2 配置X服务器
问题描述
希望在Linux/Solaris服务器上配置X窗口服务器,以运行基于GUI的应用程序,如DBCA创建Oracle数据库。
解决方案
要在Linux/Solaris服务器上设置X窗口服务器,需要编辑
xorg.conf
配置文件,该文件通常位于
/etc/X11
目录下。有两种方法可以编辑该文件:
- 直接修改
/etc/X11/xorg.conf
文件。
- 运行
Xorg
应用程序。
可以使用
Xorg
命令并加上
-configure
选项来创建一个临时配置文件
/root/xorg.conf.new
:
# /usr/bin/Xorg -configure
X.Org X Server 1.14.5
Release Date: 2013-12-12
X Protocol Version 11, Revision 0
Build Operating System: SunOS 5.11 i86pc
Current Operating System: SunOS BLSOL01 5.11 11.2 i86pc
Solaris ABI: 64-bit
Current version of pixman: 0.29.2
Before reporting problems, check http://support.oracle.com/
to make sure that you have the latest version.
Markers: (--) probed, (**) from config file, (==) default setting,
(++) from command line, (!!) notice, (II) informational,
(WW) warning, (EE) error, (NI) not implemented, (??) unknown.
(==) Log file: "/var/log/Xorg.0.log", Time: Fri Nov 13 00:38:29 2015
List of video drivers:
intel
openchrome
r128
vmware
mga
vboxvideo
radeon
cirrus
ast
mach64
ati
vesa
(++) Using config file: "/root/xorg.conf.new"
(==) Using config directory: "/etc/X11/xorg.conf.d"
(==) Using system config directory "/usr/share/X11/xorg.conf.d"
Number of created screens does not match number of detected devices.
Configuration failed.
(EE) Server terminated with error (2). Closing log file.
在运行
Xorg -configure
时,可能会遇到错误消息“Fatal server error: Server is already active for display 0. If this server is no longer running, remove /tmp/.X0-lock and start again.”,此时需要删除该文件以避免错误。
可以使用
X -config /root/xorg.conf.new
命令测试新的配置文件。如果X服务器能够正常运行,则将该文件复制到
/etc/X11/xorg.conf
:
cp /root/xorg.conf.new /etc/X11/xorg.conf
工作原理
当启动X服务器时,它会读取位于
/etc/X11
目录下的
xorg.conf
文件。该文件包含了Linux/Solaris服务器运行X窗口系统时的系统资源、显卡、键盘、鼠标和显示器的配置信息。
在
xorg.conf
文件中,只需包含发生更改的部分,未指定的部分将使用默认设置。此外,还会从
/etc/X11/xorg.conf.d
目录下的文件中读取额外的配置内容。
在编辑
xorg.conf
文件时,不建议手动修改,除非你对更改有足够的把握。无论采用哪种方法,在修改之前都应该备份该文件,以便在新的更改不起作用时可以恢复到原始设置。
在排查X服务器问题时,要检查日志文件
/var/log/Xorg.0.log
,以及Linux系统的
/var/log/messages
和Solaris系统的
/var/adm/messages
。
2.3 启动X服务器
问题描述
希望在Linux/Solaris服务器上启动X服务器,以运行基于GUI的软件应用程序。
解决方案
Solaris服务器
-
运行
svcs命令验证GDM服务的状态:
# svcs gdm
STATE STIME FMRI
disabled 1:25:37 svc:/application/graphical-login/gdm:default
- 如果GDM服务处于禁用状态,则运行以下命令启用它:
# svcadm enable gdm
Linux服务器
有三种方法可以启动X服务器:
-
手动运行X命令
:
1. 如果提示登录,请以要运行X服务器的操作系统用户身份登录。
2. 运行
X
命令并加上
&
符号,使X服务器在后台运行:
$ X &
3. 按下`Ctrl+Alt+F7`切换到图形控制台,此时屏幕中央会出现一个`x`,表示鼠标光标。
4. 按下`Ctrl+Alt+F1`返回文本控制台。
-
运行
init 5或telinit 5命令 :在操作系统提示符下以root用户身份运行该命令,可能会出现基于GUI的登录屏幕。 -
修改
/etc/inittab文件并重启服务器 :将initdefault变量的值修改为5,然后重启服务器:
id:5:initdefault:
工作原理
对于Solaris服务器,可以使用
svcadm enable gdm
命令启动GDM服务。如果对
xorg.conf
配置文件进行了更改,可以使用
svcadm restart gdm
命令重启该服务。使用
svcs gdm
命令验证GDM服务的状态,如果服务处于在线状态,则表示已启用:
# svcs gdm
STATE STIME FMRI
online 11:23:58 svc:/application/graphical-login/gdm:default
对于Linux服务器,如果运行级别设置为
5
,则在服务器重启时会自动启动X服务器。如果服务器以运行级别
3
启动,默认屏幕显示为文本控制台,而你希望运行基于GUI的应用程序,如
dbca
创建Oracle数据库,则需要手动启动X服务器。
X
命令实际上会调用
Xorg
,可以使用
which X
和
ls -l /usr/bin/X
命令查看其关联:
# which X
/usr/bin/X
# ls -l /usr/bin/X
lrwxrwxrwx. 1 root root 4 Jan 13 2014 /usr/bin/X -> Xorg
# which Xorg
/usr/bin/Xorg
# ls -l /usr/bin/Xorg
-rwsr-xr-x. 1 root root 2274240 Nov 21 2013 /usr/bin/Xorg
不同的Linux发行版中,
X
命令的位置可能不同,可以使用
which X
命令确定其确切目录。
除了使用
X
命令启动X服务器,还可以使用
startx
命令,它会自动调用
X
命令并启动图形显示管理器。大多数Linux发行版的默认显示管理器是GNOME,如果你想切换到其他显示管理器,可以参考相关文档。
当X服务器已经运行时,可以按下
Ctrl+Alt+F1
切换到文本控制台,按下
Alt+F7
切换到图形控制台,通过重复这些步骤可以在文本和图形控制台之间来回切换。
X服务器启动方法对比表格
| 服务器类型 | 启动方法 | 操作步骤 | 难易程度 |
|---|---|---|---|
| Solaris | 启用GDM服务 |
1. 运行
svcs gdm
验证状态;2. 若禁用则运行
svcadm enable gdm
| 简单 |
| Linux | 手动运行X命令 |
1. 登录用户;2. 运行
X &
;3. 切换控制台
| 复杂 |
| Linux |
运行
init 5
或
telinit 5
| 以root身份运行命令 | 中等 |
| Linux |
修改
/etc/inittab
并重启
| 1. 修改文件;2. 重启服务器 | 中等 |
X服务器启动流程图
graph TD;
A[选择服务器类型] --> B{Solaris};
B -- 是 --> C[验证GDM状态];
C --> D{GDM禁用};
D -- 是 --> E[启用GDM服务];
B -- 否 --> F{Linux};
F -- 是 --> G[选择启动方法];
G --> H[手动运行X命令];
G --> I[运行init 5或telinit 5];
G --> J[修改inittab并重启];
2.4 停止X服务器
问题描述
需要在Linux/Solaris服务器上停止正在运行的X服务器。
解决方案
Solaris服务器
运行以下命令停止GDM服务:
# svcadm disable gdm
Linux服务器
-
手动运行X命令启动的情况
:在文本控制台中,找到X服务器的进程ID(PID),可以使用
ps -ef | grep X命令查找,然后使用kill -9 <PID>命令终止该进程。例如:
$ ps -ef | grep X
user 1234 1 0 10:00:00 ? 0:00 /usr/bin/X &
$ kill -9 1234
-
通过
init或telinit命令启动的情况 :将运行级别修改为不启动X服务器的级别,如运行init 3或telinit 3将运行级别设置为3,此时X服务器会停止。
# init 3
-
修改
/etc/inittab文件启动的情况 :将initdefault变量的值修改回原来不启动X服务器的级别(通常为3),然后重启服务器。
id:3:initdefault:
工作原理
对于Solaris服务器,
svcadm disable gdm
命令会禁用GDM服务,从而停止X服务器。对于Linux服务器,不同的启动方式对应不同的停止方法。手动启动的X服务器通过终止其进程来停止;通过
init
或
telinit
命令启动的X服务器,改变运行级别可以停止它;修改
/etc/inittab
文件启动的X服务器,修改文件并重启服务器可以使其停止。
2.5 重定向和安全X显示到远程计算机
问题描述
希望将本地的X显示重定向到远程计算机,并且保证传输的安全性。
解决方案
使用SSH隧道
可以使用SSH隧道来安全地重定向X显示。在本地客户端连接远程服务器时,使用
-X
或
-Y
选项。
-X
选项启用X11转发,但安全性较低;
-Y
选项启用受信任的X11转发,安全性较高。例如:
$ ssh -Y user@remote_server
连接成功后,在远程服务器上运行的基于GUI的应用程序的窗口会显示在本地客户端上。
使用xhost进行访问控制
可以使用
xhost
命令来控制哪些客户端可以访问本地的X服务器。例如,允许特定的IP地址或主机名访问:
# 允许特定IP访问
$ xhost +192.168.1.100
# 允许所有客户端访问(不建议在安全要求高的环境中使用)
$ xhost +
工作原理
SSH隧道通过加密通道将X显示数据传输到本地客户端,保证了数据的安全性。
xhost
命令通过修改X服务器的访问控制列表,允许或拒绝特定的客户端访问。
2.6 改变X终端的外观和感觉
可以通过修改X资源文件来改变X终端的外观和感觉。X资源文件通常是
~/.Xresources
。例如,修改终端的字体和背景颜色:
! 设置终端字体
xterm*faceName: Monospace
! 设置终端背景颜色
xterm*background: black
! 设置终端前景颜色
xterm*foreground: white
修改完成后,使用
xrdb
命令加载新的资源文件:
$ xrdb -merge ~/.Xresources
然后重新启动X终端,就可以看到修改后的外观。
X服务器操作汇总表格
| 操作 | Solaris服务器 | Linux服务器 |
|---|---|---|
| 启动 |
1. 运行
svcs gdm
验证状态;2. 若禁用则运行
svcadm enable gdm
|
1. 手动运行X命令;2. 运行
init 5
或
telinit 5
;3. 修改
/etc/inittab
并重启
|
| 停止 |
运行
svcadm disable gdm
|
1. 手动启动的用
kill -9 <PID>
;2. 通过
init
或
telinit
启动的修改运行级别;3. 修改
/etc/inittab
启动的修改文件并重启
|
| 重定向显示 |
使用SSH隧道(
ssh -Y user@remote_server
)和
xhost
控制
|
使用SSH隧道(
ssh -Y user@remote_server
)和
xhost
控制
|
X服务器操作流程图
graph TD;
A[选择操作类型] --> B{启动};
B -- 是 --> C{Solaris};
C -- 是 --> D[验证GDM状态并启用];
C -- 否 --> E{Linux};
E -- 是 --> F[选择启动方法];
F --> G[手动运行X命令];
F --> H[运行init 5或telinit 5];
F --> I[修改inittab并重启];
A --> J{停止};
J -- 是 --> K{Solaris};
K -- 是 --> L[禁用GDM服务];
K -- 否 --> M{Linux};
M -- 是 --> N[选择停止方法];
N --> O[终止X进程];
N --> P[修改运行级别];
N --> Q[修改inittab并重启];
A --> R{重定向显示};
R --> S[使用SSH隧道和xhost控制];
总结
本文详细介绍了网络安全工作中的密码短语修改、无提示登录配置,以及X窗口系统的管理,包括X服务器的配置、启动、停止、显示重定向和外观修改等内容。通过合理配置和操作,可以提高网络连接的安全性,同时方便地使用基于GUI的应用程序来管理服务器和数据库。在实际应用中,需要根据不同的服务器类型和需求,选择合适的方法和命令进行操作。
超级会员免费看
11万+

被折叠的 条评论
为什么被折叠?



