發表文章

目前顯示的是 7月, 2021的文章

網路服務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...

PuTTY、VNC、TeamViewer

圖片
PuTTY、VNC、TeamViewer PuTTY Windows裡最受歡迎的免費SSH客戶端連線軟體 - PuTTY 參考:  SSH軟體PuTTy教學  VNC (Virtual Network Computing) 為一種使用RFB協定的螢幕畫面分享及遠端操作軟體。 此軟體藉由網路,可傳送鍵盤與滑鼠的動作及即時的螢幕畫面。 VNC與作業系統無關,因此可跨平台使用,例如可用Linux 、Windows、Mac OS 連線到某Linux的電腦。 用Ubuntu 連接 VNC Ubuntu 20.04其實已內建了預設的VNC服務,只需要設定下就可以了。 第一步 - Server 端,設定-共享-螢幕共享-開啟 第二步 - Client 在終端下執行 Linux 的話, 它自帶就有一個 VNC 軟體. 只要你在右上角搜一下 VNC, 那個被我圈出來的軟體就是一個 Client 端的 VNC. 點開它, 輸入 server 端的 IP 和他的密碼就好。 用 Windows 連接 VNC  至於 Windows 呢, 其實有很多選項, 我們已經在 Linux 端設置好了一個 VNC server. 在 Windows 端, 我們需要的只是一個 VNC client. 而有很多軟體可以實現 VNC client 這個功能. 我在下面列舉一些: TightVNC (免費) RealVNC (免費) RealVNC 有兩種選項, 一個是 VNC Viewer, 用來做 client 端的(控制). 一個是 VNC connect, 用來做 server 端的(被控制)。 Client 端的 VNC 操作流程都很簡單. 只要求要一個 server 端的 IP 和他的密碼就好。 TeamViewer TeamViewer 是一款免費、中文化、跨平台、好用的遠端控制軟體,目前已經更新為15版,只要兩台電腦都安裝這個軟體,透過中間伺服器取得一個 ID和密碼 (替代電腦的 IP),就可以遠端連線,由主控端電腦遠端控制另一台被控端電腦。您的電腦如果有問題,只要電腦還可以連上網路,將取得的ID和密碼通知您的朋友,他就可以從遠端連線到您的電腦,幫您解決問題。另外,TeamViewer還具有可穿透防火牆連線,主控端和被控端可隨時互換、傳輸檔案、遠端喚醒.....

SSH 的安裝與設定

圖片
SSH 的安裝與設定 前言 SSH(Secure Shell)是一個在應用層和傳輸層上的資料傳輸加密的協定。所以傳送出去的封包都是經過加密的,即使被擷取,也需要很大的功夫才能解開,比較安全。此外,SSH也是一個會壓縮的協定,因此可以節省頻寬、加速傳遞資料等。不只如此,SSH 不只可以達到 Telnet 的遠端連線功能,還可以提供類似FTP、但較安全的 sFTP 功能(FTP 也是明碼)....等,許多應用。 安裝SSH-Client 如果你只是想登入別的機器的 SSH 只需要安裝 openssh-client(ubuntu有默認安裝),如果要使本機開放SSH服務就需要安裝openssh-server。 查看當前的ubuntu是否安裝了ssh 服務。 $dpkg -l|grep ssh 更新系統套件 $sudo apt update -y 安裝 openssh-client ubuntu 通常會默認安裝 openssh-client,若無則使用以下指令安裝: $sudo apt install -y ssh  或是   $sudo apt install -y openssh-client 安裝 openssh-server  若要讓其他電腦連線到你的 ubuntu 系統就必須安裝 openssh-server 服務,以下指令安裝: $sudo apt install -y ssh  或是  $sudo apt install -y openssh-server 查看SSH有無被開啟 安裝完SSH套件後,一般來說會自動啟用,可以使用以下指令來檢查SSH的啟動狀況: $dpkg -l | grep ssh   或是    $netstat -a|grep ssh 手動開啟與關閉SSH 如果SSH沒有被開啟,可以使用以下指令來開啟SSH: $sudo service ssh start 關閉SSH: $sudo service ssh stop 重啟SSH: $sudo service ssh restart 用SSH連線到別台裝置 在Linux下只要使用「ssh」指令即可透過SSH來連線到別台裝置。使用帳密登入,最簡單的方式如下: $ssh username@...

主機防護的基本工作

圖片
主機防護的基本工作 前言大綱 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,

systemd 系統服務管理

圖片
systemd 系統服務管理 前言 傳統上的 Linux 都是靠 System V 的 init 來啟動各項系統服務,而後來新的 Systemd 出現之後,許多主流的 Linux 發行版都改用 Systemd 來管理系統服務,新的 Systemd 跟傳統 System V 的 init 相比,開機速度更快、效能更好、具有相依性檢查功能。 Systemd 的系統服務,使用 systemctl 指令管理 。 列出 Systemd 所有服務 若想要列出所有已啟動的服務,可以使用 list-units 操作指令: #systemctl list-units     // 列出所有已啟動的服務 list-units 的輸出包含許多欄位,以下是各個欄位的說明。 UNIT :Systemd 服務單位(unit)名稱。 LOAD :該服務單位設定檔是否有被 Systemd 載入至記憶體中。 ACTIVE :是否已經正常啟動。 SUB :更詳細的狀態說明,值會因為不同服務有所不同。 DESCRIPTION :關於此服務的簡單說明。 事實上 systemctl 的預設動作就是列出所有已啟動的服務,所以也可以省略 list-units: #systemctl     //# 列出所有已啟動的服務 如果想要列出系統上所有的服務(包含已啟動與未啟動的),可以加上 --all 參數: #systemctl list-units --all 如果想列出未啟動的所有服務,可以加上 --state=inactive: systemctl list-units --all --state=inactive     //#列出系統上所有未啟動的服務 只列出系統上所有 service 類型的服務也是很常用的: systemctl list-units --type=service      //只列出系統上所有 service 類型的服務 Systemd 基本服務管理 在 Systemd 中每一個系統服務就稱為一個服務單位(unit),而服務單位又可以區分為 service、socket、target、path、snapshot、timer 等多種不同的類型(...

在Ubuntu中啟動、停止或重新啟動服務

在Ubuntu中啟動、停止或重新啟動服務 列出Ubuntu中的所有服務 在開始之前,先將列出所有服務,因為我們需要知道服務名稱來管理該服務。 #service --status-all      //它將顯示Ubuntu上服務的完整列表 使用Systemd啟動/停止/重新啟動服務 您可以使用Systemd systemctl實用程序啟動,停止或重新啟動服務。這是當前Ubuntu版本的首選方式。 打開一個終端窗口,然後輸入以下命令。例如,以 ufw 防火牆服務 為例。 啟動服務 #systemctl stop ufw 停止服務: #systemctl start ufw 重啟服務: #systemctl restart ufw 檢查服務狀態: #systemctl status ufw 使用service命令啟動/停止/重啟服務 啟動服務: #service ufw stop 停止服務: #service ufw start 重啟服務: #service ufw restart 檢查服務狀態: #service ufw status 使用初始化腳本 init.d 在 Ubuntu 上管理服務 您可以使用/etc/init.d目錄中的初始化腳本來啟動,停止或重新啟動服務。該目錄實際上包含用於不同服務的各種腳本。自從Ubuntu切換到Systemd以來,不讚成使用初始化腳本,因此僅當您必須處理舊的Ubuntu版本時才使用此方法。打開一個終端窗口,然後輸入以下命令。 啟動服務: #/etc/init.d/ufw start 停止服務: #/etc/init.d/ufw stop 重啟服務: #/etc/init.d/ufw restart 檢查服務狀態: #/etc/init.d/ufw status 參考資料 特色、摘要,Feature、Summary: 關鍵字、標籤,Keyword、Tag: Ubuntu,Linux,System,

了解、分析登錄檔 - 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...