Linux 基本操作與網路安全
VBird
2003/06/23
報告內容
• 什麼是電腦?硬體與作業系統的關係?
• Linux 是什麼?與 Linux 的功能?
• Linux 的操作介面與如何有效學習?
• Linux 的多人工作平台概念(帳號管理)
• Linux 檔案系統管理
• Linux 程序管理與工作排程
• Linux 套件管理員
• Linux 問題的檢驗程序
• Linux 網路安全簡述
什麼是電腦?
• 一堆硬體,配合一個可以管理硬體的
『作業系統』,即成為電腦一詞。
什麼是電腦?
• 1960年代:Multics 計畫始末
• 1970年代初期:貝爾研究室的 Thompson
• 1973年:Ritchie 使 C 語言與 Unix 誕生
• 1977年:Berkeley 大學的 BSD 的誕生
• 1980年初期:AT&T 的商業行為
什麼是電腦?
• 1984年:Stallman 的 FSF 與 GNU 計畫
– 自由軟體 (free beer or free air ?);
– 通用授權 (GNU General Public License)
– 開放源碼 (Open Source)
– 影響:發展了數百個以上的好用軟體,
全部取之於社群、用之於社群。
什麼是電腦?
• GNU 的大問題:有軟體、沒有作業系
統….
Linux 是什麼?
• 1991年:Linus Torvalds 的一則BBS簡訊
Hello everybody out there using minix-
I'm doing a (free) operation system (just a hobby,
won't be big and professional like gnu) for 386(486)
AT clones.
Linux 是什麼?
• Linux = 核心 (Kernel) 即是管理硬體的那
個作業系統咯!
– 核心在控制整個系統(軟、硬體)
– 核心的功能不同,支援的硬體就不同
– 可以支援外掛模組(想像驅動程式)
– 硬體驅動模組設計是『硬體廠商』的
責任--每人一信、開發才會快!^_^
Linux 是什麼?
• Linux distribution:
– 僅有核心,能做的功能有限;
– 架構在 GNU 的 GPL ,由 GNU 與其他
Open Source 社群提供大量的軟體在
Linux 這個核心上面;
– 某些商業團體,將 Linux kernel 配合這
些軟體套件(Packages)配套成為一可直
接安裝在 X86 上的完整光碟。
Linux 是什麼?
• Linux 的發行商 (distributions)
– Red Hat
– Mandrake
– Linpus
– CLE
– …..(共有將近兩百家)
– 通通使用同一個核心功能!
Linux 是什麼?
• Linux 的功能:
– 桌上型電腦:
• Windows 能做的,在 Linux 上面都
可以達到,不過,就是中文化差了
點~
• KDE, GNOME 都是很優良、很漂亮
的 Window Manager
• X Window 僅是『一套軟體』
Linux 是什麼?
• Linux 的功能:
– 工作站(Workstations):
• 軟體開發、三D美術開發、數值模式
運算….
– 伺服器:
• WWW, FTP, Mail, Proxy, File,
Firewall, ….
Linux 是什麼?
• Linux 優點:
– 網路功能強大、軟體眾多、Open
Source
• Linux 缺點:
– 入門門檻高、中文化不夠徹底
• 大眾的問題:
– 認知不足…誰說 Linux 架站容易?!
Linux 是什麼?
• Linux 與 Windows 的比較??
– 無法比較,因為兩者定位不同;
– 各取所需,沒有誰好誰壞!
Linux 的操作介面
• 圖形介面 (X-Window System)
– KDE, GNOME…..
– 最大的優點是親和、中文化
• 文字介面 (BASH Shell)
– 功能強大、但學習歷程較長
– 最大的優點是,更深入系統,適合系
統管理員
Linux 的操作介面
• 為何強調 Bash Shell?
– Bash shell 佔用資源較少,且由於來自
GNU,與 Linux kernel 相容性高;
– X Window 不但佔用資源較多,使系統
運作龜速,且可能容易掛點;
– Shell scripts 能夠直接設計 program ,
可以很快速的管理好 Linux 主機;
– 多人多工平台,較適合 Bash shell 。
如何有效學習?
• 想玩一玩 Linux 而已:
– 使用 X-Window 爽一爽即可
– 但不要架站喔!
• 為了生活、為了興趣、為了管理:
– 可以理解為什麼要這樣做?
– 問題發生了,會知道哪裡可能出錯?
– 整個流程的檢驗程序清晰!
如何有效學習?
• 有心要學習,最好要會的咚咚:
– BASH 與最簡易的 vi (文書處理機)
– 正規表示法(Regular Expression)
– Linux 的檔案、帳號等基本概念
– 套件的安裝(Package Manager)
– 網路基礎觀念
– 至於架站…..上面的學會了,架站自然就
會了!
如何有效學習?
• 其他必備技巧:
– 還是需要讀英文的!
– 上網 Google 搜尋技巧;
– 懂得找男人( man )
– 注意閱讀螢幕出現的訊息資料;
– 注意登錄檔資訊 ( log file )
– 注意發問時提供的資訊
如何有效學習?
• 文書處理器 vi
– 管理員至少一定要會一種編輯器
– vi 的使用:
• 一般模式:移動、複製、刪除、貼上
• 編輯模式:插入與取代文件
• 指令列模式:搜尋、自動取代、檔案
存取等
如何有效學習?
• 線上查詢 man page
– 是否一定要『背』指令?
• man command
• man 5 configuration
• info command (尤其 GNU 提供的工具)
• /etc/man.conf (尤其自行安裝軟體)
• whatis filename
Linux 的多人工作平台
• 每個帳號均有自己的家目錄與相關的 mail
box 以及其他帳號相關的操作環境之設定
• Linux 僅認識 ID 數字:UID, GID
– 兩種 UID: 0(root), 1~65534(一般身份)
• 三種身份:owner, group, others
– 與 Linux 檔案權限相關性很高!
• /etc/passwd, /etc/shadow, /etc/group
• 密碼的設定技巧
Linux 的多人工作平台
• root 的重要性:
– 系統管理、安全管理、套件管理…..
– 『技術』不是問題『操守』才是重點
• 多人維護之主機的 root 身份變換:
– 即使是 root ,亦建議使用一般身份操作
平時的 Linux 作業;
– su, sudo
Linux 檔案系統管理
• 檔案類型: file type
– regular files: data, ascii, binary programs..
– Directory
– device files: Block, Character
• 檔案系統類型:filesystem type
– ext2, ext3, reiserfs
– vfat, ntfs…..
Linux 檔案系統管理
• 樹狀目錄
Linux 檔案系統管理
• 檔案權限
– User, Group, Others
– 適合多人多工、可達保密防諜之目的
Linux 檔案系統管理
• 檔案權限
Linux 檔案系統管理
• 基本檔案與目錄管理操作
– ls, pwd, cd, mkdir, rmdir
– cp, mv, rm,
– cat, nl, head, tail, less, more,
– file, diff
Linux 檔案系統管理
• 檔案屬性的變換
– chown, chgrp, chmod
– # chmod 777 bar
Linux 檔案系統管理
• 檔案的搜尋
– which command (與 PATH 有關)
– whereis filename
– locate filename
– find path type arguments
Linux 檔案系統管理
• 連結檔
– hard link
• 不可跨 filesystems, 不可連結 directory
• 所有的 link 為 0 時,檔案才會完蛋。
– Symbolic link
• 就是『捷徑』囉!
Linux 檔案系統管理
• 磁碟分割槽與掛載問題:
Linux 檔案系統管理
• 磁碟分割槽與掛載問題:
– 每個 partition 就是一個完整的 filesystem
– 使用 mount 來掛載每一個 partition ,
– 需要有 mount point 來掛載 (directory)
– # mount -t vfat /dev/hda5 /mnt/windows
– # mount -t ntfs /dev/hda6 /mnt/winnt
– # mount -t ext3 /dev/hdb1 /mnt/linux2
Linux 檔案系統管理
• 磁碟分割槽的分割問題:
– fdisk 的使用(需瞭解 MBR, partition 的基
本觀念)
– mke2fs 來格式化
– fsck 來檢驗磁區
– /etc/fstab 來開機掛載!
Linux 程序管理與工作排程
• 什麼是程序?
– 任何觸發系統工作的事件,系統會給予
一個 process ID 來控制該事件的執行,
這個 PID 就是程序!
– 需要注意到,程序『屬於誰?他的權限
是不同的!』而程序執行後輸出的訊息
則與資料流有關!
Linux 程序管理與工作排程
• 如何觀察程序?
– top
– ps
• 常駐記憶體的程式(daemon, 服務)
– 在背景下執行
– 是系統正常運作所必需要的(syslog,cron)
– 是某些服務提供所必需要的(www, mail..)
Linux 程序管理與工作排程
• 程序的優先執行順序?
– Priority
– nice value
• nice 新的 PID
• renice 已存在的 PID
Linux 程序管理與工作排程
• 給予程序『訊號, signal』
– kill -signal PID
• -1 重新讀取設定檔
• -9 無條件強制驅離記憶體
• -15 正常方式關閉該 PID
Linux 程序管理與工作排程
• 重要的程序之一:syslog
– 系統在背景下工作的各項服務所產生的
『訊息』均統一由 syslog 這個服務
(daemon) 所管理
– /etc/syslog.conf
– /var/log/messages
– /var/log/secure ...
Linux 程序管理與工作排程
• 工作排程
– 循環式工作排程:
• crontab
• /etc/crontab
– 單一工作排程:
• at
Linux 套件管理員
• RPM
– 具有資料庫:容易安裝、升級、移除
– 在查驗及搜尋方面極為有效率
– 漏洞修補速度快速
– 最大的缺點:屬性相依的問題(這包含了
版本、平台等等)
Linux 套件管理員
• Tarball
– 為原始碼 (open source)
– 大部分的 tarball 均支援跨平台
– 需要額外的套件支援:make, kernel
source, gcc 等等
– 升級、反安裝等較為不方便
Linux 套件管理員
• 沒有任何一套作業系統會『完全』滿足您,
所以使用者必需要至少學習一種套件管理
員,以提供自我程式資料庫的安裝!
Linux 問題的檢驗程序
• 先查看螢幕出現的錯誤訊息;
• 由螢幕出現的錯誤訊息以 man 來查尋該問
題的解決方法;
• 檢驗登錄檔 (logfile) 的錯誤記錄;
• 由錯誤記錄反查該套件的設定檔或者相關
指令的校正!
個人小建議
• 學會一種以上的 package manager
• 務必努力去找男人!
• 至少要會使用 vi 吧~~ ^_^
• 一定要瞭解 Linux 的目錄架構
• 一定要知道 User, Group, Others,以及
Process 之間的關係!
個人小建議
• 知道如何追查與克服問題:
– 養成日誌觀察的好習慣!
– 天助自助者!
• 科技永遠來自於人類的惰性:
– 知道 cron 的用途;
– 訓練執行 BASH 與編寫 scripts 的能力
個人小建議
• 『會用』比『會考試』應該要重要的多!
• 由『實作』去體驗會比冥想有效的多!
• 由『搜尋』取代『發問』會快速而有效
的多!
Linux 網路安全簡述
• 如何入侵與攻擊 Linux 主機?
– 使用軟體套件的漏洞(Ex>Wu-FTP)
– 使用 port scan 軟體掃瞄後,以 root kit
攻擊軟體取得 Linux 主機的 root 功能
– 利用防火牆規則的不當規劃來滲透
– 使用玉石俱焚的當機手段
Linux 網路安全簡述
• 那麼該如何預防?
– 瞭解網路的基礎(不論 Linux 與
Windows 的網路基礎均是相同的!)
– 將不同的服務分別設定在不同主機上
– 如何升級套件?
– 瞭解如何啟動與關閉一個 service
(daemon)
– 如何架設防火牆?
Linux 網路安全簡述
• 網路基礎 OSI 網路七層協定
– Hub 與 Switch 的差異;
– 網路卡卡號?
– TCP/IP 的相關重點:
• Public IP 與 Private IP ?
• 什麼是 port 與協定及 daemon ?
Linux 網路安全簡述
• 如何升級套件?
– RPM
• 由 Red Hat 或者是 中山大學 FTP 下
載 RPM 套件;
• 使用 rpm -Fvh 升級已安裝者
–需注意與硬體的搭配(EX>Kernel)
Linux 網路安全簡述
• 如何升級套件?
– Tarball
• 如何移除?
• 需要哪些前驅套件?
–gcc, make, kernel source, kernel
head….
• 查看 INSTALL 與 README
Linux 網路安全簡述
• 如何查看自己的主機開了多少 port ?
– netstat 與其參數;
– top, ps 等程序管理;
– nmap 等 port scan 軟體
Linux 網路安全簡述
• 啟動與關閉 Services?
– Stand alone:
• /etc/rc.d/init.d/scripts (start|stop)
– Super daemon:
• vi /etc/xinetd.d/files
• /etc/rc.d/init.d/xinetd restart
– ps & kill
Linux 網路安全簡述
• 防火牆:
– 一堆規則的比對,所以….就是設定一
堆規則來限制登入
• 基礎防火牆:TCP_Wrappers
– 找到 daemon 名稱
– 編輯 /etc/hosts.allow 與 /etc/hosts.deny
– 編輯完畢,立即生效!
Linux 網路安全簡述
• 基礎防火牆:iptables
– iptables -L -n 查看
– 共有三條鏈(chains),初級來說,只要
管理 INPUT 即可!
– 架設概念:
• 關閉所有,啟動特定!
• 能登入的 service 盡量限制進入點!
Linux 網路安全簡述
• 基礎防火牆:iptables
– 使用 script 來啟動防火牆規則;
• # 1. 清除所有已存在規則
• iptables -F
• iptables -X
• iptables -Z
Linux 網路安全簡述
• # 2. 設定預設規則
• iptables -P INPUT DROP
• iptables -P OUTPUT ACCEPT
• iptables -P FORWARD ACCEPT
Linux 網路安全簡述
• # 3. 設定進入 (INPUT) 規則
• iptables -A INPUT -p TCP -i eth0 -s
192.168.0.0/24 -j ACCEPT #針對 IP
• iptables -A INPUT -p TCP -i eth0 --
dport 80 -j ACCEPT # 針對 daemon
• iptables -A INPUT -m mac --mac-
source aa:bb:cc:dd:ee:ff -j ACCEPT #
針對網路卡卡號!
Linux 網路安全簡述-個人建議
• 主機服務單純化:
– Models 主機就只跑 Models ,不要有太
多的額外伺服器軟體啟用,且對於 ssh
登入點需要『強烈的限制!』最好僅
允許中心內部連線;並且,防火牆可
以設定的嚴格一點
Linux 網路安全簡述-個人建議
• 主機服務單純化:
– 伺服器的架設中,由於需要開放對外,
因此,漏洞的即時修補為最重要的工
作!最好可以使用自動更新的 scripts
來輔助系統管理!
Linux 網路安全簡述-個人建議
• 備份的重要性:
– 有防火牆仍無法高枕無憂!
– 兩部電腦互相備份,可使用 scripts 並
進入自動排程;
– 仍頇每個月定時手動將重要資料燒錄
出來!
報告完畢
• 敬請指教!