加固系統,從埠做起

火星人 @ 2014-03-09 , reply:0
←手機掃碼閱讀

每多開放一個埠就多一份危險,這是肯定的.所以在系統里,一切不必要的埠都得關閉!

查看埠使用情況
# 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
---------------------------------------------------------------------------------------------

那麼就從最小的開始吧~
80是我開的,不理它

111呢,不了解~ 好,那就打開/etc/services看下~
sunrpc rpcbind 111/tcp portmapper rpcbind # RPC 4.0 portmapper TCP
sunrpc 111/udp portmapper rpcbind # RPC 4.0 portmapper UDP
第一列是服務名,第二列是埠號和協議類型,第三列是別名,第四列,也是就一列是註釋來的~

到了這裡,我假定你和我一樣不懂英文.那麼我們可以求助,但不是跑到門外大叫一場~
通過google得知,這個埠是RPC(Remote Procedure Call)服務開放的.像我這樣用電腦,都是不會或極少(少到什麼程序?可能到下次重裝系統還是沒用到兩次)用到的,那不好意思,我得把你給關了~



通過services文件里的內容,我得到了三個關鍵字:portmapper,rpcbind,RPC
那就到services里找找看~
只找到了個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服務打開的,禁了就行~
---------------------------------------------------------------------------------------------
3306是mysql的埠,跳過~

33936埠無法在/etc/services中查不到任何信息,那麼這個埠就有可能是隨機產生的了~
那就看下這個埠是由什麼進程使用的,還有就是進程的其它信息,然後順藤摸瓜,找到「犯人」,達到我們的目的

#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
......

得到的信息太少了,得換一個工具才行~

# 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)
......

通過"lsof -i"命令,又了解到了這個進程是由rpcuser用戶啟動的~

那好,我們現在得去看下"rpcuser"這個用戶的信息了~
#vim /etc/passwd
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin

這就可以肯定它與nfs有關係,那我也不會用到,那就把nfs相關的服務都關了吧~(不知道哪些是?google!! )
通過多次的試驗,這個是nfslock使用的埠,並且是動態的,也驗證了前面的猜想~

小結:
關閉一個使用固定埠的服務,我們可以通過/etc/services(在win下也有services:X:windowssystem32dirversetcservices)查找相關的信息,然後直接關閉服務就行了~

而對於一個使用動態埠的服務,在不了解服務的情況下,我們最先得知的是埠,然後通過了解這個埠是由哪個進程打開的,進一步了解進程的信息,包括進程名,由哪個用戶啟動的等等,然後順著這些信息去確定這是一個什麼服務.一但確定下來,我們的目的也就達到了~





[火星人 via ] 加固系統,從埠做起已經有178次圍觀

http://www.coctec.com/docs/linux/show-post-55154.html