2010年12月1日 星期三

CD router 路由軟體(6)防火牆

打從 linux 存在以來?

似乎沒有內建過其他 firewall ,一直都是 iptables 當家?或以「firewall」為主修改條件!

反觀「Free BSD」就有「 ipfw、ipnat、ipfilter」有幾大類專屬指令,也讓 freebsd 在設置上,變得輕鬆?

不管,反正是以 iptables 為主,沒其他問題!

國內除了鳥哥之外?「Linux 講解的一個好站!」

有詳細說明「iptables 的指令參數」要好好看ㄉ
http://www.weithenn.org/cgi-bin/wiki.pl?IPTables-Linux_Firewall
鳥哥的防火牆
http://linux.vbird.org/linux_server/0250simple_firewall.php
藍天工作室,過程非常完整唷!
http://itzone.hk/article/index.php?tid=14


先說明一些網路上看到的實用用技巧!
http://metavige.blogspot.com/2008/06/firestarter-iptables.html 


先是[ -F -X -Z ]清除預設防火牆原則

iptables -F
iptables -X
iptables -Z



設置允許公用 -P 訊息 「三個生效原則」

iptables -P INPUT DROP                     「進入消除」
iptables -P OUTPUT ACCEPT           「送出允許」
iptables -P FORWARD ACCEPT      「轉發允許」


設置 Loopback 的進出允許

iptables -A INPUT -i lo -j ACCEPT

設置各網路卡「eth0 | wlan0 | vmnet1 | vmnet8」生效的方式,用「替代字元 $ifcards」這招很讚!直接解決問題。

ifcards="eth0 wlan0 vmnet1 vmnet8"
for ifcard in $ifcards
do

建立 $ifcard 網路卡的連線生效

iptables -A INPUT -i $ifcard -m state --state RELATED,ESTABLISHED -j ACCEPT
done



回想關於鳥哥的硬體設置方式

EXTIF="eth1"           # 這個是可以連上 公用 IP 的網路介面
INIF="eth0"               # 內部 LAN 的連接介面;若無請填 ""
INIF="eth1"               # 內部 LAN 的連接介面;若無請填 ""
INIF="eth2"               # 內部 LAN 的連接介面;若無請填 ""

INNET="192.168.1.0/24"       # 內部 LAN 的網域,若沒有內部 LAN 請設定為 ""
export EXTIF INIF INNET       # 執行生效


-------------------------------------------------
CD router - iptables 設置 注意事項
-------------------------------------------------


我們要在 CD router 設置自己的 iptables 防火牆,為此?要先有一點步驟!

A.檢查網路結構

建議順序是「網路卡、外網、內網、路由表」設置是否生效,若未生效?就重新設置。


B.問題的根源,你有幾個網路通道,要開啟?

iptables 情況下?每多增加一張網路卡,就必須要多設置一種條件嗎?
iptables 環境下?每一個訊息正常訊息,什麼是「目標對象、目標來源、目標結果」的執行。

C.其他詭異問題?當設備不存在時,啟動 iptables 就不在管理當中?

案例:啟動 iptables 完成,在進行 re-pppoe-start 連線 ADSL 是否會正常?
答案:ppp+ 會被 iptables 排除在外,因此要先啟動 ADSL 在啟動「iptables」很這是很多人架設「IP分享」失敗的關鍵。


D.關於echo 1 > /proc/sys/net/ipv4/ip_forward 的迷失 NAT 技巧?


設置外網裝置eth0 10.1.1.1 對內廣播
同時設置
dhcpd 10.1.1.1
gw 10.1.1.1

即可經由 eth0 連線外網,但仍要說「這不安全」。
網路上已經有人說明過這種現象,因此?一般市面售出的「 IP 分享器」都有同樣的缺陷。
不論內建任何「簡易防火牆原則」,也都難以不被透析內部網路。

現象證明1;取自藍森林 自由軟件「http://www.lslnet.com/linux/f/docs1/i28/big5227931.htm」
-------------------------------------------------------------------------

用linux做NAT最後都要用上面一句話打開ip轉發。

昨天做了個實驗無意中發現,這個好像不是我想的那樣工作的。
1,本來是想做NAT的,但是忘了加iptables,只
 

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

網關eth0 192.168.0.10  |  eth1 192.168.1.1
 

eth0連到公司網絡,相對來說是外網了(192.168.0.0/24),eth1連到我們這個部門,相對來說是內網了 (192.168.1.0/24)沒有加Iptables當然不能出去了,但是我發現,內網可以訪問外網的一台機器 192.168.0.31,ping,telnet,ftp都可以,其他外網機器不能訪問!!!,現在沒有做任何iptables啊,為了確信沒有 iptables,我iptables -t nat -F,清了一次,還是可以通,不能理解!!!
 

乾脆我到192.168.0.31上,試著ping 192.168.1.X內網的機器,居然是通的,各種服務都可以!!!這還有什麼安全性可言啊。檢查192.168.0.31的設置,發現它的 default gw 是192.168.0.10,我猜想是不是ip_forward,打開以後就分別轉發來自兩個端口的包?
 

2,加了iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE以後,NAT正常,外網機器都能訪問,只是只要外網以192.168.0.10做缺省路由,就可以自由訪問內網任何機器了,不需要什麼端口映射了。 

到這裡我覺得這樣是不是有些不安全,假如,通過這樣一個NAT放在公網上,只要別人與你的公網IP在一個網段,以你的NAT公網IP為缺省路由,不是內網全部暴露在它面前了?


-------------------------------------------------------------------------

-------------------------------------------------------------------------
現象證明2「http://lists.debian.org/debian-firewall/2000/01/msg00021.html


其中有一篇關於「ip_forward」內外網區隔的原文敘述,在原意上?

條件近似

dns192.168.1.1
mask 255.255.255.0
gw 192.168.1.254
dhcpd broadcast 192.168.1.255

會發生「 111.112.113.114 」的原理是什麼?重新計算路由又會改變條件,使人不得不思考,正確的配置是什麼?

通常很多人喜歡「預設配置」gw = dhcpd 的現象,來接通外部網路,在比照「大型網路、企業網路、網管技術」的實現上?這非常不安全。

因此?建立 proxy 伺服器,來避免這個不安全,轉移網路不安全的焦點。
不禁使人問「proxy = 網路代理伺服器」是安全的嗎?

曾在 2002、2004、2005、2007年,申請多組免費伺服器,架設多台「虛擬 proxy 」作為跳板,完成一些有趣的模式,可見得網路上的免費資源?非常好用,而且可匿名登記,只要E-mail檢查過關即可(免費 email 許多地方都能申請到),至於網路流量?就要自己「多方」設法解決。

但若真的要「偷懶」 dhcpd = gw 也無不可啦!

因此可以獲知「eth1」「dhcpd server router=192.168.1.1 廣播 192.168.1.255」
但設置「eth0\pppoe\ADSL」取得外網「gw 214.21.18.50」不合理。

因此?
#router  default gateway "eth0 ppp+ adsl+ isdn+" 一類的設備窗口

要有效管理「Router」作正確規劃?
因此 default gateway 仍是內部虛設的條件?
一切採取「網路卡實體」來區分,實體設置交換網路訊息................

http://eoffice.im.fju.edu.tw/phpbb/viewtopic.php?t=1550 「不解的新手請閱覽」

-------------------------------------------------------------------------


請參考

Red Hat Enterprise Linux 4 的線上教程,去進行施作,並確保上面描述的過程,各位就能夠體會 iptables 操作技巧了。

紅帽企業版 Linux 4 第七章 「防火牆」

請詳盡的看完第七章節全部
http://web.mit.edu/rhel-doc/4/RH-DOCS/rhel-sg-zh_tw-4/ch-fw.html
若沒有問題?就去挑戰「鳥哥」的防火牆設置模式。
-------------------------------------------------------------------------


鳥哥的防火牆設置
http://linux.vbird.org/download/ 有鳥哥防火牆 firewall 文件,可以下載來參考!


#!/bin/bash

# 請先輸入您的相關參數,不要輸入錯誤了!
EXTIF="eth1" # 這個是可以連上 Public IP 的網路介面
INIF="eth0" # 內部 LAN 的連接介面;若無請填 ""
INNET="192.168.1.0/24" # 內部 LAN 的網域,若沒有內部 LAN 請設定為 ""
export EXTIF INIF INNET

# 第一部份,針對本機的防火牆設定!###########################
# 1. 先設定好核心的網路功能:

echo "1" > /proc/sys/net/ipv4/tcp_syncookies
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
for i in /proc/sys/net/ipv4/conf/*/rp_filter; do
echo "1" > $i
done
for i in /proc/sys/net/ipv4/conf/*/log_martians; do
echo "1" > $i
done
for i in /proc/sys/net/ipv4/conf/*/accept_source_route; do
echo "0" > $i
done
for i in /proc/sys/net/ipv4/conf/*/accept_redirects; do
echo "0" > $i
done
for i in /proc/sys/net/ipv4/conf/*/send_redirects; do
echo "0" > $i
done

# 2. 清除規則、設定預設政策及開放 lo 與相關的設定值
PATH=/sbin:/usr/sbin:/bin:/usr/bin; export PATH
iptables -F
iptables -X
iptables -Z
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state RELATED -j ACCEPT

# 3. 啟動額外的防火牆 script 模組 
# 3. iptables.deny | iptables.allow 檔案請到 http://linux.vbird.org/download/ 下載  
 
if [ -f /usr/local/virus/iptables/iptables.deny ]; then
sh /usr/local/virus/iptables/iptables.deny
fi
if [ -f /usr/local/virus/iptables/iptables.allow ]; then
sh /usr/local/virus/iptables/iptables.allow
fi
if [ -f /usr/local/virus/httpd-err/iptables.http ]; then
sh /usr/local/virus/httpd-err/iptables.http
fi
iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT

# 4. 允許某些類型的 ICMP 封包進入
 
AICMP="0 3 3/4 4 11 12 14 16 18"
for tyicmp in $AICMP
do
iptables -A INPUT -i $EXTIF -p icmp --icmp-type $tyicmp -j ACCEPT
done

# 5. 允許某些服務的進入,請依照您自己的環境開啟
# iptables -A INPUT -p TCP -i $EXTIF --dport 22 -j ACCEPT # SSH
# iptables -A INPUT -p TCP -i $EXTIF --dport 25 -j ACCEPT # SMTP
# iptables -A INPUT -p UDP -i $EXTIF --sport 53 -j ACCEPT # DNS
# iptables -A INPUT -p TCP -i $EXTIF --sport 53 -j ACCEPT # DNS
# iptables -A INPUT -p TCP -i $EXTIF --dport 80 -j ACCEPT # WWW
# iptables -A INPUT -p TCP -i $EXTIF --dport 110 -j ACCEPT # POP3
# iptables -A INPUT -p TCP -i $EXTIF --dport 443 -j ACCEPT # HTTPS

# 第二部份,針對後端主機的防火牆設定!##############################
# 1. 先載入一些有用的模組

modules="ip_tables iptable_nat ip_nat_ftp ip_nat_irc ip_conntrack
ip_conntrack_ftp ip_conntrack_irc"
for mod in $modules
do
testmod=`lsmod | grep "${mod} "`
if [ "$testmod" == "" ]; then
modprobe $mod
fi
done

# 2. 清除 NAT table 的規則吧!
iptables -F -t nat
iptables -X -t nat
iptables -Z -t nat
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT

# 3. 開放成為路由器,且為 IP 分享器!
if [ "$INIF" != "" ]; then
iptables -A INPUT -i $INIF -j ACCEPT
echo "1" > /proc/sys/net/ipv4/ip_forward
if [ "$INNET" != "" ]; then
for innet in $INNET
do
iptables -t nat -A POSTROUTING -s $innet -o $EXTIF -j MASQUERADE
done
fi
fi
# 如果你的 MSN 一直無法連線,或者是某些網站 OK 某些網站不 OK,
# 可能是 MTU 的問題,那你可以將底下這一行給他取消註解來啟動 MTU 限制範圍

# iptables -A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss \
# --mss 1400:1536 -j TCPMSS --clamp-mss-to-pmtu

# 4. 內部伺服器的設定:
# iptables -t nat -A PREROUTING -p tcp -i $EXTIF --dport 80 \
# -j DNAT --to 192.168.1.210:80
 
 
 
後面開始?就是其他「軟路由軟體」 的實務架設。

沒有留言:

張貼留言

歡迎討論

HR , NO!Human Resources,NO!

※※ 這樣內容,上手會困難嗎?※※ 我想到什麼?就寫什麼!※※

※對於資訊!我想到什麼?就寫什麼!

如果困難的話?

有需要技術文件 DarkMan 蒐集了不少!
存在FTP共享。想下載?請洽DarkMan信箱取得下載帳號。※



人性的理由

上句:不修一切法,如如是己身。傳其法,授其使,說其名,淪為其用。
下句:你寫得出來其意就傳你【大神威、大魔法,無上魔道。】





網路基礎技能 - 相關連結(更新完成)

Dark 不覺得「Linux CD route 計畫」會比「思科路由」差!我認可 CD Route 計畫的實現,藉此....降低網路架設費用!

甚至「Linux CD route 計畫」更能夠實現「網路自由」的架構!


Fdisk 磁碟管理(一)共用「 Linux 與 微軟Windows」
Fdisk 磁碟管理(二)磁碟 boost loader 觀念
Fdisk 磁碟管理(三)清除磁碟分割
磁碟陣列是什麼東西?(RAID)

Linux Network
Linux 網路概要(連結版)
Linux 網路概要(抄過來)
設置網路環境 >> 資訊環境落實

MikroTik RouterOS 專業級路由系統
MikroTik RouterOS(1)
MikroTik RouterOS(2)
MikroTik RouterOS(3)
MikroTik RouterOS(4)

Linux Network Route
(一)接口設備觀念
(二)參照路由原則
(三)檢視路由
(四)Root路由器
(五)防禦對象

MikroTik RouterOS 專業級路由系統
網路卡、路由表、iptab 表、btctl show(一)「loopback 和網路卡*4」
網路卡、路由表、iptab 表、btctl show(二)拿微軟的系統route,來證明一下!
網路卡、路由表、iptab 表、btctl show(三)釋出路由方向
網路卡、路由表、iptab 表、btctl show(四)Root路由器
網路卡、路由表、iptab 表、btctl show(五)防禦對象

CD Route network
Linux CD route 網路設備配置的順序.....
Linux CD route 001 介紹
Linux CD route 002 軟體安裝
Linux CD route 003 外網
Linux CD route 004 內網
Linux CD route 005 安全
Linux CD route 006 防火牆