Monday, March 26, 2007

以SLES10快速架設閘道式防火牆

前言:
以Linux架設Firewall算是一個蠻物美價廉的方案,因為筆者在真實的環境中利用PIII這種老機器架設Firewall ,發覺還挺穩定的,使用到現在還沒發現有任何的問題,因此若您手邊有一些退役的機器,不如將它當成Firewall來用,給它個第二春吧!好了,廢話不多說,您可以參考以下的文件,快速建立一台Linux的Firewall。

概念:
這裡要介紹的是所謂的閘道式防火牆,目的在於隔開內外網路的連線,需求如下:

外部主機 -> 防火牆主機 (不可)
內部主機 -> 防火牆主機 (不可)
外部主機 -> 內部主機 (不可)
內部主機 -> 外部主機 (可, 但應只開放某些對外的連線)

事實上這種設定的方法,還說不上真正的安全!因為對內部的主機我採用的是完全信任的方案,但所謂:內賊難防!最好的方法還是要對內部主機採取安全控管,不過因為筆者是在家中自行架設並測試的,所以我就採用了較鬆散的方法,這一點請原諒。

環境:

eth0 外部網路 (10.6.7.0/24)-----Linux Firewall----- eth1內部網(172.17.2.0/24)

開啟ip_forwarding的功能:

# vi /etc/sysctl.conf
net.ipv4.ip_forward=1
# sysctl –p
# vi /etc/init.d/boot.local
sysctl –p

設定iptables的相關規則:

預設阻擋所有連線之基本原則:

# iptables –P INPUT DROP
# iptables –P FORWARD DROP

允許loopback介面的連線:

#iptables –A INPUT –i lo –j ACCEPT

阻擋非loopback介面但確是127.0.0.0/8的IP

# iptables –A INPUT –i ! lo –s 127.0.0.0/8 –j DROP
# iptables –A OUTPUT –o ! lo –s 127.0.0.0/8 –j DROP

允許後續連線:

# iptables –A INPUT –m state --state RELATED,ESTABLISHED –j ACCEPT
# iptables –A FORWARD –m state --state RELATED,ESTABLISHED –j ACCEPT

阻擋可疑的封包:

# iptables –A INPUT –m state --state INVALID –j DROP
# iptables –A FORWARD –m state --state INVALID –j DROP

阻擋TCP第一個連線非SYN類型的封包:

# iptables –A INPUT –p tcp ! –syn –m state --state NEW –j DROP
# iptables –A FORWARD –p tcp ! –syn –m state --state NEW –j DROP

允許內部主機對外的連線:

# iptables –A FORWARD –i eth1 –o eth0 –j ACCEPT

設定NAT規則:

# iptables –t nat –A POSTROUTING –o eth0 –s 172.17.2.0/24 –j MASQUERADE

以上是iptables的相關設定,第一次接觸的iptables的人可能會罵,到底你是在寫什麼東西呀!有看沒有懂,這點也是非常抱歉,網路上已經有許多先進撰寫過很多很棒的iptables規則說明與基本語法了,請您不妨利用google大神,去尋找吧!這裡講求的是快速架設,所以不會多加論述背後的原理。

辛辛苦苦打了這麼多指令,重開機是否會不見呢?答案是會的!如果您沒有將其存起來,當您重開機時是會叫苦連天的,所以請您依照以下的方法,將它先存成一個文字檔,待開機時再將它載入。

# iptables-save > /etc/sysconfig/iptables.save (將iptables的規則存成一文字檔)

# vi /etc/init.d/boot.local
iptables-restore < /etc/sysconfig/iptables.save (開機時將iptables的規則從檔案讀入)


後記:
以上便是快速架設Linux Firewall的方法,強烈建議您先懂原理再來實作將會讓您對於iptables更加了解,用起來也會順手些,畢竟iptables的語法看起來是有那麼一點小複雜。

Thursday, March 22, 2007

OSX Startup keyboard commands help in troubleshooting

亂逛時不小心看到的,覺得挺實用所以趕緊po上來。
When troubleshooting, performing maintenance, or otherwise starting up your Mac OSX computer in an abnormal fashion, there are a few keyboard shortcuts that you may or may not know about that can help you. Below is a list of them with an explanation of what they do:
  • X = Force Mac OS X startup
  • Option = Brings up a screen with startup volume choices (slow process, may take a while)
  • Option+Command+Shift+Delete = Bypass primary startup volume and seek a different startup volume (such as a CD or external disk)
  • C = Start up from a CD that has a system folder
  • N = Attempt to start up from a compatible network server (NetBoot)
  • T = Start up in FireWire Target Disk mode (very handy for plugging your Mac into another as an external hard drive)
  • Shift = start up in Safe Boot mode and temporarily disable login items and non-essential kernel extension files (Mac OS X 10.2 and later)
  • Command+V = Start up in Verbose mode.
  • Command+S = Start up in Single-User mode
  • Command+Option+p+r = Zap PRAM. Hold down until second chime.
  • Command+Option+n+v = Clear NV RAM. Similar to reset-all in Open Firmware.
  • Command+Option+o+f = Boot into open firmware
  • Hold mouse button down = Force eject a CD/DVD
出處: http://www.jdempsey.com/osx-startup-keyboard-commands-help-in-troubleshooting/

調查利用 | (pipe) 連結各指令的執行結果

相信大家在Linux下都使用過|(pipe)來連結過指令, 比如 cat docu.txt | wc -l 可以得知docu.txt有幾行, 但是如果今天串連了許多指令,系統確告知指令不能正確被執行時該怎麼辦呢? 到底是卡在那一個了呢?
此時便可以透過PIPESTATUS這個"陣列變數"來得到每一個指令執行的結果是否正確!
看看以下的例子您便能明白:
[root@localhost ~]# cat docu.txt | wc -l
41
[root@localhost ~]# rm docu.txt
rm: remove regular file `docu.txt'? y
[root@localhost ~]# cat docu.txt | wc -l
cat: docu.txt: No such file or directory
0
[root@localhost ~]# echo ${PIPESTATUS[0]}
1
這樣應該瞭解了吧! 從這可知道各指令執行後的結果由0開始, 所以cat docu.txt的執行結果將存在PIPESTATUS[0]中,而wc -l則存放在PIPESTATUS[1]中,如此方便debug用.

Note: 指令若能正確被執行,則$?變數便會是0,非0則代表指令執行有誤,在這個例子中,您並不能以$?來找出那一段的指令執行錯誤,因為利用|(PIPE)所串連起來的指令,$?將會存放最後一個指令執行後的結果.
Note: PIPESTATUS的值將隨著每次指令的執行而異動!

Wednesday, March 21, 2007

建構RHEL5的網路安裝Server

與RHEL4不一樣的是,RHEL5不需要將iso image mount起來,只要將iso image透過NFS Server export出來就可以了,所以說RHEL5變簡單了(笑~)。不過萬一您手上只有安裝光碟的時候,這怎麼辦呢? 請依以下的作法製作iso image吧!
For DVD:
# dd if=/dev/dvd of=/NFS/RHEL5/RHEL5.iso

For CD-ROMs:
# dd if=/dev/cdrom of=/NFS/RHEL5/RHEL5_diskX.iso

Note: X代表第幾片光碟。

設定並啟動NFS Server:
# vi /etc/exports
/NFS/RHEL5 *(ro,sync)
# service nfs start; chkconfig nfs on

Saturday, March 17, 2007

紅帽推出企業Linux 5 賽門鐵克來相挺-旗下儲存管理產品將支援RHEL 5

就在 紅帽 ( Red Hat )正式推出最新版旗艦作業系統 - Red Hat Enterprise Linux 5( RHEL 5)之後, 賽門鐵克 也宣布旗下儲存管理產品也將支援RHEL 5。

賽門鐵克表示,他們的Veritas Storage Foundation、Veritas Cluster Server以及Veritas NetBackup產品都將在90內完全支援紅帽最新旗艦Linux作業系統。為了協助紅帽用戶來更佳管理他們的資料中心,賽門鐵克將把開原碼Xen伺服 器虛擬工具列入RHEL 5內一起推出。

此外,賽門鐵克與紅帽也推出共同客戶服務方案,用來提供更快速更周詳的客戶支援。新的共同服務方案乃是藉由給予技術支援來讓工程師可以遠端遙控讀取賽門鐵克與紅帽的測試實驗室環境,結合雙方伺服器及儲存基礎架構來充分傳達客戶支援需求。

出處: CPRO 資傳網 http://cpro.com.tw/channel/news/content/?news_id=54431&cid=A0000

Friday, March 16, 2007

定期檢查系統中SUID的檔案

Linux系統中,凡具有SUID權限的檔案,可說是兩面刀呀! 好處是在某些時候可以讓user執行某些只有root可執行的檔案 (如: passwd, ping mount)~但壞處是萬一這個執行檔有"洞",就會讓有心人士有機會侵入到Linux作業系統,所以身為系統管理者的我們,必需要對SUID的檔案特別留意,也因此讓我想到,應該讓系統每天檢查SUID的檔案們是不是有被動過手腳:

-首先,在裝完OS後,先執行以下的命令:
find / -path '/proc' -prune -or -perm -u+s -exec ls -l {} \; > /tmp/suidlist-init
簡單的說就是利用find指令將除了/proc目錄外,所有具有suid權限的檔案找出來,並且存到/tmp/suidlist-init中

-撰寫scripr file:
# vi /root/bin/checksuid.sh

#!/bin/bash

LOGFILE="/tmp/suidlist-`date +%Y-%m-%d`"
RESULTFILE="/tmp/suid_check_result-`date +%Y-%m-%d`"

find / -path '/proc' -prune -or -perm -u+s -exec ls -l {} \; > $LOGFILE

diff /tmp/suidlist-init "$LOGFILE" > $RESULTFILE

mutt -s "SUID CHECK RESULT" root < $RESULTFILE

-定期每天AM 3點檢查,並將結果mail給root
#crontab -e
0 3 * * * /root/bin/checksuid.sh

這麼一來,每天收收信就可以知道目前所有具SUID檔案的狀況了!

Thursday, March 15, 2007

bash下array的幾種使用方法

#!/bin/bash
#一舉將變數設定到陣列中
array=(Redhat Novell MicroSoft Sun IBM HP Dell)

#利用for loop將陣列中的變數印出
for i in 0 1 2 3 4 5 6
do
echo "array[$i]=${array[$i]}"
done

#設定間隔符號為: 搭配$*將陣列的值一口氣輸出
IFS=:
echo "${array[*]}"

#設定間隔符號為換行,搭配$*將陣列的值一口氣輸出
IFS=$'\n'
echo "${array[*]}"

#將陣列中的值利用$@一口氣輸出與$*不同的是,不會將值合併成單一字串
echo "${array[@]}"

#印出陣列中有幾筆資料
echo "${#array[@]}"

執行結果:
array[0]=Redhat
array[1]=Novell
array[2]=MicroSoft
array[3]=Sun
array[4]=IBM
array[5]=HP
array[6]=Dell
Redhat:Novell:MicroSoft:Sun:IBM:HP:Dell
Redhat
Novell
MicroSoft
Sun
IBM
HP
Dell
Redhat Novell MicroSoft Sun IBM HP Dell
7

Wednesday, March 14, 2007

半價網

這個網站挺吸引人的,把供應商跟消費者完完全全結合在一起......
如果真得可以半價買的夢想中的商品,那是多麼地令人興奮呀!! 也因此帽客預約了Apple iMac 2.0Ghz MA590TA/A, 呵~原價42900半價21900, 能成功嗎? 期待中 =)

半價網 http://www.50100.com.tw

Monday, March 12, 2007

Redhat Enterprise Linux 5.0 蓄勢待發!

Redhat 計畫在美國時間3月14日推出它的旗艦作業系統最新版本 - Red Hat Enterprise Linux 5。

RHEL 5以連結伺服器虛擬與紅帽的叢集支援來整合Xen架構伺服器與儲存虛擬方案。此外,RHEL 5具有虛擬管理功能,能夠使得安裝及管理Xen虛擬機器變得更容易。新版本RHEL從Linux核心2.6.9版升級至2.6.18版,紅帽更宣稱延伸強 化了作業系統的網路與I/O子系統。

資料來源: CPRO 資傳網 http://cpro.com.tw/channel/news/content/?news_id=54344

Wednesday, March 07, 2007

利用Kickstart安裝Redhat Linux

我想這不是一個很高深的技術,但確是非常實用且方便的方法,最近買了一堆IBM HP and Dell的Server,要帽客自己一台一台手動安裝Redhat嗎? 實在是沒那個美國時間, 所以就利用kickstart來幫我這麼忙囉! 帽客的作法是: 將kickstart configure file放在NFS Server上, 當然這台NFS Server也同樣是Installation Server, 待用第一片開機片開機時,打入以下的指令: linux ks=nfs:IP address:/Share folder/ks.cfg 這麼一來,人就可以不用待在機房在那邊按來按去囉!

Note: ks.cfg這個檔案是依據手動安裝時所選取的選項與設定,自行產生的範例檔, 原來的檔名與位置是在 /root/anaconda-ks.cfg.

Monday, March 05, 2007

Linux下的備份利器-cpio

說到在Linux下備份檔案,最常用的就是使用tar來備份檔案,不過有的時候在某些特定的需求下,是需要利用到其它的工具來備份,比如: 如果將來要回復*.conf的檔案時,利用tar的話就遇到瓶頸了,不過也不必擔心,還有一個好用的備份壓縮工具cpio可以幫我們達成這個需求!

1.首先,先將/etc完整備份到/tmp下:
# cd /etc;find . -print | cpio -oa > /tmp/etc_backup.cpio
2.將*.conf回復到/tmp下:
# cd /tmp; cpio -im "*.conf" < /tmp/etc_backup.cpio

附帶提一下常見的壓縮工具,它們的壓縮比(優到劣)通常是: tar.bz2 > tgz > tar > cpio > dump

Thursday, March 01, 2007

帽客2007新春桌面


帽客的女兒Fifi於2007.2.12誕生,第一次當爸爸的我實在非常高興能有個這麼可愛的女兒!
現在女兒已完全佔據我的心囉~ 連小白的桌面也不放過! 嗯!有女萬事足呀!