網路伺服器應用 linux server

29
網網網網網網網 Linux Server Andres, Wen-Yuan Liao Department of Computer Science and Enginee ring De Lin Institute of Technology [email protected] http://www.cse.dlit.edu.tw/~andres

Upload: shanna

Post on 12-Jan-2016

35 views

Category:

Documents


1 download

DESCRIPTION

網路伺服器應用 Linux Server. Andres, Wen-Yuan Liao Department of Computer Science and Engineering De Lin Institute of Technology [email protected] http://www.cse.dlit.edu.tw/~andres. Chapter 11 簡易 Firewall 架設. 11.1 Firewall( 防火牆 ). Proxy IP Filter 2.0.xx: ipfwadm 2.2.xx : ipchains - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 網路伺服器應用 Linux Server

網路伺服器應用Linux Server

Andres, Wen-Yuan Liao

Department of Computer Science and EngineeringDe Lin Institute of Technology

[email protected]://www.cse.dlit.edu.tw/~andres

Page 2: 網路伺服器應用 Linux Server

Chapter 11 簡易 Firewall 架設

Page 3: 網路伺服器應用 Linux Server

11.1 Firewall( 防火牆 )

Proxy IP Filter

– 2.0.xx: ipfwadm– 2.2.xx : ipchains– 2.4.xx : iptables

TCP Wrappers

Page 4: 網路伺服器應用 Linux Server

抵擋的方法

拒絕讓封包進入主機的某些 port 拒絕讓某些來源 IP 的封包進入 拒絕讓帶有某些特殊旗標 ( flag ) 的封包進入

– SYN 的主動連線的旗標 防火牆的規則

– 一行一行依序來檢查的,若符合任何一條規則,則予以動作 ( 接受或丟棄 ) ,否則繼續往下檢查到最後一條

Page 5: 網路伺服器應用 Linux Server

11.2 Linux Firewall

Iptables module– lsmod– rmmod ipchains– modprobe ip_tables– /sbin/iptables

Page 6: 網路伺服器應用 Linux Server

tables

至少有兩個 table– Filter table

預設 管理主機的安全

– nat table 處理 NAT 的功能

Page 7: 網路伺服器應用 Linux Server

清除規則

/sbin/iptables [-FXZ] -F :清除所有的已訂定的規則 -X :殺掉所有使用者建立的 tables-Z :將所有 tables 的計數與流量統計歸零

在遠端連線時,這三個指令必須要用 scripts 來連續執行

example : /sbin/iptables -F /sbin/iptables -X /sbin/iptables -Z

Page 8: 網路伺服器應用 Linux Server

定義政策 ( Policy )

/sbin/iptables [-t tables] [-P] [INPUT,OUTPUT,FORWARD| PREROUTING,OUTPUT,POSTROUTING] [ACCEPT,DROP] 參數說明: -t   :定義 table tables : table 的名稱,例如 nat -P   :定義政策 ( Policy ) INPUT  :封包為輸入主機的方向 OUTPUT :封包為輸出主機的方向 FORWARD :封包為不進入主機而向外再傳輸出去的方向 PREROUTING :在進入路由之前進行的工作 OUTPUT    :封包為輸出主機的方向 POSTROUTING :在進入路由之後進行的工作

Page 9: 網路伺服器應用 Linux Server

Example

/sbin/iptables -P   INPUT ACCEPT /sbin/iptables -P  OUTPUT ACCEPT /sbin/iptables -P FORWARD ACCEPT /sbin/iptables -t nat -P  PREROUTING ACCEPT /sbin/iptables -t nat -P      OUTPUT ACCEPT /sbin/iptables -t nat -P POSTROUTING ACCEPT

Page 10: 網路伺服器應用 Linux Server

增加、插入規則 /sbin/iptables [-AI] [INPUT,OUTPUT,FORWARD] [-i

o interface] [-p TCP,UDP] [-s IP/network] [--sport ports] [-d IP/network] [--dport ports] -j [ACCEPT,DROP]

-A    :新增加一條規則在最後面一行 -I    :在第一條規則加入 INPUT   :封包為輸入主機的方向 OUTPUT :封包為輸出主機的方向 FORWARD :封包為不進入主機而向外再傳輸出去的方向

Page 11: 網路伺服器應用 Linux Server

增加、插入規則 -i     :流入的網卡介面

-o     :流出的網卡介面 interface :網路卡介面,例如 ppp0, eth0, eth1.... -p  :封包的協定TCP :封包為 TCP 協定的封包; UDP :封包為 UDP 協定的封包; -s     :來源封包的 IP 或者是 Network ( 網域 ) ; --sport :來源封包的 port 號碼; -d     :目標主機的 IP 或者是 Network ( 網域 ) ; --dport :目標主機的 port 號碼; -j    :動作,可以接底下的動作; ACCEPT :接受該封包 DROP   :丟棄封包

Page 12: 網路伺服器應用 Linux Server

Example

/sbin/iptables -A INPUT -i lo -j ACCEPT – 所有的來自 lo 這個介面的封包,都予以接受

/sbin/iptables -A INPUT -i eth0 -p TCP -s 192.168.0.1 -j ACCEPT – 來自 192.168.0.1 這個 IP 的封包都予以接受

/sbin/iptables -A INPUT -i eth0 -p TCP -s 192.168.1.0/24 -j ACCEPT – 來自 192.168.1.0 這個 C Class 的網域的任何一部電腦,就予以接受

/sbin/iptables -A INPUT -i eth0 -p TCP -s 192.168.1.25 -j DROP – 來自 192.168.1.25 的 IP 的封包,就直接全部給他丟棄

/sbin/iptables -A INPUT -i eth0 -p TCP --dport 21 -j DROP – 只要想要進來 21 這個 port 的封包,就把他丟棄

/sbin/iptables -A INPUT -i eth0 -p TCP -s 192.168.0.24 --dport 22 -j ACCEPT

– 來自 192.168.0.24 的主機,想要到我的 port 22 時,就予以接受

Page 13: 網路伺服器應用 Linux Server

規則模式– 關閉所有的,開放特定的

政策上 ( Policy )– 先選擇 ACCEPT – 然後在最後一行才以 NEW, INVALID 的狀態來關

閉所有的服務之 port

Page 14: 網路伺服器應用 Linux Server

11.3 Firewall example

/usr/local/virus/iptables/– iptables.rule

設定規則的檔案,包括清除防火牆規則、載入模組、設定一些服務的登入與否等等

– iptables.deny – iptables.allow

Page 15: 網路伺服器應用 Linux Server

iptables.rule

EXTIF="ppp0" INIF="eth0"  INNET="192.168.1.0/24

Page 16: 網路伺服器應用 Linux Server

1. Testing your Kernel version and remove the ipchains module

kver=`uname -r | cut -c 1-3`  if [ "$kver" != "2.4" ] && [ "$kver" != "2.5" ]; then     echo "Your Linux Kernel Version may not be suported by this script!"     echo "This scripts will not be runing"     exit fi

ipchains=`lsmod | grep ipchains` if [ "$ipchains" != "" ]; then     echo "unload ipchains in your system"     rmmod ipchains 2> /dev/null fi

Page 17: 網路伺服器應用 Linux Server

2. Loading some modules

PATH=/sbin:/bin:/usr/sbin:/usr/bin   export PATH EXTIF INIF INNET   modprobe ip_tables        > /dev/null 2>&1   modprobe iptable_nat      > /dev/null 2>&1   modprobe ip_nat_ftp       > /dev/null 2>&1   modprobe ip_conntrack     > /dev/null 2>&1   modprobe ip_conntrack_ftp > /dev/null 2>&1   modprobe ip_conntrack_irc > /dev/null 2>&1

Page 18: 網路伺服器應用 Linux Server

3. Clear the iptables's rules

  /sbin/iptables -F   /sbin/iptables -X   /sbin/iptables -Z   /sbin/iptables -F -t nat   /sbin/iptables -X -t nat   /sbin/iptables -Z -t nat   /sbin/iptables -P INPUT   ACCEPT   /sbin/iptables -P OUTPUT  ACCEPT   /sbin/iptables -P FORWARD ACCEPT   /sbin/iptables -t nat -P PREROUTING  ACCEPT   /sbin/iptables -t nat -P POSTROUTING ACCEPT   /sbin/iptables -t nat -P OUTPUT      ACCEPT

Page 19: 網路伺服器應用 Linux Server

4. Allow the lo and inside interface to access the server and internet

/sbin/iptables -A INPUT -i lo   -j ACCEPT

if [ "$INIF" != "" ]; then

   /sbin/iptables -A INPUT -i $INIF -j ACCEPT

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

   /sbin/iptables -t nat -A POSTROUTING -s $INNET -o

$EXTIF -j MASQUERADE

fi

Page 20: 網路伺服器應用 Linux Server

5. Deny and Allow IP or host or network from files

if [ -f /usr/local/virus/iptables/iptables.deny ]; then        /usr/local/virus/iptables/iptables.deny fi if [ -f /usr/local/virus/iptables/iptables.allow ]; then        /usr/local/virus/iptables/iptables.allow fi

Page 21: 網路伺服器應用 Linux Server

6. Allow ICMP come in

AICMP="0 3 3/4 4 11 12 14 16 18" for tyicmp in $AICMP  do         /sbin/iptables -A INPUT -i $EXTIF -p icmp --icmp-type $tyicmp -j ACCEPT done

Page 22: 網路伺服器應用 Linux Server

7. Allow services

/sbin/iptables -A INPUT -p TCP -i $EXTIF --dport  22 -j ACCEPT /sbin/iptables -A INPUT -p TCP -i $EXTIF --dport  25 -j ACCEPT /sbin/iptables -A INPUT -p UDP -i $EXTIF --dport  53 -j ACCEPT /sbin/iptables -A INPUT -p TCP -i $EXTIF --dport  53 -j ACCEPT /sbin/iptables -A INPUT -p TCP -i $EXTIF --dport  80 -j ACCEPT   /sbin/iptables -A INPUT -p TCP -i $EXTIF --dport 110 -j ACCEPT

Page 23: 網路伺服器應用 Linux Server

8. Allow RELATED and ESTABLISHED  

/sbin/iptables -A INPUT -m state --state ESTABLISHED,

RELATED -j ACCEPT

9. deny all /sbin/iptables -A INPUT -m state --state NEW,INVALID 

 -j DROP

Page 24: 網路伺服器應用 Linux Server

iptables.allow

/sbin/iptables -A INPUT  -i $EXTIF -s 140.116.44.0/24 -j ACCEPT

Page 25: 網路伺服器應用 Linux Server

iptables.deny

/sbin/iptables -A INPUT   -i $EXTIF -s 140.115.236.8   -j DROP /sbin/iptables -A INPUT   -i $EXTIF -s 140.120.13.237  -j DROP

Page 26: 網路伺服器應用 Linux Server

/etc/rc.d/rc.local

/usr/local/virus/iptables/iptables.rule

Page 27: 網路伺服器應用 Linux Server

11.4 TCP_Wrappers

/usr/sbin/tcpd – 進行 TCP 的檢驗工作

檢驗流程設定檔– /etc/hosts.allow– /etc/hosts.deny– 一設定完畢立刻就生效

Page 28: 網路伺服器應用 Linux Server

< 服務名稱 > :  <IP/network> : <action>

network 可使用 192.168.0.0/255.255.255.0 network 不可使用 192.168.0.0/24 /etc/hosts.allow

in.telnetd: 127.0.0.1 in.ftpd:    127.0.0.1

/etc/hosts.deny in.telnetd: 192.168.2.3

Page 29: 網路伺服器應用 Linux Server

Example

/etc/hosts.allow in.telnetd: 192.168.1.2, 192.168.1.10, 192.168.1.20in.ftpd:    192.168.1.2, 192.168.1.10, 102.168.1.20sshd:       192.168.1.0/255.255.255.0, xxx.yyy.zzz.qqq

/etc/hosts.deny in.telnetd: ALL in.ftpd:    ALL sshd:       ALL