切换桌面

#switchdesk   gnome  或 kde



.修改系统时间


date -s “2003-04-14 cst”,cst指时区,时间设定用date -s 18:10





.设置启动模式

·/etc/inittab


id:3:initdefault文本模式


id:5:initdefault图形模式





.设置主机名

[root@localhost default]# vi /etc/sysconfig/network





NETWORKING=yes


#HOSTNAME=localhost.localdomain


HOSTNAME=cnscnlinux








[root@localhost default]# /etc/rc.d/init.d/network restart
正在关闭接口eth0:                                         [  确定  ]

正在关闭接口
eth1:           
                            
[  确定  ]

关闭环回接口:         
            
            
           [
 确定  ]

设置网络参数:         
            
            
           [
 确定  ]

弹出环回接口:         
            
            
           [
 确定  ]

弹出界面
eth0:          
                                 
[  确定  ]

弹出界面
eth1:          
                                 
[  确定  ]


[root@localhost default]# hostname


cnscnlinux





.鼠标设置

redhat-config-mouse





COM1在linux中是/dev/ttyS0


COM2在linux中是/dev/ttyS1


设置成左键鼠标 $gpm  -B  321





.时区设置

/usr/sbin/timeconfig





.显示器休眠

不让显示器休眠


setterm -blank 0


setterm -blank n (n为等待时间)





.vnc图形显示设置

1)在xterm中执行 xhost + 192.168.0.249


2) #export  DISPLAY=192.168.0.88:0


3) 修改vi  $HOME/.vnc/xstartup ,把所有内容注释掉,在最后添加startkde &


[root@CnsLinux3 root]# vi  $HOME/.vnc/xstartup


#!/bin/sh


# Uncomment the following two lines for normal desktop:


# unset SESSION_MANAGER


# exec /etc/X11/xinit/xinitrc


#[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources


#xsetroot -solid grey


#vncconfig -iconic &


#xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &


#twm &


startkde &


4)重启vncserver


(确保nfs服务的运行)





.制作启动盘

/sbin/mkbootdisk





.防一用户名由两个人同时登陆

echo "* hard maxlogins 2" >> /etc/security/limits.conf



Notes: This setting do not affact root account.





.防火墙配置

/usr/sbin/lokkit





.改变机器语言

[root@CnsLinux3 sbin]# vi  /etc/sysconfig/i18n  

#LANG="en_US.UTF-8"                          
#英文

LANG="zh_CN.GB18030"        
            
    #中文
SUPPORTED="zh_CN.GB18030:zh_CN:zh:en_US.UTF-8:en_US:en"    #所支持的语言

SYSFONT="latarcyrheb-sun16"       
          #使用的字体





========================================================





//推荐配置


LANG="zh_CN.GB18030"


LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"


SUPPORTED="zh_CN.GB18030:zh_CN:zh:en_US.UTF-8:en_US:en"


SYSFONT="lat0-sun16"


SYSFONTACM="8859-15"





export LANG=zh_CN.GB1830

export LC_ALL=Zh_CN





.给网卡加第二个IP地址

ifconfig eth0:x ip up

x可以代表很多,就是一块网卡可以绑定很多IP地址。








[root@book ~]# ifconfig eth0:1 192.168.0.89 up


[root@book ~]# ifconfig

eth0      Link encap:Ethernet  HWaddr 00:0A:EB:16:BA:87 

          inet
addr:192.168.0.88  Bcast:192.168.0.255  Mask:255.255.255.0


          inet6 addr: fe80::20a:ebff:fe16:ba87/64 Scope:Link


          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1


          RX packets:303011 errors:0 dropped:0 overruns:0 frame:0


          TX packets:87302 errors:0 dropped:0 overruns:0 carrier:0


          collisions:0 txqueuelen:1000


          RX bytes:33526346 (31.9 MiB)  TX bytes:35230323 (33.5 MiB)


          Interrupt:5 Base address:0xc800





eth0:1    Link encap:Ethernet  HWaddr 00:0A:EB:16:BA:87 

          inet
addr:192.168.0.89  Bcast:192.168.0.255  Mask:255.255.255.0


          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1


          RX packets:0 errors:0 dropped:0 overruns:0 frame:0


          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0


          collisions:0 txqueuelen:1000


          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)


          Interrupt:5 Base address:0xc800





[root@book ~]# ping 192.168.0.89

PING 192.168.0.89 (192.168.0.89) 56(84) bytes of data.


64 bytes from 192.168.0.89: icmp_seq=0 ttl=64 time=0.082 ms


64 bytes from 192.168.0.89: icmp_seq=1 ttl=64 time=0.071 ms


--- 192.168.0.89 ping statistics ---


2 packets transmitted, 2 received, 0% packet loss, time 999ms


rtt min/avg/max/mdev = 0.071/0.076/0.082/0.010 ms, pipe 2





.禁止文件被rm掉 (但这样文件就不可修改了)

[root@book ~]# touch a.txt





[root@book ~]# chattr +i a.txt





[root@book ~]# rm  -f a.txt

rm: cannot remove `a.txt': Operation not permitted





[root@book ~]# ls


anaconda-ks.cfg  a.txt  Desktop  firstboot.1120181163.33  install.log  install.log.syslog





[root@book ~]# chattr  -i  a.txt





[root@book ~]# rm  -f a.txt





[root@book ~]# ls


anaconda-ks.cfg  Desktop  firstboot.1120181163.33  install.log  install.log.syslog







.命令行的实现汉字显示

set meta-flag on

set input-meta on

set convert-meta off

set output-meta on

这几行主要是实现命令行上实现汉字的输入以及显示。





.用chroot()限制用户

   如果的确想限制一个用户,可用chroot()子程序为用户建立一个完全隔离的环境,改变了进程对根目录的概念,因此可用于将一个用户封在整个文件系
统的某一层目录结构中,使用户无法用cd命令转出该层目录结构,不能存取文
件系统中其余部分的任何文件.这种限制方式比加限制的shell好得多.

   用户使
用的命令应由系统管理员在新的root目录中建立一个bin目录,并建立用户可
用命令的链到系统的/bin目录中相应命令文件上(若在不同的文件系统则应拷 贝命令文件).


   还应建立新的passwd文件,保留系统登录户头(为了使ls -l正确地报告与
受限制的子文件系统中的文件相关的正确登录名)和用户帐户,但系统帐户的
口令改为NOLOGIN以使受限制的用户不能取得系统登录的真实口令,使“破密“ 程序的任何企图成为泡影.


   utmp文件是who所需要的,该文件含有系统中已登录用户的列表.

   新的/etc/profile文件也不是建链文件,以便受限制的用户可以执行不同
的启动命令.

   /dev目录中的终端设备文件被链接到新的/dev目录下,因为命令who产生 输出时要查看这些文件.

   在系统V及以后的UNIX版本中,login命令有chroot()的功能.如果口令文
件中用户入口项的登录shell域(最后一个域)是*,login将调用chroot()把用
户的根目录设置成为口令文件中用户入口项登录目录域指定的目录.然后再调
用exec()执行login,新的login将在新子系统文件中执行该用户的登录.


   chroot()并不是把root封锁在一个子文件系统中,所以给受限制用户用的
命令时应加以考虑,具有root的SUID许可的程序可能会给予用户root的能力.
应当将这种可能减低到最小程度,交给用户使用的命令应当取自清除了SUID陷
井的系统命令.

   链接文件可减少磁盘占用区,但要记住,当与敌对用户打交道时 链接到chroot目录结构(尤其是命令)的系统文件是很危险的.
如果建立一个像这样的限制环境,应确保对安装到新的/bin的每条命令都 做过测试,有些程序可能有系统管理员未曾想到的出乎意料的执行结果.

   为了
使这些命令能运行,还得在加限制的子文件系统中加服务目录或文件如:/tmp,
/etc/termcap,/usr/lib/terminfo,/dev/mem,/dev/kmem,/dev/swap,用户所
登录的/dev中的tty文件以及/unix.

   有些程序在子文件系统中运行时不会很好,如果将假脱机程序和网络命令
拷贝到加限制的子文件系统中,并放在为两条命令专建的目录层结构下,它们 可能也运行不了.





.init的运行等级(0~6)

0       完全关闭系统

1或S级   单用户模式       关闭所有多用户和远程登录进程,只运行最小软件聚合

2-5     多用户级别     

6       重新引导





./etc/inittab

 定义了init在它的每个运行级上要做什么事情





./etc/init.d/rc

 定义了由/etc/inittab调用的程序





.启动脚本

 脚本的主拷贝位于/etc/init.d的目录中,用来负责守护进程

 

 一个简单的启动脚本

 #!/bin/sh

 #

 #Name  : /etc/init.d/sshd

 #Author: cnscn

 #Time  : 2006-04-23

 

 test -f /usr/local/sbin/sshd || exit 0

 

 case "$1" in

    start)

           echo -n "Starting sshd: ssd"

           /usr/local/sbin/sshd

           echo "."

           ;;

    stop)

           echo -n "Stopping sshd: sshd"

           kill `cat  /var/run/sshd.pid`

           echo "."

           ;;

 restart)

           echo -n "Stopping sshd: sshd"

           kill `cat /var/run/sshd.pid`

           echo "."



           echo -n "Starting sshd: sshd"

           /usr/local/sbin/sshd

           echo "."

           ;;

      *)

           echo "Usage: /etc/init.d/sshd start|stop|restart"

           exit 1

           ;;

 esac







 用init自动启动关闭程序 (把程序连接到相应的rcX.d启动目录中)

 ln -s /etc/init.d/sshd  /etc/rc2.d/S99sshd

 ln -s /etc/init.d/sshd  /etc/rc0.d/K25sshd

 ln -s /etc/init.d/sshd  /etc/rc6.d/K25sshd





.直接更改当前的运行等级

 #telinit  1               进入运行等级1





.ps监视进程

[root@localhost ~]# ps aux

USER       PID %CPU %MEM 
VSZ  RSS TTY      STAT START 
TIME COMMAND

root      5009  0.0  0.0
3036  744 pts/2    R+   10:39 
0:00 ps aux



USER      进程属主ID


PID       进程ID


%CPU      进程正在使用的CPU时间百分数


%MEM      进程正在使用的实际内存的百分数


VSZ       进程的虚拟大小


RSS       驻留集的大小(内存页的数量)


TTY       控制终端的ID


STAT      当前进程的状态(R=可运行

                     
D=在等磁盘或短期等待

                     
S=在睡眠(<20秒)

                     
T=被跟踪或被停止 

                     
Z=僵进程   

                     
W=进程被交换出去

                     
<=进程拥有比普通优先级更高的优先级

                     
N=进程拥有比普通优先级更低的优先级

                     
L=有些页面被锁在内存中


                      )


START     启动进程的时间


TIME      进程消耗掉的CPU时间


COMMAND   命令名和参数





 

.TOP监视进程

#top

top - 10:52:04 up  2:41,  4 users,  load average: 1.10, 0.87, 0.61

Tasks: 105 total,   1 running, 103 sleeping,   0 stopped,   1 zombie

Cpu(s): 15.8% us, 27.7% sy,  0.0% ni, 56.1% id,  0.0% wa,  0.3% hi,  0.0% si

Mem:    775708k
total,   770204k used,     5504k
free,    12144k buffers

Swap:  1124540k total,      448k used,  1124092k free,   545612k cached



  PID
USER      PR  NI  VIRT
RES  SHR S %CPU %MEM    TIME+  COMMAND

 4014 root       5 -10  480m 384m 377m S 25.5 50.8  12:18.44 vmware-vmx

 3447
root      15   0  123m
28m 8176 S  5.6  3.7   7:05.72 X

 4225
root      16   0  146m
56m  20m S  4.6  7.5  16:55.74 firefox-bin



PR        The priority of the task.

NI        Nice value

VIRT      The total amount of virtual memory used by the task

RES       The non-swapped physical memory a task has used

SHR       The amount of shared memory used by a task.

S         The status of the task which can be one of:

            D = uninterruptible sleep

            R = running

            S = sleeping

            T = traced or stopped

            Z = zombie



TIME+     CPU Time, hundredths







.crontab

分钟   小时    日    月    周     [user]   command

45   
10     *   
*  
1-5           
....     周一到周五的上午10:45运行

0,30 
*      13  
*   
5                     
周五及每月13号每半个小执行

15-45/5
*  
*     *   
*                     
每小时的15-45分钟内每5分钟执行

30   
2      *   
*   
1                     
每周一早上2:30时执行

20   
1      *   
*     *      find /tmp  -atime +3 -exec
rm -f {} ';'  每天早上1:20删除/tmp中3天无人访问的文件

55    23      *     *     0-3,6  find /tmp  -atime +3 -exec rm -f {}   每周日到周三及周六执行




 

.自动注销
  编辑/etc/profile~
  在HISTFILESIZE=   这一行下面增加
  export TMOUT=600             //10分钟内如无操作则自动退出


.禁ping
$ echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all


此后可以用 来判断机器是否运行着
# nmap -sP 192.168.0.88


Starting nmap 3.70 ( [url]http://www.insecure.org/nmap/[/url] ) at 2006-04-09 14:46 CST
Host 192.168.0.88 appears to be up.
MAC Address: 00:11:25:AB:B6:98 (IBM)
Nmap run completed -- 1 IP address (1 host up) scanned in 18.652 seconds


.编辑/etc/host.conf加入

#lookup names via DNS first then fall back to /etc/hosts
order hosts,bind

#We don't have machines with multiple IP address on the same card (like virtual server, IP Aliasing)
#multi off

#Check for IP address spoofing   (防止IP欺骗)
nospoof on



4)禁止和允许的root登陆终端
#vi /etc/securetty
tty1
#tty2
#tty3
#tty4


.取得系统字长
$getconf WORD_BIT
 32


.注销时删除命令记录
编辑 /etc/skel/.bash_logout
增加
    rm -f $HOME/.bash_history
~~~~

.关掉rpc(也就是portmap)服务
# ntsysv~~~
  去掉portmap就可以了


.crontab的权限
如果想限制能建立crontab的用户,可在文件/usr/lib/cron/cron.allow文件中列出允许运行crontab命令的用户.任何未列于该文件的用户不能运行crontab.反之,若更愿意列出不允许运行crontab命令的用户,则可将他们列入/usr/lib/cron/cron.deny文件中,未列于该文件的其他用户将被允许建立crontab.


注意:若两个文件都存在,系统将使用cron.allow,忽略cron.deny.如果两个文件都不存在,则只有root可运行crontab.所以,若要允许系统中的所有用户都可运行crontab命令,应当建立一个空的cron.deny文件,如果cron.allow





也存在,则删除该文件.这个版本的cron命令的安全程度比前一个高,因为用户只能看自己的crontab,系统管理员也不必担心其他用户的程序是否会作为root运行,由于允许每个系统登录用户有自己的crontab,也简化了对程序必须由cron运行,但不必作为root运行的系统程序的处理.必须确保root的crontab文件仅对root可写,并且该文件所在的目录及所有的父目录也仅对root可写.




.保护Portmap的安全性
1)保护 Portmap 的安全性





portmap 服务是用于 RPC 服务(如 NIS 和 NFS)的动态端口分配守护进程。它的验证机制比较薄弱,而且具备为它所控制的服务分配大范围端口的能力。由于这些原因,要保护它的安全比较困难。





如果运行 RPC 服务,请遵守以下基本规则。





2)使用 TCP 会绕程序来保护 portmap。





使用 TCP 会绕程序来限制可以使用 portmap 服务的网络或主机这一点很重要,因为 portmap 没有内建的验证方式。





更进一步,在限制对服务的使用时,只使用 IP 地址。避免使用主机名,因为主机名可以通过 DNS 污染或其它方法被伪造。








3)使用 IPTables 来保护 portmap





要进一步限制对 portmap 服务的使用,在服务器上添加 IPTables 规则来限制到指定网络的进出是一个好办法。





以下是两个 IPTables 命令的例子,允许网络 192.168.0/24TCP 和 localhost(Nautilus 程序使用的 sgi_fam 服务所必需的)到 portmap 服务(监听端口111)的连接。所有其它分组都被放弃。





iptables -A INPUT -p tcp -s! 192.168.0.0/24  --dport 111 -j
DROP

iptables -A INPUT -p tcp -s 127.0.0.1  --dport 111 -j
ACCEPT

要以相似的方法限制 UDP 交通,使用以下命令。


iptables -A INPUT -p udp -s! 192.168.0.0/24  --dport 111 -j DROP


=================================================================
[From] [url]http://www-128.ibm.com/developerworks/cn/security/se-lbuffer/[/url]

级别: 初级

薛静锋北京理工大学计算机科学工程系

2002 年  4 月  01 日

    缓
    冲区溢出***是目前***最常用的***手段之一,为了应对不断涌现的缓冲区溢出***,我们研究了在Linux系统下防范缓冲区溢出的方法,通过研究,总结了
    在Linux平台下防范缓冲区溢出***的安全策略,这些安全策略可以应用于一般企业内部服务器,包括web服务器、mail服务器、samba服务器、
    ftp服务器以及proxy服务器等。在实际使用中,我们发现通过这些安全策略的配置能够对缓冲区溢出***起到很好的防范措施。





    

在对计算机系统安全的
研究中,有一种系统安全漏洞引起了我们的关注。一方面是由于这种安全漏洞的广泛性--几乎使所有的操作系统平台都受到影响。另一方面,我们为***基于此类
安全漏洞所编写的***程序的隐蔽性和强大威力所吸引。这就是缓冲区溢出技术。它可以使看似安全的,正在运行常规服务(如
DNS、ftpd等)的主机在几秒钟内失去控制权。缓冲区溢出***是目前***最常用的***手段。在当前CERT和CIAC等发布的Internet安全事
件报告中,
缓冲区溢出已成为常见的用语。缓冲区溢出***的目的在于扰乱具有某些特权运行的程序的功能。这样可以让***者取得程序的控制权,如果该程序具有足够的权
限,那么整个主机就被控制了。


    

为了应对不断涌现的缓冲区溢出***,我们研究了在Linux系统下防范缓冲区溢出的方
法,之所以选择Linux平台,主要有两方面的原因:(1)Linux是一个开放源码的平台,有利于我们在研究的过程中深入技术细节,由于Linux及其
上面的大量应用都是基于开放源码,有很多***在其上进行了大量的工作,可以说Linux上的网络***水平代表了整个网络***的最高水平。(2)Linux
是一个类Unix系统,同时也是在Internet中大量使用的操作系统平台,选择Linux作为研究缓冲区溢出技术的平台是非常具有代表性的,在
Linux平台上取得的经验可以非常容易地移植到其他Unix或者类Unix平台上。


    

通过研究,我们总结了在Linux平台下防范缓冲区溢出的安全策略,这些安全策略可以应用于一般企业内部服务器,包括web服务器、mail服务器、samba服务器、ftp服务器以及proxy服务器等。我们所总结的这些安全策略如下所示:


    


    


如果不想让远程登录的用户看到系统的提示信息,可以改变"/etc/inetd.conf"文件中的telnet设置:


    





    

在末尾加上"-h"参数可以让daemon不显示任何系统信息,只显示登录提示。当然,只有在服务器上装了telnet服务器才有这样做的必要。


    



    回页首


<>


    


在默认情况下,当登录装有Linux系统的计算机时,系统会告诉你Linux发行版的名字、版本号、内核版本和服务器名称。这泄露了太多的系统信息。出于安全的考虑,最好只显示一个"Login:"的提示信息。处理方法如下:


    

(1)编辑"/etc/rc.d/rc.local"文件,在下面这些行的前面加上"#":


    


# want to make to /etc/issue here or you will lose them when you reboot.
#echo "" > /etc/issue
#echo "$R" >> /etc/issue
#echo "Kernel $(uname -r) on $a $(uname -m)" >> /etc/issue
#
#cp -f /etc/issue /etc/issue.net
#echo >> /etc/issue
……




    

(2)删除"/etc"目录下的"issue.net"和"issue"文件:


    


[root@snow]# rm -f /etc/issue.net




    

"/etc/issue.net"
文件是用户从网络登录计算机时(例如:telnet、SSH)看到的登录提示。同样在"/etc"目录下还有一个"issue"文件,是用户从本地登录时
看到的提示。这两个文件都是文本文件,可以根据需要改变。但是,如果想删掉这两个文件,必须向上面介绍的那样把"/etc/rc.d/rc.local"
脚本中的那些行注释掉,否则每次重新启动的时候,系统又会重新创建这两个文件。


    



    回页首


<>


    


在Linux系统下,使用finger命令可以显示本地或远程系统中目前已登录用户的详细信息,***可以利用这些信息,增大侵入系统的机会。为了系统的安
全,最好禁止提供finger服务,即从/usr/bin下删除finger 命令。如果要保留
finger服务,应将finger文件换名,或修改其权限,使得只允许root用户执行finger命令。


    



    回页首


<>


    


inetd也叫作"超级服务器",其作用是根据网络请求装入网络程序。"/etc/inetd.conf"文件告诉inetd监听哪些网络端口,为每个端
口启动哪个服务。把Linux系统放在任何网络环境中,第一件要做的事就是了解一下服务器到底要提供哪些服务。不需要的那些服务应该被禁止掉,最好卸载
掉,这样***就少了一些***系统的机会。查看"/etc/inetd.conf"文件,了解一下inetd提供哪些服务。用加上注释的方法(在一行的开头
加上#号)禁止任何不需要的服务,再给inetd进程发一个SIGHUP信号。具体操作步骤如下:


    

(1)把文件"/etc/inetd.conf"的许可权限改成600,只允许root来读写该文件。


    

< 600 chmod>




    

(2)确定"/etc/inetd.conf"文件所有者为root。


    





    

这个命令显示出来的信息应该是:


    


Size: 2869 Filetype: Regular File
Mode: (0600/-rw-------) Uid: ( 0/ root) Gid: ( 0/ root)
Device: 8,6 Inode: 18219 Links: 1
Access: Fri Apr 12 14:28:11 2002(00000.00:10:44)
Modify: Wed Apr 10 11:20:22 2002(00002.06:12:16)
Change: Wed Apr 10 11:20:22 2002(00002.06:12:16)




    

(3)编辑
/etc/inetd.conf文件(vi /etc/inetd.conf),禁止所有不需要的服务,如:ftp、telnet、
shell、login、exec、talk、ntalk、imap、pop-2、pop-3、finger、auth等。把不需要的服务关闭可以使系统
的危险性降低很多。


    

(4)改变了"inetd.conf"文件之后,要给inetd进程发送一个SIGHUP信号(killall -HUP inetd)。


    

< -HUP killall root]#>




    

(5)为了保证"inetd.conf"文件的安全,可以用chattr命令把它设成不可改变的。如下:


    

< +i chattr>




    


样可以防止对"inetd.conf"文件的任何修改。一个有"i"属性的文件是不能被改动的(不能删除或重命名,不能创建这个文件的链接,不能向这个文
件里写数据)。唯一可以取消这个属性的人只有root。如果要修改"inetd.conf"文件,首先要取消不可修改的属性,如下:


    

< chattr -i>




    


    

再改变了"inetd.conf"文件后,需要再把它的属性改为不可改变的。


    



    回页首


<>


    


/etc/rc.d目录下"rc"开头的文件是用来启动系统的初始化文件的。rc系列文件与Ms-
Dos系统下的autoexec.bat很类似。rc的意思是"runtime
commands"。它们决定了init进程要启动哪些服务。redhat系统下,这些脚本在/etc/rc.d/rc3.d(如果系统以x为默认启动的
话,就是/etc/rc.d/rc5.d)。要在启动时禁止某个服务,只需要把大写的S替换为小写的s,同时,redhat也提供一个工具来帮助你关闭服
务,输入/usr/sbin/setup,然后选择"system
services",就可以定制系统启动时运行哪些服务。另外一个选择是chkconfig命令,很多linux版本的系统都自带这个工具。脚本名字中的
数字是启动的顺序,以大写的K开头的是用来杀死进程的。
如将S50snmpd(SNMP简单网络管理协议,远程用户能从中获得许多系统信息)改为s50snmpd,则系统启动时将不会启动这项服务。


    

用下列命令察看在关闭启动脚本之前有多少服务在运行:


    

< -eaf|wc ps>




    


    

有两个非常有用的工具:ps -xau(输出大量的有关系统运行的信息)和netstat -vat(列出所有和网络相关的信息)。运行他们就可以知道系统在提供、运行哪些服务。


    



    回页首


<>


    


端口号和标准服务之间的对应关系在RFC1700"Assigned
Numbers"中有详细的定义。"/etc/services"文件使得服务器和客户端的程序能够把服务的名字转成端口号,这张表在每一台主机上都存
在,其文件名是"/etc/services"。只有"root"用户才有权限修改这个文件,而且在通常情况下这个文件是没有必要修改的,因为这个文件中
已经包含了常用的服务所对应的端口号。为了提高安全性,我们可以给这个文件加上保护以避免没有经过授权的删除和改变。为了保护这个文件可以用下面的命令:


    

<>




    


    



    回页首


< init.d rc.d>


    


通过以下方式改变启动和停止daemon的脚本文件的权限。


    





    


    

这样只有root可以读、写和执行这一脚本,因为一般用户不需要知道脚本文件的内容。


    



    回页首



    


防止系统对ping请求做出反应,对于网络安全是很有好处的,因为没人能够ping你的服务器并得到任何反应。TCP/IP协议本身有很多的弱点,***可
以利用一些技术,把传输正常数据包的通道用来偷偷地传送数据。使你的系统对ping请求没有反应,可以把这个危险减到最小。使用下面的命令:


    





    


    


行完这个命令后,系统对ping就没有反应了。可以把这一行加到"/etc/rc.d/rc.local"文件中去,这样当系统重新启动时,该命令就会自
动运行。对ping命令没有反应,至少可以把绝大多数的***排除到系统之外,因为***不可能知道你的服务器在哪里。重新恢复对ping的响应,可以使用下
面的命令:


    

< 0>




    


    



    回页首



    


SSH协议在开始设计时的目的就是提供尽可能安全的远程存取方式。它可以用来进行任何基于网络的信息传递,而且适应性很强。Linux、Unix、NT等
系统都可以使用。由于在和远程交互时,传递的密钥、认证信息等都是加密的,所以安全性能很好。用ssh完全取代telnet/ftp,它能够确保数据在网
络中的安全传输。


    



    回页首



    


应该取消普通用户的控制台访问权限,比如shutdown、reboot、halt等命令。


    

< console.apps security ]#>




    


    

其中是要注销的程序名。


    



    回页首


<>


    


Bash
shell在"~/.bash_history"("~/"表示用户目录)文件中保存了500条使用过的命令,这样可以使你输入使用过的长命令变得容易。
每个在系统中拥有账号的用户在他的目录下都有一个".bash_history"文件。bash
shell应该保存少量的命令,并且在每次用户注销时都把这些历史命令删除。具体操作步骤如下:


    

(1)
"/etc/profile"文件中的"HISTFILESIZE"和"HISTSIZE"行确定所有用户的".bash_history"文件中可以保
存的旧命令条数。建议把"/etc/profile"文件中的"HISTFILESIZE"和"HISTSIZE"行的值设为一个较小的数,比如30。编
辑profile文件(vi /etc/profile),把下面这行改为:


    


这表示每个用户的".bash_history"文件只可以保存30条旧命令。



     

  
     

(2)网络管理员还应该在"/etc/skel/.bash_logout" 文件中添加一行"rm -f $HOME/.bash_history"。这样,当用户每次注销时,".bash_history"文件都会被删除。

  
     

编辑.bash_logout文件(vi /etc/skel/.bash_logout),添加下面这行:

  
     




  
     

  
     





    回页首




    


在"/etc/inittab" 文件中注释掉下面这行(使用#):

  
     




  
     

  
     

改为:

  
     

<>




    


    

为了使这项改动起作用,输入下面这个命令:


    

< init>




    


    



    回页首


<>


    


缓冲区溢出漏洞和suid/sgid程序的关系紧密,带"s"位的程序往往是系统不安全的根源。应该尽量将不必要的带"s"位的程序删除。