Linux安全学习总结
生活随笔
收集整理的這篇文章主要介紹了
Linux安全学习总结
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
linux系統安全詳解
一,BIOS安全(硬件上的安全)
1,最基本最簡單的安全配置,保障計算機硬件配置等不被別人更改.給BIOS設置密碼,防止改變啟動順序從軟盤或
光盤啟動.防止特殊的啟動盤啟動用戶的系統,進入rescue或其他模式.改變或刪
除當前配置等.每一個細心的網
管每個細節都不應該忽視!
2,禁止使用contral+alt+delete重起機器
編輯/etc/inittab文件,注釋掉下面一行.
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
該成:(使用#)
# ca::ctrlaltdel:/sbin/shutdown -t3 -r now
?
二,帳號安全
口令,系統的第一道防線,目前大多數數攻擊都是截獲口令或猜測口令等口令攻擊開始的.
/etc 目錄下主要存放系統的配置文件.我們要對這個目錄下的好多文件進行修改
.
1,/etc/login.defs文件是login程序的配置文件.口令的長度和口令的有效期等
可以在這里設置.
[root@tp ~]# vi /etc/login.defs
...
PASS_MAX_DAYS ? 9999 ?密碼被用最多天數
PASS_MIN_DAYS ? 0 ? ? 密碼被用最少天數
PASS_MIN_LEN ? ?5 ? ? 系統默認密碼長度5,我們可以該成8或更多.
PASS_WARN_AGE ? 7 ? ? 密碼有效期警告,超過7天將提示用戶更換新的密碼.
...
?
2,/etc/profile文件是環境變量設置文件.在此文件設置環境變量將對所有用戶
生效.我們要在此文件設置自動
注銷帳戶的時間.及命令的歷史記錄數.
[root@tp ~]# vi /etc/profile
...
HOSTNAME=`/bin/hostname`
HISTSIZE=1000 這里1000代表用戶操作命令的歷史記錄.應盡量小一些.設置成0
也可以,呵呵.
tmout=600 添加此行,如果系統用戶在600秒(10分鐘)內不做任何操作,將自動注
銷這個用戶.
...
3,/etc/passwd文件存放系統用戶名,用戶標識(UID),組標識(GID)等的地方.我們
要在這里找到并清除沒有設置
口令的用戶.同時還要清除一些特別帳號(因為可能會存在潛在的危險).
[root@tp ~]# vi /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
...
wh::500:501::/home/wh:/bin/bash
仔細觀察上面的一行(wh用戶),在第二項,兩個冒號中間什么都沒有,而上面的的
用戶(如root用戶)都是x. 這表
明此用戶沒有密碼.要不添加上,要不刪掉.
4,特別帳號的處理
如果不啟動用sendmail,刪除如下用戶
[root@tp wh]# userdel adm
[root@tp wh]# userdel lp
[root@tp wh]# userdel sync
[root@tp wh]# userdel shudown
[root@tp wh]# userdel halt
[root@tp wh]# userdel mail
如果不用X windows服務器.可有刪除
[root@tp wh]# userdel news
[root@tp wh]# userdel uucp
[root@tp wh]# userdel operator
[root@tp wh]# userdel games
如果不允許匿名FTP帳號登陸,可刪除
[root@tp wh]# userdel gopher
[root@tp wh]# userdel ftp
?
三,重要文件的安全設置.
首先要了解兩個命令1,chmod:改變文件的屬主
2,chattr:改變文件屬性
我們要做的是把重要文件的屬主改成root并給相應的權限,還有就是改變文件的
屬性讓它禁止被修改
我們來統計一下重要文件:(其實,只要你不想讓其他用戶更改的文件都可以這么
做,我這里只是為安全而選擇了
下面的文件.)
1,/etc/passwd,passwd-,passwd.OLD,group,group- 用戶,組的ID等信息文件.
2,/etc/shadow,shadow-,gshadow,gshadow- 用戶,組密碼加密文件.
3,/etc/xinetd.conf 網絡守護進程主配置文件
4,/etc/inittab ?系統在啟動是會讀取這個文件里的內容.
5,/etc/services 防止未經許可的刪除或添加服務
6,/etc/rc.d/rc.sysinit 系統啟動是需要讀取的文件,
7,/etc/rc.d/init.d/* ?
以一個文件為例,其它都一樣
[root@tp etc]# chmod 700 passwd
[root@tp etc]# chattr +i passwd
當chattr +i時就是禁止對文件進行修改,當我們要添加用戶時,就會有麻煩,因為
passwd文件禁止修改寫入.所以
我們還要該掉它的屬性.chattr -i.
?
四,防止攻擊系統安全設置
1,限制用戶使用系統資源,主要包括資源最大進程數,內存使用量等.這樣可以防止DOS類型攻擊.
需要編輯文件
[root@tp /]# vi /etc/security/limits.conf
...
(這三行是添加的) www.2cto.com
* hard core 0 ? ?禁止創建core文件
* hard rss 5000 ?其他用戶(除root)最多使用5M內存
* hard nproc 20 ?最多進程數限制在20
注:*表示所有登陸到linux的用戶.
# End of file
[root@tp /]# vi /etc/pam.d/login
...
在文件末尾加入下面一行
session required /lib/security/pam_limits.so
2,限制控制臺的訪問
[root@tp /]# vi /etc/securetty
...
我們注釋掉
tty1
# tty2
# tty3
# tty4
# tty5
# tty6
只留下tty1,這時,root僅可在tty1終端登錄
3,禁止外來ping請求.
[root@tp /]# vi /etc/rc.d/rc.local
...
在最后加入一行
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
4,防止IP地址欺騙
[root@tp /]# vi /etc/host.conf
加入如下幾行
order bind,hosts
multi off
nospoof on
5,禁止su命令進入root(這一部我反復測試總是不成功,group組里的用戶依然不
能su成root用戶.希望知道的朋
友告訴我,謝謝)
[root@tp pam.d]# vi /etc/pam.d/su
...
在下面加入如下兩行
auth sufficient /lib/security/pam_rootok.so debug
auth required /lib/security/pam_wheel.so group=xxx
這表示只有xxx組的用戶可以su成root.
6,使用TCP_WRAPPER
在默認情況下linux系統允許所有請求,可用TCP_WRAPPER增強安全性,
在/etc/hosts.deny寫入"ALL:ALL"禁止所有請求
[root@tp etc]# vi /etc/hosts.deny
#
# hosts.deny ? ?This file describes the names of the hosts which are
# ? ? ? ? ? ? ? *not* allowed to use the local INET services, as?
decided
# ? ? ? ? ? ? ? by the '/usr/sbin/tcpd' server.
#
# The portmap line is redundant, but it is left to remind you that
# the new secure portmap uses hosts.deny and hosts.allow. ?In?
particular
# you should know that NFS uses portmap!
? ?"ALL:ALL"
把允許訪問的客戶,或服務添加到/etc/hosts.allow,冒號左邊為服務,冒號右邊
為授權的機器
[root@tp etc]# vi /etc/hosts.allow
#
# hosts.allow ? This file describes the names of the hosts which are
# ? ? ? ? ? ? ? allowed to use the local INET services, as decided
# ? ? ? ? ? ? ? by the '/usr/sbin/tcpd' server.
#
vsftp:211.101.46.253 ? ?注:僅如許IP地址為211.101.46.253的機器訪問FIP服
務器
7.刪減登錄信息
? [root@tp ~]# rm -f /etc/issue
? [root@tp ~]# rm -f /etc/issue.net
[root@tp ~]# touch /etc/issue
? [root@tp ~]# touch /etc/issue.net
?
五,確保開啟服務的安全性
我們先來看一下自己系統開啟了多少服務.[root@tp ~]# ps -eaf | wc -l
55
我的是55
我們可以通過當前的進程里在來看一下都是什么服務
[root@tp ~]# ps -aux
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-
3.2.3/FAQ
USER ? ? ? PID %CPU %MEM ? VSZ ?RSS TTY ? ? ?STAT START ? TIME COMMAND
root ? ? ? ? 1 ?0.0 ?0.2 ?2592 ?560 ? ? ? ? ?S ? ?21:02 ? 0:00 init?
[3] ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ??
root ? ? ? ? 2 ?0.0 ?0.0 ? ? 0 ? ?0 ? ? ? ? ?SN ? 21:02 ? 0:00?
[ksoftirqd/0]
root ? ? ? ? 3 ?0.0 ?0.0 ? ? 0 ? ?0 ? ? ? ? ?S< ? 21:02 ? 0:00?
[events/0]
root ? ? ? ? 4 ?0.0 ?0.0 ? ? 0 ? ?0 ? ? ? ? ?S< ? 21:02 ? 0:00?
[khelper]
root ? ? ? ? 5 ?0.0 ?0.0 ? ? 0 ? ?0 ? ? ? ? ?S< ? 21:02 ? 0:00?
[kacpid]
root ? ? ? ?20 ?0.0 ?0.0 ? ? 0 ? ?0 ? ? ? ? ?S< ? 21:02 ? 0:00?
[kblockd/0]
root ? ? ? ?30 ?0.0 ?0.0 ? ? 0 ? ?0 ? ? ? ? ?S ? ?21:02 ? 0:00?
[pdflush]
root ? ? ? ?31 ?0.0 ?0.0 ? ? 0 ? ?0 ? ? ? ? ?S ? ?21:02 ? 0:00?
[pdflush]
root ? ? ? ?33 ?0.0 ?0.0 ? ? 0 ? ?0 ? ? ? ? ?S< ? 21:02 ? 0:00 [aio/0]
root ? ? ? ?21 ?0.0 ?0.0 ? ? 0 ? ?0 ? ? ? ? ?S ? ?21:02 ? 0:00 [khubd]
root ? ? ? ?32 ?0.0 ?0.0 ? ? 0 ? ?0 ? ? ? ? ?S ? ?21:02 ? 0:00?
[kswapd0]
root ? ? ? 107 ?0.0 ?0.0 ? ? 0 ? ?0 ? ? ? ? ?S ? ?21:02 ? 0:00?
[kseriod]
root ? ? ? 181 ?0.0 ?0.0 ? ? 0 ? ?0 ? ? ? ? ?S< ? 21:03 ? 0:00?
[kmirrord]
root ? ? ? 182 ?0.0 ?0.0 ? ? 0 ? ?0 ? ? ? ? ?S< ? 21:03 ? 0:00?
[kmir_mon]
root ? ? ? 190 ?0.0 ?0.0 ? ? 0 ? ?0 ? ? ? ? ?S ? ?21:03 ? 0:00?
[kjournald]
root ? ? ?1085 ?0.0 ?0.1 ?2604 ?444 ? ? ? ? ?S<s ?21:03 ? 0:00 udevd
root ? ? ?1611 ?0.0 ?0.0 ? ? 0 ? ?0 ? ? ? ? ?S< ? 21:03 ? 0:00?
[kauditd]
root ? ? ?1745 ?0.0 ?0.0 ? ? 0 ? ?0 ? ? ? ? ?S< ? 21:03 ? 0:00?
[kmpathd/0]
root ? ? ?1769 ?0.0 ?0.0 ? ? 0 ? ?0 ? ? ? ? ?S ? ?21:03 ? 0:00?
[kjournald]
root ? ? ?2250 ?0.0 ?0.2 ?2668 ?632 ? ? ? ? ?Ss ? 21:03 ? 0:00 syslogd?
-m 0
root ? ? ?2254 ?0.0 ?0.1 ?3352 ?472 ? ? ? ? ?Ss ? 21:03 ? 0:00 klogd?
-x
rpc ? ? ? 2274 ?0.0 ?0.2 ?2220 ?572 ? ? ? ? ?Ss ? 21:03 ? 0:00 portmap
rpcuser ? 2294 ?0.0 ?0.2 ?2108 ?756 ? ? ? ? ?Ss ? 21:03 ? 0:00?
rpc.statd
root ? ? ?2322 ?0.0 ?0.3 ?5344 ?992 ? ? ? ? ?Ss ? 21:03 ? 0:00?
rpc.idmapd
root ? ? ?2399 ?0.0 ?0.3 ?2612 ?816 ? ? ? ? ?S ? ?21:03 ? 0:00?
/usr/sbin/smartd
root ? ? ?2409 ?0.0 ?0.2 ?3176 ?540 ? ? ? ? ?Ss ? 21:03 ? 0:00?
/usr/sbin/acpid
root ? ? ?2440 ?0.0 ?1.4 11192 3680 ? ? ? ? ?Ss ? 21:03 ? 0:00 cupsd
root ? ? ?2497 ?0.0 ?0.6 ?5044 1712 ? ? ? ? ?Ss ? 21:03 ? 0:00?
/usr/sbin/sshd
root ? ? ?2526 ?0.0 ?0.3 ?2760 ?876 ? ? ? ? ?Ss ? 21:03 ? 0:00 xinetd?
-stayalive -pidfile
/var/run/xinetd.pid
root ? ? ?2536 ?0.0 ?0.2 ?1788 ?528 ? ? ? ? ?Ss ? 21:03 ? 0:00 gpm -m?
/dev/input/mice -t imps2
htt ? ? ? 2565 ?0.0 ?0.1 ?1960 ?316 ? ? ? ? ?Ss ? 21:03 ? 0:00?
/usr/sbin/htt -retryonerror 0
htt ? ? ? 2566 ?0.0 ?1.1 ?8256 3024 ? ? ? ? ?S ? ?21:03 ? 0:00?
htt_server -nodaemon
canna ? ? 2578 ?0.0 ?6.8 19932 17628 ? ? ? ? Ss ? 21:03 ? 0:00?
/usr/sbin/cannaserver -syslog -u
canna
root ? ? ?2590 ?0.0 ?0.4 ?7428 1204 ? ? ? ? ?Ss ? 21:03 ? 0:00 crond
xfs ? ? ? 2628 ?0.0 ?1.3 ?5692 3332 ? ? ? ? ?Ss ? 21:03 ? 0:00 xfs -
droppriv -daemon
root ? ? ?2638 ?0.0 ?0.2 ?2092 ?640 ? ? ? ? ?SNs ?21:03 ? 0:00 anacron?
-s
root ? ? ?2647 ?0.0 ?0.2 ?3712 ?740 ? ? ? ? ?Ss ? 21:03 ? 0:00?
/usr/sbin/atd
dbus ? ? ?2657 ?0.0 ?0.5 13296 1324 ? ? ? ? ?Ssl ?21:03 ? 0:00 dbus-
daemon-1 --system
root ? ? ?2668 ?0.0 ?0.4 ?3156 1040 ? ? ? ? ?Ss ? 21:03 ? 0:00 cups-
config-daemon
root ? ? ?2679 ?0.0 ?1.7 ?6540 4424 ? ? ? ? ?Ss ? 21:03 ? 0:00 hald
root ? ? ?2688 ?0.0 ?0.5 ?2916 1288 ? ? ? ? ?Ss ? 21:03 ? 0:00 login?
-- root ? ?
root ? ? ?2689 ?0.0 ?0.1 ?1528 ?404 tty2 ? ? Ss+ ?21:03 ? 0:00?
/sbin/mingetty tty2
root ? ? ?2690 ?0.0 ?0.1 ?2048 ?404 tty3 ? ? Ss+ ?21:03 ? 0:00?
/sbin/mingetty tty3
root ? ? ?2691 ?0.0 ?0.1 ?3488 ?404 tty4 ? ? Ss+ ?21:03 ? 0:00?
/sbin/mingetty tty4
root ? ? ?2692 ?0.0 ?0.1 ?2368 ?404 tty5 ? ? Ss+ ?21:03 ? 0:00?
/sbin/mingetty tty5
root ? ? ?2693 ?0.0 ?0.1 ?3296 ?404 tty6 ? ? Ss+ ?21:03 ? 0:00?
/sbin/mingetty tty6
root ? ? ?3136 ?0.0 ?0.5 ?5920 1396 tty1 ? ? Ss+ ?21:05 ? 0:00 -bash
root ? ? ?3574 ?0.0 ?0.8 ?8400 2276 ? ? ? ? ?Ss ? 21:05 ? 0:00 sshd:?
root@pts/0
root ? ? ?3576 ?0.0 ?0.5 ?6896 1388 pts/0 ? ?Ss ? 21:05 ? 0:00 -bash
root ? ? ?3608 ?0.0 ?0.4 ?6584 1216 pts/0 ? ?S+ ? 21:05 ? 0:00 ntsysv
root ? ? ?4019 ?0.0 ?0.8 ?8408 2276 ? ? ? ? ?Rs ? 21:09 ? 0:00 sshd:?
root@pts/1
root ? ? ?4021 ?0.0 ?0.5 ?6912 1388 pts/1 ? ?Ss ? 21:09 ? 0:00 -bash
root ? ? ?4084 ?0.0 ?0.2 ?2852 ?748 pts/1 ? ?R+ ? 21:17 ? 0:00 ps -aux
這些進程,服務,都是開機自動加載的!我們可以用命令來看一下,
[root@tp ~]# ntsysv
?
那些前面有*號的就是開機自動啟動的服務.也就是說我們開機的話就要同時開啟
這么多的服務.(和我們windows
里的服務是一樣的,沒用的完全可以關了).
我們要掌握一個原則:就是運行的服務越少,肯定系統就越安全.
上面看的是系統開機都會開啟那些服務.那么那些服務是正在運行的呢?
[root@tp ~]# netstat -an
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address ? ? ? ? ? ? ? Foreign Address ? ? ? ?
? ? ?State ? ??
tcp ? ? ? ?0 ? ? ?0 0.0.0.0:32768 ? ? ? ? ? ? ? 0.0.0.0:* ? ? ? ? ? ? ?
? ? ?LISTEN ? ??
tcp ? ? ? ?0 ? ? ?0 0.0.0.0:111 ? ? ? ? ? ? ? ? 0.0.0.0:* ? ? ? ? ? ? ?
? ? ?LISTEN ? ??
tcp ? ? ? ?0 ? ? ?0 0.0.0.0:113 ? ? ? ? ? ? ? ? 0.0.0.0:* ? ? ? ? ? ? ?
? ? ?LISTEN ? ??
tcp ? ? ? ?0 ? ? ?0 127.0.0.1:631 ? ? ? ? ? ? ? 0.0.0.0:* ? ? ? ? ? ? ?
? ? ?LISTEN ? ??
tcp ? ? ? ?0 ? ? ?0 :::80 ? ? ? ? ? ? ? ? ? ? ? :::* ? ? ? ? ? ? ? ? ??
? ? ?LISTEN ? ??
tcp ? ? ? ?0 ? ? ?0 :::22 ? ? ? ? ? ? ? ? ? ? ? :::* ? ? ? ? ? ? ? ? ??
? ? ?LISTEN ? ??
tcp ? ? ? ?0 ? ? ?0 :::443 ? ? ? ? ? ? ? ? ? ? ?:::* ? ? ? ? ? ? ? ? ??
? ? ?LISTEN ? ??
tcp ? ? ? ?0 ? ?880 ::ffff:192.168.0.1:22 ? ? ??
::ffff:192.168.0.5:2683 ? ? ESTABLISHED
udp ? ? ? ?0 ? ? ?0 0.0.0.0:32768 ? ? ? ? ? ? ? 0.0.0.0:* ? ? ? ? ? ? ?
? ? ? ? ? ? ? ??
udp ? ? ? ?0 ? ? ?0 0.0.0.0:111 ? ? ? ? ? ? ? ? 0.0.0.0:* ? ? ? ? ? ? ?
? ? ? ? ? ? ? ??
udp ? ? ? ?0 ? ? ?0 0.0.0.0:631 ? ? ? ? ? ? ? ? 0.0.0.0:* ? ? ? ? ? ? ?
? ? ? ? ? ? ? ??
udp ? ? ? ?0 ? ? ?0 0.0.0.0:764 ? ? ? ? ? ? ? ? 0.0.0.0:* ? ? ? ? ? ? ?
? ? ? ? ? ? ? ??
帶有LISTEN的代表正在開啟的端口,開啟的服務.
如果你對linux系統的啟動過程了解的話.(建議先去看看,我以后也會寫的)
我們進入這個目錄
[root@tp ~]# cd /etc/rc.d
[root@tp rc.d]# ls
init.d ?rc ?rc0.d ?rc1.d ?rc2.d ?rc3.d ?rc4.d ?rc5.d ?rc6.d ?rc.local ?
rc.sysinit
如果你的系統是X(圖形化啟動的話)運行級別是5,那就是rc5.d,我的是rc3.d,運
行級別是3.(多用戶模式)
是哪個模式就進入哪個目錄,看一下
[root@tp rc.d]# cd rc3.d/
[root@tp rc3.d]# ls
K01yum ? ? ? ? ? ? K16rarpd ? ? ? ? ? K35cyrus-imapd ?K50snmptrapd ?
K84bgpd ? ? ? ?K96ipmi ? ? ? ?
? ? ?S13irqbalance ?S55sshd
K02NetworkManager ?K20bootparamd ? ? ?K35dhcpd ? ? ? ?K50tux ? ? ? ?
K84ospf6d ? ? ?K99readahead ??
? ? ?S13portmap ? ? S56rawdevices
K03rhnsd ? ? ? ? ? K20netdump-server ?K35smb ? ? ? ? ?K50vsftpd ? ??
K84ospfd ? ? ??
K99readahead_early ?S14nfslock ? ? S56xinetd
K05atd ? ? ? ? ? ? K20nfs ? ? ? ? ? ? K35vncserver ? ?K54dovecot ? ?
K84ripd ? ? ? ?
S00microcode_ctl ? ?S15mdmonitor ? S85gpm
K05innd ? ? ? ? ? ?K20rstatd ? ? ? ? ?K35winbind ? ? ?K61ldap ? ? ??
K84ripngd ? ? ?S01sysstat ? ??
? ? ?S18rpcidmapd ? S87iiim
K05saslauthd ? ? ? K20rusersd ? ? ? ? K36dhcp6s ? ? ? K65kadmin ? ??
K85mdmpd ? ? ? S05kudzu ? ? ??
? ? ?S19rpcgssd ? ? S90canna
K10dc_server ? ? ? K20rwhod ? ? ? ? ? K36lisa ? ? ? ? K65kprop ? ? ?
K85zebra ? ? ? S06cpuspeed ? ?
? ? ?S25netfs ? ? ? S90crond
K10psacct ? ? ? ? ?K24irda ? ? ? ? ? ?K36mysqld ? ? ? K65krb524 ? ??
K87auditd ? ? ?
S08arptables_jf ? ? S26apmd ? ? ? ?S95anacron
K10radiusd ? ? ? ? K25squid ? ? ? ? ? K36postgresql ? K65krb5kdc ? ?
K87multipathd ?S08ip6tables ??
? ? ?S26lm_sensors ?S97messagebus
K10xfs ? ? ? ? ? ? K28amd ? ? ? ? ? ? K45arpwatch ? ? K73ypbind ? ??
K88opensm ? ? ?S08iptables ? ?
? ? ?S28autofs ? ? ?S98cups-config-daemon
K12dc_client ? ? ? K30sendmail ? ? ? ?K45named ? ? ? ?K74nscd ? ? ??
K89iscsi ? ? ? S09isdn ? ? ? ?
? ? ?S40smartd ? ? ?S98haldaemon
K12FreeWnn ? ? ? ? K30spamassassin ? ?K46radvd ? ? ? ?K74ntpd ? ? ??
K89netplugd ? ?S09pcmcia ? ? ?
? ? ?S44acpid ? ? ? S99local
K12mailman ? ? ? ? K34dhcrelay ? ? ? ?K50netdump ? ? ?K74ypserv ? ??
K90bluetooth ? S10network ? ??
? ? ?S54hpoj
K15httpd ? ? ? ? ? K34yppasswdd ? ? ? K50snmpd ? ? ? ?K74ypxfrd ? ??
K94diskdump ? ?S12syslog ? ? ?
? ? ?S55cups
linux在開機時會讀取/etc/rc.d/rcX.d(根據X的運行級別)
終止K開頭的服務.
開啟S開頭的服務.
我們通過ntsysv命令所做的更改都會在這里體現出來.
好,現在應該到我們的重點了,就是要開啟那些服務,關閉那些服務.
我把每一個服務都代表什么寫出來,大家自己根據自己的需要來決定.
amd:自動安裝NFS(網絡文件系統)守侯進程
apmd:高級電源管理
Arpwatch:記錄日志并構建一個在LAN接口上看到的以太網地址和IP地址對數據
庫
atd 運行用戶用At命令調度的任務。也在系統負荷比較低時 運行批處理任務。
Autofs:自動安裝管理進程automount,與NFS相關,依賴于NIS
Bootparamd:引導參數服務器,為LAN上的無盤工作站提供引導所需的相關信息
crond:Linux下的計劃任務
Dhcpd:啟動一個DHCP(動態IP地址分配)服務器
Gated:網關路由守候進程,使用動態的OSPF路由選擇協議
gpm gpm為文本模式下的Linux程序如mc(Midnight Commander)提供了
鼠標的支持。它也支持控制臺鼠標的拷貝,粘貼操作以及彈出式菜單。
Httpd:WEB服務器
Inetd:支持多種網絡服務的核心守候程序
Innd:Usenet新聞服務器
keytable 該程序的功能是轉載您在/etc/sysconfig/keyboards里說明的鍵盤
映射表,該表可以通過kbdconfig工具進行選 擇。您應該使該程序
處于激活狀態。
ldap LDAP代表Lightweight Directory Access Protocol, 實現了目錄
訪問協議的行業標準。
Linuxconf:允許使用本地WEB服務器作為用戶接口來配置機器
Lpd:打印服務器
Mars-nwe:mars-nwe文件和用于Novell的打印服務器
mcserv Midnight Commander服務進程允許遠程機器上的用戶通過Midnight
Commander文件管理器操作本機文件。服務進程用PAM來驗證用戶,
需要給出“用戶名/口令”以通過驗證
named:DNS服務器
netfs:安裝NFS、Samba和NetWare網絡文件系統
network:激活已配置網絡接口的腳本程序
nfs:打開NFS服務
nscd:nscd(Name Switch Cache daemon)服務器,用于NIS的一個支持服務,它
高速緩存用戶口令和組成成員關
系
Pcmcia pcmcia主要用于支持筆記本電腦。
portmap:RPC portmap管理器,與inetd類似,它管理基于RPC服務的連接
postgresql:一種SQL數據庫服務器
random 保存和恢復系統的高質量隨機數生成器,這些隨機數是系統一些隨
機行為提供的
routed:路由守候進程,使用動態RIP路由選擇協議
rstatd:一個為LAN上的其它機器收集和提供系統信息的守候程序
ruserd:遠程用戶定位服務,這是一個基于RPC的服務,它提供關于當前記錄到
LAN上一個機器日志中的用戶信
息
rwalld:激活rpc.rwall服務進程,這是一項基于RPC的服務,允許用戶給每個注
冊到LAN機器上的其他終端寫消
息
rwhod:激活rwhod服務進程,它支持LAN的rwho和ruptime服務
sendmail:郵件服務器sendmail
smb:Samba文件共享/打印服務
snmpd:本地簡單網絡管理候進程
squid:激活代理服務器squid
syslog:一個讓系統引導時起動syslog和klogd系統日志守候進程的腳本
Webmin webmin是基于web的集系統管理與網絡管理于一身的強大管理工具。
利用webmin的強大功能,用戶可以通過web瀏覽器來方便地設置自
己的服務器、dns、samba、nfs、本地/遠程文件系統以及許多其他的
系統配置。
xfs:X Window字型服務器,為本地和遠程X服務器提供字型集
xntpd:網絡時間服務器
ypbind:為NIS(網絡信息系統)客戶機激活ypbind服務進程
yppasswdd:NIS口令服務器
ypserv:NIS主服務器
gpm:管鼠標的
identd:AUTH服務,在提供用戶信息方面與finger類似
可能還有不全的解釋,希望大家能補上.
?
六,日志的安全.
我在這里只講解日志的安全問題,也就是通過日志來查看那些可疑的用戶登陸過機器.不會詳細介紹日志方面的
知識.(關于linux日志我認為是很重要的東西,作為一名系統維護人員,必須對
linux日志有一定了解.我也會馬上
詳細寫這方面的文章.)
三個重要的日志文件
/var/log/wtmp 記錄每個用戶登陸和推出時間的永久記錄.
/var/run/utmp 記錄當前登陸到系統的每個用戶信息.
/var/log/lastlog 每個用戶最后一次登陸的信息(最新的信息)
wtmp和utmp都是二進制文件,它們要用命令來查看內容.
1,命令who,查看utmp文件當前的每個用戶的信息,它默認輸出包括用戶名,終端類
型,登陸時間及遠程主機.
如下:
[root@tp log]# who
root ? ? pts/0 ? ? ? ?May ?4 22:10 (192.168.0.5)
如果指明了文件,則回顯示自wtmp創建以來所有登陸的用戶信息.
[root@tp log]# who /var/log/wtmp
root ? ? tty1 ? ? ? ? May ?4 20:44
root ? ? pts/0 ? ? ? ?May ?4 20:52 (211.101.46.195)
root ? ? tty1 ? ? ? ? May ?4 21:05
root ? ? pts/0 ? ? ? ?May ?4 21:05 (211.101.46.195)
root ? ? pts/1 ? ? ? ?May ?4 21:09 (192.168.0.5)
root ? ? pts/0 ? ? ? ?May ?4 21:38 (192.168.0.5)
root ? ? pts/0 ? ? ? ?May ?4 22:10 (192.168.0.5)
2,命令w,查看utmp文件并顯示當前系統中每個用戶和它所運行的進程信息.
如:
[root@tp log]# w
?23:00:48 up 54 min, ?1 user, ?load average: 0.00, 0.00, 0.00
USER ? ? TTY ? ? ?FROM ? ? ? ? ? ? ?LOGIN@ ? IDLE ? JCPU ? PCPU WHAT
root ? ? pts/0 ? ?192.168.0.5 ? ? ?22:10 ? ?0.00s ?0.03s ?0.00s w
3,users,顯示當前當前登陸的用戶數量.
如,
[root@tp log]# users
root root
這表明兩個root用戶在同時登陸這臺機器.
4,last命令,用來顯示wtmp文件第一次 創建以來所有登陸過的用戶.
如:
[root@tp log]# last
root ? ? pts/1 ? ? ? ?192.168.0.5 ? ? ?Fri May ?4 23:01 - 23:02 ?
(00:00) ??
root ? ? pts/0 ? ? ? ?192.168.0.5 ? ? ?Fri May ?4 22:10 ? still logged?
in ?
reboot ? system boot ?2.6.9-34.EL ? ? ?Fri May ?4 22:07 ? ? ? ? ?
(00:59) ??
root ? ? pts/0 ? ? ? ?192.168.0.5 ? ? ?Fri May ?4 21:38 - down ??
(00:27) ??
reboot ? system boot ?2.6.9-34.EL ? ? ?Fri May ?4 21:36 ? ? ? ? ?
(00:29) ??
root ? ? pts/1 ? ? ? ?192.168.0.5 ? ? ?Fri May ?4 21:09 - down ??
(00:25) ??
root ? ? pts/0 ? ? ? ?211.101.46.195 ? Fri May ?4 21:05 - down ??
(00:29) ??
root ? ? tty1 ? ? ? ? ? ? ? ? ? ? ? ? ?Fri May ?4 21:05 - down ??
(00:30) ??
reboot ? system boot ?2.6.9-34.EL ? ? ?Fri May ?4 21:03 ? ? ? ? ?
(00:31) ??
root ? ? pts/0 ? ? ? ?211.101.46.195 ? Fri May ?4 20:52 - crash ?
(00:11) ??
root ? ? tty1 ? ? ? ? ? ? ? ? ? ? ? ? ?Fri May ?4 20:44 - crash ?
(00:18) ??
reboot ? system boot ?2.6.9-34.EL ? ? ?Fri May ?4 20:32 ? ? ? ? ?
(01:02) ??
reboot ? system boot ?2.6.9-34.EL ? ? ?Tue May ?1 08:32 ? ? ? ??
(3+13:02) ?
reboot ? system boot ?2.6.9-34.EL ? ? ?Tue May ?1 08:27 ? ? ? ??
(3+13:07) ?
reboot ? system boot ?2.6.9-34.EL ? ? ?Tue May ?1 08:24 ? ? ? ??
(3+13:10) ?
reboot ? system boot ?2.6.9-34.EL ? ? ?Tue May ?1 08:13 ? ? ? ??
(3+13:22) ?
wtmp begins Tue May ?1 08:13:04 2007
我們也可以指明用戶,[root@tp log]# last root
root ? ? pts/1 ? ? ? ?192.168.0.5 ? ? ?Fri May ?4 23:01 - 23:02 ?
(00:00) ??
root ? ? pts/0 ? ? ? ?192.168.0.5 ? ? ?Fri May ?4 22:10 ? still logged?
in ?
root ? ? pts/0 ? ? ? ?192.168.0.5 ? ? ?Fri May ?4 21:38 - down ??
(00:27) ??
root ? ? pts/1 ? ? ? ?192.168.0.5 ? ? ?Fri May ?4 21:09 - down ??
(00:25) ??
root ? ? pts/0 ? ? ? ?211.101.46.195 ? Fri May ?4 21:05 - down ??
(00:29) ??
root ? ? tty1 ? ? ? ? ? ? ? ? ? ? ? ? ?Fri May ?4 21:05 - down ??
(00:30) ??
root ? ? pts/0 ? ? ? ?211.101.46.195 ? Fri May ?4 20:52 - crash ?
(00:11) ??
root ? ? tty1 ? ? ? ? ? ? ? ? ? ? ? ? ?Fri May ?4 20:44 - crash ?
(00:18) ??
wtmp begins Tue May ?1 08:13:04 2007
5,命令ac,根據wtmp文件中每個用戶進入和退出時間.(以小時計算),不用參數代
表全部
[root@tp log]# ac
? ? ? ? total ? ? ? ?2.88
[root@tp log]# ac -d 代表每天總連接時間
Today ? total ? ? ? ?2.89
[root@tp log]# ac -p 代表每個用戶總連接時間
? ? ? ? root ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 2.89
? ? ? ? total ? ? ? ?2.89
我們要養成經常查看日志來觀察有無可疑用戶等問題的存在.
========
linux系統安全日志
我們主要講一下Linux環境中的系統記帳和系統日志管理以及怎么用一些工具更
加方便有效的管理日志信息。
當我們用上面的方法進行了 Linux 服務器的安裝和一些基本的設置后,我們的
服務器應該說來是比較安全的。但是總是還會有黑客可以通過各種方法利用系統
管理員的疏忽侵入我們的系統。他們的一舉一動都會記錄到系統的日志之中,盡
管他們可能可以改變這些日志信息,甚至用自己的程序替換掉我們系統本身的命
令程序,但是通過日志我們總還是能找到一些蛛絲馬跡。下面我們主要講一下?
Linux 環境中的系統記帳和系統日志管理以及怎么用一些工具更加方便有效的管
理日志信息。
1 系統記帳
最初開發的系統記帳用于跟蹤用戶資源消費情況,從用戶帳號中提取費用為目地
的。現在我們可以把它用于安全目的,給我們提供有關在系統中發生的各種活動
的有價值信息。
系統記帳主要非為兩類:
1) 連接記帳
連接記帳是跟蹤當前用戶當前對話、用戶登錄和退出的活動。在 Linux 系統中
使用 utmp (動態用戶對話)和 wtmp (登錄/退出日志記錄)工具來完成這一記帳
過程。Wtmp 工具同時維護重新引導和系統狀態變化信息。各種程序對這些工具
進行刷新和維護,因此無須進行特殊的后臺進程或程序。然而,utmp 和 wtmp?
輸出結果文件必須存在,如果這些文件不存在會關閉連接記帳。與 utmp 和?
wtmp 有關的所有數據將分別保存在 /var/run/utmp 和 /var/log/wtmp 中。這
些文件歸根用戶所有。這些文件中的數據是用戶不可讀的,但也有工具可以轉換
成可讀的形式。
dump-utmp 可以轉換連接記帳數據為可讀的 ASCII 格式數據。
ac 命令提供了有關用戶連接的大概統計,我們可以使用帶有標志 d 和 p 的 ac?
命令。標志 d 顯示了一天的總連接統計,標志 p 顯示了每一個用戶的連接時間
。這種統計信息的方式對了解與探測入侵有關的用戶情況及其他活動很有幫助。
Last 和 who 是出于安全角度定期使用的最常用命令。
last 命令提供每一個用戶的登錄時間,退出登錄時間,登錄位置,重新引導系
統及運行級別變化的信息。last -10 表示 last 的最多輸出結果為最近的 10?
條信息。缺省時 last 將列出在 /var/log/wtmp 中記錄的每一連接和運行級別
的變化。從安全角度考慮,last 命令提供了迅速查看特定系統連接活動的一種
方式。觀察每天的輸出結果是個好習慣,從中可以捕獲異常輸入項。Last 命令
的 -x 選項可以通知系統運行級別的變化。
who 命令主要作用是報告目前正在登錄的用戶、登錄設備、遠程登錄主機名或使
用的 Xwindows 的 X 顯示值、會話閑置時間以及會話是否接受 write 或 talk?
信息。
例如: who -iwH 的輸出結果:
USER ? ? MESG ? ?LINE ? LOGIN-TIME ? ? ?IDLE ? ?FROM
Denny ? ? ?- ? ? tty1 ? Feb 18 08:42 ? ?old
這就表示用戶 Denny 不能接受 write 或 talk 信息,2月18日8:42 從 tty1 登
錄。該命令的安全值提供了用戶連接的大致情況,這也為監視可疑活動提供了條
件。 其他的有關命令有 lastlog 命令,該命令報告了有關 /var/log/lastlog?
中記錄的最后一次登錄的數據信息。
2) 進程記帳
進程記帳是對進程活動的記錄。原數據保存在 /var/log/pacct 文件中,其許可
權限為 600。該文件的存在是進程記帳有效的保障。與連接記帳不同,進程記帳
必須處于打開狀態,使用下面的命令設置打開狀態.
# ? ?accton ?/var/log/pacct
可以使用自選文件代替 /var/log/pacct,但必須記住這一文件并且設置適當的
許可權限。必須在每次引導的時候執行該命令,可以在 /etc/rc.d/rc.local 中
輸入以下腳本:
# ?initiate ?process account
if ?[ -x ?/sbin/accton ?]
then
/sbin/accton ? /var/log/pacct
echo ?"process ?accounting ?initiated"
fi
一旦在系統中配置進程記帳后,將使用 3 個命令解釋在 /var/log/pacct 中的
非用戶可讀的原數據。這些命令分別為 dump-acct,該命令與 dump-utmp 完全
相似,sa 命令用于統計系統進程記帳的大致情況,最后一個是 lastcomm 命令
列出了系統執行的命令。
1 sa 命令
與 ac 命令一樣,sa 是一個統計命令。該命令可以獲得每個用戶或每個命令的
進程使用的大致情況,并且提供了系統資源的消費信息。在很大程度上,sa 又
是一個記帳命令,對于識別特殊用戶,特別是已知特殊用戶使用的可疑命令十分
有用。另外,由于信息量很大,需要處理腳本或程序篩選這些信息。
可以用這樣的命令單獨限制用戶:
# ? ?sa -u |grep joe
joe ? ? 0.00 ? cpu ? bash
joe ? ? 0.00 ? cpu ? ls
joe ? ? 0.01 ? cpu ? ls
joe ? ? 0.01 ? cpu ? lastcomm
joe ? ? 0.01 ? cpu ? tcpdump
joe ? ? 0.01 ? cpu ? reboot
輸出結果從左到右依次為:用戶名、CPU 使用時間秒數、命令(最多為 16 個字
符)。
2 lastcomm 命令
與 sa 命令不同,lastcomm 命令提供每一個命令的輸出結果,同時打印出與執
行每個命令有關的時間印戳。就這一點而說,lastcomm 比 sa 更有安全性。
lastcomm 命令使用命令名,用戶名或終端名作為變量。該命令可以查詢進程記
帳數據庫。下面顯示 lastcomm joe 的輸出結果,每行表示命令的執行情況,從
左到右為:用戶、設備、使用的 cpu 時間秒數、執行命令的日期和時間。
# ? lastcomm joe
reboot ? ? joe ? ?ttyp1 ? ?0.01 ? ?secs ?Fri ?Feb 26 ?18:40
tcpdump ? joe ? ?ttyp1 ? ?0.01 ? ?secs ?Fri ?Feb 26 ?18:39
lastcomm ?joe ? ?ttyp1 ? ?0.01 ? ?secs ?Fri ?Feb 26 ?18:32
ls ? ? ? ?joe ? ?ttyp1 ? ?0.01 ? ?secs ? Fri ?Feb 26 ?18:30
ls ? ? ? ?joe ? ?ttyp1 ? ?0.00 ? ?secs ? Fri ?Feb 26 ?18:28
bash ? ? ?joe ? ?ttyp1 ? ?0.00 ? ?secs ? Fri ?Feb 26 ?18:25
如果系統被入侵,請不要相信在 lastlog、utmp、wtmp、pacct 中記錄的信息,
但也不要忽略,因為這些信息可能被修改過了。另外有可能有人替換了who程序
來掩人耳目。
通常,在已經識別某些可疑活動后,進程記帳可以有效的發揮作用。使用?
lastcomm 可以隔絕用戶活動或在特定時間執行命令。但是使用該命令必須設置
為打開狀態。
基本上,/var/log/pacct,/var/run/utmp, /var/log/pacct是動態數據庫文件。
其中/var/log/pacct和/var/log/wtmp文件隨著輸入項的增加和修改而增加。問
題在于這些文件處于動態增加狀態,因此到一定程度就會變的很大。
我們可以通過一個叫 logrotate 的程序來解決上面這個問題,該程序讀?
/etc/logrotate.conf 配置文件,該配置文件告訴 logrotate 所要讀?
/etc/logrotate.d 目錄中的文件。可以通過它來設定日志文件的循環時間。
2 系統日志
在 Linux 下使用各種日志文件,有些用于某些特殊用途,例
如:/var/log/xferlog 用于記錄文件傳輸協議 FTP 的信息。其他日志文件,例
如 /var/log/messages 文件通常包含許多系統和內核工具的輸入項。這些日志
文件為系統的安全狀態提供了信息。
我們主要講解兩個日志守護程序---syslog和klogd------并且簡要敘述了由
Linux操作系統生成的其他其他日志文件。目的是提供基本的配置情況。
2.1 syslog系統日志工具
大部分的 Linux 系統中都要使用 syslog 工具,它是相當靈活的,能使系統根
據不同的日志輸入項采取不同的活動。下面將詳細討論syslog 的工作機制以及
在配置文件 /etc/syslog.conf 中的配置,還將論述利用 syslog 靈活性和功能
性進行工作的各種方法。
1) 概述
非常簡單,syslog 工具由一個守護程序組成。它能接受訪問系統的日志信息并
且根據 /etc/syslog.conf 配置文件中的指令處理這些信息。程序,守護進程和
內核提供了訪問系統的日志信息。因此,任何希望生成日志信息的程序都可以向?
syslog 接口呼叫生成該信息。
通常,syslog 接受來自系統的各種功能的信息,每個信息都包括重要
級。/etc/syslog.conf 文件通知 syslogd 如何根據設備和信息重要級別來報告
信息。
2) etc/syslog.conf
/etc/syslog.conf 文件使用下面的形式
facility.level ? ?action
空白行和以#開頭的行可以忽略。Facility.level 字段也被稱做 seletor。應該
使用一次或多次 tab 鍵分隔 facility 和 action。大部分 Linux 使用這些空
格為分隔符。現在分析一下 /etc/syslog.conf 中的三個要素。
facility 指定 syslog 功能,主要包括以下這些:
auth ?由 pam_pwdb 報告的認證活動。
authpriv 包括特權信息如用戶名在內的認證活動
cron ?與 cron 和 at 有關的信息。
daemon 與 inetd 守護進程有關的信息。
kern ?內核信息,首先通過 klogd 傳遞。
lpr ? 與打印服務有關的信息。
mail ?與電子郵件有關的信息
mark ?syslog 內部功能用于生成時間戳
news ?來自新聞服務器的信息
syslog ?由 syslog 生成的信息
user ? 由用戶程序生成的信息
uucp ? 由 uucp 生成的信息
local0----local7 ? 與自定義程序使用,例如使用 local5 做為 ssh 功能
* ? 通配符代表除了 mark 以外的所有功能
與每個功能對應的優先級是按一定順序排列的,emerg 是最高級,其次是 alert
,依次類推。缺省時,在 /etc/syslog.conf 記錄中指定的級別為該級別和更高
級別。如果希望使用確定的級別可以使用兩個運算符號!(不等)和=。
user.=info
表示告知 syslog 接受所有在 info 級別上的 user 功能信息。
syslog 級別如下:
emerg 或 panic ? 該系統不可用
alert ? ? ? ? ? ?需要立即被修改的條件
crit ? ? ? ? ? ? 阻止某些工具或子系統功能實現的錯誤條件
err ? ? ? ? ? ? 阻止工具或某些子系統部分功能實現的錯誤條件
warning ? ? ? ? 預警信息
notice ? ? ? ? ? 具有重要性的普通條件
info ? ? ? ? ? ? 提供信息的消息
debug ? ? ? ? ? 不包含函數條件或問題的其他信息
none ? ? ? ? ? ?沒有重要級,通常用于排錯
* ? ? ? ? ? ? ? 所有級別,除了none
action字段所表示的活動具有許多靈活性,特別是,可以使用名稱管道的作用是
可以使 syslogd 生成后處理信息。
syslog 主要支持以下活動
file ? ? 指定文件的絕對路徑
terminal 或 print ? ?完全的串行或并行設備標志符
@host ? 遠程的日志服務器
username ?發送信息到使用 write 的指定用戶中
named pipe ?指定使用 mkfifo 命令來創建的 FIFO 文件的絕對路徑。
?
3) 調用 syslogd 守護程序
syslog 守護程序是由 /etc/rc.d/init.d/syslog 腳本在運行級2下被調用的,
缺省不使用選項。但有兩個選項 -r 和 -h 很有用。
如果將要使用一個日志服務器,必須調用 syslogd -r。缺省情況下 syslog 不
接受來自遠程系統的信息。當指定 -r 選項,syslogd 將會監聽從 514 端口上
進來的 UDP 包。
如果還希望日志服務器能傳送日志信息,可以使用 -h 標志。缺省時,syslogd?
將忽略使其從一個遠程系統傳送日志信息到另一個系統的/etc/syslog.conf 輸
入項。
4) klogd 守護進程
klogd 守護進程獲得并記錄 Linux 內核信息。通常,syslogd 會記錄 klogd 傳
來的所有信息,然而,如果調用帶有 -f filename 變量的 klogd 時,klogd 就
在 filename 中記錄所有信息,而不是傳給 syslogd。當指定另外一個文件進行
日志記錄時,klogd 就向該文件中寫入所有級別或優先權。Klogd 中沒有和?
/etc/syslog.conf 類似的配置文件。使用 klogd 而避免使用 syslogd 的好處
在于可以查找大量錯誤。如果有人入侵了內核,使用 klogd 可以修改錯誤。
5) 其他日志
在 /var/log 和不同版本的系統中以及自己配置的應用程序中都可以找到其他日
志文件。當然,/etc/syslog.conf 列出了由 syslogd 管理的所有日志文件名和
位置。其他日志由其他應用程序管理。例如在 Redhat6.2 中,apache server?
生成 /var/log/htmlaccess.log 文件記錄客戶訪問,生成?
/var/log/httpd/error.log 文件在 syslog 以外查找錯誤。
cron 工具維護的信息日志文件 /var/log/cron。當 Linuxconf 工具記錄系統重
新配置信息時,將生成日志文件如 /var/log/nerconf.log。samba 在?
/var/log/samba 中維護其日志信息。
另外由于 syslogd 在系統非常繁忙時,可能會丟失信息,所以,可以用 cyclog?
替換 syslog。
========
Linux下常用安全策略設置的六個方法
?? “安全第一”對于linux管理界乃至計算機也都是一個首要考慮的問題。加
密的安全性依賴于密碼本身而非算法!而且,此處說到的安全是指數據的完整性
,由此,數據的認證安全和完整性高于數據的私密安全,也就是說數據發送者的
不確定性以及數據的完整性得不到保證的話,數據的私密性當無從談起!
1. 禁止系統響應任何從外部/內部來的ping請求攻擊者一般首先通過ping命令檢
測此主機或者IP是否處于活動狀態 ,如果能夠ping通 某個主機或者IP,那么攻
擊者就認為此系統處于活動狀態,繼而進行攻擊或破壞。如果沒有人能ping通機
器并收到響應,那么就可以大大增強服務器的安全性,linux下可以執行如下設
置,禁止ping請求:
[root@localhost ~]#echo “1”>?
/proc/sys/net/ipv4/icmp_echo_ignore_all默認情況
下“icmp_echo_ignore_all”的值為“0”,表示響應ping操作。
可以加上面的一行命令到/etc/rc.d/rc.local文件中,以使每次系統重啟后
自動運行。
2.禁止Control-Alt-Delete組合鍵重啟系統
在linux的默認設置下,同時按下Control-Alt-Delete鍵,系統將自動重啟
,這是很不安全的,因此要禁止Control-Alt-Delete組合鍵重啟系統,只需修改
/etc/inittab文件:
代碼如下:
[root@localhost ~]#vi /etc/inittab
找到此行:ca::ctrlaltdel:/sbin/shutdown -t3 -r now在之前加上“#”
然后執行:
代碼如下:
[root@localhost ~]#telinit q
3.限制Shell記錄歷史命令大小
默認情況下,bash shell會在文件$HOME/.bash_history中存放多達1000條
命令記錄(根據系統不同,默認記錄條數不同)。系統中每個用戶的主目錄下都有
一個這樣的文件。
這么多的歷史命令記錄,肯定是不安全的,因此必須限制該文件的大小。
可以編輯/etc/profile文件,修改其中的選項如下:
HISTSIZE=30
表示在文件$HOME/.bash_history中記錄最近的30條歷史命令。如果
將“HISTSIZE”設置為0,則表示不記錄歷史命令,那么也就不能用鍵盤的上下
鍵查找歷史命令了。
4.刪除系統默認的不必要用戶和組
Linux提供了各種系統賬戶,在系統安裝完畢,如果不需要某些用戶或者組
,就要立即刪除它,因為賬戶越多,系統就越不安全,越容易受到攻擊。
刪除系統不必要的用戶用下面命令
代碼如下:
[root@localhost ~]# userdel username
刪除系統不必要的組用如下命令:
代碼如下:
[root@localhost ~]# groupdel groupname
Linux系統中可以刪除的默認用戶和組有:
刪除的用戶,如
adm,lp,sync,shutdown,halt,news,uucp,operator,games,gopher等。
刪除的組,如adm,lp,news,uucp,games,dip,pppusers,popusers,slipusers
等。
5. 關閉selinux
SELinux是 Security-Enhanced Linux的簡稱,是一種內核強制訪問控制安
全系統,目前SELinux已經集成到Linux 2.6內核的主線和大多數Linux發行版上
,由于SELinux與現有Linux應用程序和Linux內核模塊兼容性還存在一些問題,
因此建議初學者先關閉selinux,等到對linux有了深入的認識后,再對selinux
深入研究不遲!
查看linux系統selinux是否啟用,可以使用getenforce命令:
代碼如下:
[root@localhost ~]# getenforce
Disabled
關閉selinux,在redhat系列發行版中,可以直接修改如下文件:
代碼如下:
[root@localhost ~]#vi /etc/sysconfig/selinux# This file controls?
the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - SELinux is fully disabled.
SELINUX=enforcing
# SELINUXTYPE= type of policy in use. Possible values are:
# targeted - Only targeted network daemons are protected.
# strict - Full SELinux protection.
SELINUXTYPE=targeted
將SELINUX=enforcing修改為SELINUX=disabled, 重啟系統后將會停止
SElinux。
6.設定tcp_wrappers防火墻
Tcp_Wrappers是一個用來分析TCP/IP封包的軟件,類似的IP封包軟件還有
iptables,linux默認都安裝了此軟件,作為一個安全的系統,Linux本身有兩層
安全防火墻,通過IP過濾機制的iptables實現第一層防護,iptables防火墻通過
直觀地監視系統的運行狀況,阻擋網絡中的一些惡意攻擊,保護整個系統正常運
行,免遭攻擊和破壞。關于iptables的實現,將在下個章節詳細講述。如果通過
了第一層防護,那么下一層防護就是tcp_wrappers了,通過Tcp_Wrappers可以實
現對系統中提供的某些服務的開放與關閉、允許和禁止,從而更有效地保證系統
安全運行。
Tcp_Wrappers的使用很簡單,僅僅兩個配置文件:/etc/hosts.allow
和/etc/hosts.deny(1) 查看系統是否安裝了Tcp_Wrappers
[root@localhost ~]#rpm -q tcp_wrappers 或者[root@localhost ~]#rpm?
-qa | grep tcp
tcp_wrappers-7.6-37.2
tcpdump-3.8.2-10.RHEL4
如果有上面的類似輸出,表示系統已經安裝了tcp_wrappers模塊。如果沒有
顯示,可能是沒有安裝,可以從linux系統安裝盤找到對應RPM包進行安裝。
(2)tcp_wrappers防火墻的局限性
系統中的某個服務是否可以使用tcp_wrappers防火墻,取決于該服務是否應
用了libwrapped庫文件,如果應用了就可以使用tcp_wrappers防火墻,系統中默
認的一些服務如:sshd、portmap、sendmail、xinetd、vsftpd、tcpd等都可以
使用tcp_wrappers防火墻。
(3) tcp_wrappers設定的規則
tcp_wrappers防火墻的實現是通過/etc/hosts.allow和/etc/hosts.deny兩
個文件來完成的,首先看一下設定的格式:
service:host(s) [:action]
l service:代表服務名,例如sshd、vsftpd、sendmail等。
l host(s):主機名或者IP地址,可以有多個,例如192.168.60.0、
www.ixdba.netl action:動作, 符合條件后所采取的動作。
幾個關鍵字:
l ALL:所有服務或者所有IP。
l ALL EXCEPT:所有的服務或者所有IP除去指定的。
例如:ALL:ALL EXCEPT 192.168.60.132
表示除了192.168.60.132這臺機器,任何機器執行所有服務時或被允許或被
拒絕。
了解了設定語法后,下面就可以對服務進行訪問限定。
例如互聯網上一臺linux服務器,實現的目標是:僅僅允許222.90.66.4、
61.185.224.66以及域名softpark.com通過SSH服務遠程登錄到系統,設置如下:
首先設定允許登錄的計算機,即配置/etc/hosts.allow文件,設置很簡單,
只要修改/etc/hosts.allow(如果沒有此文件,請自行建立)這個文件即可。
只需將下面規則加入/etc/hosts.allow即可。
sshd: 222.90.66.4 61.185.224.66 softpark.com接著設置不允許登錄的機
器,也就是配置/etc/hosts.deny文件了。
一般情況下,linux會首先判斷/etc/hosts.allow這個文件,如果遠程登錄
的計算機滿足文件/etc/hosts.allow設定的話,就不會去使用/etc/hosts.deny
文件了,相反,如果不滿足hosts.allow文件設定的規則的話,就會去使用
hosts.deny文件了,如果滿足hosts.deny的規則,此主機就被限制為不可訪問
linux服務器,如果也不滿足hosts.deny的設定,此主機默認是可以訪問linux服
務器的,因此,當設定好/etc/hosts.allow文件訪問規則之后,只需設
置/etc/hosts.deny為“所有計算機都不能登錄狀態”即可。
sshd:ALL
這樣,一個簡單的tcp_wrappers防火墻就設置完畢了。
========
LINUX安全加固
Redhat是目前企業中用的最多的一類Linux,而目前針對Redhat攻擊的黑客也越
來越多了。我們要如何為這類服務器做好安全加固工作呢?
一. 賬戶安全
1.1 鎖定系統中多余的自建帳號檢查方法:
執行命令
#cat /etc/passwd
#cat /etc/shadow
查看賬戶、口令文件,與系統管理員確認不必要的賬號。對于一些保留的系
統偽帳戶如:bin, sys,adm,uucp,lp, nuucp,hpdb, www, daemon等可根據
需要鎖定登陸。
備份方法:
#cp -p /etc/passwd /etc/passwd_bak
#cp -p /etc/shadow /etc/shadow_bak
加固方法:
使用命令passwd -l <用戶名>鎖定不必要的賬號。
使用命令passwd -u <用戶名>解鎖需要恢復的賬號。
圖1
風險:
需要與管理員確認此項操作不會影響到業務系統的登錄
1.2設置系統口令策略
檢查方法:
使用命令
#cat /etc/login.defs|grep PASS查看密碼策略設置
備份方法:
cp -p /etc/login.defs /etc/login.defs_bak
加固方法:
#vi /etc/login.defs修改配置文件
PASS_MAX_DAYS 90 #新建用戶的密碼最長使用天數
PASS_MIN_DAYS 0 #新建用戶的密碼最短使用天數
PASS_WARN_AGE 7 #新建用戶的密碼到期提前提醒天數
PASS_MIN_LEN 9 #最小密碼長度9
圖2
風險:無可見風險
1.3禁用root之外的超級用戶
檢查方法:
#cat /etc/passwd 查看口令文件,口令文件格式如下:
login_name:password:user_ID:group_ID:comment:home_dir:
command
login_name:用戶名
password:加密后的用戶密碼
user_ID:用戶ID,(1 ~ 6000) 若用戶ID=0,則該用戶擁有超級用戶的權限
。查看此處是否有多個ID=0。
group_ID:用戶組ID
comment:用戶全名或其它注釋信息
home_dir:用戶根目錄
command:用戶登錄后的執行命令
備份方法:
#cp -p /etc/passwd /etc/passwd_bak
加固方法:
使用命令passwd -l <用戶名>鎖定不必要的超級賬戶。
使用命令passwd -u <用戶名>解鎖需要恢復的超級賬戶。
風險:需要與管理員確認此超級用戶的用途。
1.4 限制能夠su為root的用戶
檢查方法:
#cat /etc/pam.d/su,查看是否有auth required?
/lib/security/pam_wheel.so這樣的配置條目
備份方法:#cp -p /etc/pam.d /etc/pam.d_bak
加固方法:
#vi /etc/pam.d/su
在頭部添加:
auth required /lib/security/pam_wheel.so group=wheel
這樣,只有wheel組的用戶可以su到root
#usermod -G10 test 將test用戶加入到wheel組
圖3
風險:需要PAM包的支持;對pam文件的修改應仔細檢查,一旦出現錯誤會導
致無法登陸;和管理員確認哪些用戶需要su。
當系統驗證出現問題時,首先應當檢查/var/log/messages或
者/var/log/secure中的輸出信息,根據這些信息判斷用戶賬號的有效
性。如果是因為PAM驗證故障,而引起root也無法登錄,只能使用single?
user或者rescue模式進行排錯。
1.5 檢查shadow中空口令帳號
檢查方法:
#awk -F: '( == "") { print }' /etc/shadow
備份方法:cp -p /etc/shadow /etc/shadow_bak
加固方法:對空口令賬號進行鎖定,或要求增加密碼
圖4
風險:要確認空口令賬戶是否和應用關聯,增加密碼是否會引起應用無法連
接。
二、最小化服務
2.1 停止或禁用與承載業務無關的服務檢查方法:
#who –r或runlevel 查看當前init級別
#chkconfig --list 查看所有服務的狀態
備份方法:記錄需要關閉服務的名稱
加固方法:
#chkconfig --level <服務名> on|off|reset 設置服務在個init級別下開
機是否啟動
圖5
風險:某些應用需要特定服務,需要與管理員確認。
三、數據訪問控制
3.1 設置合理的初始文件權限檢查方法:
#cat /etc/profile 查看umask的值
備份方法:
#cp -p /etc/profile /etc/profile_bak
加固方法:
#vi /etc/profile
umask=027
風險:會修改新建文件的默認權限,如果該服務器是WEB應用,則此項謹慎
修改。
四、網絡訪問控制
4.1 使用SSH進行管理檢查方法:
#ps –aef | grep sshd 查看有無此服務
備份方法:
加固方法:
使用命令開啟ssh服務
#service sshd start
風險:改變管理員的使用習慣
4.2 設置訪問控制策略限制能夠管理本機的IP地址
檢查方法:
#cat /etc/ssh/sshd_config 查看有無AllowUsers的語句
備份方法:
#cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config_bak
加固方法:
#vi /etc/ssh/sshd_config,添加以下語句
AllowUsers *@10.138.*.* 此句意為:僅允許10.138.0.0/16網段所有用戶
通過ssh訪問
保存后重啟ssh服務
#service sshd restart
風險:需要和管理員確認能夠管理的IP段
4.3 禁止root用戶遠程登陸
檢查方法:
#cat /etc/ssh/sshd_config 查看PermitRootLogin是否為no
備份方法:
#cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config_bak
加固方法:
#vi /etc/ssh/sshd_config
PermitRootLogin no
保存后重啟ssh服務
service sshd restart
圖6
風險:root用戶無法直接遠程登錄,需要用普通賬號登陸后su
4.4 限定信任主機
檢查方法:
#cat /etc/hosts.equiv 查看其中的主機
#cat /$HOME/.rhosts 查看其中的主機
備份方法:
#cp -p /etc/hosts.equiv /etc/hosts.equiv_bak
#cp -p /$HOME/.rhosts /$HOME/.rhosts_bak
加固方法:
#vi /etc/hosts.equiv 刪除其中不必要的主機
#vi /$HOME/.rhosts 刪除其中不必要的主機
風險:在多機互備的環境中,需要保留其他主機的IP可信任。
4.5 屏蔽登錄banner信息
檢查方法:
#cat /etc/ssh/sshd_config 查看文件中是否存在Banner字段,或banner字
段為NONE
#cat /etc/motd 查看文件內容,該處內容將作為banner信息顯示給登錄用
戶。
備份方法:
#cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config_bak
#cp -p /etc/motd /etc/motd_bak
加固方法:
#vi /etc/ssh/sshd_config
banner NONE
#vi /etc/motd
刪除全部內容或更新成自己想要添加的內容
風險:無可見風險
4.6 防止誤使用Ctrl+Alt+Del重啟系統
檢查方法:
#cat /etc/inittab|grep ctrlaltdel 查看輸入行是否被注釋
備份方法:
#cp -p /etc/inittab /etc/inittab_bak
加固方法:
#vi /etc/inittab
在行開頭添加注釋符號“#”
#ca::ctrlaltdel:/sbin/shutdown -t3 -r now
圖7
風險:無可見風險
五、用戶鑒別
5.1 設置帳戶鎖定登錄失敗鎖定次數、鎖定時間檢查方法:
#cat /etc/pam.d/system-auth 查看有無auth required pam_tally.so條目
的設置
備份方法:
#cp -p /etc/pam.d/system-auth /etc/pam.d/system-auth_bak
加固方法:
#vi /etc/pam.d/system-auth
auth required pam_tally.so onerr=fail deny=6 unlock_time=300 設置
為密碼連續錯誤6次鎖定,鎖定時間300秒
解鎖用戶 faillog -u <用戶名> -r
風險:需要PAM包的支持;對pam文件的修改應仔細檢查,一旦出現錯誤會導
致無法登陸;
當系統驗證出現問題時,首先應當檢查/var/log/messages或
者/var/log/secure中的輸出信息,根據這些信息判斷用戶賬號的有效
性。
5.2 修改帳戶TMOUT值,設置自動注銷時間
檢查方法:
#cat /etc/profile 查看有無TMOUT的設置
備份方法:
#cp -p /etc/profile /etc/profile_bak
加固方法:
#vi /etc/profile
增加
TMOUT=600 無操作600秒后自動退出
風險:無可見風險
5.3 Grub/Lilo密碼
檢查方法:
#cat /etc/grub.conf|grep password 查看grub是否設置密碼
#cat /etc/lilo.conf|grep password 查看lilo是否設置密碼
備份方法:
#cp -p /etc/grub.conf /etc/grub.conf_bak
#cp -p /etc/lilo.conf /etc/lilo.conf_bak
加固方法:為grub或lilo設置密碼
風險:etc/grub.conf通常會鏈接到/boot/grub/grub.conf
5.4 限制FTP登錄
檢查方法:
#cat /etc/ftpusers 確認是否包含用戶名,這些用戶名不允許登錄FTP服務
備份方法:
#cp -p /etc/ftpusers /etc/ftpusers_bak
加固方法:
#vi /etc/ftpusers 添加行,每行包含一個用戶名,添加的用戶將被禁止登
錄FTP服務
風險:無可見風險
5.5 設置Bash保留歷史命令的條數
檢查方法:
#cat /etc/profile|grep HISTSIZE=
#cat /etc/profile|grep HISTFILESIZE= 查看保留歷史命令的條數
備份方法:
#cp -p /etc/profile /etc/profile_bak
加固方法:
#vi /etc/profile
修改HISTSIZE=5和HISTFILESIZE=5即保留最新執行的5條命令
圖8
風險:無可見風險
六、審計策略
6.1 配置系統日志策略配置文件檢查方法:
#ps –aef | grep syslog 確認syslog是否啟用
#cat /etc/syslog.conf 查看syslogd的配置,并確認日志文件是否存在
系統日志(默認)/var/log/messages
cron日志(默認)/var/log/cron
安全日志(默認)/var/log/secure
備份方法:
#cp -p /etc/syslog.conf
圖9
6.2 為審計產生的數據分配合理的存儲空間和存儲時間
檢查方法:
#cat /etc/logrotate.conf 查看系統輪詢配置,有無
# rotate log files weekly
weekly
# keep 4 weeks worth of backlogs
rotate 4 的配置
備份方法:
#cp -p /etc/logrotate.conf /etc/logrotate.conf_bak
加固方法:
#vi /etc/logrotate.d/syslog
增加
rotate 4 日志文件保存個數為4,當第5個產生后,刪除最早的日志
size 100k 每個日志的大小
加固后應類似如下內容:
/var/log/syslog/*_log {
missingok
notifempty
size 100k # log files will be rotated when they grow bigger that?
100k.
rotate 5 # will keep the logs for 5 weeks.
compress # log files will be compressed.
sharedscripts
postrotate
/etc/init.d/syslog condrestart >/dev/null 2>1 || true
endscript
}
========
總結
以上是生活随笔為你收集整理的Linux安全学习总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux 3D 编程学习总结
- 下一篇: Linux块设备驱动总结