现在我们为本地服务器创建私有和公用密匙,执行下面的命令:
[root@sound]# su username
[username@sound]$ ssh-keygen1
产生密钥后把本机的公用密匙(identity.pub)拷贝到远程主机的"/home/username/.ssh"目录下,例如,使用"authorized_keys"这个名字。
用加上"-p"参数的"ssh-keygen"命令,在任何时候都可以改变初始的密码。
下面列出的是一些我们经常要用到的命令,当然还有很多其它的命令,更详细的信息可以查看 man 帮助页或其它文档。
1.ssh
ssh(Secure Shell)是用来登录远程计算机和在远程计算机上执行命令的程序。它是用来替代 rlogin 和 rsh,以及在不安全的网络环境下在两台计算机之间提供安全和加密的信息交流。
使用下面的命令可以从客户端连接到远程主机 server:
[root@sound /]# su admin
[admin@sound /]$ssh server
2.scp
可以用这个命令把文件从本地计算机拷贝到远程计算机,或者反之,甚至可以在两台远程计算机之间用 "scp" 命令拷贝文件。
用下面的命令把文件从远程主机拷贝到本地主机上:
[root@sound /]# su admin
[admin@sound /]$ scp -p :/dir/for/file localdir/to/filelocation
用下面的命令把文件从本地主机拷贝到远程主机上:
[root@sound/]# su admin
[admin@sound /]$ scp -p localdir/to/filelocation :/dir/for/file
注意:"-p" 选项表示文件的改变和访问时间属性以及权限,在拷贝过程中被保留。通常是需要这样的。
五、Tripwire
如果有人侵入了您的系统,在您的系统中放置了木马和后门,您怎么才能知道呢?tripwire 就是这样一个对系统做完整性检查的工具。它是目前最为著名的 unix 下文件系统完整性检查的软件工具,这一软件采用的技术核心就是对每个要监控的文件产生一个数字签名,保留下来。当文件现在的数字签名与保留的数字签名不一致时,那么现在这个文件必定被改动过了。
当Tripwire 运行在数据库生成模式时,会根据管理员设置的一个配置文件对指定要监控的文件进行读取,对每个文件生成相应数字签名,并将这些结果保存在自己的数据库中,在缺省状态下,MD5 和 SNCFRN(Xerox 的安全哈希函数)加密手段被结合用来生成文件的数字签名。除此以外,管理员还可使用 MD4,CRC32,SHA 等哈希函数,但实际上,使用上述两种哈希函数的可靠性已相当高了,而且结合 MD5 和 sncfrn 两种算法(尤其是 sncfrn)对系统资源的耗费已较大,所以在使用时可根据文件的重要性做取舍。当怀疑系统被入侵时,可由 Tripwire 根据先前生成的,数据库文件来做一次数字签名的对照,如果文件被替换,则与 Tripwire 数据库内相应数字签名不匹配, 这时 Tripwire 会报告相应文件被更动,管理员就明白系统不"干净"了。
可以从下面站点获得 tripwire:
http://www.tripwiresecurity.com
"/usr/TSS/policy/twpol.txt" 文件是纯文本的策略文件,设置 Tripwire 需要检测哪些文件和目录(也叫系统对象)。其中有一个规则设定如何检测需要监控的对象,还有一个特性(property)设置如何检测。特性掩码(property mask)设定进行一致性检验的时候单独文件的特性(property)。属性(Attributes)帮助规定成组的策略如何运作。
您可以根据您的需要修改 twpol.txt 这个策略文件,然后当第一次准备使用策略文件的时候,用下面的安装它:
[root@sound]# twadmin --create-polfile /usr/TSS/policy/twpol.txt
第一次创建基准数据库:用下面的命令
[root@sound]# tripwire { --init }
一致性检查把当前文件系统中的对象及其属性和 Tripwire 数据库中的进行比较。一旦发现异常情况,就会在标准输出上显示出来,报表文件也会被保存下来,以后可以用 "twprint" 命令查看:
[root@sound]# tripwire { --check }
用下面的命令进行交互式的检查:
[root@sound]# tripwire --check --interactive
用下面的命令进行一致性检查并用email发送报表:
[root@sound]# tripwire --check --email-report
用下面的命令更新数据库:
[root@sound]# tripwire --update -r /usr/TSS/report/sound.openarch.com-200001-021854.twr
"-r"参数读取指定的报表文件(deep.openarch.com-200001-021854.twr)。因为当前的配置文件的 REPORTFILE 变量使用$(DATE),所以"-r"这个参数是必须的。
用下面的命令更新策略文件:
[root@deep]# tripwire --update-policy /usr/TSS/policy/newtwpol.txt
在默认情况下,策略更新模式使用"--secure-mode high"。如果文件系统在最近的一次数据库更新之后发生了变化,而且这个变化会违反策略文件中定义的规则,那么在高安全级别的模式下运行你可能会遇到一些问题。例如这种情况:其他的管理员在策略更新的过程中,改变了一些文件。为了解决这个问题,确信在高安全级别的模式下所有的变化都是正常的之后,可以采用低级别的安全模式更新策略文件:
用下面的命令在低级别的安全模式下更新策略文件:
[root@sound]# tripwire --update-policy --secure-mode low /usr/TSS/policy/newtwpol.txt
如果想查找详细的资料可以用man命令查帮助页,读取相关信息。
六、Portsentry
我们可以通过防火墙限制自己系统中什么端口开放,什么端口不开放。对于外部的人们来说,这些信息都是保密的。黑客为了得到您机器中开放的端口,往往会进行各种方式的扫描,这样的扫描软件在互联网上也随处都是。一般的扫描活动都是进行入侵的前奏,对安全是极大的危险。
Portsentry 就是一个反扫描工具。它可以实时发现并分析记录对本机的扫描, 它主要做以下工作:
通过 syslog 做记录
将扫描的主机加入 /etc/hosts.deny
马上禁止所有通向扫描主机的网络流量
过滤掉所有来自扫描主机的网络流量
您可以从下面的网站获得portsentry:
http://www.psionic.com/abacus/portsentry/
"/usr/psionic/portsentry/portsentry.conf"是 portsentry 的主配置文件。您可以在这个文件中设置您所要监听的端口,以及哪些 ip 地址被拒绝,哪些被忽略等等信息。如果您了解详细的信息,可以查看 "README.install" 文件。
"/usr/psionic/portsentry/portsentry.ignore" 文件定义了在执行端口扫描分析时必须要忽略的主机,也就是说即使这些主机进行了扫描活动,portsentry 也不会采取任何行动。
Portsentry 有以下6种启动方式:
portsentry -tcp (basic port-bound TCP mode)
portsentry -udp (basic port-bound UDP mode)
portsentry -stcp (Stealth TCP scan detection)
portsentry -atcp (Advanced TCP stealth scan detection)
portsentry -sudp ("Stealth" UDP scan detection)
portsentry -audp (Advanced "Stealth" UDP scan detection)
建议您可以使用下面两种方式启动 portsentry:
portsentry -atcp (Advanced TCP stealth scan detection)
portsentry -sudp ("Stealth" UDP scan detection)
一种 tcp 启动方式和一种 udp 启动方式可以同时进行。
您可以把下面的两个命令加入 "/etc/rc.d/rc.local" 中,当系统重起时自动启动:
[root@sound /]# /usr/psionic/portsentry/portsentry -atcp
[root@sound /]# /usr/psionic/portsentry/portsentry -sudp
对于更详细的信息您可以查阅 man 手册和 portsentry 自带的帮助文件。
七、Openssl
一些服务器端的软件例如:IMAP & POP, Samba, OpenLDAP, FTP, Apache 等等在给用户提供服务的时候要对用户进行认证,只有在认证通过后服务才会被许可。而 client/server 方式的服务客户端和服务端之间通讯都是以明文方式进行的,openssl 正是提供了对传输的数据的一种加密方式。Openssl 可以安装在 Linux 服务器上,它需要一些第三方提供的应用程序来为服务提供加密。