發表文章

目前顯示的是有「Security」標籤的文章

網路服務Port(埠口)監測與管理

圖片
網路服務Port(埠口)監測與管理 1.前言 為什麼我們的主機會回應網路上面的一些要求封包呢?例如我們設定了一部 WWW 主機後,當有來自 Internet 的 WWW 要求時,我們的主機就會予以回應,這是因為我們的主機有啟用了 WWW 的監聽埠口啊!所以,當我們啟用了一個 daemon 時,就可能會造成主機的埠口在進行監聽的動作,此時該 daemon 就是已經對網路上面提供服務了!萬一這個 daemon 程式有漏洞,因為他提供了 Internet 的服務,所以就容易被 Internet 上面的 Hacker 所攻擊了!所以說,仔細的檢查自己系統上面的埠口到底開了多少個,並且予以嚴格的管理,才能夠降低被攻擊的可能性啊! 大綱 什麼是 port 埠口的觀察: netstat ,nmap 埠口與服務的啟動/關閉及開機時狀態設定 找出啟動port的服務程式 預設啟動的服務 安全性考量-關閉網路服務埠口 2.什麼是 port 當我們的主機啟動了一些服務,相對應的這些服務就會開啟一些Port (埠口) 。『服務』跟『 port 』對應表。參考下列網址: 常見的連接埠中文說明  ,  Internet Assigned Numbers Authority (IANA)連接埠的官方清單 伺服器端啟動的監聽埠口所對應的服務是固定的: 例如 WWW 服務開啟在 port 80 ,FTP 服務開啟在 port 21,email 傳送開啟在 port 25 等等,都是通訊協定上面的規範! 用戶端啟動程式時,隨機啟動一個大於 1024以上的埠口: 用戶端啟動的 port 是隨機產生的,主要是開啟在大於 1024 以上的埠口。這個 port 也是由某些軟體所產生的, 例如瀏覽器、Filezilla 這個 FTP 用戶端程式等等。 一部伺服器可以同時提供多種服務: 所謂的『監聽』是某個服務程式會一直常駐在記憶體當中,所以該程式啟動的 port 就會一直存在。 只要伺服器軟體啟動的埠口不同,那就不會造成衝突。當用戶端連接到此伺服器時,透過不同的埠口,就可以取得不同的服務資料囉。 所以,一部主機上面當然可以同時啟動很多不同的服務啊! 共 65536 個 port: TCP/UDP 表頭資料中,就知道 port 佔用 16 個位元,因此一般主機會有 65536 個 p...

主機防護的基本工作

圖片
主機防護的基本工作 前言大綱 1、隨時更新系統軟體 2、限制連線埠口與服務 3、 啟動 SELinux(AppArmor) 來限制網路服務的權限 防護工作 - 針對不同型態的攻擊 資安相關網站 台灣電腦網路危機處理暨協調中心 臺大資訊安全中心 主機防護工作、基本三步驟 1、隨時更新系統軟體 Ubuntu 安裝完畢之後,必須進行更新,以獲得最新的軟體與系統程式,平常也要經常更新,以保持系統在最穩定、最安全的狀態,指令如下: 指令一:$sudo apt update 說明:用來取得遠端更新伺服器的套件檔案清單。 指令二:$sudo apt -y dist-upgrade 說明:更新套件。 指令三:$sudo apt clean 說明:清除更新時所下載回來的更新(安裝)檔案。 指令四:$sudo apt autoremove 說明:自動清除更新後用不到的舊版本檔案(例如舊的核心程式) 細節參考 :  apt-get 或 apt:Advanced Packaging Tool 套件管理工具 2、限制連線埠口與服務 當我們的主機啟動了一些服務,相對應的這些服務就會開啟一些Port (埠口) 。 當啟動一個網路服務,這個服務會依據 TCP/IP 的相關通訊協定啟動一個埠口在進行監聽, 那就是 TCP/UDP 封包的 port (埠口) 了。我們知道網路連線是雙向的,伺服器端得要啟動一個監聽的埠口, 用戶端得要隨機啟動一個埠口來接收回應的資料才行。 再來就是要來瞭解一下,我們的主機到底是開了多少的 port 呢?由於 port 的啟動與服務有關,那麼『服務』跟『 port 』對應的檔案是哪一個?再提醒一次呦!是 『 /etc/services 』  啦! $cat /etc/services     //可以看看『服務』跟『 port 』對應表。 對應表說明,參考下列網址: 常見的連接埠中文說明 Internet Assigned Numbers Authority (IANA) 連接埠的官方清單 Linux中,主要用來觀察 port 的則有底下兩個程式: netstat:在本機上面以自己的程式監測自己的 port; nmap:透過網路的偵測軟體輔助,可偵測非本機上的其他網路主機,但有違法之虞。 細節繁多,另闢說明如下...

iptables的觀念與使用

圖片
iptables的觀念與使用 1.前言 "iptables" 主要是第一層 : 封包過濾式的 netfilter 防火牆,他不是一種服務,是操作netfilter的命令。 Ubuntu server環境,防火牆有很多選擇,從最為易用便捷的 "ufw" 防火牆(Ubuntu預設),到較新的動態防火牆 " Firewalld ",再到較為專業的防火牆 "iptables"  一應俱全,如何選擇一款合適的防火牆呢?沒有標準答案,但肯定有最合適的選擇。 其中,iptables 這個工具功能全面強大,可以實現很多 ufw 及  Firewalld無 法完成的網絡功能,推薦有一定基礎的用戶使用。 2.理論與觀念 正確的觀念,才能理解,才能正確地應對不同的入侵方式。 iptables防火牆的結構 iptables 是Linux中功能最為強大的防火牆,使用靈活,可以對流入和流出伺服器的數據包進行很精細的控制,當然如果只是用來開啟或禁止某個網絡服務的某個網絡埠,它和 ufw 以及Firewalld都差不多 iptables的三大核心要素是表,鏈和規則。 一言以蔽之,iptables是表的集合,包含四張表(常用的三張 filter, nat, mangle),表則是鏈的集合,每個表都包含若干個鏈, 而鏈則是規則的集合,真正過濾規則是屬於鏈,iptables的處理流程如下圖所示: 從上圖可觀察到Kernel處理和過濾數據包的流程,描述了封包進入主機到離開主機,會經過哪些tables,這些tables裡面會寫規則,進行放行或攔截。 大致上你可以發現數據包在主機流通時有四張表、五個階段: iptables 四張表(彩色的部分) filter :  整個iptables最關鍵的表,實現封包的過濾,可以由INPUT,FORWARD,OUTPUT這三個能夠實現過濾功能的鏈組成。 nat  :   學過網路的人應該都知道NAT(Network Address Translation)網路地址轉換,正是應為有了這項技術才使得我們現今還能夠有IPv4可以使用,在iptables中也可以實現NAT的相關功能, 例如SNAT, DNAT, MASQUERADE等功能,nat表可以由PREROUTING, FORWARD, P...

防火牆:iptables、ufw、TCP_Wrappers、SELinux/AppArmor

圖片
防火牆:iptables、ufw、TCP_Wrappers、SELinux/AppArmor 網路封包進入主機的流程 防火牆簡介 預設的 Linux 防火牆就有兩個機制,這兩個機制都是獨立存在的。 第一層是封包過濾式的 netfilter 防火牆 ,使用iptables 這個程式。 另一個則是透過軟體控管的 TCP Wrappers 防火牆。 第一層防火牆:封包過濾 IP Filtering 或 Net Filter 就是 iptables 這個軟體所提供的防火牆功能。為何稱為封包過濾呢?因為他主要是分析 TCP/IP 的封包表頭來進行過濾的機制,主要分析的是 OSI 的第二、三、四層,主要控制的就是 MAC, IP, ICMP, TCP 與 UDP 的埠口與狀態 (SYN, ACK...) 等。 第二層防火牆:TCP Wrappers 這個功能也是針對 TCP 的 Header 進行再次的分析,同樣你可以設定一些機制來抵制某些 IP 或 Port ,好讓來源端的封包被丟棄或通過檢驗。 服務 (daemon) 的基本功能: 防火牆主要管理的是 MAC, IP, Port 等封包表頭方面的資訊,如果想要控管某些目錄可以進入, 某些目錄則無法使用的功能,那就得要透過權限以及伺服器軟體提供的相關功能了。 舉例來說,你可以在 httpd.conf 這個設定檔之內規範某些 IP 來源不能使用 httpd 這個服務來取得主機的資料, 那麼即使該 IP 通過前面兩層的過濾,他依舊無法取得主機的資源喔! 如果 httpd 這支程式本來就有問題的話,那麼 client 端將可直接利用 httpd 軟體的漏洞來入侵主機,而不需要取得主機內 root 的密碼!因此, 要小心這些啟動在網際網路上面的軟體喔! SELinux(AppArmor) 對網路服務的細部權限控制: 簡單的說,SELinux 可以針對網路服務的權限來設定一些規則 (policy) ,讓程序能夠進行的功能有限, 因此即使使用者的檔案權限設定錯誤,以及程序有問題時,該程序能夠進行的動作還是被限制的,即使該程序使用的是 root 的權限也一樣。舉例來說,前一個步驟的 httpd 真的被 cracker 攻擊而讓對方取得 root 的使用權,由於 httpd 已經被 SELinux 控制在 /var/www/html ...

主機受攻擊後復原工作流程

主機受攻擊後復原工作流程 1.立即拔除網路線 既然發現被入侵了,那麼第一件事情就是拿掉網路功能!拿掉網路功能最簡單的作法自然就是拔掉網路線了! 事實上,拿掉網路線最主要的功能除了保護自己之外,還可以保護同網域的其他主機。怎麼說呢?舉個 2003 年 8 月發病的疾風病毒好了,他會感染同網域之內的其他主機喔!所以,拔除網路線之後,遠端的攻擊者立即就無法進入你的 Linux 主機,而且你還可以保護網域內的其他相關主機啊! 2.分析登錄檔資訊,搜尋可能的入侵途徑 被入侵之後,決不是只要重新安裝就好,還需要額外分析 『為什麼我的主機這一次會被入侵,對方是如何入侵的?』, 如果你能夠找出問題點,那麼不但你的 Linux 功力立刻增強了,主機也會越來越安全喔! 而如果你不知道如何找出被入侵的可能途徑,那麼重新安裝後,下次還是可能被以同樣的方法入侵啊! 粉麻煩的啦!好了,那該如何找出入侵的途徑呢? 分析登錄檔: 低級的 cracker 通常僅是利用工具軟體來入侵你的系統,所以我們可以藉由分析一些主要的登錄檔來找出對方的 IP 以及可能有問題的漏洞。可以分析 /var/log/messages、 /var/log/secure 還有利用 last 指令來找出上次登入者的資訊。 檢查主機開放的服務: 很多 Linux 使用者常常不曉得自己的系統上面開了多少的服務?我們說過,每個服務都有其漏洞或者是不應該啟用的增強型或者是測試型功能, 所以,找出你系統上面的服務,並且檢查一下每個服務是否有漏洞,或者是在設定上面有了缺失,然後一個一個的整理吧! 查詢 Internet 上面的安全通報:  透過安全通報來瞭解一下最新的漏洞資訊,說不定你的問題就在上面! 3.重要資料備份 主機被入侵後,顯得問題相當的嚴重,為什麼呢?因為主機上面有相當重要的資料啊!如果主機上面沒有重要的資料, 那麼直接重新安裝就好了!所以,被入侵之後,檢查完了入侵途徑,再來就是要備份重要的資料了。 好了,問個問題,什麼是『重要資料』?who, ps, ls 等等指令是重要資料嗎?還是 httpd.conf 等設定檔是重要資料?又或者是 /etc/passwd, /etc/shadow 才是重要資料? 呵呵!基本上,重要的資料應該是 『非 Linux 系統上面原有的資料』 ,例如 /etc/passwd, /etc...

防堵的駭客我的系統就安全了嗎?

防堵的駭客我的系統就安全了嗎? 當然不是。事實上有事最難防的家賊。這也就是為什麼我們將主機鎖在機房中,並將機房中的機櫃上鎖,而且 MIS 人員的座位通常要獨立一區。 此外,所謂的安全是建立在人的層面而非機器或軟體、要懂的正確操作軟硬體才能發揮其功效。 參考資料 TANet CERT台灣學術網路危機處理中 特色、摘要,Feature、Summary: 關鍵字、標籤,Keyword、Tag: Ubuntu,Linux,Security,

什麼是程式的漏洞、入侵的程式碼

什麼是程式的漏洞、入侵的程式碼 所謂程式的漏洞,指的是安全性的問題,安全性的問題包羅萬象,最常見的為撰寫不當的程式碼,使得一般人能在本機或遠端取得更高的許可權,甚至是ROOT的管理權。 入侵程式最希望做到的,就是能讓ROOT來執行,或是靠ROOT所執行的程式指向自己,又或是取得ROOT所執行程式的控制權。 在過去的十多年中,以緩衝區區溢位類型的安全性漏洞是最為常見的一種形式、爾且佔了遠端網路攻擊的絕大多數。這種攻擊,可以使得一名攻擊者,有機會獲得一台主機的部分或全部的控制權,如果能有效地消除緩衝區溢位的漏洞,則大部分的安全威脅將會減輕。 緩衝區溢位元攻擊的目的,在於干擾具有某些特權執行程式的功能,這樣可以使得攻擊者取得該程式控制權。如果該程式是由ROOT許可權的用戶所執行,那麼整個主機就被控制了。 參考資料 特色、摘要,Feature、Summary: 關鍵字、標籤,Keyword、Tag: Ubuntu,Linux,Security,

什麼是後門程式或是木馬程式?

什麼是後門程式或是木馬程式? 所謂的後門程式,就是在系統正規的運作之外,開啟不當的服務,使得入侵者可以透過此一服務使用系統資源。好比在房子開了一個後門,可讓入侵者在必要時自由進出。 而所謂的木馬程式,源於希臘的木馬屠城記,送進一隻表面無害的木馬,但在木馬當中卻躲藏的士兵,等到入夜一舉攻佔的特洛伊城。木馬程式的意思類似,送進表面無害的程式,卻隱藏對系統有害的隱藏程式,等到特定時間發作。 事實上,這兩者是搭配的,首先用木馬的方式將程式送入,待 root 執行後就安裝的後門程式。  參考資料 特色、摘要,Feature、Summary: 關鍵字、標籤,Keyword、Tag: Ubuntu,Linux,Security,

了解、分析登錄檔 - log

圖片
了解、分析登錄檔 - log 前言 當你的 Linux 系統出現不明原因的問題時,很多人都告訴你,你要查閱一下登錄檔才能夠知道系統出了什麼問題了,所以說, 了解登錄檔是很重要的事情呢。登錄檔可以記錄系統在什麼時間、哪個主機、哪個服務、出現了什麼訊息等資訊, 這些資訊也包括使用者識別資料、系統故障排除須知等資訊。如果你能夠善用這些登錄檔資訊的話,你的系統出現錯誤時, 你將可以在第一時間發現,而且也能夠從中找到解決的方案,而不是昏頭轉向的亂問人呢。 此外,登錄檔所記錄的資訊量是非常大的,要人眼分析實在很困難。此時利用 shell script 或者是其他軟體提供的分析工具來處理複雜的登錄檔,可以幫助你很多很多喔! 本文大綱 登錄檔 log 如何運作 logrotate.conf-定義記錄檔的循環的週期 哪些登錄檔log應該定期檢視 常見的登錄檔 Ubuntu下 /var/log/ 下各個日誌檔案的說明 登錄檔所需相關服務 (daemon) 與程式 登錄檔內容的一般格式 分析登錄檔 使用Gnome Logs日誌檢視器查看登錄檔! 使用指令查看登錄檔 使用 GoAccess 分析 Nginx 網頁記錄檔,即時監控伺服器狀態 Ubuntu日誌管理方法 登錄檔log如何運作 有的登錄檔紀錄的是系統訊息,稱為「系統登錄檔」。而有的登錄檔是紀錄某個特定的服務之使用情況,稱為「服務登錄檔」。通常,這兩者都由系統所提供的一項服務來統一管理(若在傳統Linux系統下這個服務名為syslog,若在ubuntu等系統中則名為rsyslog),不過也有些大型軟體所提供的服務,其登錄檔不受syslog(或rsyslog)來管理,而有其特別的管理方式。 syslog(或rsyslog)可以設定「哪個類型的系統事件,要寫在哪個登錄檔中」,這些設定被寫在設定檔中。其所在位置如下表: 系列 管理登錄檔的服務 設定檔位置 傳統Linux系統 (如Fedora、centOS、RedHat…等) syslog /etc/syslog.conf Ubuntu等系統 rsyslo...

為何目錄下的檔案,要加上 "./"才能執行

舉例而言,目前所有的目錄下有一個 "config" 的可執行檔,若我們直接執行 "config" ,系統會出現錯誤提示,必須要執行 "./config 或  . config" 才能正確執行,這樣是為什麼呢? 這是路徑設定的問題,"./" 這個代表的是目前的目錄,如果要讓目前的目錄下的檔案不需要加 "./" 即可執行,只要將 "./" 加入路徑參數 PATH 中即可,如下所示 :  $export PATH="./":$PATH 答案是 : 基於安全的考量。 如果我們將 "./"放入 PATH 的第一欄位,當執行指令時就會以當前的路徑作為第一優先搜尋的路徑,如果該路徑下有著與系統指定同名的執行檔,那就可能會不小心執行到該檔案而非真正的系統指令。 舉例而言,一個存心破壞的使用者 user1,在 /temp 下放了一個 ls , 當 root 進入 /temp  並執行 "ls" ,root 就會優先執行 "ls" 。而由於當前所在的位置是 "./temp" ,因此執行 "./ls" 就相當於執行 "temp/ls"  ,而非系統指令。 因此在這樣的設定之下,可能會讓有心的本地使用者有可乘之機,藉由一些與系統指令同名的檔案來讓管理者 root 不小心執行該檔案,進而獲得更高的權限。 因此,即使要將目前的目錄加入路徑參數之中的優先順序,要將 "./" 放在系統路徑後 $export PATH=$PATH:./ 參考資料 特色、摘要,Feature、Summary: 系統安全 關鍵字、標籤,Keyword、Tag: Linux,Ubuntu,System,Security

Ubuntu 常用指令、分類與簡介

圖片
常用指令分類與簡介 大綱 前言 常用指令 指令分類 前言 在 Ubuntu 中我們可以打開終端機 (Ctrl+Alt+T) 進行指令操作,就可以透過指令來管理檔案、系統與網路管理。 在說明指令 $ls(1) , $ 表示命令提示符號, ls 表示指令本身, (1) 表示本指令是在手冊第一章節中,詳細說明請參閱► 線上手冊(man page) 一般指令格式 ► $指令  [選項]  [選項值] 該指令的所有用法  ► $指令 --help 指令是由英文單字縮寫構成,因為指令繁多,所以理解指令原文,就很容易記住了。列如  ►ls:list (中文為列表) 。 常用指令 clear(1) ► 清空螢幕,當終端機列出資料太多。 $clear cd(1)► change directory,移動進入資料夾 $cd ./examples ► 移動到目前資料夾下的 examples 資料夾。 $cd ~  ► 移動到使用者home家目錄:~。 $cd ..  ► 移動到上一層目錄 :  ..。 $cd / ► 移動到根目錄 :  /。 $cd !$ ►移動到前一個命令最後一個參數指定的目錄。 pwd(1) ► print work directory,印出目前工作目錄。 $pwd ls(1) ► list - 查看檔案及子目錄。 $ls ► 列出資料夾、檔案名稱。 $ll  ► 就是  $ls -l : 將資料以列表形式呈現,並且包含檔案細部資料(屬性、權限、時間…) $ls temp  ► 列出資料夾temp 內資料。 $ls -la ► 列出詳細資料和隱藏資料,-l 列出詳細資料,-a 列出隱藏資料。 $ ls *.md ► 列出部分檔案:列出為 .md 的檔案。 cp(1) ► copy,複製檔案。 $echo "TEST" >  README.md ►將字串 "TEST"存新檔案 "README.md" $cp README.md  test.txt ►複製 README.md 另存為 test.txt $cp <file> <dir> ►複製檔案 file 到目錄 dir 下面。 $...