1 / 29

網路伺服器應用 Linux Server

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

shanna
Download Presentation

網路伺服器應用 Linux Server

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 網路伺服器應用Linux Server Andres, Wen-Yuan Liao Department of Computer Science and Engineering De Lin Institute of Technology andres@dlit.edu.tw http://www.cse.dlit.edu.tw/~andres

  2. Chapter 11 簡易 Firewall 架設

  3. 11.1 Firewall(防火牆) • Proxy • IP Filter • 2.0.xx: ipfwadm • 2.2.xx : ipchains • 2.4.xx : iptables • TCP Wrappers

  4. 抵擋的方法 • 拒絕讓封包進入主機的某些 port • 拒絕讓某些來源 IP 的封包進入 • 拒絕讓帶有某些特殊旗標( flag )的封包進入 • SYN 的主動連線的旗標 • 防火牆的規則 • 一行一行依序來檢查的,若符合任何一條規則,則予以動作(接受或丟棄),否則繼續往下檢查到最後一條

  5. 11.2 Linux Firewall • Iptables module • lsmod • rmmod ipchains • modprobe ip_tables • /sbin/iptables

  6. tables • 至少有兩個 table • Filter table • 預設 • 管理主機的安全 • nat table • 處理 NAT 的功能

  7. 清除規則 • /sbin/iptables [-FXZ]-F :清除所有的已訂定的規則 -X :殺掉所有使用者建立的 tables-Z :將所有 tables的計數與流量統計歸零 • 在遠端連線時,這三個指令必須要用 scripts 來連續執行 • example: /sbin/iptables -F /sbin/iptables -X /sbin/iptables -Z

  8. 定義政策( 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:在進入路由之後進行的工作

  9. 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

  10. 增加、插入規則 • /sbin/iptables [-AI] [INPUT,OUTPUT,FORWARD] [-io interface] [-p TCP,UDP] [-s IP/network] [--sport ports] [-d IP/network] [--dport ports] -j [ACCEPT,DROP]-A    :新增加一條規則在最後面一行 -I   :在第一條規則加入 INPUT  :封包為輸入主機的方向 OUTPUT :封包為輸出主機的方向 FORWARD:封包為不進入主機而向外再傳輸出去的方向

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

  12. 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 時,就予以接受

  13. 規則模式 • 關閉所有的,開放特定的 • 政策上( Policy ) • 先選擇 ACCEPT • 然後在最後一行才以 NEW, INVALID 的狀態來關閉所有的服務之 port

  14. 11.3 Firewall example • /usr/local/virus/iptables/ • iptables.rule • 設定規則的檔案,包括清除防火牆規則、載入模組、設定一些服務的登入與否等等 • iptables.deny • iptables.allow

  15. iptables.rule EXTIF="ppp0" INIF="eth0"  INNET="192.168.1.0/24

  16. 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

  17. 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

  18. 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

  19. 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

  20. 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

  21. 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

  22. 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

  23. 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

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

  25. 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

  26. /etc/rc.d/rc.local • /usr/local/virus/iptables/iptables.rule

  27. 11.4 TCP_Wrappers • /usr/sbin/tcpd • 進行 TCP 的檢驗工作 • 檢驗流程設定檔 • /etc/hosts.allow • /etc/hosts.deny • 一設定完畢立刻就生效

  28. <服務名稱> :  <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

  29. 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

More Related