linux下系统安全常见问题2
生活随笔
收集整理的這篇文章主要介紹了
linux下系统安全常见问题2
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
切換桌面
#switchdesk?? gnome? 或 kde
.修改系統(tǒng)時(shí)間
date -s “2003-04-14 cst”,cst指時(shí)區(qū),時(shí)間設(shè)定用date -s 18:10
.設(shè)置啟動(dòng)模式
·/etc/inittab
id:3:initdefault文本模式
id:5:initdefault圖形模式
.設(shè)置主機(jī)名
[root@localhost default]# vi /etc/sysconfig/network
NETWORKING=yes
#HOSTNAME=localhost.localdomain
HOSTNAME=cnscnlinux
[root@localhost default]# /etc/rc.d/init.d/network restart
正在關(guān)閉接口eth0:???????????????????????????????????????? [? 確定? ]
正在關(guān)閉接口
eth1:????????? ?
?????????????????????????? ?
[? 確定? ]
關(guān)閉環(huán)回接口:?????????
????????????
????????????
?????????? [
?確定? ]
設(shè)置網(wǎng)絡(luò)參數(shù):?????????
????????????
????????????
?????????? [
?確定? ]
彈出環(huán)回接口:?????????
????????????
????????????
?????????? [
?確定? ]
彈出界面
eth0:??????????
?????????????????????????????????
[? 確定? ]
彈出界面
eth1:??????????
?????????????????????????????????
[? 確定? ]
[root@localhost default]# hostname
cnscnlinux
.鼠標(biāo)設(shè)置
redhat-config-mouse
COM1在linux中是/dev/ttyS0
COM2在linux中是/dev/ttyS1
設(shè)置成左鍵鼠標(biāo) $gpm? -B? 321
.時(shí)區(qū)設(shè)置
/usr/sbin/timeconfig
.顯示器休眠
不讓顯示器休眠
setterm -blank 0
setterm -blank n (n為等待時(shí)間)
.vnc圖形顯示設(shè)置
1)在xterm中執(zhí)行 xhost + 192.168.0.249
2) #export? DISPLAY=192.168.0.88:0
3) 修改vi? $HOME/.vnc/xstartup ,把所有內(nèi)容注釋掉,在最后添加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服務(wù)的運(yùn)行)
.制作啟動(dòng)盤(pán)
/sbin/mkbootdisk
.防一用戶名由兩個(gè)人同時(shí)登陸
echo "* hard maxlogins 2" >> /etc/security/limits.conf
Notes: This setting do not affact root account.
.防火墻配置
/usr/sbin/lokkit
.改變機(jī)器語(yǔ)言
[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"??? #所支持的語(yǔ)言
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
.給網(wǎng)卡加第二個(gè)IP地址
ifconfig eth0:x ip up
x可以代表很多,就是一塊網(wǎng)卡可以綁定很多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
.命令行的實(shí)現(xiàn)漢字顯示
set meta-flag on
set input-meta on
set convert-meta off
set output-meta on
這幾行主要是實(shí)現(xiàn)命令行上實(shí)現(xiàn)漢字的輸入以及顯示。
.用chroot()限制用戶
?? 如果的確想限制一個(gè)用戶,可用chroot()子程序?yàn)橛脩艚⒁粋€(gè)完全隔離的環(huán)境,改變了進(jìn)程對(duì)根目錄的概念,因此可用于將一個(gè)用戶封在整個(gè)文件系
統(tǒng)的某一層目錄結(jié)構(gòu)中,使用戶無(wú)法用cd命令轉(zhuǎn)出該層目錄結(jié)構(gòu),不能存取文
件系統(tǒng)中其余部分的任何文件.這種限制方式比加限制的shell好得多.
?? 用戶使
用的命令應(yīng)由系統(tǒng)管理員在新的root目錄中建立一個(gè)bin目錄,并建立用戶可
用命令的鏈到系統(tǒng)的/bin目錄中相應(yīng)命令文件上(若在不同的文件系統(tǒng)則應(yīng)拷 貝命令文件).
?? 還應(yīng)建立新的passwd文件,保留系統(tǒng)登錄戶頭(為了使ls -l正確地報(bào)告與
受限制的子文件系統(tǒng)中的文件相關(guān)的正確登錄名)和用戶帳戶,但系統(tǒng)帳戶的
口令改為NOLOGIN以使受限制的用戶不能取得系統(tǒng)登錄的真實(shí)口令,使“破密“ 程序的任何企圖成為泡影.
?? utmp文件是who所需要的,該文件含有系統(tǒng)中已登錄用戶的列表.
?? 新的/etc/profile文件也不是建鏈文件,以便受限制的用戶可以執(zhí)行不同
的啟動(dòng)命令.
?? /dev目錄中的終端設(shè)備文件被鏈接到新的/dev目錄下,因?yàn)槊顆ho產(chǎn)生 輸出時(shí)要查看這些文件.
?? 在系統(tǒng)V及以后的UNIX版本中,login命令有chroot()的功能.如果口令文
件中用戶入口項(xiàng)的登錄shell域(最后一個(gè)域)是*,login將調(diào)用chroot()把用
戶的根目錄設(shè)置成為口令文件中用戶入口項(xiàng)登錄目錄域指定的目錄.然后再調(diào)
用exec()執(zhí)行l(wèi)ogin,新的login將在新子系統(tǒng)文件中執(zhí)行該用戶的登錄.
?? chroot()并不是把root封鎖在一個(gè)子文件系統(tǒng)中,所以給受限制用戶用的
命令時(shí)應(yīng)加以考慮,具有root的SUID許可的程序可能會(huì)給予用戶root的能力.
應(yīng)當(dāng)將這種可能減低到最小程度,交給用戶使用的命令應(yīng)當(dāng)取自清除了SUID陷
井的系統(tǒng)命令.
?? 鏈接文件可減少磁盤(pán)占用區(qū),但要記住,當(dāng)與敵對(duì)用戶打交道時(shí) 鏈接到chroot目錄結(jié)構(gòu)(尤其是命令)的系統(tǒng)文件是很危險(xiǎn)的.
如果建立一個(gè)像這樣的限制環(huán)境,應(yīng)確保對(duì)安裝到新的/bin的每條命令都 做過(guò)測(cè)試,有些程序可能有系統(tǒng)管理員未曾想到的出乎意料的執(zhí)行結(jié)果.
?? 為了
使這些命令能運(yùn)行,還得在加限制的子文件系統(tǒng)中加服務(wù)目錄或文件如:/tmp,
/etc/termcap,/usr/lib/terminfo,/dev/mem,/dev/kmem,/dev/swap,用戶所
登錄的/dev中的tty文件以及/unix.
?? 有些程序在子文件系統(tǒng)中運(yùn)行時(shí)不會(huì)很好,如果將假脫機(jī)程序和網(wǎng)絡(luò)命令
拷貝到加限制的子文件系統(tǒng)中,并放在為兩條命令專建的目錄層結(jié)構(gòu)下,它們 可能也運(yùn)行不了.
.init的運(yùn)行等級(jí)(0~6)
0?????? 完全關(guān)閉系統(tǒng)
1或S級(jí)?? 單用戶模式?????? 關(guān)閉所有多用戶和遠(yuǎn)程登錄進(jìn)程,只運(yùn)行最小軟件聚合
2-5???? 多用戶級(jí)別?????
6?????? 重新引導(dǎo)
./etc/inittab
?定義了init在它的每個(gè)運(yùn)行級(jí)上要做什么事情
./etc/init.d/rc
?定義了由/etc/inittab調(diào)用的程序
.啟動(dòng)腳本
?腳本的主拷貝位于/etc/init.d的目錄中,用來(lái)負(fù)責(zé)守護(hù)進(jìn)程
?
?一個(gè)簡(jiǎn)單的啟動(dòng)腳本
?#!/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自動(dòng)啟動(dòng)關(guān)閉程序 (把程序連接到相應(yīng)的rcX.d啟動(dòng)目錄中)
?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
.直接更改當(dāng)前的運(yùn)行等級(jí)
?#telinit? 1?????????????? 進(jìn)入運(yùn)行等級(jí)1
.ps監(jiān)視進(jìn)程
[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????? 進(jìn)程屬主ID
PID?????? 進(jìn)程ID
%CPU????? 進(jìn)程正在使用的CPU時(shí)間百分?jǐn)?shù)
%MEM????? 進(jìn)程正在使用的實(shí)際內(nèi)存的百分?jǐn)?shù)
VSZ?????? 進(jìn)程的虛擬大小
RSS?????? 駐留集的大小(內(nèi)存頁(yè)的數(shù)量)
TTY?????? 控制終端的ID
STAT????? 當(dāng)前進(jìn)程的狀態(tài)(R=可運(yùn)行
?????????????????????
D=在等磁盤(pán)或短期等待
?????????????????????
S=在睡眠(<20秒)
?????????????????????
T=被跟蹤或被停止?
?????????????????????
Z=僵進(jìn)程???
?????????????????????
W=進(jìn)程被交換出去
?????????????????????
<=進(jìn)程擁有比普通優(yōu)先級(jí)更高的優(yōu)先級(jí)
?????????????????????
N=進(jìn)程擁有比普通優(yōu)先級(jí)更低的優(yōu)先級(jí)
?????????????????????
L=有些頁(yè)面被鎖在內(nèi)存中
????????????????????? )
START???? 啟動(dòng)進(jìn)程的時(shí)間
TIME????? 進(jìn)程消耗掉的CPU時(shí)間
COMMAND?? 命令名和參數(shù)
?
.TOP監(jiān)視進(jìn)程
#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
分鐘?? 小時(shí)??? 日??? 月??? 周???? [user]?? command
45???
10???? *???
*??
1-5???????????
....???? 周一到周五的上午10:45運(yùn)行
0,30?
*????? 13??
*???
5?????????????????????
周五及每月13號(hào)每半個(gè)小執(zhí)行
15-45/5
*??
*???? *???
*?????????????????????
每小時(shí)的15-45分鐘內(nèi)每5分鐘執(zhí)行
30???
2????? *???
*???
1?????????????????????
每周一早上2:30時(shí)執(zhí)行
20???
1????? *???
*???? *????? find /tmp? -atime +3 -exec
rm -f {} ';'? 每天早上1:20刪除/tmp中3天無(wú)人訪問(wèn)的文件
55??? 23????? *???? *???? 0-3,6? find /tmp? -atime +3 -exec rm -f {}?? 每周日到周三及周六執(zhí)行
?
.自動(dòng)注銷(xiāo)
? 編輯/etc/profile~
? 在HISTFILESIZE=?? 這一行下面增加
? export TMOUT=600???????????? //10分鐘內(nèi)如無(wú)操作則自動(dòng)退出
.禁ping
$ echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
此后可以用 來(lái)判斷機(jī)器是否運(yùn)行著
# 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
.取得系統(tǒng)字長(zhǎng)
$getconf WORD_BIT
?32
.注銷(xiāo)時(shí)刪除命令記錄
編輯 /etc/skel/.bash_logout
增加
??? rm -f $HOME/.bash_history
~~~~
.關(guān)掉rpc(也就是portmap)服務(wù)
# ntsysv~~~
? 去掉portmap就可以了
.crontab的權(quán)限
如果想限制能建立crontab的用戶,可在文件/usr/lib/cron/cron.allow文件中列出允許運(yùn)行crontab命令的用戶.任何未列于該文件的用戶不能運(yùn)行crontab.反之,若更愿意列出不允許運(yùn)行crontab命令的用戶,則可將他們列入/usr/lib/cron/cron.deny文件中,未列于該文件的其他用戶將被允許建立crontab.
注意:若兩個(gè)文件都存在,系統(tǒng)將使用cron.allow,忽略cron.deny.如果兩個(gè)文件都不存在,則只有root可運(yùn)行crontab.所以,若要允許系統(tǒng)中的所有用戶都可運(yùn)行crontab命令,應(yīng)當(dāng)建立一個(gè)空的cron.deny文件,如果cron.allow
也存在,則刪除該文件.這個(gè)版本的cron命令的安全程度比前一個(gè)高,因?yàn)橛脩糁荒芸醋约旱腸rontab,系統(tǒng)管理員也不必?fù)?dān)心其他用戶的程序是否會(huì)作為root運(yùn)行,由于允許每個(gè)系統(tǒng)登錄用戶有自己的crontab,也簡(jiǎn)化了對(duì)程序必須由cron運(yùn)行,但不必作為root運(yùn)行的系統(tǒng)程序的處理.必須確保root的crontab文件僅對(duì)root可寫(xiě),并且該文件所在的目錄及所有的父目錄也僅對(duì)root可寫(xiě).
.保護(hù)Portmap的安全性
1)保護(hù) Portmap 的安全性
portmap 服務(wù)是用于 RPC 服務(wù)(如 NIS 和 NFS)的動(dòng)態(tài)端口分配守護(hù)進(jìn)程。它的驗(yàn)證機(jī)制比較薄弱,而且具備為它所控制的服務(wù)分配大范圍端口的能力。由于這些原因,要保護(hù)它的安全比較困難。
如果運(yùn)行 RPC 服務(wù),請(qǐng)遵守以下基本規(guī)則。
2)使用 TCP 會(huì)繞程序來(lái)保護(hù) portmap。
使用 TCP 會(huì)繞程序來(lái)限制可以使用 portmap 服務(wù)的網(wǎng)絡(luò)或主機(jī)這一點(diǎn)很重要,因?yàn)?portmap 沒(méi)有內(nèi)建的驗(yàn)證方式。
更進(jìn)一步,在限制對(duì)服務(wù)的使用時(shí),只使用 IP 地址。避免使用主機(jī)名,因?yàn)橹鳈C(jī)名可以通過(guò) DNS 污染或其它方法被偽造。
3)使用 IPTables 來(lái)保護(hù) portmap
要進(jìn)一步限制對(duì) portmap 服務(wù)的使用,在服務(wù)器上添加 IPTables 規(guī)則來(lái)限制到指定網(wǎng)絡(luò)的進(jìn)出是一個(gè)好辦法。
以下是兩個(gè) IPTables 命令的例子,允許網(wǎng)絡(luò) 192.168.0/24TCP 和 localhost(Nautilus 程序使用的 sgi_fam 服務(wù)所必需的)到 portmap 服務(wù)(監(jiān)聽(tīng)端口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]
級(jí)別: 初級(jí)
薛靜鋒北京理工大學(xué)計(jì)算機(jī)科學(xué)工程系
2002 年? 4 月? 01 日
??? 緩
??? 沖區(qū)溢出***是目前***最常用的***手段之一,為了應(yīng)對(duì)不斷涌現(xiàn)的緩沖區(qū)溢出***,我們研究了在Linux系統(tǒng)下防范緩沖區(qū)溢出的方法,通過(guò)研究,總結(jié)了
??? 在Linux平臺(tái)下防范緩沖區(qū)溢出***的安全策略,這些安全策略可以應(yīng)用于一般企業(yè)內(nèi)部服務(wù)器,包括web服務(wù)器、mail服務(wù)器、samba服務(wù)器、
??? ftp服務(wù)器以及proxy服務(wù)器等。在實(shí)際使用中,我們發(fā)現(xiàn)通過(guò)這些安全策略的配置能夠?qū)彌_區(qū)溢出***起到很好的防范措施。
????
在對(duì)計(jì)算機(jī)系統(tǒng)安全的
研究中,有一種系統(tǒng)安全漏洞引起了我們的關(guān)注。一方面是由于這種安全漏洞的廣泛性--幾乎使所有的操作系統(tǒng)平臺(tái)都受到影響。另一方面,我們?yōu)?**基于此類
安全漏洞所編寫(xiě)的***程序的隱蔽性和強(qiáng)大威力所吸引。這就是緩沖區(qū)溢出技術(shù)。它可以使看似安全的,正在運(yùn)行常規(guī)服務(wù)(如
DNS、ftpd等)的主機(jī)在幾秒鐘內(nèi)失去控制權(quán)。緩沖區(qū)溢出***是目前***最常用的***手段。在當(dāng)前CERT和CIAC等發(fā)布的Internet安全事
件報(bào)告中,
緩沖區(qū)溢出已成為常見(jiàn)的用語(yǔ)。緩沖區(qū)溢出***的目的在于擾亂具有某些特權(quán)運(yùn)行的程序的功能。這樣可以讓***者取得程序的控制權(quán),如果該程序具有足夠的權(quán)
限,那么整個(gè)主機(jī)就被控制了。
????
為了應(yīng)對(duì)不斷涌現(xiàn)的緩沖區(qū)溢出***,我們研究了在Linux系統(tǒng)下防范緩沖區(qū)溢出的方
法,之所以選擇Linux平臺(tái),主要有兩方面的原因:(1)Linux是一個(gè)開(kāi)放源碼的平臺(tái),有利于我們?cè)谘芯康倪^(guò)程中深入技術(shù)細(xì)節(jié),由于Linux及其
上面的大量應(yīng)用都是基于開(kāi)放源碼,有很多***在其上進(jìn)行了大量的工作,可以說(shuō)Linux上的網(wǎng)絡(luò)***水平代表了整個(gè)網(wǎng)絡(luò)***的最高水平。(2)Linux
是一個(gè)類Unix系統(tǒng),同時(shí)也是在Internet中大量使用的操作系統(tǒng)平臺(tái),選擇Linux作為研究緩沖區(qū)溢出技術(shù)的平臺(tái)是非常具有代表性的,在
Linux平臺(tái)上取得的經(jīng)驗(yàn)可以非常容易地移植到其他Unix或者類Unix平臺(tái)上。
????
通過(guò)研究,我們總結(jié)了在Linux平臺(tái)下防范緩沖區(qū)溢出的安全策略,這些安全策略可以應(yīng)用于一般企業(yè)內(nèi)部服務(wù)器,包括web服務(wù)器、mail服務(wù)器、samba服務(wù)器、ftp服務(wù)器以及proxy服務(wù)器等。我們所總結(jié)的這些安全策略如下所示:
????
????
如果不想讓遠(yuǎn)程登錄的用戶看到系統(tǒng)的提示信息,可以改變"/etc/inetd.conf"文件中的telnet設(shè)置:
????
????
在末尾加上"-h"參數(shù)可以讓daemon不顯示任何系統(tǒng)信息,只顯示登錄提示。當(dāng)然,只有在服務(wù)器上裝了telnet服務(wù)器才有這樣做的必要。
????
??? 回頁(yè)首
<>
????
在默認(rèn)情況下,當(dāng)?shù)卿浹b有Linux系統(tǒng)的計(jì)算機(jī)時(shí),系統(tǒng)會(huì)告訴你Linux發(fā)行版的名字、版本號(hào)、內(nèi)核版本和服務(wù)器名稱。這泄露了太多的系統(tǒng)信息。出于安全的考慮,最好只顯示一個(gè)"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"
文件是用戶從網(wǎng)絡(luò)登錄計(jì)算機(jī)時(shí)(例如:telnet、SSH)看到的登錄提示。同樣在"/etc"目錄下還有一個(gè)"issue"文件,是用戶從本地登錄時(shí)
看到的提示。這兩個(gè)文件都是文本文件,可以根據(jù)需要改變。但是,如果想刪掉這兩個(gè)文件,必須向上面介紹的那樣把"/etc/rc.d/rc.local"
腳本中的那些行注釋掉,否則每次重新啟動(dòng)的時(shí)候,系統(tǒng)又會(huì)重新創(chuàng)建這兩個(gè)文件。
????
??? 回頁(yè)首
<>
????
在Linux系統(tǒng)下,使用finger命令可以顯示本地或遠(yuǎn)程系統(tǒng)中目前已登錄用戶的詳細(xì)信息,***可以利用這些信息,增大侵入系統(tǒng)的機(jī)會(huì)。為了系統(tǒng)的安
全,最好禁止提供finger服務(wù),即從/usr/bin下刪除finger 命令。如果要保留
finger服務(wù),應(yīng)將finger文件換名,或修改其權(quán)限,使得只允許root用戶執(zhí)行finger命令。
????
??? 回頁(yè)首
<>
????
inetd也叫作"超級(jí)服務(wù)器",其作用是根據(jù)網(wǎng)絡(luò)請(qǐng)求裝入網(wǎng)絡(luò)程序。"/etc/inetd.conf"文件告訴inetd監(jiān)聽(tīng)哪些網(wǎng)絡(luò)端口,為每個(gè)端
口啟動(dòng)哪個(gè)服務(wù)。把Linux系統(tǒng)放在任何網(wǎng)絡(luò)環(huán)境中,第一件要做的事就是了解一下服務(wù)器到底要提供哪些服務(wù)。不需要的那些服務(wù)應(yīng)該被禁止掉,最好卸載
掉,這樣***就少了一些***系統(tǒng)的機(jī)會(huì)。查看"/etc/inetd.conf"文件,了解一下inetd提供哪些服務(wù)。用加上注釋的方法(在一行的開(kāi)頭
加上#號(hào))禁止任何不需要的服務(wù),再給inetd進(jìn)程發(fā)一個(gè)SIGHUP信號(hào)。具體操作步驟如下:
????
(1)把文件"/etc/inetd.conf"的許可權(quán)限改成600,只允許root來(lái)讀寫(xiě)該文件。
????
< 600 chmod>
????
(2)確定"/etc/inetd.conf"文件所有者為root。
????
????
這個(gè)命令顯示出來(lái)的信息應(yīng)該是:
????
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),禁止所有不需要的服務(wù),如:ftp、telnet、
shell、login、exec、talk、ntalk、imap、pop-2、pop-3、finger、auth等。把不需要的服務(wù)關(guān)閉可以使系統(tǒng)
的危險(xiǎn)性降低很多。
????
(4)改變了"inetd.conf"文件之后,要給inetd進(jìn)程發(fā)送一個(gè)SIGHUP信號(hào)(killall -HUP inetd)。
????
< -HUP killall root]#>
????
(5)為了保證"inetd.conf"文件的安全,可以用chattr命令把它設(shè)成不可改變的。如下:
????
< +i chattr>
????
這
樣可以防止對(duì)"inetd.conf"文件的任何修改。一個(gè)有"i"屬性的文件是不能被改動(dòng)的(不能刪除或重命名,不能創(chuàng)建這個(gè)文件的鏈接,不能向這個(gè)文
件里寫(xiě)數(shù)據(jù))。唯一可以取消這個(gè)屬性的人只有root。如果要修改"inetd.conf"文件,首先要取消不可修改的屬性,如下:
????
< chattr -i>
????
????
再改變了"inetd.conf"文件后,需要再把它的屬性改為不可改變的。
????
??? 回頁(yè)首
<>
????
/etc/rc.d目錄下"rc"開(kāi)頭的文件是用來(lái)啟動(dòng)系統(tǒng)的初始化文件的。rc系列文件與Ms-
Dos系統(tǒng)下的autoexec.bat很類似。rc的意思是"runtime
commands"。它們決定了init進(jìn)程要啟動(dòng)哪些服務(wù)。redhat系統(tǒng)下,這些腳本在/etc/rc.d/rc3.d(如果系統(tǒng)以x為默認(rèn)啟動(dòng)的
話,就是/etc/rc.d/rc5.d)。要在啟動(dòng)時(shí)禁止某個(gè)服務(wù),只需要把大寫(xiě)的S替換為小寫(xiě)的s,同時(shí),redhat也提供一個(gè)工具來(lái)幫助你關(guān)閉服
務(wù),輸入/usr/sbin/setup,然后選擇"system
services",就可以定制系統(tǒng)啟動(dòng)時(shí)運(yùn)行哪些服務(wù)。另外一個(gè)選擇是chkconfig命令,很多l(xiāng)inux版本的系統(tǒng)都自帶這個(gè)工具。腳本名字中的
數(shù)字是啟動(dòng)的順序,以大寫(xiě)的K開(kāi)頭的是用來(lái)殺死進(jìn)程的。
如將S50snmpd(SNMP簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議,遠(yuǎn)程用戶能從中獲得許多系統(tǒng)信息)改為s50snmpd,則系統(tǒng)啟動(dòng)時(shí)將不會(huì)啟動(dòng)這項(xiàng)服務(wù)。
????
用下列命令察看在關(guān)閉啟動(dòng)腳本之前有多少服務(wù)在運(yùn)行:
????
< -eaf|wc ps>
????
????
有兩個(gè)非常有用的工具:ps -xau(輸出大量的有關(guān)系統(tǒng)運(yùn)行的信息)和netstat -vat(列出所有和網(wǎng)絡(luò)相關(guān)的信息)。運(yùn)行他們就可以知道系統(tǒng)在提供、運(yùn)行哪些服務(wù)。
????
??? 回頁(yè)首
<>
????
端口號(hào)和標(biāo)準(zhǔn)服務(wù)之間的對(duì)應(yīng)關(guān)系在RFC1700"Assigned
Numbers"中有詳細(xì)的定義。"/etc/services"文件使得服務(wù)器和客戶端的程序能夠把服務(wù)的名字轉(zhuǎn)成端口號(hào),這張表在每一臺(tái)主機(jī)上都存
在,其文件名是"/etc/services"。只有"root"用戶才有權(quán)限修改這個(gè)文件,而且在通常情況下這個(gè)文件是沒(méi)有必要修改的,因?yàn)檫@個(gè)文件中
已經(jīng)包含了常用的服務(wù)所對(duì)應(yīng)的端口號(hào)。為了提高安全性,我們可以給這個(gè)文件加上保護(hù)以避免沒(méi)有經(jīng)過(guò)授權(quán)的刪除和改變。為了保護(hù)這個(gè)文件可以用下面的命令:
????
<>
????
????
??? 回頁(yè)首
< init.d rc.d>
????
通過(guò)以下方式改變啟動(dòng)和停止daemon的腳本文件的權(quán)限。
????
????
????
這樣只有root可以讀、寫(xiě)和執(zhí)行這一腳本,因?yàn)橐话阌脩舨恍枰滥_本文件的內(nèi)容。
????
??? 回頁(yè)首
????
防止系統(tǒng)對(duì)ping請(qǐng)求做出反應(yīng),對(duì)于網(wǎng)絡(luò)安全是很有好處的,因?yàn)闆](méi)人能夠ping你的服務(wù)器并得到任何反應(yīng)。TCP/IP協(xié)議本身有很多的弱點(diǎn),***可
以利用一些技術(shù),把傳輸正常數(shù)據(jù)包的通道用來(lái)偷偷地傳送數(shù)據(jù)。使你的系統(tǒng)對(duì)ping請(qǐng)求沒(méi)有反應(yīng),可以把這個(gè)危險(xiǎn)減到最小。使用下面的命令:
????
????
????
運(yùn)
行完這個(gè)命令后,系統(tǒng)對(duì)ping就沒(méi)有反應(yīng)了。可以把這一行加到"/etc/rc.d/rc.local"文件中去,這樣當(dāng)系統(tǒng)重新啟動(dòng)時(shí),該命令就會(huì)自
動(dòng)運(yùn)行。對(duì)ping命令沒(méi)有反應(yīng),至少可以把絕大多數(shù)的***排除到系統(tǒng)之外,因?yàn)?**不可能知道你的服務(wù)器在哪里。重新恢復(fù)對(duì)ping的響應(yīng),可以使用下
面的命令:
????
< 0>
????
????
??? 回頁(yè)首
????
SSH協(xié)議在開(kāi)始設(shè)計(jì)時(shí)的目的就是提供盡可能安全的遠(yuǎn)程存取方式。它可以用來(lái)進(jìn)行任何基于網(wǎng)絡(luò)的信息傳遞,而且適應(yīng)性很強(qiáng)。Linux、Unix、NT等
系統(tǒng)都可以使用。由于在和遠(yuǎn)程交互時(shí),傳遞的密鑰、認(rèn)證信息等都是加密的,所以安全性能很好。用ssh完全取代telnet/ftp,它能夠確保數(shù)據(jù)在網(wǎng)
絡(luò)中的安全傳輸。
????
??? 回頁(yè)首
????
應(yīng)該取消普通用戶的控制臺(tái)訪問(wèn)權(quán)限,比如shutdown、reboot、halt等命令。
????
< console.apps security ]#>
????
????
其中<servicename>是要注銷(xiāo)的程序名。
????
??? 回頁(yè)首
<>
????
Bash
shell在"~/.bash_history"("~/"表示用戶目錄)文件中保存了500條使用過(guò)的命令,這樣可以使你輸入使用過(guò)的長(zhǎng)命令變得容易。
每個(gè)在系統(tǒng)中擁有賬號(hào)的用戶在他的目錄下都有一個(gè)".bash_history"文件。bash
shell應(yīng)該保存少量的命令,并且在每次用戶注銷(xiāo)時(shí)都把這些歷史命令刪除。具體操作步驟如下:
????
(1)
"/etc/profile"文件中的"HISTFILESIZE"和"HISTSIZE"行確定所有用戶的".bash_history"文件中可以保
存的舊命令條數(shù)。建議把"/etc/profile"文件中的"HISTFILESIZE"和"HISTSIZE"行的值設(shè)為一個(gè)較小的數(shù),比如30。編
輯profile文件(vi /etc/profile),把下面這行改為:
????
這表示每個(gè)用戶的".bash_history"文件只可以保存30條舊命令。
?????
??
?????
(2)網(wǎng)絡(luò)管理員還應(yīng)該在"/etc/skel/.bash_logout" 文件中添加一行"rm -f $HOME/.bash_history"。這樣,當(dāng)用戶每次注銷(xiāo)時(shí),".bash_history"文件都會(huì)被刪除。
??
?????
編輯.bash_logout文件(vi /etc/skel/.bash_logout),添加下面這行:
??
?????
??
?????
??
?????
??? 回頁(yè)首
????
在"/etc/inittab" 文件中注釋掉下面這行(使用#):
??
?????
??
?????
??
?????
改為:
??
?????
<>
????
????
為了使這項(xiàng)改動(dòng)起作用,輸入下面這個(gè)命令:
????
< init>
????
????
??? 回頁(yè)首
<>
????
緩沖區(qū)溢出漏洞和suid/sgid程序的關(guān)系緊密,帶"s"位的程序往往是系統(tǒng)不安全的根源。應(yīng)該盡量將不必要的帶"s"位的程序刪除。
#switchdesk?? gnome? 或 kde
.修改系統(tǒng)時(shí)間
date -s “2003-04-14 cst”,cst指時(shí)區(qū),時(shí)間設(shè)定用date -s 18:10
.設(shè)置啟動(dòng)模式
·/etc/inittab
id:3:initdefault文本模式
id:5:initdefault圖形模式
.設(shè)置主機(jī)名
[root@localhost default]# vi /etc/sysconfig/network
NETWORKING=yes
#HOSTNAME=localhost.localdomain
HOSTNAME=cnscnlinux
[root@localhost default]# /etc/rc.d/init.d/network restart
正在關(guān)閉接口eth0:???????????????????????????????????????? [? 確定? ]
正在關(guān)閉接口
eth1:????????? ?
?????????????????????????? ?
[? 確定? ]
關(guān)閉環(huán)回接口:?????????
????????????
????????????
?????????? [
?確定? ]
設(shè)置網(wǎng)絡(luò)參數(shù):?????????
????????????
????????????
?????????? [
?確定? ]
彈出環(huán)回接口:?????????
????????????
????????????
?????????? [
?確定? ]
彈出界面
eth0:??????????
?????????????????????????????????
[? 確定? ]
彈出界面
eth1:??????????
?????????????????????????????????
[? 確定? ]
[root@localhost default]# hostname
cnscnlinux
.鼠標(biāo)設(shè)置
redhat-config-mouse
COM1在linux中是/dev/ttyS0
COM2在linux中是/dev/ttyS1
設(shè)置成左鍵鼠標(biāo) $gpm? -B? 321
.時(shí)區(qū)設(shè)置
/usr/sbin/timeconfig
.顯示器休眠
不讓顯示器休眠
setterm -blank 0
setterm -blank n (n為等待時(shí)間)
.vnc圖形顯示設(shè)置
1)在xterm中執(zhí)行 xhost + 192.168.0.249
2) #export? DISPLAY=192.168.0.88:0
3) 修改vi? $HOME/.vnc/xstartup ,把所有內(nèi)容注釋掉,在最后添加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服務(wù)的運(yùn)行)
.制作啟動(dòng)盤(pán)
/sbin/mkbootdisk
.防一用戶名由兩個(gè)人同時(shí)登陸
echo "* hard maxlogins 2" >> /etc/security/limits.conf
Notes: This setting do not affact root account.
.防火墻配置
/usr/sbin/lokkit
.改變機(jī)器語(yǔ)言
[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"??? #所支持的語(yǔ)言
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
.給網(wǎng)卡加第二個(gè)IP地址
ifconfig eth0:x ip up
x可以代表很多,就是一塊網(wǎng)卡可以綁定很多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
.命令行的實(shí)現(xiàn)漢字顯示
set meta-flag on
set input-meta on
set convert-meta off
set output-meta on
這幾行主要是實(shí)現(xiàn)命令行上實(shí)現(xiàn)漢字的輸入以及顯示。
.用chroot()限制用戶
?? 如果的確想限制一個(gè)用戶,可用chroot()子程序?yàn)橛脩艚⒁粋€(gè)完全隔離的環(huán)境,改變了進(jìn)程對(duì)根目錄的概念,因此可用于將一個(gè)用戶封在整個(gè)文件系
統(tǒng)的某一層目錄結(jié)構(gòu)中,使用戶無(wú)法用cd命令轉(zhuǎn)出該層目錄結(jié)構(gòu),不能存取文
件系統(tǒng)中其余部分的任何文件.這種限制方式比加限制的shell好得多.
?? 用戶使
用的命令應(yīng)由系統(tǒng)管理員在新的root目錄中建立一個(gè)bin目錄,并建立用戶可
用命令的鏈到系統(tǒng)的/bin目錄中相應(yīng)命令文件上(若在不同的文件系統(tǒng)則應(yīng)拷 貝命令文件).
?? 還應(yīng)建立新的passwd文件,保留系統(tǒng)登錄戶頭(為了使ls -l正確地報(bào)告與
受限制的子文件系統(tǒng)中的文件相關(guān)的正確登錄名)和用戶帳戶,但系統(tǒng)帳戶的
口令改為NOLOGIN以使受限制的用戶不能取得系統(tǒng)登錄的真實(shí)口令,使“破密“ 程序的任何企圖成為泡影.
?? utmp文件是who所需要的,該文件含有系統(tǒng)中已登錄用戶的列表.
?? 新的/etc/profile文件也不是建鏈文件,以便受限制的用戶可以執(zhí)行不同
的啟動(dòng)命令.
?? /dev目錄中的終端設(shè)備文件被鏈接到新的/dev目錄下,因?yàn)槊顆ho產(chǎn)生 輸出時(shí)要查看這些文件.
?? 在系統(tǒng)V及以后的UNIX版本中,login命令有chroot()的功能.如果口令文
件中用戶入口項(xiàng)的登錄shell域(最后一個(gè)域)是*,login將調(diào)用chroot()把用
戶的根目錄設(shè)置成為口令文件中用戶入口項(xiàng)登錄目錄域指定的目錄.然后再調(diào)
用exec()執(zhí)行l(wèi)ogin,新的login將在新子系統(tǒng)文件中執(zhí)行該用戶的登錄.
?? chroot()并不是把root封鎖在一個(gè)子文件系統(tǒng)中,所以給受限制用戶用的
命令時(shí)應(yīng)加以考慮,具有root的SUID許可的程序可能會(huì)給予用戶root的能力.
應(yīng)當(dāng)將這種可能減低到最小程度,交給用戶使用的命令應(yīng)當(dāng)取自清除了SUID陷
井的系統(tǒng)命令.
?? 鏈接文件可減少磁盤(pán)占用區(qū),但要記住,當(dāng)與敵對(duì)用戶打交道時(shí) 鏈接到chroot目錄結(jié)構(gòu)(尤其是命令)的系統(tǒng)文件是很危險(xiǎn)的.
如果建立一個(gè)像這樣的限制環(huán)境,應(yīng)確保對(duì)安裝到新的/bin的每條命令都 做過(guò)測(cè)試,有些程序可能有系統(tǒng)管理員未曾想到的出乎意料的執(zhí)行結(jié)果.
?? 為了
使這些命令能運(yùn)行,還得在加限制的子文件系統(tǒng)中加服務(wù)目錄或文件如:/tmp,
/etc/termcap,/usr/lib/terminfo,/dev/mem,/dev/kmem,/dev/swap,用戶所
登錄的/dev中的tty文件以及/unix.
?? 有些程序在子文件系統(tǒng)中運(yùn)行時(shí)不會(huì)很好,如果將假脫機(jī)程序和網(wǎng)絡(luò)命令
拷貝到加限制的子文件系統(tǒng)中,并放在為兩條命令專建的目錄層結(jié)構(gòu)下,它們 可能也運(yùn)行不了.
.init的運(yùn)行等級(jí)(0~6)
0?????? 完全關(guān)閉系統(tǒng)
1或S級(jí)?? 單用戶模式?????? 關(guān)閉所有多用戶和遠(yuǎn)程登錄進(jìn)程,只運(yùn)行最小軟件聚合
2-5???? 多用戶級(jí)別?????
6?????? 重新引導(dǎo)
./etc/inittab
?定義了init在它的每個(gè)運(yùn)行級(jí)上要做什么事情
./etc/init.d/rc
?定義了由/etc/inittab調(diào)用的程序
.啟動(dòng)腳本
?腳本的主拷貝位于/etc/init.d的目錄中,用來(lái)負(fù)責(zé)守護(hù)進(jìn)程
?
?一個(gè)簡(jiǎn)單的啟動(dòng)腳本
?#!/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自動(dòng)啟動(dòng)關(guān)閉程序 (把程序連接到相應(yīng)的rcX.d啟動(dòng)目錄中)
?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
.直接更改當(dāng)前的運(yùn)行等級(jí)
?#telinit? 1?????????????? 進(jìn)入運(yùn)行等級(jí)1
.ps監(jiān)視進(jìn)程
[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????? 進(jìn)程屬主ID
PID?????? 進(jìn)程ID
%CPU????? 進(jìn)程正在使用的CPU時(shí)間百分?jǐn)?shù)
%MEM????? 進(jìn)程正在使用的實(shí)際內(nèi)存的百分?jǐn)?shù)
VSZ?????? 進(jìn)程的虛擬大小
RSS?????? 駐留集的大小(內(nèi)存頁(yè)的數(shù)量)
TTY?????? 控制終端的ID
STAT????? 當(dāng)前進(jìn)程的狀態(tài)(R=可運(yùn)行
?????????????????????
D=在等磁盤(pán)或短期等待
?????????????????????
S=在睡眠(<20秒)
?????????????????????
T=被跟蹤或被停止?
?????????????????????
Z=僵進(jìn)程???
?????????????????????
W=進(jìn)程被交換出去
?????????????????????
<=進(jìn)程擁有比普通優(yōu)先級(jí)更高的優(yōu)先級(jí)
?????????????????????
N=進(jìn)程擁有比普通優(yōu)先級(jí)更低的優(yōu)先級(jí)
?????????????????????
L=有些頁(yè)面被鎖在內(nèi)存中
????????????????????? )
START???? 啟動(dòng)進(jìn)程的時(shí)間
TIME????? 進(jìn)程消耗掉的CPU時(shí)間
COMMAND?? 命令名和參數(shù)
?
.TOP監(jiān)視進(jìn)程
#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
分鐘?? 小時(shí)??? 日??? 月??? 周???? [user]?? command
45???
10???? *???
*??
1-5???????????
....???? 周一到周五的上午10:45運(yùn)行
0,30?
*????? 13??
*???
5?????????????????????
周五及每月13號(hào)每半個(gè)小執(zhí)行
15-45/5
*??
*???? *???
*?????????????????????
每小時(shí)的15-45分鐘內(nèi)每5分鐘執(zhí)行
30???
2????? *???
*???
1?????????????????????
每周一早上2:30時(shí)執(zhí)行
20???
1????? *???
*???? *????? find /tmp? -atime +3 -exec
rm -f {} ';'? 每天早上1:20刪除/tmp中3天無(wú)人訪問(wèn)的文件
55??? 23????? *???? *???? 0-3,6? find /tmp? -atime +3 -exec rm -f {}?? 每周日到周三及周六執(zhí)行
?
.自動(dòng)注銷(xiāo)
? 編輯/etc/profile~
? 在HISTFILESIZE=?? 這一行下面增加
? export TMOUT=600???????????? //10分鐘內(nèi)如無(wú)操作則自動(dòng)退出
.禁ping
$ echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
此后可以用 來(lái)判斷機(jī)器是否運(yùn)行著
# 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
.取得系統(tǒng)字長(zhǎng)
$getconf WORD_BIT
?32
.注銷(xiāo)時(shí)刪除命令記錄
編輯 /etc/skel/.bash_logout
增加
??? rm -f $HOME/.bash_history
~~~~
.關(guān)掉rpc(也就是portmap)服務(wù)
# ntsysv~~~
? 去掉portmap就可以了
.crontab的權(quán)限
如果想限制能建立crontab的用戶,可在文件/usr/lib/cron/cron.allow文件中列出允許運(yùn)行crontab命令的用戶.任何未列于該文件的用戶不能運(yùn)行crontab.反之,若更愿意列出不允許運(yùn)行crontab命令的用戶,則可將他們列入/usr/lib/cron/cron.deny文件中,未列于該文件的其他用戶將被允許建立crontab.
注意:若兩個(gè)文件都存在,系統(tǒng)將使用cron.allow,忽略cron.deny.如果兩個(gè)文件都不存在,則只有root可運(yùn)行crontab.所以,若要允許系統(tǒng)中的所有用戶都可運(yùn)行crontab命令,應(yīng)當(dāng)建立一個(gè)空的cron.deny文件,如果cron.allow
也存在,則刪除該文件.這個(gè)版本的cron命令的安全程度比前一個(gè)高,因?yàn)橛脩糁荒芸醋约旱腸rontab,系統(tǒng)管理員也不必?fù)?dān)心其他用戶的程序是否會(huì)作為root運(yùn)行,由于允許每個(gè)系統(tǒng)登錄用戶有自己的crontab,也簡(jiǎn)化了對(duì)程序必須由cron運(yùn)行,但不必作為root運(yùn)行的系統(tǒng)程序的處理.必須確保root的crontab文件僅對(duì)root可寫(xiě),并且該文件所在的目錄及所有的父目錄也僅對(duì)root可寫(xiě).
.保護(hù)Portmap的安全性
1)保護(hù) Portmap 的安全性
portmap 服務(wù)是用于 RPC 服務(wù)(如 NIS 和 NFS)的動(dòng)態(tài)端口分配守護(hù)進(jìn)程。它的驗(yàn)證機(jī)制比較薄弱,而且具備為它所控制的服務(wù)分配大范圍端口的能力。由于這些原因,要保護(hù)它的安全比較困難。
如果運(yùn)行 RPC 服務(wù),請(qǐng)遵守以下基本規(guī)則。
2)使用 TCP 會(huì)繞程序來(lái)保護(hù) portmap。
使用 TCP 會(huì)繞程序來(lái)限制可以使用 portmap 服務(wù)的網(wǎng)絡(luò)或主機(jī)這一點(diǎn)很重要,因?yàn)?portmap 沒(méi)有內(nèi)建的驗(yàn)證方式。
更進(jìn)一步,在限制對(duì)服務(wù)的使用時(shí),只使用 IP 地址。避免使用主機(jī)名,因?yàn)橹鳈C(jī)名可以通過(guò) DNS 污染或其它方法被偽造。
3)使用 IPTables 來(lái)保護(hù) portmap
要進(jìn)一步限制對(duì) portmap 服務(wù)的使用,在服務(wù)器上添加 IPTables 規(guī)則來(lái)限制到指定網(wǎng)絡(luò)的進(jìn)出是一個(gè)好辦法。
以下是兩個(gè) IPTables 命令的例子,允許網(wǎng)絡(luò) 192.168.0/24TCP 和 localhost(Nautilus 程序使用的 sgi_fam 服務(wù)所必需的)到 portmap 服務(wù)(監(jiān)聽(tīng)端口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]
級(jí)別: 初級(jí)
薛靜鋒北京理工大學(xué)計(jì)算機(jī)科學(xué)工程系
2002 年? 4 月? 01 日
??? 緩
??? 沖區(qū)溢出***是目前***最常用的***手段之一,為了應(yīng)對(duì)不斷涌現(xiàn)的緩沖區(qū)溢出***,我們研究了在Linux系統(tǒng)下防范緩沖區(qū)溢出的方法,通過(guò)研究,總結(jié)了
??? 在Linux平臺(tái)下防范緩沖區(qū)溢出***的安全策略,這些安全策略可以應(yīng)用于一般企業(yè)內(nèi)部服務(wù)器,包括web服務(wù)器、mail服務(wù)器、samba服務(wù)器、
??? ftp服務(wù)器以及proxy服務(wù)器等。在實(shí)際使用中,我們發(fā)現(xiàn)通過(guò)這些安全策略的配置能夠?qū)彌_區(qū)溢出***起到很好的防范措施。
????
在對(duì)計(jì)算機(jī)系統(tǒng)安全的
研究中,有一種系統(tǒng)安全漏洞引起了我們的關(guān)注。一方面是由于這種安全漏洞的廣泛性--幾乎使所有的操作系統(tǒng)平臺(tái)都受到影響。另一方面,我們?yōu)?**基于此類
安全漏洞所編寫(xiě)的***程序的隱蔽性和強(qiáng)大威力所吸引。這就是緩沖區(qū)溢出技術(shù)。它可以使看似安全的,正在運(yùn)行常規(guī)服務(wù)(如
DNS、ftpd等)的主機(jī)在幾秒鐘內(nèi)失去控制權(quán)。緩沖區(qū)溢出***是目前***最常用的***手段。在當(dāng)前CERT和CIAC等發(fā)布的Internet安全事
件報(bào)告中,
緩沖區(qū)溢出已成為常見(jiàn)的用語(yǔ)。緩沖區(qū)溢出***的目的在于擾亂具有某些特權(quán)運(yùn)行的程序的功能。這樣可以讓***者取得程序的控制權(quán),如果該程序具有足夠的權(quán)
限,那么整個(gè)主機(jī)就被控制了。
????
為了應(yīng)對(duì)不斷涌現(xiàn)的緩沖區(qū)溢出***,我們研究了在Linux系統(tǒng)下防范緩沖區(qū)溢出的方
法,之所以選擇Linux平臺(tái),主要有兩方面的原因:(1)Linux是一個(gè)開(kāi)放源碼的平臺(tái),有利于我們?cè)谘芯康倪^(guò)程中深入技術(shù)細(xì)節(jié),由于Linux及其
上面的大量應(yīng)用都是基于開(kāi)放源碼,有很多***在其上進(jìn)行了大量的工作,可以說(shuō)Linux上的網(wǎng)絡(luò)***水平代表了整個(gè)網(wǎng)絡(luò)***的最高水平。(2)Linux
是一個(gè)類Unix系統(tǒng),同時(shí)也是在Internet中大量使用的操作系統(tǒng)平臺(tái),選擇Linux作為研究緩沖區(qū)溢出技術(shù)的平臺(tái)是非常具有代表性的,在
Linux平臺(tái)上取得的經(jīng)驗(yàn)可以非常容易地移植到其他Unix或者類Unix平臺(tái)上。
????
通過(guò)研究,我們總結(jié)了在Linux平臺(tái)下防范緩沖區(qū)溢出的安全策略,這些安全策略可以應(yīng)用于一般企業(yè)內(nèi)部服務(wù)器,包括web服務(wù)器、mail服務(wù)器、samba服務(wù)器、ftp服務(wù)器以及proxy服務(wù)器等。我們所總結(jié)的這些安全策略如下所示:
????
????
如果不想讓遠(yuǎn)程登錄的用戶看到系統(tǒng)的提示信息,可以改變"/etc/inetd.conf"文件中的telnet設(shè)置:
????
????
在末尾加上"-h"參數(shù)可以讓daemon不顯示任何系統(tǒng)信息,只顯示登錄提示。當(dāng)然,只有在服務(wù)器上裝了telnet服務(wù)器才有這樣做的必要。
????
??? 回頁(yè)首
<>
????
在默認(rèn)情況下,當(dāng)?shù)卿浹b有Linux系統(tǒng)的計(jì)算機(jī)時(shí),系統(tǒng)會(huì)告訴你Linux發(fā)行版的名字、版本號(hào)、內(nèi)核版本和服務(wù)器名稱。這泄露了太多的系統(tǒng)信息。出于安全的考慮,最好只顯示一個(gè)"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"
文件是用戶從網(wǎng)絡(luò)登錄計(jì)算機(jī)時(shí)(例如:telnet、SSH)看到的登錄提示。同樣在"/etc"目錄下還有一個(gè)"issue"文件,是用戶從本地登錄時(shí)
看到的提示。這兩個(gè)文件都是文本文件,可以根據(jù)需要改變。但是,如果想刪掉這兩個(gè)文件,必須向上面介紹的那樣把"/etc/rc.d/rc.local"
腳本中的那些行注釋掉,否則每次重新啟動(dòng)的時(shí)候,系統(tǒng)又會(huì)重新創(chuàng)建這兩個(gè)文件。
????
??? 回頁(yè)首
<>
????
在Linux系統(tǒng)下,使用finger命令可以顯示本地或遠(yuǎn)程系統(tǒng)中目前已登錄用戶的詳細(xì)信息,***可以利用這些信息,增大侵入系統(tǒng)的機(jī)會(huì)。為了系統(tǒng)的安
全,最好禁止提供finger服務(wù),即從/usr/bin下刪除finger 命令。如果要保留
finger服務(wù),應(yīng)將finger文件換名,或修改其權(quán)限,使得只允許root用戶執(zhí)行finger命令。
????
??? 回頁(yè)首
<>
????
inetd也叫作"超級(jí)服務(wù)器",其作用是根據(jù)網(wǎng)絡(luò)請(qǐng)求裝入網(wǎng)絡(luò)程序。"/etc/inetd.conf"文件告訴inetd監(jiān)聽(tīng)哪些網(wǎng)絡(luò)端口,為每個(gè)端
口啟動(dòng)哪個(gè)服務(wù)。把Linux系統(tǒng)放在任何網(wǎng)絡(luò)環(huán)境中,第一件要做的事就是了解一下服務(wù)器到底要提供哪些服務(wù)。不需要的那些服務(wù)應(yīng)該被禁止掉,最好卸載
掉,這樣***就少了一些***系統(tǒng)的機(jī)會(huì)。查看"/etc/inetd.conf"文件,了解一下inetd提供哪些服務(wù)。用加上注釋的方法(在一行的開(kāi)頭
加上#號(hào))禁止任何不需要的服務(wù),再給inetd進(jìn)程發(fā)一個(gè)SIGHUP信號(hào)。具體操作步驟如下:
????
(1)把文件"/etc/inetd.conf"的許可權(quán)限改成600,只允許root來(lái)讀寫(xiě)該文件。
????
< 600 chmod>
????
(2)確定"/etc/inetd.conf"文件所有者為root。
????
????
這個(gè)命令顯示出來(lái)的信息應(yīng)該是:
????
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),禁止所有不需要的服務(wù),如:ftp、telnet、
shell、login、exec、talk、ntalk、imap、pop-2、pop-3、finger、auth等。把不需要的服務(wù)關(guān)閉可以使系統(tǒng)
的危險(xiǎn)性降低很多。
????
(4)改變了"inetd.conf"文件之后,要給inetd進(jìn)程發(fā)送一個(gè)SIGHUP信號(hào)(killall -HUP inetd)。
????
< -HUP killall root]#>
????
(5)為了保證"inetd.conf"文件的安全,可以用chattr命令把它設(shè)成不可改變的。如下:
????
< +i chattr>
????
這
樣可以防止對(duì)"inetd.conf"文件的任何修改。一個(gè)有"i"屬性的文件是不能被改動(dòng)的(不能刪除或重命名,不能創(chuàng)建這個(gè)文件的鏈接,不能向這個(gè)文
件里寫(xiě)數(shù)據(jù))。唯一可以取消這個(gè)屬性的人只有root。如果要修改"inetd.conf"文件,首先要取消不可修改的屬性,如下:
????
< chattr -i>
????
????
再改變了"inetd.conf"文件后,需要再把它的屬性改為不可改變的。
????
??? 回頁(yè)首
<>
????
/etc/rc.d目錄下"rc"開(kāi)頭的文件是用來(lái)啟動(dòng)系統(tǒng)的初始化文件的。rc系列文件與Ms-
Dos系統(tǒng)下的autoexec.bat很類似。rc的意思是"runtime
commands"。它們決定了init進(jìn)程要啟動(dòng)哪些服務(wù)。redhat系統(tǒng)下,這些腳本在/etc/rc.d/rc3.d(如果系統(tǒng)以x為默認(rèn)啟動(dòng)的
話,就是/etc/rc.d/rc5.d)。要在啟動(dòng)時(shí)禁止某個(gè)服務(wù),只需要把大寫(xiě)的S替換為小寫(xiě)的s,同時(shí),redhat也提供一個(gè)工具來(lái)幫助你關(guān)閉服
務(wù),輸入/usr/sbin/setup,然后選擇"system
services",就可以定制系統(tǒng)啟動(dòng)時(shí)運(yùn)行哪些服務(wù)。另外一個(gè)選擇是chkconfig命令,很多l(xiāng)inux版本的系統(tǒng)都自帶這個(gè)工具。腳本名字中的
數(shù)字是啟動(dòng)的順序,以大寫(xiě)的K開(kāi)頭的是用來(lái)殺死進(jìn)程的。
如將S50snmpd(SNMP簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議,遠(yuǎn)程用戶能從中獲得許多系統(tǒng)信息)改為s50snmpd,則系統(tǒng)啟動(dòng)時(shí)將不會(huì)啟動(dòng)這項(xiàng)服務(wù)。
????
用下列命令察看在關(guān)閉啟動(dòng)腳本之前有多少服務(wù)在運(yùn)行:
????
< -eaf|wc ps>
????
????
有兩個(gè)非常有用的工具:ps -xau(輸出大量的有關(guān)系統(tǒng)運(yùn)行的信息)和netstat -vat(列出所有和網(wǎng)絡(luò)相關(guān)的信息)。運(yùn)行他們就可以知道系統(tǒng)在提供、運(yùn)行哪些服務(wù)。
????
??? 回頁(yè)首
<>
????
端口號(hào)和標(biāo)準(zhǔn)服務(wù)之間的對(duì)應(yīng)關(guān)系在RFC1700"Assigned
Numbers"中有詳細(xì)的定義。"/etc/services"文件使得服務(wù)器和客戶端的程序能夠把服務(wù)的名字轉(zhuǎn)成端口號(hào),這張表在每一臺(tái)主機(jī)上都存
在,其文件名是"/etc/services"。只有"root"用戶才有權(quán)限修改這個(gè)文件,而且在通常情況下這個(gè)文件是沒(méi)有必要修改的,因?yàn)檫@個(gè)文件中
已經(jīng)包含了常用的服務(wù)所對(duì)應(yīng)的端口號(hào)。為了提高安全性,我們可以給這個(gè)文件加上保護(hù)以避免沒(méi)有經(jīng)過(guò)授權(quán)的刪除和改變。為了保護(hù)這個(gè)文件可以用下面的命令:
????
<>
????
????
??? 回頁(yè)首
< init.d rc.d>
????
通過(guò)以下方式改變啟動(dòng)和停止daemon的腳本文件的權(quán)限。
????
????
????
這樣只有root可以讀、寫(xiě)和執(zhí)行這一腳本,因?yàn)橐话阌脩舨恍枰滥_本文件的內(nèi)容。
????
??? 回頁(yè)首
????
防止系統(tǒng)對(duì)ping請(qǐng)求做出反應(yīng),對(duì)于網(wǎng)絡(luò)安全是很有好處的,因?yàn)闆](méi)人能夠ping你的服務(wù)器并得到任何反應(yīng)。TCP/IP協(xié)議本身有很多的弱點(diǎn),***可
以利用一些技術(shù),把傳輸正常數(shù)據(jù)包的通道用來(lái)偷偷地傳送數(shù)據(jù)。使你的系統(tǒng)對(duì)ping請(qǐng)求沒(méi)有反應(yīng),可以把這個(gè)危險(xiǎn)減到最小。使用下面的命令:
????
????
????
運(yùn)
行完這個(gè)命令后,系統(tǒng)對(duì)ping就沒(méi)有反應(yīng)了。可以把這一行加到"/etc/rc.d/rc.local"文件中去,這樣當(dāng)系統(tǒng)重新啟動(dòng)時(shí),該命令就會(huì)自
動(dòng)運(yùn)行。對(duì)ping命令沒(méi)有反應(yīng),至少可以把絕大多數(shù)的***排除到系統(tǒng)之外,因?yàn)?**不可能知道你的服務(wù)器在哪里。重新恢復(fù)對(duì)ping的響應(yīng),可以使用下
面的命令:
????
< 0>
????
????
??? 回頁(yè)首
????
SSH協(xié)議在開(kāi)始設(shè)計(jì)時(shí)的目的就是提供盡可能安全的遠(yuǎn)程存取方式。它可以用來(lái)進(jìn)行任何基于網(wǎng)絡(luò)的信息傳遞,而且適應(yīng)性很強(qiáng)。Linux、Unix、NT等
系統(tǒng)都可以使用。由于在和遠(yuǎn)程交互時(shí),傳遞的密鑰、認(rèn)證信息等都是加密的,所以安全性能很好。用ssh完全取代telnet/ftp,它能夠確保數(shù)據(jù)在網(wǎng)
絡(luò)中的安全傳輸。
????
??? 回頁(yè)首
????
應(yīng)該取消普通用戶的控制臺(tái)訪問(wèn)權(quán)限,比如shutdown、reboot、halt等命令。
????
< console.apps security ]#>
????
????
其中<servicename>是要注銷(xiāo)的程序名。
????
??? 回頁(yè)首
<>
????
Bash
shell在"~/.bash_history"("~/"表示用戶目錄)文件中保存了500條使用過(guò)的命令,這樣可以使你輸入使用過(guò)的長(zhǎng)命令變得容易。
每個(gè)在系統(tǒng)中擁有賬號(hào)的用戶在他的目錄下都有一個(gè)".bash_history"文件。bash
shell應(yīng)該保存少量的命令,并且在每次用戶注銷(xiāo)時(shí)都把這些歷史命令刪除。具體操作步驟如下:
????
(1)
"/etc/profile"文件中的"HISTFILESIZE"和"HISTSIZE"行確定所有用戶的".bash_history"文件中可以保
存的舊命令條數(shù)。建議把"/etc/profile"文件中的"HISTFILESIZE"和"HISTSIZE"行的值設(shè)為一個(gè)較小的數(shù),比如30。編
輯profile文件(vi /etc/profile),把下面這行改為:
????
這表示每個(gè)用戶的".bash_history"文件只可以保存30條舊命令。
?????
??
?????
(2)網(wǎng)絡(luò)管理員還應(yīng)該在"/etc/skel/.bash_logout" 文件中添加一行"rm -f $HOME/.bash_history"。這樣,當(dāng)用戶每次注銷(xiāo)時(shí),".bash_history"文件都會(huì)被刪除。
??
?????
編輯.bash_logout文件(vi /etc/skel/.bash_logout),添加下面這行:
??
?????
??
?????
??
?????
??? 回頁(yè)首
????
在"/etc/inittab" 文件中注釋掉下面這行(使用#):
??
?????
??
?????
??
?????
改為:
??
?????
<>
????
????
為了使這項(xiàng)改動(dòng)起作用,輸入下面這個(gè)命令:
????
< init>
????
????
??? 回頁(yè)首
<>
????
緩沖區(qū)溢出漏洞和suid/sgid程序的關(guān)系緊密,帶"s"位的程序往往是系統(tǒng)不安全的根源。應(yīng)該盡量將不必要的帶"s"位的程序刪除。
轉(zhuǎn)載于:https://blog.51cto.com/zhaizhenxing/134852
總結(jié)
以上是生活随笔為你收集整理的linux下系统安全常见问题2的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 桥本氏甲状腺炎用治吗(桥本氏甲状腺炎需要
- 下一篇: 匿名者(说一说匿名者的简介)