20150715 twnic-南區-葉永信 linux監控及系統安全

104
Linux系統安全、Linux系統 監控平台實作Linux牆介紹與實作 國網中 葉永信 2015.07.15

Transcript of 20150715 twnic-南區-葉永信 linux監控及系統安全

Page 1: 20150715 twnic-南區-葉永信 linux監控及系統安全

Linux系統安全、Linux系統監控平台實作、Linux防⽕火

牆介紹與實作國網中⼼心 葉永信 2015.07.15

Page 2: 20150715 twnic-南區-葉永信 linux監控及系統安全

在上課前• 有⽤用過Linux?

• 看得懂chmod 4700

• 會⽤用Linux上任⼀一套⽂文字編輯軟體?

• 學過TCP/IP

• 有⽤用過ping、traceroute?

• 知道IP是什麼?domain name是什麼?

• 會寫程式的⼈人?

• perl、shell script

Page 3: 20150715 twnic-南區-葉永信 linux監控及系統安全

Linux系統安全

Page 4: 20150715 twnic-南區-葉永信 linux監控及系統安全

⼤大綱• 本機環境安全

• 檔案系統⺫⽬目錄要提⼀一下嗎?

• 開機流程要提⼀一下嗎?init runlevel?

• 多⼈人多⼯工、Shell、UID、permission、password

• PAM+LDAP

• 網路連線安全

• TCP、UDP、Listening port

• 發⽣生問題時syslog是你的好幫⼿手

• 安全簡單做

Page 5: 20150715 twnic-南區-葉永信 linux監控及系統安全

Linux開機流程

• 忘記密碼時怎麼辦?

• 開不了機怎麼辦?

• 有安全模式可以⽤用嗎?

• run level 1 2 3 4 5 6

Page 6: 20150715 twnic-南區-葉永信 linux監控及系統安全

runlevels

• A runlevel is a preset operating state on a Unix-like operating system.

Page 7: 20150715 twnic-南區-葉永信 linux監控及系統安全

runlevels

Page 8: 20150715 twnic-南區-葉永信 linux監控及系統安全

Linux開機流程• 忘記密碼時怎麼辦?

• 進單⼈人模式

• 開不了機怎麼辦?

• 砍掉重練

• ⽤用安裝光碟進去重裝系統

• fsck -y

• 救資料先

• 拆硬碟?

• 送修

• 有安全模式可以⽤用嗎?同上

Page 9: 20150715 twnic-南區-葉永信 linux監控及系統安全

多⼈人多⼯工是什麼?

• 桌機是windows的⼈人?

• ⽤用了Linux就體驗了多⼈人多⼯工了嗎?

• 與⼈人共享過主機的⼈人?

• 不⼩小⼼心與⼈人共享主機的⼈人?

• 有在⽤用伺服器的習慣?

• 磁碟分享?

Page 10: 20150715 twnic-南區-葉永信 linux監控及系統安全

Linux是如何管理權限問題的

• 如何利⽤用uid gid做權限的管理?

• UID 0代表什麼?

• set uid是什麼?

• set gid是什麼?

• 為什麼要set uid gid?

• 它危險嗎?

Page 11: 20150715 twnic-南區-葉永信 linux監控及系統安全

There are three types of permissions

• read access

• write access

• execute access

Page 12: 20150715 twnic-南區-葉永信 linux監控及系統安全

Permissions are defined for three types of users

• owner of the file

• group that the owner belongs to

• other users

Page 13: 20150715 twnic-南區-葉永信 linux監控及系統安全

Numeric (octal) representation

• 0--- 000 All types of access are denied

• 1--x001 Execute access is allowed only

• 2-w-010 Write access is allowed only

• 3-wx011 Write and execute access are allowed

• 4r-- 100 Read access is allowed only

• 5r-x 101 Read and execute access are allowed

• 6rw-110 Read and write access are allowed

• 7rwx111 Everything is allowed

Page 14: 20150715 twnic-南區-葉永信 linux監控及系統安全

Access type

• File

• Read

• Writecan write to file

• Execute can be executed

• Folder

• can readcan listing

• can create, rename, delete files in direcory

• can pass through or into

Page 15: 20150715 twnic-南區-葉永信 linux監控及系統安全

Special bit

• setuid

• Execute file with owner permission (example: program su)

• -rws------

• bit:4000

Page 16: 20150715 twnic-南區-葉永信 linux監控及系統安全

setgid

• If file execute this with group permission.

• If folder save every file into folder with folder group permission. All file in folder have been the same group.

• -rwxrws---

• bit:2000

Page 17: 20150715 twnic-南區-葉永信 linux監控及系統安全

sticky

• If file already is not supported

• If folder has sticky bit can delete files into folder only owner of file or superuser.

• -rwxrwxrwt

• bit:1000

Page 18: 20150715 twnic-南區-葉永信 linux監控及系統安全

PAM+LDAP

• PAM 可插拔的認證管理系統

• LDAP-重(誤)量級⺫⽬目錄存取協定

Page 19: 20150715 twnic-南區-葉永信 linux監控及系統安全

WHY PAM LDAP

• 簡單的說,把所有需要存取的主機的密碼統⼀一管理

• YP

• NIS+

• LDAP

• MYSQL

• AD, Active Directory

• SAMBA

Page 20: 20150715 twnic-南區-葉永信 linux監控及系統安全

網路連線安全

• 不⼩小⼼心進到別⼈人的主機時要先下什麼指令?

• exit

• rm -rf *

• id

• w

• last

Page 21: 20150715 twnic-南區-葉永信 linux監控及系統安全

TCP、UDP、port各是什麼?

• ⼀一定要使⽤用防⽕火牆,才可以限制來訪者?

• apache

• telnet

• ssh

• ftp

• 各有各的限制⽅方法,通通可以講給你聽?還是我們問google就好了?

Page 22: 20150715 twnic-南區-葉永信 linux監控及系統安全

發⽣生問題時syslog是你的好朋友

• ⾸首先是syslog沒有在問題中死去

• 再者是syslog有錄到你要的東⻄西

• 第三點是syslog的量是⼈人可以看得完的?

• 以上三點都不能解決,那我們還要放syslog嗎?

Page 23: 20150715 twnic-南區-葉永信 linux監控及系統安全

syslog解決⽅方案

• ⽤用資料庫?

• remote log everything

• rsyslog

• syslog-ng

• 你有錢嗎?

Page 24: 20150715 twnic-南區-葉永信 linux監控及系統安全

搭配syslog的解決⽅方案

• ELK?

• graylog?

• 500MB/day流量以下 splunk

Page 25: 20150715 twnic-南區-葉永信 linux監控及系統安全

安全簡單做• 套件更新

• 關閉服務

• TCP wrapper或防⽕火牆規則

• 以最⼩小的權限執⾏行服務

• 什麼叫以最⼩小的權限?如何做?

• 限制檔案系統

• chroot

• ⼯工具

Page 26: 20150715 twnic-南區-葉永信 linux監控及系統安全

套件更新

• yum update

• apt-get upgrade

• pacman

• compile from source

• 出問題的是設定

Page 27: 20150715 twnic-南區-葉永信 linux監控及系統安全

關閉服務

• 關閉服務前

• 最重要的⼀一件事就是,要知道它是什麼服務 O_O

• 失⼿手的經歷

• yum remove python

• 然後yum就死掉了

• 關聯性

• 再把它裝回來

Page 28: 20150715 twnic-南區-葉永信 linux監控及系統安全

TCP Wrappers & xinetd

• The TCP Wrappers package (tcp_wrappers) is installed by default and provides host-based access control to network services.

Page 29: 20150715 twnic-南區-葉永信 linux監控及系統安全

chroot

• A chroot on Unix operating systems is an operation that changes the apparent root directory for the current running process and its children.

• chroot service

• ftp?

• bind?

Page 30: 20150715 twnic-南區-葉永信 linux監控及系統安全

資安計畫• 最⼩小權限原則(Principle of least privilege)

• 也就是使⽤用者只能⽤用到與⼯工作相關的最少權限

• 職責分離原則(Segregation of duties)

• 必須要多⼈人同意才能做出重⼤大改變

• 以及需要知道(Need to know)原則

• 也就是只有真正需要的⼈人才能擁有進⼊入這些資源的管道。有些IT⼈人員會採購經過包裝的產品,⽽而這些產品僅使⽤用⼀一般防毒軟體與沙盒,卻強調可以提供現成的端點安全防護, 以致於攻擊者往往都可以突破這些防守。

• 抄來的,http://news.networkmagazine.com.tw/magazine/2013/04/29/49646/

Page 31: 20150715 twnic-南區-葉永信 linux監控及系統安全

⼯工具通常都很無聊log通常都很煩

Page 32: 20150715 twnic-南區-葉永信 linux監控及系統安全
Page 33: 20150715 twnic-南區-葉永信 linux監控及系統安全

⼀一些常⽤用的⼯工具

• netstat

• lsof

• tcpdump

• strings

• grep

• file

Page 34: 20150715 twnic-南區-葉永信 linux監控及系統安全

休息?

Page 35: 20150715 twnic-南區-葉永信 linux監控及系統安全

nagios 的未來式 icinga2

Page 36: 20150715 twnic-南區-葉永信 linux監控及系統安全

⼤大綱• 監控⼯工具選擇討論

• icinga2安裝

• ⼊入⾨門說明

• 實習

• 監控檢查的⽅方法

• 伺服器警告通知設定

• 多zone監控以及cluster

• 實習

• 問題與討論

Page 37: 20150715 twnic-南區-葉永信 linux監控及系統安全

監控⼯工具選擇

• nagios

• zabbix

• cacti

• munin

• nagios vs icinga2

• nagios with pnp4nagios

• icinga2 with graphite

Page 38: 20150715 twnic-南區-葉永信 linux監控及系統安全
Page 39: 20150715 twnic-南區-葉永信 linux監控及系統安全
Page 40: 20150715 twnic-南區-葉永信 linux監控及系統安全
Page 41: 20150715 twnic-南區-葉永信 linux監控及系統安全
Page 42: 20150715 twnic-南區-葉永信 linux監控及系統安全
Page 43: 20150715 twnic-南區-葉永信 linux監控及系統安全
Page 44: 20150715 twnic-南區-葉永信 linux監控及系統安全
Page 45: 20150715 twnic-南區-葉永信 linux監控及系統安全
Page 46: 20150715 twnic-南區-葉永信 linux監控及系統安全
Page 47: 20150715 twnic-南區-葉永信 linux監控及系統安全
Page 48: 20150715 twnic-南區-葉永信 linux監控及系統安全
Page 49: 20150715 twnic-南區-葉永信 linux監控及系統安全
Page 50: 20150715 twnic-南區-葉永信 linux監控及系統安全

安裝• 安裝icinga2

• 安裝資料庫及設定

• enable ido-mysql feature

• mysql and schema import

• 安裝網⾴頁介⾯面及設定

• nginx

• apache

• web schema import

• icingaweb2 setting

Page 51: 20150715 twnic-南區-葉永信 linux監控及系統安全

⼊入⾨門說明

• 最基本的監控

• 在組態中增加⼀一組主機

• 組態檔的⺫⽬目錄及檔案說明

• 語法的解釋及其參考資訊

Page 52: 20150715 twnic-南區-葉永信 linux監控及系統安全

實習

lab 1, 安裝icinga2、設定apache、設定mysql lab 2, 為您的主機加上⼀一組ping4 check lab 3, 安裝icingaweb

做完的⼈人可以來聊聊監控的難題

Page 53: 20150715 twnic-南區-葉永信 linux監控及系統安全

• google

• nagios yum install

• yum install

• icinga2-classicui-config icinga-gui

• icinga2 feature enable statusdata compatlog command

• icinga2 feature enable command

• http://你的ip/icinga

• icingaadmin icingaadmin

• htpasswd /usr/local/icinga/etc/htpasswd.users <username>

Page 54: 20150715 twnic-南區-葉永信 linux監控及系統安全

• yum install mysql

• yum install apache

Page 55: 20150715 twnic-南區-葉永信 linux監控及系統安全

• ls -R /etc | grep icinga

• grep -R icinga /etc/httpd/*

Page 56: 20150715 twnic-南區-葉永信 linux監控及系統安全

• object Host "cwb.dprc" {

• import "generic-host"

• address = "140.116.77.29"

• vars.ping_wrta = 300

• vars.ping_wpl = 30

• vars.ping_crta = 500

• vars.ping_cpl = 60

• vars.os = "Linux"

• vars.notification["mail"] = {

• groups = [ "icingaadmins" ]

• }

• }

Page 57: 20150715 twnic-南區-葉永信 linux監控及系統安全

監控檢查的⽅方法

• 主動、被動、agent less、agent

• nrpe nsclient++

• icinga2 as bridge of command

• 被動式nsca、nsca-ng

• 新增⾃自有程式的執⾏行結果檢查

• 將被動式檢查⽅方式改成主動檢查

Page 58: 20150715 twnic-南區-葉永信 linux監控及系統安全

伺服器告警通知設定

• 聯絡⼈人以及群組設定

• 告警時間週期設定

• sned email to gmail dkim設定

Page 59: 20150715 twnic-南區-葉永信 linux監控及系統安全

多zone監控以及cluster

• zone的概念

• 每個zone可以設⼀一到多台master

Page 60: 20150715 twnic-南區-葉永信 linux監控及系統安全

實習

• lab 1, 請設定⼀一組主機或服務失效時發出email告警

• lab 2, 請設定⼀一組被動監控

• lab 3, 有在coding的⼈人要試⼀一下⾃自定流程監控嗎?

• 覺得太簡單的⼈人可以來聊聊,DMZ內監控以及cluster監控主機的問題

Page 61: 20150715 twnic-南區-葉永信 linux監控及系統安全

問題與討論, 要聊聊nagios及icinga2開發團隊的歷史與⼋八卦嗎?

Page 62: 20150715 twnic-南區-葉永信 linux監控及系統安全

Linux防⽕火牆的第⼀一個問題,防⽕火牆可以擋⽊木⾺馬嗎?

Page 63: 20150715 twnic-南區-葉永信 linux監控及系統安全

⼤大綱

• netfilter vs iptables

• netfilter

• table、chain、rule、policy、state

• iptables指令說明

• 範例

• 僅ssh能通過

• web server

Page 64: 20150715 twnic-南區-葉永信 linux監控及系統安全

概念、原理、定義武功⼼心法

Page 65: 20150715 twnic-南區-葉永信 linux監控及系統安全

chain

• INPUT:經網卡進⼊入的封包

• OUTPUT:經網卡出去的封包

• FORWARD:經網卡進⼊入 / 出去轉送的封包

• PREROUTING:改變經網卡進⼊入的封包狀態 ( DNAT / REDIRECT )

• POSTROUTING:改變經網卡出去的封包狀態 ( SNAT / MASQUERADE )

Page 66: 20150715 twnic-南區-葉永信 linux監控及系統安全

table

• filter:可以處理 INPUT、OUTPUT、FORWARD 封包狀態 (Default)

• nat:可以處理 OUTPUT、PREROUTING、POSTROUTING 封包狀態

• mangle:可以處理 INPUT、OUTPUT、FORWRD、PREROUTING、POSTROUTING 封包狀態

Page 67: 20150715 twnic-南區-葉永信 linux監控及系統安全

封包狀態(state)

• NEW:⼀一個新的連線封包 (建⽴立新連線後的第⼀一個封包)

• ESTABLISHED:成功建⽴立的連線,即建⽴立追蹤連線後所有封包狀態 (跟在 NEW 封包後⾯面的所有封包)

• RELATED:新建連線,由 ESTABLISHED session 所建⽴立的新獨⽴立連線 (ex. ftp-data 連線)

• INVALID:⾮非法連線狀態的封包 (DROP 封包)

• UNKOWN:不明連線狀態的封包

Page 68: 20150715 twnic-南區-葉永信 linux監控及系統安全

IPTables 封包處理政策 (Policy) 及 ⺫⽬目標 (Target)• ACCEPT:允許封包移動⾄至⺫⽬目的地或另⼀一個 chain

• DROP:丟棄封包、不回應要求、不傳送失敗訊息

• REJECT:拒絕封包、回應要求、傳送失敗訊息

• SNAT:修改 Source Socket

• DNAT:修改 Destination Socket

• MASQUERADE:動態修改 Source Socket (無法指定 IP,取當時網卡的 IP),較⽅方便但效率較差

• REDIRECT:將連線導⾄至本機⾏行程 (Local Process)

• RETURN:結束⾃自⾏行定義的 Chain 然後返回原來的 Chain 繼續跑規則 (rules)

• QUEUE:封包排隊等待處理

• LOG:記錄指定的規則封包 (/etc/syslog.conf , default /var/log/messges)

Page 69: 20150715 twnic-南區-葉永信 linux監控及系統安全
Page 70: 20150715 twnic-南區-葉永信 linux監控及系統安全

指令、實做、範例武功招式

Page 71: 20150715 twnic-南區-葉永信 linux監控及系統安全

IPTables 指令參數

• 處理 iptables 規則時常⽤用到如下參數

• -h:help information

• -V:顯⽰示 iptables 版本

• -I:將規則插⼊入⾄至最前⾯面 or 加上號碼插⼊入指定處

• -A:將規則插⼊入⾄至最後⾯面

• -R:取代指定的規則 (加上規則號碼)

• -D:刪除指定的規則 (加上規則號碼)

• -F:刪除所有的規則

Page 72: 20150715 twnic-南區-葉永信 linux監控及系統安全

IPTables 指令參數

• 處理 iptables 規則鏈(chain)時常⽤用到如下參數

• -N:建⽴立新的規則鏈(chain)

• -X:刪除指定的規則鏈(chain)

• -E:更改指定的規則鏈(chain)名稱

• -P:變更指定規則鏈(chain)的政策 (ex. policy for DROP、REJECT、ACCEPT)

• -Z:將 iptables 計數器歸零

Page 73: 20150715 twnic-南區-葉永信 linux監控及系統安全

IPTables 指令參數

• 查看⺫⽬目前 iptables 規則時常⽤用到如下參數

• -L:列出⺫⽬目前 iptables 規則 (會執⾏行 DNS 位址解析)

• -n:不使⽤用 DNS 解析直接以 IP 位址顯⽰示

• -v:顯⽰示⺫⽬目前 iptables 規則處理的封包數

• -x:顯⽰示完整封包數 (ex.顯⽰示 1151519,⽽而不是 12M)

Page 74: 20150715 twnic-南區-葉永信 linux監控及系統安全

IPTables 指令參數• -i 網路介⾯面:-i 為 in 網路介⾯面就填 eth0... (⽤用於 PREROUTING、INPUT、FORWARD)

• -o 網路介⾯面:-o 為 out 網路介⾯面就填 eth0... (⽤用於 POSTROUTING、OUTPUT、FORWARD)

• -m 模組:state、mac、limit、owner、multiport...

• -p 協定:tcp、upd、icmp...

• -s 來源:可為 IP Address、IP 網段、網域名稱

• --sport:指定封包來源 Port、Port Range (配合 -p tcp、-p udp)

• -d ⺫⽬目的地:可為 IP、IP 網段、網域名稱

• --dport:指定封包⺫⽬目的地 Port、Port Range (配合 -p tcp、-p udp)

• -j 政策 / ⺫⽬目標:ACCEPT、DROP、REJECT、SNAT、DNAT、MASQUERADE、REDIRECT、RETURN...

Page 75: 20150715 twnic-南區-葉永信 linux監控及系統安全

除了練習,還是練習

Page 76: 20150715 twnic-南區-葉永信 linux監控及系統安全

東⻄西在那裡

• /etc/sysconfig/iptables

• service iptables save、reload、restart、stop、status

Page 77: 20150715 twnic-南區-葉永信 linux監控及系統安全

清除所有的規則• ###-----------------------------------------------------###

• # 清除先前的設定

• ###-----------------------------------------------------###

• # 清除預設表 filter 中,所有規則鏈中的規則

• iptables -F

• # 清除預設表 filter 中,使⽤用者⾃自訂鏈中的規則

• iptables -X

• # 清除mangle表中,所有規則鏈中的規則

• iptables -F -t mangle

• # 清除mangle表中,使⽤用者⾃自訂鏈中的規則

• iptables -t mangle -X

• # 清除nat表中,所有規則鏈中的規則

• iptables -F -t nat

Page 78: 20150715 twnic-南區-葉永信 linux監控及系統安全

定義policy

• # Policy指的是當進來的封包不屬於rule中的任何⼀一條時,所預設的動作。

• iptables -P INPUT DROP

• iptables -P OUTPUT ACCEPT

• iptables -P FORWARD ACCEPT

Page 79: 20150715 twnic-南區-葉永信 linux監控及系統安全

增加與插⼊入規則 例1

• 所有的來⾃自 lo 這個介⾯面的封包,都予以接受

• [root@test root]# iptables -A INPUT -i lo -j ACCEPT

• # 注意⼀一下,因為 -d, --dport, -s, --sport 等等參數都沒有設定,這表⽰示:

• # 不論封包來⾃自何處或去到哪裡,只要是來⾃自 lo 這個介⾯面,就予以接受!

• # 這個觀念挺重要的,就是『沒有設定的規定,則表⽰示該規定完全接受』的意思!

• # 例如這個案例當中,關於 -s, -d...等等的參數沒有規定時!

Page 80: 20150715 twnic-南區-葉永信 linux監控及系統安全

增加與插⼊入規則 例2

• 來⾃自 192.168.0.1 這個 IP 的封包都予以接受:

• [root@test root]# iptables -A INPUT -i eth0 -p tcp -s 192.168.0.1 -j ACCEPT

• # 新增⼀一條規則,只要是來⾃自於 192.168.0.1 的封包,不論他要去哪裡,

• # 使⽤用的是那個協定 (port) 主機都會予以接受的意思~

Page 81: 20150715 twnic-南區-葉永信 linux監控及系統安全

增加與插⼊入規則 例3

• 來⾃自 192.168.1.0 這個 C Class 的網域的任何⼀一部電腦,就予以接受!

• [root@test root]# iptables -A INPUT -i eth0 -p tcp -s 192.168.1.0/24 -j ACCEPT

• # 這個是網域的寫法喔!稍微注意⼀一下的是,在範例⼆二當中我們僅針對⼀一個 IP ,

• # ⾄至於這個範例當中,則是針對整個網域來開放吶!⽽而網域的寫法可以是:

• # 192.168.1.0/24 也可以是 192.168.1.0/255.255.255.0 都能夠接受喔!

Page 82: 20150715 twnic-南區-葉永信 linux監控及系統安全

增加與插⼊入規則 例4

• 來⾃自 192.168.1.25 的封包都給他丟棄去!

• [root@test root]# iptables -A INPUT -i eth0 -p tcp -s 192.168.1.25 -j DROP

Page 83: 20150715 twnic-南區-葉永信 linux監控及系統安全

增加與插⼊入規則 例5

• 來⾃自 192.168.0.24 這個 IP 的封包,想要到我的 137,138,139 埠⼝口時,都接受

• [root@test root]# iptables -A INPUT -i eth0 -p tcp -s 192.168.0.24/24 --dport 137:139 -j ACCEPT

Page 84: 20150715 twnic-南區-葉永信 linux監控及系統安全

參數說明重點中的重點,常常犯的錯誤就是在這裡

Page 85: 20150715 twnic-南區-葉永信 linux監控及系統安全

常常犯的錯誤就是在這裡

• -A :新增加⼀一條規則,該規則增加在最後⾯面,例如原本已經有四條規則, 使⽤用 -A 就可以加上第五條規則!

• -I :插⼊入⼀一條規則,如果沒有設定規則順序,預設是插⼊入變成第⼀一條規則, 例如原本有四條規則,使⽤用 -I 則該規則變成第⼀一條,⽽而原本四條變成 2~5

Page 86: 20150715 twnic-南區-葉永信 linux監控及系統安全

• INPUT:規則設定為 filter table 的 INPUT 鏈

• OUTPUT:規則設定為 filter table 的 OUTPUT 鏈

• FORWARD:規則設定為 filter table 的 FORWARD 鏈

• -i:設定『封包進⼊入』的網路卡介⾯面

• -o:設定『封包流出』的網路卡介⾯面

• interface :網路卡介⾯面,例如 ppp0, eth0, eth1....

Page 87: 20150715 twnic-南區-葉永信 linux監控及系統安全

• -p  :請注意,這是⼩小寫呦!封包的協定啦!

•  tcp :封包為 TCP 協定的封包;

•  upd :封包為 UDP 協定的封包;

•  icmp:封包為 ICMP 協定、

•  all :表⽰示為所有的封包!

Page 88: 20150715 twnic-南區-葉永信 linux監控及系統安全

• -s:來源封包的 IP 或者是 Network ( 網域 );

• --sport:來源封包的 port 號碼,

• 也可以使⽤用 port1:port2 如 21:23 同時通過 21,22,23 的意思

• -d:⺫⽬目標主機的 IP 或者是 Network ( 網域 );

• --dport:⺫⽬目標主機的 port 號碼

Page 89: 20150715 twnic-南區-葉永信 linux監控及系統安全

• -j:動作,可以接底下的動作;

•  ACCEPT :接受該封包

•  DROP  :丟棄封包

•  LOG  :將該封包的資訊記錄下來 (預設記錄到 /var/log/messages 檔案)

Page 90: 20150715 twnic-南區-葉永信 linux監控及系統安全

範例、實作時間不夠⽤用的話,要派回家作業嗎?

Page 91: 20150715 twnic-南區-葉永信 linux監控及系統安全

打開核⼼心的forward功能

• 作法如下:

• ###-----------------------------------------------------###

• # 打開 forward 功能

• ###-----------------------------------------------------###

• echo "1" > /proc/sys/net/ipv4/ip_forward

Page 92: 20150715 twnic-南區-葉永信 linux監控及系統安全

開放某⼀一個介⾯面• iptables -A INPUT -i lo -j ACCEPT

• iptables -A OUTPUT -o lo -j ACCEPT

• 註:IPFW 或 Netfilter 的封包流向,local process 不會經過 FORWARD Chain,

• 因此 lo 只在 INPUT 及 OUTPUT ⼆二個 chain 作⽤用。

• iptables -A INPUT -i eth1 -j ACCEPT

• iptables -A OUTPUT -o eth1 -j ACCEPT

• iptables -A FORWARD -i eth1 -j ACCEPT

• iptables -A FORWARD -o eth1 -j ACCEPT

Page 93: 20150715 twnic-南區-葉永信 linux監控及系統安全

IP 偽裝• 使內部網路的封包經過偽裝之後,使⽤用對外的 eth0 網卡當作代表號,對外連線。作法如下:

•  

• ###-----------------------------------------------------###

• # 啟動內部對外轉址

• ###-----------------------------------------------------###

• iptables -t nat -A POSTROUTING -o eth0 -s 172.16.0.0/16 -j SNAT --to-source $FW_IP

•  

Page 94: 20150715 twnic-南區-葉永信 linux監控及系統安全

虛擬主機• 利⽤用轉址、轉 port 的⽅方式,使外部網路的封包,可以到達內部網路中的伺服主機,俗稱虛擬主機。這種⽅方式可保護伺服主機⼤大部份的 port 不被外界存取,只開放公開服務的通道(如 Web Server port 80),因此安全性甚⾼高。

• 作法如下:

• ###-----------------------------------------------------###

• # 啟動外部對內部轉址

• ###-----------------------------------------------------###

• # 凡對 $FW_IP:80 連線者, 則轉址⾄至 172.16.255.2:80

• iptables -t nat -A PREROUTING -i eth0 -p tcp -d $FW_IP --dport 80 -j DNAT --to-destination 172.16.255.2:80

Page 95: 20150715 twnic-南區-葉永信 linux監控及系統安全

開放內部主機可以 telnet ⾄至外部的主機• 作法如下:(預設 policy 為 DROP)

• ###-----------------------------------------------------###

• # open 外部主機 telnet port 23

• ###-----------------------------------------------------###

• iptables -A OUTPUT -o eth0 -p tcp -s $FW_IP --sport 1024:65535 -d any/0 --dport 23 -j ACCEPT

• iptables -A INPUT -i eth0 -p tcp ! --syn -s any/0 --sport 23 -d $FW_IP --dport 1024:65535 -j ACCEPT

Page 96: 20150715 twnic-南區-葉永信 linux監控及系統安全

開放郵包轉遞通道• 開放任意的郵件主機送信包給你的 Mail Server,⽽而你的 Mail Server 也可以送信包過去。

• 作法如下:(預設 policy 為 DROP)

• ###-----------------------------------------------------###

• # open SMTP port 25

• ###-----------------------------------------------------###

• # 以下是:別⼈人可以送信給你

• iptables -A INPUT -i eth0 -p tcp -s any/0 --sport 1024:65535 -d $FW_IP --dport 25 -j ACCEPT

• iptables -A OUTPUT -o eth0 -p tcp ! --syn -s $FW_IP --sport 25 -d any/0 --dport 1024:65535 -j ACCEPT

• # 以下是:你可以送信給別⼈人

• iptables -A OUTPUT -o eth0 -p tcp -s $FW_IP --sport 1024:65535 -d any/0 --dport 25 -j ACCEPT

• iptables -A INPUT -i eth0 -p tcp ! --syn -s any/0 --sport 25 -d $FW_IP --dport 1024:65525 -j ACCEPT

Page 97: 20150715 twnic-南區-葉永信 linux監控及系統安全

開放對外離線下載信件的通道• 開放內部網路可以對外部網路的 POP3 server 取信件。

• 作法如下:(預設 policy 為 DROP)

• ###-----------------------------------------------------###

• # open 對外部主機的 POP3 port 110

• ###-----------------------------------------------------###

• iptables -A OUTPUT -o eth0 -p tcp -s $FW_IP --sport 1024:65535 -d any/0 --dport 110 -j ACCEPT

• iptables -A INPUT -i eth0 -p tcp ! --syn -s any/0 --sport 110 -d $FW_IP --dport 1024:65535 -j ACCEPT

Page 98: 20150715 twnic-南區-葉永信 linux監控及系統安全

讓主機主動建⽴立的連線可以進來

• iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

• # NAT

• iptables -t nat -A POSTROUTING -o $EIF -s $INNET -j MASQUERADE

Page 99: 20150715 twnic-南區-葉永信 linux監控及系統安全

設定主機上提供的服務可讓外部網路存取

• iptables -A INPUT -i $EIF -p tcp --dport 22 -j ACCEPT # ssh

• iptables -A INPUT -i $EIF -p udp --dport 22 -j ACCEPT

• iptables -A INPUT -i $EIF -p tcp --dport 80 -j ACCEPT # http

Page 100: 20150715 twnic-南區-葉永信 linux監控及系統安全

允許 SSH 可連接該主機• *filter

• :INPUT DROP [0:0]

• :FORWARD DROP [0:0]

• :OUTPUT ACCEPT [0:0]

• -A INPUT -i lo -j ACCEPT //pass Loopback

• -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT //keep state

• -A INPUT -p icmp -m icmp --icmp-type any -j ACCEPT //pass icmp protocol

• -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT //pass ssh

• COMMIT

Page 101: 20150715 twnic-南區-葉永信 linux監控及系統安全

查看我們剛才設定的規則• #/etc/rc.d/init.d/iptables status

• Table: filter

• Chain INPUT (policy DROP)

• num target prot opt source destination

• 1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0

• 2 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED

• 3 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 255

• 4 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22

• Chain FORWARD (policy DROP)

• num target prot opt source destination

• Chain OUTPUT (policy ACCEPT)

• num target prot opt source destination

Page 102: 20150715 twnic-南區-葉永信 linux監控及系統安全

Web Server 防⽕火牆規則設定• #cat /etc/sysconfig/iptables

• *filter

• :INPUT DROP [0:0] //定義 INPUT Policy

• :FORWARD DROP [0:0] //定義 FORWARD Policy

• :OUTPUT ACCEPT [0:0] //定義 OUTPUT Policy

• -A INPUT -i lo -j ACCEPT //pass Loopback

• -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT //keep state

• -A INPUT -p icmp -m icmp --icmp-type any -j ACCEPT //pass icmp protocol

• -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT //pass ssh

• -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT //pass http

• COMMIT

Page 103: 20150715 twnic-南區-葉永信 linux監控及系統安全

所有的東⻄西都是抄來的

• http://s2.naes.tn.edu.tw/~kv/iptables.htm

• http://linux.vbird.org/linux_server/0250simple_firewall.php

• http://wiki.weithenn.org/cgi-bin/wiki.pl?IPTables-Linux_Firewall

Page 104: 20150715 twnic-南區-葉永信 linux監控及系統安全

結束了