網路上的絕對安全,我想每個有上網的人應該都知道是不可能的,但是要怎樣可以取得一個相對安全的環境,就是大家所努力的目標,先不論您用什麼防毒軟體、防火牆、掃廣告或木馬軟體等,您還是可以針對自己電腦上網時的安全,做個小小的測試
(筆者先聲明,限對自己的電腦檢測,不然會被視為入侵他人電腦的駭客)
首先,大家要先瞭解一下,網路上所有的服務都會經過一個稱為Port的通道來傳送,例:80是http、21是ftp...等,基本上除了常用的一些Port號之外(網路上大家共同使用的Port),其它的Port就是隨機開啟的通道,目前認可的Port數共有66536個(0~65535)
有了這個概念之後,其實再怎麼強的駭客程式也是要經由這個通道來進出,所以如果您能夠把這些port管理的很好的話,就可以大大的減少被駭的可能性
只是有一點比較麻煩的事,那就是這些Port號,經常都是會有共用的,例如:80是http預設使用的Port,但是像有些IM軟體(Msn、Skype...等)當它們原先的port號無法跟外界溝通時,一樣會經由80這個Port號與外界連上線,所以這只是一個小小的防護及檢測手段
下面筆者介紹一下在不同系統平台查看Ports的方法
Windows
指令:netstat[-a] [-e] [-n] [-s] [-p protocol] [-r] [interval]
C:...>netstat -a (可查看所有與電腦的連線狀態,不過太繁雜了)
C:...>netstat -p tcp/udp (可查看與電腦的tcp/udp的連線狀態,常用)
-------------------------------
Proto Local Address Foreign Address State
(服務) (本機) (遠端) (連線狀態)
TCP xx-pc:1476 nz-in-f191.google.com:http Established
其中比較難瞭解的部份應該是State那一欄,它是指TCP的狀態
Established:代表連線已建立
Listening:代表這個Port號正再等待連線(Server端常見)
Time_Wait:代表連線已逾時
如果真的還想知道更多的話,可以利用netstat/?的方式來查詢其它用法
那如果想要知道別人電腦開了什麼Port的話呢?(就是筆者所說的危險)
在Windows系統中,筆者沒有找到什麼指令可以掃描遠端的Port,不過在網路上這樣子的相關軟體到是挺多的,就拿很多人愛用的NetView(NetBrute Scanner)來說,您可以從官網的下載點(1.0.0.9版)取得這個小程式
筆者裡不做詳細的說明,它本身就包含NetBrute、PortScan和WebBrute三種模式可應用,它原本的用意是用來檢測自己的電腦,但是常被人拿來做為刺探它人所用,所以如果濫用的話,後果就要自行負責了,其中的PortScan就可以針對遠端進行Port的掃描
Linux
指令:netstat(本機端)、nmap(遠端)
netstat的用法與Windows下雷同,只是有些參數部份不一樣
常用的 option:
-t:針對TCP服務
-l:針對在listening的Port,指Server端服務居多
-u:針對UDP服務
-n:電腦名稱的部份改以數字代表,例:Localhost --> 127.0.0.1
-p:針對那些相對的應用程式
其它更多的用法可以用man netstat來查詢
nmap的用法很簡單,其實它原本預設的功能已經很強大了
例:nmap localhost(查詢自己所有開放的port,結果與netstat類似)
nmap IP(查詢某特定IP開放的port)
nmap 192.168.1.0(查詢192.168.1.0~192.168.1.254開放的port)
nmap 192.168.0-10(查詢192.168.1.0~192.168.1.10開放的port)
nmap -sT/-sU IP(查詢某特定IP開放有關TCP/UDP的port)
其它更多的用法可以用man nmap來查詢(man就是所謂的說明文件)
不過因為nmap這個指令太過強大,筆者極度建議只針對本機端使用,除非你是網路管理者,不然很有可能因為這指令的強大惹上麻煩
文中的NetBrute軟體,也許也是利用相關的指令方式來測試遠端電腦
不過還是有些是傳統的使用者會利用ping的方式來查詢,不過現在絕大數的防火牆軟硬體都不會回應ping這個指令了,所以這跟上面的使用方法是不一樣的喔!
不過,不要以為開了Port就一定是不好的喔!因為重點是在你開啟這個Port的應用軟體,而不是這個Port有問題,因為筆者一開始就說過了,它只是一個通道呀!
你在高速公路上逛大街,危險的是「高速公路」,還是在上頭的「車」呢?
你好~
回覆刪除我想請教你一下
關於這篇文章linux的部分
我剛剛試了一下指令
nmap 127.0.0.1
雖然有列出我有開的服務
但是像ssh我改過port
他就沒有列出來
他是不是只針對一些預設的port去做測試呢?
例如http就測試80
而不是從1~65536去做掃描
P.S 我是你的忠實讀者唷!不過是第一次留言^^
To 生蛋:
回覆刪除首先,很高興你浮出水面了,多謝你的賞光,有問題大家說不定可以教學相長。
關於你所提的這個問題,我也親自嘗試了一下你可能會遇到的問題,以下是我的猜測狀況。
你更改的ssh port應該是非tcp的port,所以用nmap來掃描時,不會看見它的存在,因為nmap預設狀況只會掃描tcp協定的port(你可以從/etc/services中查閱有那些port是由tcp協定採用,從訊息中你就可以看見它掃描了1678個port)
所以你開修改ssh port時,剛好不是其中一個時,它就不會顯示出來。
如果要硬掃出來時,就可以利用指定掃描port號的方式來進行掃描,例:
「nmap -p 0-65535 127.0.0.1」
我的測試過程如下,分享給你參考(OS:CentOS 5)
#netstat -tlnp | grep sshd
tcp 0 0 :::10011 :::* LISTEN 2053/sshd
↑↑
這邊可以看見我修改sshd port
[root@centos etc]# nmap 127.0.0.1
Interesting ports on centos.home (127.0.0.1):
Not shown: 1678 closed ports
PORT STATE SERVICE
21/tcp open ftp
25/tcp open smtp
Nmap finished: 1 IP address (1 host up) scanned in 0.315 seconds
↑↑
用nmap預設的方式掃描,而且可以看見它一共會掃1680個port(services中tcp的協定),其中只有這兩個開啟
[root@centos etc]# nmap -p 0-65535 127.0.0.1
Interesting ports on centos.home (127.0.0.1):
Not shown: 65533 closed ports
PORT STATE SERVICE
21/tcp open ftp
25/tcp open smtp
10011/tcp open unknown
↑↑
修改掃描範圍,一樣可以找出你所修改的ssh port。
以上,希望可以解決你的疑惑,這個回文有點長,感覺好像可以再寫一篇了...
多謝你的留言,當然也歡迎你的多多造訪,只要我的時間允許,我都會盡力回覆大家的問題。
(重點是希望我的留言機制不會造成讀者的困擾,因為最近來留言加LINK的SPAM愈來愈多了,還請見諒。)
原來是他有個預設的條件在進行掃描阿~
回覆刪除那我知道原因了
謝謝
留言機制不錯阿
因為就連wordpress有裝圖形驗證的外掛
還是有垃圾留言
不過審核過後若有信件通知
基本上對讀者來說都不會有太大困擾
To 生蛋:
回覆刪除能夠解決你的疑問,我想對我來說就是最重要的一件事,至於留言機制的部分,如果每個讀者登能夠接受的話就好了。
畢竟,我這麼做還是會讓人覺得我是否會"私自"把留言給刪除的疑慮,所以我當初在使用前也是經過一番掙扎的。
多謝你的支持跟打氣,我會繼續寫下去的。