安全策略:加固系統(tǒng),從端口做起

字號(hào):

每多開(kāi)放一個(gè)端口就多一份危險(xiǎn),這是肯定的。所以在系統(tǒng)里,一切不必要的端口都得關(guān)閉!
    查看端口使用情況
    # netstat -ant
    Active Internet connections (servers and established)
    Proto Recv-Q Send-Q Local Address Foreign Address State
    tcp 0 0 0.0.0.0:33936 0.0.0.0:* LISTEN
    tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN
    tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN
    tcp 0 0 10.0.0.22:33831 207.46.107.42:1863 ESTABLISHED
    tcp 0 0 10.0.0.22:43127 219.133.60.250:80 ESTABLISHED
    tcp 0 0 10.0.0.22:42904 58.60.14.191:8000 ESTABLISHED
    tcp 0 0 :::111 :::* LISTEN
    tcp 0 0 :::80 :::* LISTEN
    那么就從最小的開(kāi)始吧~
    80是我開(kāi)的,不理它
    111呢,不了解~ 好,那就打開(kāi)/etc/services看下~
    sunrpc rpcbind 111/tcp portmapper rpcbind # RPC 4.0 portmapper TCP
    sunrpc 111/udp portmapper rpcbind # RPC 4.0 portmapper UDP
    第一列是服務(wù)名,第二列是端口號(hào)和協(xié)議類(lèi)型,第三列是別名,第四列,也是就最后一列是注釋來(lái)的~
    到了這里,我假定你和我一樣不懂英文。那么我們可以求助,但不是跑到門(mén)外大叫一場(chǎng)~
    通過(guò)google得知,這個(gè)端口是RPC(Remote Procedure Call)服務(wù)開(kāi)放的。像我這樣用電腦,都是不會(huì)或極少(少到什么程序?可能到下次重裝系統(tǒng)還是沒(méi)用到兩次)用到的,那不好意思,我得把你給關(guān)了~
    通過(guò)services文件里的內(nèi)容,我得到了三個(gè)關(guān)鍵字:portmapper,rpcbind,RPC
    那就到services里找找看~
    只找到了個(gè)rpcbind,先停了看看情況~
    # netstat -ant
    Active Internet connections (servers and established)
    Proto Recv-Q Send-Q Local Address Foreign Address State
    tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN
    tcp 0 0 0.0.0.0:33936 0.0.0.0:* LISTEN
    tcp 0 0 10.0.0.22:33831 207.46.107.42:1863 ESTABLISHED
    tcp 0 0 10.0.0.22:43127 219.133.60.250:80 ESTABLISHED
    tcp 0 0 10.0.0.22:42904 58.60.14.191:8000 ESTABLISHED
    tcp 0 0 :::80 :::* LISTEN
    OK,確定111端口是由rpcbind服務(wù)打開(kāi)的,禁了就行~
    3306是mysql的端口,跳過(guò)~
    33936端口無(wú)法在/etc/services中查不到任何信息,那么這個(gè)端口就有可能是隨機(jī)產(chǎn)生的了~
    那就看下這個(gè)端口是由什么進(jìn)程使用的,還有就是進(jìn)程的其它信息,然后順藤摸瓜,找到“犯人”,達(dá)到我們的目的
    #netstat -antp
    Active Internet connections (servers and established)
    Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
    tcp 0 0 0.0.0.0:33936 0.0.0.0:* LISTEN 1829/rpc.statd
    ......
    得到的信息太少了,得換一個(gè)工具才行~
    # lsof -i
    COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
    rpc.statd 1829 rpcuser 6u IPv4 7003 0t0 UDP *:733
    rpc.statd 1829 rpcuser 8u IPv4 7010 0t0 UDP *:58417
    rpc.statd 1829 rpcuser 9u IPv4 7013 0t0 TCP *:33936 (LISTEN)
    ......
    通過(guò)"lsof -i"命令,又了解到了這個(gè)進(jìn)程是由rpcuser用戶啟動(dòng)的~
    那好,我們現(xiàn)在得去看下"rpcuser"這個(gè)用戶的信息了~
    #vim /etc/passwd
    rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
    這就可以肯定它與nfs有關(guān)系,那我也不會(huì)用到,那就把nfs相關(guān)的服務(wù)都關(guān)了吧~(不知道哪些是?google!! )
    通過(guò)多次的試驗(yàn),這個(gè)是nfslock使用的端口,并且是動(dòng)態(tài)的,也驗(yàn)證了前面的猜想~
    小結(jié):
    關(guān)閉一個(gè)使用固定端口的服務(wù),我們可以通過(guò)/etc/services(在win下也有services:X:\windows\system32\dirvers\etc\services)查找相關(guān)的信息,然后直接關(guān)閉服務(wù)就行了~
    而對(duì)于一個(gè)使用動(dòng)態(tài)端口的服務(wù),在不了解服務(wù)的情況下,我們最先得知的是端口,然后通過(guò)了解這個(gè)端口是由哪個(gè)進(jìn)程打開(kāi)的,進(jìn)一步了解進(jìn)程的信息,包括進(jìn)程名,由哪個(gè)用戶啟動(dòng)的等等,然后順著這些信息去確定這是一個(gè)什么服務(wù)。一但確定下來(lái),我們的目的也就達(dá)到了~