鸟哥的Linux私房菜(服务器)- 主机基本安全之一:限制 Linux 对外连线的端口
本文已不再維護,更新文章請參考這裡
為什麼我們的主機會回應網路上面的一些要求封包呢?例如我們設定了一部 WWW 主機後,當有來自 Internet 的 WWW 要求時,我們的主機就會予以回應,這是因為我們的主機有啟用了 WWW 的監聽埠口 (port) 啊!這裡就要特別留意了,當我們啟用了一個 daemon 時,就可能會造成主機的 Port 在進行 Listen 的動作,此時該 daemon 就是已經對網路上面提供服務了!萬一這個 daemon 有漏洞,因為他提供 Internet 的服務,所以就容易被 Internet 上面的 cracker 所入侵了!所以說,仔細的檢查自己系統上面的 port 到底開了多少個,並且予以嚴格的管理, 才能夠降低被入侵的可能性啊! |
1.1 什麼是 port ?
1.2 觀察 port: netstat, nmap
2. port 的啟動與關閉
2.1 stand alone 與 super daemon
2.2 設定開機時啟動服務
2.3 安全性的考量
3. 課後練習
4. 針對本文的建議:http://phorum.vbird.org/viewtopic.php?p=112964
Linux 的埠口 (port)
什麼是 port
其實也不怎麼難啦!在網路基礎裡面我們曾經介紹過很多的網路概念, 所以你會知道要達成一條 server/client 的連線,需要一組 Socket pair 來建立連線, 這也就是說,網路連線是『雙向』的。 此外,既然我們想要連線到主機端,那麼主機勢必得要啟動一個大家都知道的 port 在『監聽』吧, 否則如何達成連線呢?您說是吧!另外, client 端是否要啟用固定的 port 來連線? 當然不需要啊~那共有多少 port 呢?底下我們就先來談一談。
- 主機端的監聽 (Listen):
想一想,你要如何連上 Yahoo 的網站去看新聞?首先當然是要打開瀏覽器,然後輸入 Yahoo 的網址,之後我們的瀏覽器就會連接到 Yahoo 的 WWW 網站去要求資料了。既然如此的話,那麼那部 Yahoo 的 WWW 主機當然就得要啟動 WWW 的服務啦, 然後我們的瀏覽器才能夠連接到該服務。這也就是說『主機所啟用的 port 其實是由某些網路服務 (program) 所啟動的』。而為了連接上的方便,因此很多服務所開啟的 port 是固定的,例如 WWW 開啟在 port 80 ,mail 開啟在 port 25 等等; - 用戶端的 port:
用戶端啟動的 port 是隨機產生的, 主要是開啟在大於 1024 以上的埠口,這個 port 也是由某些軟體所產生的,例如上面提到的例子, 我們的瀏覽器想要連接到 Yahoo 的 WWW 主機,那麼瀏覽器就得要啟用一個 port 來與主機進行連線, 以組成一組 Socket pair 來傳輸資料嘛!
所謂的『監聽』是某個服務程式會一直常駐在記憶體當中,所以該程式啟動的 port 就會一直存在。 至於 port 在傳輸過程中的判斷,那就由 TCP/UDP 等通訊協定的表頭資料來記錄的啊, 我們的主機透過分析 TCP/UDP 的表頭資料就能夠瞭解到該連線所需要連接的軟體是那個, 而給予正確的資料回應。所以,一部主機上面當然可以同時啟動很多不同的服務啊! ^_^。
還有上面提到的一些重點你也得再瞭解一下,那就是:
- 共 65536 個 port:
預設的情況下,我們的主機會有 65536 個 port,而這些 port 又分成兩個部分,以 port 1024 作區隔: - 只有 root 才能啟動的保留的 port:
在小於 1023 (連同 1023) 的埠口,都是需要以 root 的身份才能啟動的, 這些 port 主要是用於一些常見的通訊服務,在 Linux 系統下,常見的協定與 port 的對應是記錄在 /etc/services 裡面的。 一般來說,這些 port 最好保留給一些預設的服務來使用,不要自己隨意使用到這些 port, 因為這些 port 是目前 Internet 上面所慣用的,所以一些程式開發者在進行軟體的開發時, 就能夠針對這些 well know 的埠口直接來開發,大家也比較容易使用伺服器的功能啊! - 大於 1024 用於 client 端的 port:
在大於 1024 以上的 port 主要是作為 client 端的軟體啟動的 port 。這些 port 幾乎都是依序隨機使用的, 例如前面談到的瀏覽器,就是使用大於 1024 以上的 port。那如果用到 port 65535 後, 系統會主動再由前面沒有使用到的埠口 (如 1024) 再重新依序使用。 - 是否需要三向交握:
建立可靠的連線服務需要使用到 TCP 協定,也就需要所謂的 三向交握了, 如果是非可靠的連線服務,例如 DNS ,那只要使用 UDP 協定即可。 - 通訊協定啟用在非正規的 port:
我們知道瀏覽器預設會連接到 WWW 主機的 port 80,那麼你的 WWW 是否可以啟動在非 80 的其他埠口? 當然可以啊!你可以透過 WWW 軟體的設定功能將該軟體使用的 port 啟動在非正規的埠口, 只是如此一來,您的用戶端要連接到你的主機時,就得要在瀏覽器的地方額外指定你所啟用的非正規的埠口才行。 這個啟動在非正規的埠口功能,常常被用在一些所謂的地下網站啦!^_^。另外, 某些軟體預設就啟動在大於 1024 以上的埠口,如 MySQL 資料庫軟體就啟動在 3306。 - 所謂的 port 的安全性:
事實上,沒有所謂的 port 的安全性!因為『Port 的啟用是由服務軟體所造成的』, 也就是說,真正影響網路安全的並不是 port ,而是啟動 port 的那個軟體 (程式)! 或許你偶而會聽到:『沒有修補過漏洞的 bind 8.x 版,很容易被黑客所入侵,請盡快升級到 bind 9.x 以後版本』,所以囉,對安全真正有危害的是『某些不安全的服務』 而不是『開了哪些 port 』才是!因此,沒有必要的服務就將他關閉吧! 尤其某些網路服務還會啟動一些 port 哩!另外,那些已啟動的軟體也需要持續的保持更新喔!
觀察 port
- netstat:在本機上面以自己的程式監測自己的 port;
- nmap:透過網路的偵測軟體輔助,可偵測非本機上的其他網路主機,但有違法之虞。
見他的大頭王!怎麼使用 nmap 會違法?呵呵!由於 nmap 的功能太強大了,所以很多 cracker (怪客,網路上面的閒人) 會直接以他來偵測別人的主機,這個時候就可能造成違法啦! 只要您使用 nmap 的時候不要去偵測別人的電腦主機,那麼就不會有問題啦! 底下我們分別來說一說這兩個寶貝吧!
- netstat
在做為主機的 Linux 系統中,開啟的網路服務越少越好! 因為較少的服務可以較容易除錯 (debug) 與瞭解安全漏洞,並可避免不必要的入侵管道! 所以,這個時候請瞭解一下您的系統當中有沒有哪些服務被開啟了呢? 要瞭解自己的系統當中的服務項目,最簡便的方法就是使用 netstat 了!這個東西不但簡單 (每一部 Linux 機器當中預設都會安裝的程式喔!) ,而且功能也是很不錯的。 這個指令的使用方法在 Linux 常用網路功能指令介紹當中提過了, 底下我們僅提供如何使用這個工具的方法囉!
列出在監聽的網路服務:
列出網路服務的方式簡單,如下所示:[root@linux ~]# netstat -tunl Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN tcp 0 0 :::80 :::* LISTEN tcp 0 0 :::22 :::* LISTEN tcp 0 0 :::25 :::* LISTEN
上面說明了我的主機有啟動 port 25, 80, 22 等,而且觀察各連線介面,可發現這三個 port 都有對外提供連線的能力喔!
列出已連線的網路連線狀態:
如果僅是要列出網路介面上已經連線的或者是一些連線過程掛斷、連接程序的網路狀態, 可以使用如下的方式來處理:[root@linux ~]# netstat -tun Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 192.168.10.100:25 192.168.10.5:3151 TIME_WAIT tcp 0 0 192.168.10.100:22 192.168.10.150:1832 ESTABLISHED
從上面的資料來看,我的主機 (192.168.10.100) 目前僅有一條已建立的連線, 那就是與 192.168.10.150 那部主機連接的連線,並且連線方線是由對方連接到我主機的 port 22 來取用我主機的服務吶!至於那個 TIME_WAIT 則是在等待該連線掛斷啦!
刪除已建立或在監聽當中的連線:
如果想要將已經建立,或者是正在監聽當中的網路服務關閉的話,最簡單的方法當然就是找出該連線的 PID, 然後將他 kill 掉即可啊!例如下面的範例:[root@linux ~]# netstat -tunp Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/P name tcp 0 68 192.168.10.100:22 192.168.10.150:1832 ESTABLISHED 13247/sshd
如上面的範例,我們可以找出來該連線是由 sshd 這個程式來啟用的,並且他的 PID 是 13247, 希望你不要心急的用 killall 這個指令,否則容易刪錯人 (因為你的主機裡面可能會有多個 sshd 存在), 應該要使用 kill 這個指令才對喔!
[root@linux ~]# kill -9 13247
- nmap
如果你要偵測的設備並沒有自己的作業系統,舉例來說,你想要瞭解一下公司的網路印表機是否有開放某些協定時, 那該如何處理啊?現在你知道 netstat 可以用來查閱本機上面的許多監聽中的通訊協定, 那例如網路印表機這樣的非本機的設備,要如何查詢啊?呵呵!用 nmap 就對了!
nmap 的套件說明之名稱為:『Network exploration tool and security scanner』,顧名思義, 這個東西是被系統管理員用來管理系統安全性查核的工具!他的具體描述當中也提到了, nmap 可以經由程式內部自行定義的幾個 port 對應的指紋資料,來查出該 port 的服務為何,所以我們也可以藉此瞭解我們主機的 port 到底是幹嘛用的!如果您是安裝 Linux 是 Red Hat 系統的話,那麼這個 nmap 套件應該已經安裝妥當了,萬一沒有這個套件的話,也可以來到底下的網站下載:
- http://insecure.org/nmap/
[root@linux ~]# nmap [掃瞄類型] [掃瞄參數] [hosts 位址與範圍] 參數: [掃瞄類型]:主要的掃瞄類型有底下幾種:-sT:掃瞄 TCP 封包已建立的連線 connect() !-sS:掃瞄 TCP 封包帶有 SYN 標籤的資料-sP:以 ping 的方式進行掃瞄-sU:以 UDP 的封包格式進行掃瞄-sO:以 IP 的協定 ( protocol ) 進行主機的掃瞄 [掃瞄參數]:主要的掃瞄參數有幾種:-PT:使用 TCP 裡頭的 ping 的方式來進行掃瞄,可以獲知目前有幾部電腦存活(較常用)-PI:使用實際的 ping (帶有 ICMP 封包的) 來進行掃瞄-p :這個是 port range ,例如 1024-, 80-1023, 30000-60000 等等的使用方式 [Hosts 位址與範圍]:這個有趣多了,有幾種類似的類型192.168.0.100 :直接寫入 HOST IP 而已,僅檢查一部;192.168.0.0/24 :為 C Class 的型態,192.168.*.* :嘿嘿!則變為 B Class 的型態了!掃瞄的範圍變廣了!192.168.0.0-50,60-100,103,200 :這種是變形的主機範圍啦!很好用吧!範例一:使用預設參數掃瞄本機所啟用的 port [root@linux ~]# nmap localhost PORT STATE SERVICE 22/tcp open ssh 25/tcp open smtp 80/tcp open http 139/tcp open netbios-ssn # 在預設的情況下, nmap 僅會掃瞄 TCP 的協定喔!
nmap 的用法很簡單吶!就直接在指令後面接上 IP 或者是主機名稱即可。不過,在預設的情況下 nmap 僅會幫你分析 TCP 這個通訊協定而已,像上面這個例子,他只會幫我列出 4 個已經開啟的 TCP 的埠口號碼, 但優點是順道也將開啟該埠口的服務也列出來了,真是好! ^_^!那如果想要同時分析 TCP/UDP 這兩個常見的通訊協定呢?可以這樣做:
[root@linux ~]# nmap -sTU localhost PORT STATE SERVICE 22/tcp open ssh 25/tcp open smtp 80/tcp open http 137/udp open|filtered netbios-ns 138/udp open|filtered netbios-dgm 139/tcp open netbios-ssn
嘿嘿!與前面的範例比較一下,你會發現這次多了兩個 UDP 的埠口,分別是 137 與 138 , 這樣分析好多了吧!然後,如果你想要瞭解一下到底有幾部主機活在你的網路當中時, 則可以這樣做:
[root@linux ~]# nmap -sP 192.168.10.0/24 Host 192.168.10.171 appears to be up. MAC Address: 00:01:E6:B3:AA:CC (Hewlett-Packard Company) Host 192.168.10.174 appears to be up. MAC Address: 00:04:75:FF:CC:DD (3 Com) Host 192.168.10.175 appears to be up. MAC Address: 00:0C:6E:BA:11:22 (Asustek Computer)
看到否?你的環境當中有三部主機活著吶!並且該 IP 所對應的 MAC 也會被記錄下來, 很不錯吧!如果你還想要將各個主機的啟動的 port 作一番偵測的話,那就得要使用:
[root@linux ~]# nmap 192.168.10.0/24
之後你就會看到一堆 port number 被輸出到螢幕上囉~如果想要隨時記錄整個網段的主機是否不小心開放了某些服務, 嘿嘿!利用 nmap 配合資料流重導向 (>, >> 等) 來輸出成為檔案, 那隨時可以掌握住您區域網路內每部主機的服務啟動狀況啊! ^_^
請特別留意,這個 nmap 的功能相當的強大,也是因為如此, 所以很多剛在練習的黑客會使用這個軟體來偵測別人的電腦,這個時候請您特別留意, 目前很多的人已經都有『特別的方式』來進行登錄的工作!例如以 TCP_Wrappers (/etc/hosts.allow, /etc/hosts.deny) 的功能來記錄曾經偵測過該 port 的 IP! 這個軟體用來『偵測自己機器的安全性』是很不錯的一個工具,但是如果用來偵測別人的主機, 可是會『吃上官司』的!特別留意!!
Port 的啟動與關閉
stand alone 與 super daemon
- stand alone
顧名思義,stand alone 就是直接執行該服務的執行檔,讓該執行檔直接載入到記憶體當中運作, 用這種方式來啟動可以讓該服務具有較快速回應的優點。一般來說,這種服務的啟動 script 都會放置到 /etc/init.d/ 這個目錄底下,所以你通常可以使用:『 /etc/init.d/sshd restart 』之類的方式來啟動這種服務; - Super daemon
用一個超級服務作為總管,以管理一些網路服務。在 CentOS 4.x 裡面使用的則是 xinetd 這個 super daemon 啊!這種方式啟動的網路服務雖然在回應上速度會比較慢, 不過,可以透過 super daemon 額外提供一些控管,例如控制何時啟動、何時可以進行連線、 那個 IP 可以連進來、是否允許同時連線等等。通常設定檔放置在 /etc/xinetd.d/ 當中,但設定完畢後需要重新以『 /etc/init.d/xinetd restart 』重新來啟動才行!
關於更詳細的服務說明,請參考基礎篇的 認識服務 一文, 鳥哥在這裡不再贅述。好,那麼如果我想要將我系統上面的 port 25 關掉的話, 那應該如何關閉呢?最簡單的作法就是先找出那個 port 25 的啟動程式喔!
[root@linux ~]# netstat -tnlp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2030/master tcp 0 0 :::22 :::* LISTEN 1961/sshd # 咦!怎麼會是 master 這個玩意兒?用 which 這個指令還找不到這個 master # 那怎辦?沒關係,我們可以透過 locate 配合正規表示法找到這個指令的![root@linux ~]# locate master | grep '/master$' /usr/libexec/postfix/master # 嘿嘿!那個正規表示法就可以找到上述的輸出結果,然後再由 rpm 來處理![root@linux ~]# rpm -qf /usr/libexec/postfix/master postfix-2.2.2-2 # 找到了!就是這個套件!所以將他關閉的方法可能就是:[root@linux ~]# rpm -qc postfix | grep init /etc/rc.d/init.d/postfix [root@linux ~]# /etc/init.d/postfix stop |
透過上面的這個分析的流程,你可以利用系統提供的很多方便的工具來達成某個服務的關閉! 為啥這麼麻煩?不是利用 kill -9 2030 就可以刪掉該服務了嗎? 是沒錯啦!不過,你知道該服務是做啥用的嗎?你知道將他關閉之後,你的系統會出什麼問題嗎? 如果不知道的話,那麼利用上面的流程不就可以找出該服務套件,再利用 rpm 查詢功能, 不就能夠知道該服務的作用了?所以說,這個方式還是對您會有幫助的啦! 底下請您試著將您 CentOS 或者是其他版本的 Linux 的 Telnet 打開試看看。
例題:我們知道系統的 Telnet 服務通常是以 super daemon 來控管的,請您啟動您系統的 telnet 試看看。
答:
|
設定開機時啟動服務
如果你想要在開機的時候就啟動或不啟動某項服務時,那就得要瞭解一下 基礎學習篇裡面談到的開機流程管理 的內容啦! 在 Unix like 的系統當中我們都是透過 run level 來設定某些執行等級需要啟動的服務, 以 Red Hat 系統來說,這些 run level 啟動的資料都是放置在 /etc/rc.d/rc[0-6].d/ 裡面的,那如何管理該目錄下的 script 呢? 手動處理嗎?會瘋掉的吶!所以你必須要熟悉 chkconfig 或 Red Hat 系統的 ntsysv 這幾個指令才行!
Tips: 這幾個指令不熟嗎?這個時候鳥哥不得不說了:『有 man 堪用直需用,莫待無 man 空自猜』趕緊給他 man 下去啦! |
例題:(1)如何查閱 portmap 這個程式一開機就執行? (2)如果開機就執行,如何將他改為開機時不要啟動? (3)如何立即關閉這個 portmap 服務?
答:
|
聰明的你一定會問說:『鳥哥,你的意思是只要將系統所有的服務都關閉,那系統就會安全囉?』 當然....不是!因為『很多的系統服務是必須要存在的,否則系統將會出問題』 舉例來說,那個保持系統可以具有工作排程的 crond 服務就一定要存在,而那個記錄系統狀況的 syslogd 也當然要存在~否則怎知道系統出了啥問題? 底下鳥哥列出幾個常見的必須要存在的系統服務給大家參考參考先!這些服務請不要關閉啊!
服務名稱 | 服務內容 |
acpid | 新版的電源管理模組,通常建議開啟,不過,某些筆記型電腦可能不支援此項服務,那就得關閉 |
atd | 在管理單一預約命令執行的服務,應該要啟動的 |
crond | 在管理工作排程的重要服務,請務必要啟動啊! |
iptables | Linux 內建的防火牆軟體,這個也可以啟動啦! |
keytables | 如果你的鍵盤非正規的格式時,這個服務的啟動或許可以幫助你喔! |
network | 這個重要了吧?要網路就要有他啊! |
sshd | 這是系統預設會啟動的,可以讓你在遠端以文字型態的終端機登入喔! |
syslog | 系統的登錄檔記錄,很重要的,務必啟動啊! |
xinetd | 就是那個 super daemon 嘛!所以也要啟動啦! |
xfs | 用來管理 X Window 字形資料的服務,如果你會需要 X Window 時,這個服務要啟動。 |
沒錯!不要懷疑!只要這些就可以啦!這幾個服務是必須要啟動的! 至於其他服務則都先不用啟動!例如 sendmail 啦!其他林林總總的資料,都先擺著! 我們會在後續的章節當中提到如何啟動這些服務的啦!
安全性的考量
不過要記得, ntsysv 及 chkconfig 都是在管理開機是否啟動某些服務的 script 而已, 所以使用 chkconfig 管理完畢後,請記得最好使用 reboot 來完整的重新載入這些服務, 然後以『 netstat -tunpl 』來看看是否有什麼其他的網路服務在啟動啊? 如果有的話,在一樣一樣的將他關閉吧! ^_^
課後練習
- 如何觀察您 Linux 主機上面已經有多少 port 被打開了?
1. 如果是 Linux 這個作業系統上面的話,可以利用『 netstat -tunlp 』觀察已經在監聽的 port 與服務的對應;
2. 如果是想要查閱所有的 port (包含已建立的連線),可以使用『 netstat -tunp 』來查閱;
3. 如果不在 Linux 本機上,可以用『 nmap IP 』來處理啊! - 如何觀察程序?
利用『 ps -aux 』或『 top 』都可以,另外,『 pstree -p 』則可以瞭解所有的程序相依性,而『 lsof 』 則可以察看所有程序所開的檔案喔!
- 請問 LISTEN 的 port 與 daemon 的關係為何?
正在 LISTEN 當中的埠口均是由某些服務(daemons)所啟動的,所以要啟動埠口就得啟用某個服務, 要瞭解某個埠口是由那個 daemon 所啟動的,就利用 netstat -tulp 來查閱。
- 請問 stand alone 與 super daemon 各是什麼?
Linux 系統的服務有獨立啟動(stand alone)及超級服務員(super daemon)兩種啟動的方式。掛在 super daemon 底下的服務可以經由 super daemon 的控管,以加強一些安全功能,不過由於還要經過 super daemon 的管理,所以服務的連接速度上會比 stand alone 慢一點。
- 請問您的 Linux 主機 (不論是那個 distributions ) 有關 daemon 啟動與關閉的 scripts 與檔案放置在那個目錄下?
各個 daemons 的啟動與關閉的 scripts 是放置在 /etc/init.d/ 內, Red Hat 系統則是放到 /etc/rc.d/init.d 裡面,至於 super daemon 的控管參數檔案則在 /etc/xinetd.d 裡面!
- 為什麼阻斷式服務 (DDoS) 會造成系統的當機與網路癱瘓?試由三向交握的角度來探討。
鸟哥的Linux私房菜(服务器)- 主机基本安全之一:限制 Linux 对外连线的端口相关推荐
- 鸟哥的Linux私房菜(服务器)- 主机基本安全之二: Linux线上自动升級
主機基本安全之二: Linux 線上自動升級 切換解析度為 800x600 最近更新日期:2006/09/10 本文已不再維護,更新文章請參考這裡 在現在的 Internet 上面,Cracker 實 ...
- 鸟哥的Linux私房菜(服务器)- 第十九章、主机名控制者: DNS 服务器
第十九章.主机名控制者: DNS 服务器 最近更新日期:2011/08/05 我们都知道,在『记忆』的角色上,人脑总是不如计算机的,而人们对文字的印象又比数字高.因此,想要使用纯粹的 TCP/IP 来 ...
- 鸟哥的Linux私房菜(服务器)- 第七章、网络安全与主机基本防护: 限制端口, 网络升级与 SELinux
第七章.网络安全与主机基本防护: 限制端口, 网络升级与 SELinux 最近更新日期:2011/07/21 通过第一篇的锻炼之后,现在你应该已经利用 Linux 连上 Internet 了.但是你的 ...
- 鸟哥的Linux私房菜(服务器)- 第一章、架设服务器前的准备工作
第一章.架设服务器前的准备工作 最近更新日期:2011/07/14 很多朋友因为自身或服务单位的需求,总是有架设各种网络服务器的时刻,这个时候大多数的前辈都会推荐他们使用 Linux 做为服务器架设的 ...
- 《鸟哥的linux私房菜-服务器篇 第三版》 RHCA亲授
经典再现,<鸟哥的linux私房菜-服务 器篇(第三版)>远程班隆重推出! 鸟哥的linux的私房菜是linux教材中的 经典中的经典!是学习linux的绝佳资 料! 上课时间: 周一到周 ...
- Linux 路由 网络 rout命令 讲解(二) 2020-10-21--《鸟哥的Linux私房菜 服务器架设篇(第3版)》
关于服务器涉及到很多东西,建议成体系的学习下,不然总是记不住白白浪费时间了, 推荐书籍鸟哥私房菜服务器架设篇: 资源内容仅供参考,请在下载后二十四小时内删除: 链接:https://pan.baidu ...
- 鸟哥的Linux私房菜(服务器)- 第四章、连上 Internet
第四章.连上 Internet 最近更新日期:2011/07/20 终于要来到修改 Linux 网络参数的章节了!在第二章的网络基础中, 我们知道主机要连上 Internet 需要一些正确的网络参数设 ...
- 鸟哥的Linux私房菜(服务器)- 第十一章、远程联机服务器SSH / XDMCP / VNC / RDP
第十一章.远程联机服务器SSH / XDMCP / VNC / RDP 最近更新日期:2011/11/24 维护网络服务器最简单的方式不是跑去实体服务器前面登入,而是透过远程联机服务器联机功能来登入主 ...
- 鸟哥的Linux私房菜(服务器)- 第二十二章、邮件服务器: Postfix
第二十二章.邮件服务器: Postfix 最近更新日期:2011/08/10 在这个邮件服务器的架设中,我们首先谈论 Mail 与 DNS 的重要相关性,然后依序介绍 Mail Server 的相关名 ...
最新文章
- nginx限制请求之四:目录进行IP限制
- 日期格式化的“疑难杂症”
- oracle中那个日期怎么相减_二手车鉴定中最容易混淆的日期读法,你会是那个读错的人吗?...
- NYOJ 14 会场安排问题
- ASP.NET 2.0 中的资源与本地化
- CString string 转换
- php Switch语句
- js_开发小技巧记录(一)
- php mysql分页_PHP+Mysql实现分页
- 采用open***对两台流量卡arm设备进行通讯(公有云)
- Fortran代码C化或Fortran与C/C++混编过程中矩阵转置的实现
- 计算机网络英语求职信范文大全,英文求职信
- Virustotal使用
- Java使用SPARQL访问DBPedia Endpoint错误
- HTML5课程心得学生,HTML5培训心得体会
- 一种简明易懂的专利侵权分析报告表单样式
- 【appium】appium自动化入门之基本参数完整版(67个appium基本参数和关键字)
- DA (分布式算法)
- pyqt5 和 pySinde2 动态加载 QT Designer
- 为什么Google优化排名前期要做长尾关键词?谷歌seo怎么做?
热门文章
- 逃离美股!瑞信给出了11个理由
- 根据 *_train_test.prototxt文件生成 *_deploy.prototxt文件
- 微软亚洲研究院开源图数据库GraphView
- 帮Facebook把用户做到7亿的那个人,告诉你如何实现用户增长
- 白话Elasticsearch63-生产集群部署之硬件配置、jvm以及集群规划建议
- 学习笔记(十五)——MySQL(查询)
- 为什么用redis?
- python 青蛙跳台阶问题
- android列表时间轴,Android实现列表时间轴
- java matlab 矩阵_如何在MATLAB中将函数应用于矩阵的每一行/列?