全功能配置笔记
说是笔记,其实更多的是靠回忆来写的,xxbin可不是一个喜欢做笔记的家伙(上学的时候因为这个没有少被老师K过),写这个笔记,更确切的来说是写这一系列文章的最初目的是为了自己在以后的Linux安装调试的过程中少花一些精力,既然要写,就干脆贴出来让大家分享一下,也希望大家能够发现并指出xxbin的调试过程中的一些问题。在继续真正的安装笔记之前,首先xxbin要说明这个Linux的安装调试并不包括桌面应用的安装,因为xxbin除了在2年前曾经用Linux做桌面长达半年之外,其他的时间都是用Linux来架设各种服务器,因此这个笔记将关注与Linux的安全、稳定、可靠以及如何搭建HTTP、FTP、 Mail、DNS、Proxy、LDAP、DB等等各种服务(所涉及到的Linux以RedHat 7.3为基础)。
在xxbin眼中,Linux = Kernel + Script (+ Package)
Kernel——就是Linux的内核,最初的Linux发布的时候就是仅仅发布了一个内核;
Script——各种启动脚本和配置文件,其实不同的发行版的主要区别就是启动脚本和配置文件不同,启动脚本和启动过程也是BSD系列和SYSV流派的主要区别;
Package——各种软件包,其实xxbin很少用到发行版自带的软件包,因为xxbin喜欢自己定制一些东西,甚至是修改代码 ,这也是上面为什么把Package用括号括起来的原因。
如果从上面的角度来看Linux的话,只要我们熟悉了不同发行版本的启动脚本和配置文件,那么不同的发行版在我们眼里也就没有什么区别了。
最后还是要说一句,正如同xxbin在那篇至今还在写的 "Fall in Love with Google" 说的一样——希望大家多多捧场,支持的回个贴,也让xxbin有热情继续写下去。
第一篇: OpenSSH
为什么要用OpenSSH?
麦子在他写的那篇名为SSH的文章提到——使用telnet进行远程设备维护的时候,由于密码和通讯都是明文的,易受sniffer侦听,所以应采用SSH替代telnet。
为什么首先提安装OpenSSH而不是其他的是因为xxbin实在不愿意用机器的物理终端或者是telnet来操作机器。
OpenSSH 是Linux/UNIX上用的最多的SSH Server,xxbin无论是在Linux/FreeBSD还是AIX上都用它,不过请大家注意,OpenSSH的低版本是有漏洞的,另外还有一点特别要小心——OpenSSH以及Apache(SSL Support)等所依靠的软件OpenSSL的低版本也存在一些漏洞的,因此,在安装OpenSSH以及Apache之前,需要安装最新版本的OpenSSL,切记切记,否则即使你安装了最新版本的Apache和OpenSSH,系统还是存在致命的漏洞!
首先安装OpenSSL:
从 http://www.openssl.org/source/ 下载最新版本的OpenSSL,在写这篇文章的时候,最新版本的OpenSSL为OpenSSL 0.9.7a
(在安装前请把系统中原来安装的旧的版本的openssl卸载掉)
tar -xvzf openssl-0.9.7a.tar.gz
cd openssl-0.9.7
./config shared
make
make test
make install
如果没有问题,那么OpenSSL就被安装在/usr/local/里面了,注意上面的配置命令里面有个shared,意思是创建Shared Libraries,这个选项一定要加上,否则某某程序报错说找不到某某so你就不要来找我。
另外,为了兼容某些程序比如OpenSSH,需要手动创建一些符号连接:
cd /usr/local/ssl/lib
ln -s libcrypto.so.0.9.7 libcrypto.so.2
ln -s libssl.so.0.9.7 libssl.so.2
最后要刷新系统的动态连接库配置
echo /usr/local/ssl/lib >> /etc/ld.so.conf
ldconfig -v
看看/usr/local/ssl/lib下是否存在下面两行:
libcrypto.so.0.9.7 -> libcrypto.so.0.9.7
libssl.so.0.9.7 -> libssl.so.0.9.7
接着安装OpenSSH:
从 ftp://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/ 下载最新版本的OpenSSH,在写这篇文章的时候,最新版本的OpenSSH为OpenSSH 3.5 P1。
tar -xvzf openssh-3.5p1.tar.gz
cd openssh-3.5p1
./configure --with-ssl-dir=/usr/local/ssl
make
make install
注意查看configure的输出,找到有关OpenSSL的部分
类似:
checking OpenSSL header version... 90702f (OpenSSL 0.9.7b 10 Apr 2003)
checking OpenSSL library version... 90702f (OpenSSL 0.9.7b 10 Apr 2003)
看看是否应用了最新版本OpenSSL
如果没有问题,那么OpenSSH就被安装在/etc/local里面了,所有有关OpenSSH的配置文件都放在/usr/local/etc目录下,修改配置文件/usr/local/etc/sshd_config
vi /usr/local/etc/sshd_config
CODE
# This is the sshd server system-wide configuration file. See
# sshd_config(5) for more information.
Port 22
Protocol 2,1
ListenAddress 0.0.0.0
HostKey /usr/local/etc/ssh_host_key
HostKey /usr/local/etc/ssh_host_rsa_key
HostKey /usr/local/etc/ssh_host_dsa_key
SyslogFacility AUTH
LogLevel INFO
PermitRootLogin yes
RhostsAuthentication no
IgnoreRhosts yes
UsePrivilegeSeparation yes
Subsystem sftp /usr/local/libexec/sftp-server
这里面主要要改动的就是PermitRootLogin yes。
配置OpenSSH自启动:
cp contrib/redhat/sshd.init /etc/init.d/sshd
ln -s /etc/init.d/sshd /etc/rc.d/rc3.d/S55sshd
启动OpenSSH:
/etc/init.d/sshd start
若系统没有提示错误那就说明sshd已经起来了,可以ps -ef |grep sshd来确认一下,同时也可以用ssh客户端来测试一番。
若系统提示错误,就应该根据错误来进行排错,因为可能的错误实在太多,在这里就不做讨论了。
推荐采用的SSH客户端:
如果在Linux/UNIX下,那么用OpenSSH带的ssh客户端就OK了,如果在Windows下,强烈建议采用SecureCRT。
第二篇:Linux Kernel
提起Linux内核(Linux Kernel),网络上有大量的文章讨论如何编译内核,在此,xxbin并不会详细说明整个编译的细节,细节问题请查阅Linux Kernel HOW-TO。
为什么要自己编译内核?
1> 发行版自带的内核版本不够高,或者有漏洞和bug;
2> 发行版自带的内核不是为你的CPU优化的,比如redhat通常的内核都是for i386的,如果你用高档的芯片,芯片的性能就没有完全发挥出来;
3> 发行版自带的内核太过大众化,不是为你的机器优化的,如果你还用着发行版自带的内核,你可以试着运行一下lsmod,肯定会列出一堆模块,比如网卡的驱动、甚至是文件系统模块等等。
4> 发行版自带的内核提供的功能不能满足你的要求,比如你要用Linux做一个文件服务器,想用IBM的EVMS来做卷管理,想用IBM JFS for Linux来做文件系统,那么你肯定得自己重新编译内核了。
5> more and more
上面提到过Linux内核的版本,在这里有必要解释一下,Linux的内核分两种,一种是stable版本的,就是稳定版,稳定版从1.0.x开始而且目前是以偶数编号发表的; 象1.0.x/1.2.x/2.0.x /2.2.x/2.4.x等都是稳定版,另外一种版本是测试版,即发展中的内核 (1.1.x/1.3.x/2.1.x/2.3.x/2.5.x等等),专门作为测试用的,如果你是想玩玩测试版内核的新功能倒是没有问题,但是如果用Linux来跑一些比较重要的应用,xxbin强烈建议你用稳定版的内核,在这篇文章写的时候,The latest stable version of the Linux kernel is: 2.4.20 。
针对我们上面提出的问题,我们需要对我们的内核做一些优化工作:
1> 发行版自带的内核版本不够高,或者有漏洞和bug;
在通常情况,应该选择最后的稳定版本内核,比如现在我们应该选择2.4.20
2> 发行版自带的内核不是为你的CPU优化的
在编译内核的时候,注意选择最符合你的CPU型号的选项。(新版本的内核在config的时候会自己选择)
3> 发行版自带的内核太过大众化,不是为你的机器优化的
首先,运行lsmod,看看你的发行版的内核用了哪些模块,哪些模块是你必须要用的?编译内核在选择某个功能是编译成模块还是编译进内核的一个原则就是看你是否频繁的需要这个功能,比如网卡驱动,SCSI驱动,文件系统等,就不应该编译成模块。
OK, step by step
下载内核源代码
建议从 http://www.kernel.org/ 下载你所需要的内核源代码,比如xxbin现在选择的是2.4.20
wget http://www.kernel.org/pub/linux/kernel/v2....-2.4.20.tar.bz2
tar -xvjf linux-2.4.20.tar.bz2
确定我们需要的功能和模块
运行 dmesg 来查看你的机器的硬件配置,这里我们关注的是CPU内型,网卡具体型号,SCSI/RAID卡型号(如果有的话 ),并把它们纪录下来。
比如我们论坛的