Tuesday, January 30, 2007

誰佔用我的硬碟空間??

帽客的小黑X24,用了三年多了,安裝CentOS也跑了兩年多了(都沒重灌唷!),近日覺得"/"的空間有點不大夠用了.....於是乎下達 du -csh /* 來找看看那個目錄佔用我最多的空間,看了一看覺得為何/var會如此肥大? 進到此目錄後,在用剛剛的指令檢查看看,哇! 果然讓我抓到了兇手了, /var/cache/yum竟然有700M那麼大,原來以前用yum升級套件時,忘了把抓下來的packages移除,趕緊用 yum clean all清一下,嗯~好多了!

PS 其實兇手是我自己 =.=" 趕快改寫一下crontable囉~~~

Friday, January 26, 2007

NTOP

前些日子把3條ADSL合併在一台Linux的機器,當然想看看traffic的情況,本想用MRTG來看,後來想想還是用NTOP好了,NTOP的確能分析到更多的東西,但不是說MRTG不好,目前我也用MRTG monitor數10台switch的流量,跑了很久也一直很穩定,工具不分好壞能達到目的就好了!

Monday, January 22, 2007

Linux合併頻寬

上星期因為工作需求去K了一下如何用Linux合併三條ADSL線路,公司的應用真的是太吃頻寬了!
我選用CentOS搭配iproute2與iptables來做,不過.....我只能說我做對了一半.....對外都沒有問題,但是如果要透過它連到內部的FTP Server,三條線路就時通時不通了!這點就很奇怪了,讓我有點confuse...... 這樣的下法應該是work的呀.....
iptables -t nat -A PREROUTING -s eth1 -p tcp --dport 21 -j DNAT --to 192.168.1.100:21
iptables -t nat -A PREROUTING -s eth2 -p tcp --dport 21 -j DNAT --to 192.168.1.100:21
iptables -t nat -A PREROUTING -s eth3 -p tcp --dport 21 -j DNAT --to 192.168.1.100:21

Friday, January 12, 2007

改變預設smtp port

SMTP default port是25,今天在裝公司某樣產品時要求要將port 25改成2500,用google找到了方法,趕快先po上來,因為這實在太少用了!
Add a line to your /etc/services:
smtp2 5000/tcp
Now edit your master.cf so the smtpd line starts with smtp2:
smtp2 inet n - n - - smtpd
service postfix restart

原文網址

Monday, January 08, 2007

小小改造Mac CLI

Mac預設的CLI(console),是不支援中文且ls的輸出也是沒有顏色的,利用以下的方法可以讓CLI變成彩色且支援中文語系:

$ sudo vi /etc/bashrc
alias ll='ls -l -w -G'
alias ls='ls -w -G'

Wednesday, December 27, 2006

Linux Transparent Firewall架設完全攻略

前言:
很多時候,在不想變動原本的網路架構下,如果有需要將網路隔離開時,就需用到透通式的防火牆,所謂的透通式的防火牆它是個in-line mode的裝置,你可以把它想成是一個Bridge裝置,但確有可以過濾封包的功能,提醒一下既然是Bridge裝置,當然它就是屬於Layer 2那一層囉!


Environment:
以下是筆者所測試的環境:

Server ---------- Firewall ---------- Client
Server IP address: 192.168.1.100
Client IP address: 192.168.1.200
Firewall IP address: 192.168.1.1

Objective:
只允許Server可以透過網芳將檔案傳送到Client端(單向),Server與Client可互相透過icmp echo request確認彼此間的連線 (雙向) 。

Setup Procedure:

1.Bind兩張網卡成一個bridge interface:
Firewall至少要有兩張網卡,然後只要將它們bind起來,Firewall就可以成了一個Bridge裝置。首先要安裝bridge-utils與bridge-utils-devel這兩個套件,這兩個套件可以把eth0與eth1 bind成一個bridge裝置,正好符合我們以上的需求,筆者是用RHEL4.4架設的,非常方便的是這兩個套件在安裝光碟裡面就有。
# rpm –ivh bridge-utils-*

緊接著將eth0與eth1 bind成bri0 interface.

# ifconfig eth0 0.0.0.0
# ifconfig eth1 0.0.0.0
# brctl addbr bri0
# brctl addif bri0 eth0
# brctl addif bri0 eth1

執行brctl show確認一下:
# brctl show
bridge name bridge id STP enabled interfaces
bri0 8000.00034730c5b3 no eth0
eth1

好了問題來了,既然bri0 interface已經建置好了,那麼是否可以在上面設定IP呢?答案當然是可以的囉~不然怎麼remote control它呢? 至於設定的方法有兩種,一種是設定Static IP,另一種是透過DHCP Server get到IP,以下是設定的方法:
Static IP:
# ifconfig bri0 192.168.1.1 netmask 255.255.255.0 up
DHCP Client:
# dhclient bri0

以上的所有動作您可以把它寫成一個shell script file,並讓它在開機時自動執行,以RHEL的話是放在/etc/rc.local,順便一提SLES是/etc/init.d/boot.local

2. Allow IP forwarding

# vi /etc/sysctl.conf
# Controls IP packet forwarding
net.ipv4.ip_forward = 1
#sysctl –p

請測試一下,目前Server與Client的網路是相通的。

3. 設定Policy

重頭戲來了,如何設定Policy? 一般來說Linux firewall的設定是透過iptables,iptables預設分為3個table,5個chain,我要把rule設定在那個table及那個chain是一開始該有的認知。先提醒一個觀念,iptables比對的順序為mangle->nat->filter,這是什麼意思?事實上mangle,nat與filter就是預設的三個table,若前面的規則是allow,到了後面的table卻是deny的話,那就是deny! 反之若前面是deny而後面是allow的話,那就是allow! 這是套用於不同table時,規則相互抵觸時的法則,想一想有沒有可能在相同的chain中,設定相互抵觸的規則?當然是有可能的囉!這時是first match! 當hit到規則後,則不在進行比對,這點請特別注意!

可以確定的是,利用filter table就可以設定我們的policy,接下來考慮一下要設定在那個chain? INPUT OUTPUT FORWARD? 答案是 FORWARD,別忘了!它是個Bridge裝置,封包當然是透過eth0到eth1或是eth1到eth0囉!

為了最高安全指導原則,首先要把 FORWARD default policy設定為DROP,只放行SMB protocol與icmp echo request.

# iptables –P FORWARD DROP

測試一下 Server與Client目前應該是完全不通!

設定允許n個封包之後的連線:

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

設定允許icmp echo request:

# iptables –A FORWARD –s 192.168.1.0/24 –p icmp –icmp-type 8 –j ACCEPT

設定只有Server可以透過網芳將檔案傳送到Client:

# iptables –A FORWARD –s 192.168.1.100/32 –d 192.168.1.200/32 –p tcp –dport 139 –j ACCEPT

# iptables –A FORWARD –s 192.168.1.100/32 –d 192.168.1.200/32 –p tcp –dport 445 –j ACCEPT

這樣一來便可達到我們的需求!
歡迎轉載,不過請註明出處唷~ ^^

筆者簡介:
Lawrence Chiu – 已取得RHCE與NCLP認證,曾任職於D-Link testing engineer負責資安產品的測試,現任職於TrendMicro Anti-Spam Lab administrator。

利用Linux架設Transparent Firewall

前幾天帽客利用一台PIII的機器,安裝好Linux後並設定成透通式防火牆,架設在公司網路裡面使用,在不想改變現有的環境下,而又想阻擋某些對外連線時,這是一個好方法,經過這幾天的觀察,發覺還挺穩的,因為網路流量挺大的,還在擔心這台老機器會不會撐不住,呵~ 果然是我想太多了! Linux就是棒呀! 就算是老機器給它灌上Linux也能有第二春!

Tuesday, December 19, 2006

設定DHCP Server只由某張網卡分配出去

是的,帽客在家及在公司都已經有架設起一台NAT Server以供測試,下一個問題當然是架設起DHCP Server的服務,但總不能讓它兩張網卡都分配出去IP吧! 如果我要限定只從某個網卡分配出去呢? 該怎麼辦? 問了問Google大神,果然找到的解決的方法,以下是Redhat說明:

- 開啟 /etc/init.d/dhcpd
- 找到 daemon /usr/sbin/dhcpd ${DHCPDARGS} 2>/dev/null 修改為 daemon /usr/sbin/dhcpd eth1 ${DHCPDARGS} 2>/dev/null
- # service dhcpd start; chkconfig dhcpd on

這麼一來DHCP Server就只會從eth1分配IP出去!
至於SLES10,很簡單的囉~ 使用yast2來設定就好了,這裡就不多加詳述了.

Monday, December 18, 2006

Linux iptables SNAT+DNAT+FTP passive mode

帽客今天在SLES10下實現了SNAT與DNAT的環境,這台SLES10當成NAT Server負責內部IP連線到Internet上,並在內部網路架設一台FTP Server,讓Internet上的機器可以存取到它,也就是所謂的DNAT, 實作的方法跟Redhat有一點不同,但觀念是一樣的,讓帽客整理一下吧!

如果有需要這篇文章的朋友,請與我連繫. =)

Thursday, December 14, 2006

帽客的iptables設定- 單機篇

以下是帽客常用的配置方式:
# Generated by iptables-save v1.2.11 on Tue Dec 12 23:24:06 2006
*filter
:INPUT DROP [1032:90974]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [1758:160527]
:BADPKT - [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -s 127.0.0.0/255.0.0.0 -i ! lo -j DROP
-A INPUT -m state --state INVALID -j BADPKT
-A INPUT -p tcp -m tcp ! --tcp-flags SYN,RST,ACK SYN -m state --state NEW -j BADPKT
-A INPUT -p tcp -m tcp --dport 22 --tcp-flags SYN,RST,ACK SYN -m state --state NEW -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -m state --state NEW -j ACCEPT
-A INPUT -j LOG --log-prefix "** Firewall INPUT DROP **"
-A BADPKT -j DROP
COMMIT
# Completed on Tue Dec 12 23:24:06 2006

解說:
Create一個新chain名為BADPKT,預設動作為DROP
-A INPUT -i lo -j ACCEPT -> 對於loopback interface的封包是接受的
-A INPUT -s 127.0.0.0/255.0.0.0 -i ! lo -j DROP -> 對於127.0.0.1的IP位址,來源的介面必需為loopback,否則DROP
-A INPUT -m state --state INVALID -j BADPKT -> 封包狀態若不正常予以DROP
-A INPUT -p tcp -m tcp ! --tcp-flags SYN,RST,ACK SYN -m state --state NEW -j BADPKT -> 對於tcp的第一個封包必需是SYN,否則DROP
-A INPUT -p tcp -m tcp --dport 22 --tcp-flags SYN,RST,ACK SYN -m state --state NEW -j ACCEPT -> 允許ssh的連線請求,最好加上 -s參數限定那個IP or subnet才可連線
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -> 允許本機第n個封包(自己發出去的嘛! 當然對之後的封包也要允許呀!)
-A INPUT -j LOG --log-prefix "** Firewall INPUT DROP **" -> 將iptables log記錄到/var/log/messages
-A BADPKT -j DROP -> BADPKT預設的policy

Tuesday, December 12, 2006

Install VMware Server on SLES10

Extra packages needed:
xorg-x11-libs
gcc
kernel-source

之後用rpm安裝,並執行vmware-config.pl,
一步一步配置VMware Server的環境.




Thursday, December 07, 2006

帽客桌面


好久沒秀一下帽客的桌面了,就給它秀一下吧! ^_^
這張是FFIII裡的赤魔導吧?! FFIII大概是我國中時代吧......唉~ 沒想到我已經要當爸爸了 @@

PS FFIII 同時也是帽客第一次接觸到的RPG類型遊戲.

關閉SLES10的firewall

在安裝SLES10時,不小心設定預設啟動firewall的功能,確又不太了解firewall setting (iptables)的朋友,可以利用以下的方法將其關閉

# rcSuSEfirewall2 stop -> 目前關閉,但當系統重新開機後,還是啟動
# chkconfig SuSEfirewall2_setup off
# chkconfig SuSEfirewall2_init off -> 以上兩行設定系統啟動時,不啟動firewall

如果對照到Redhat是這樣子的:

# service iptables stop -> 目前關閉,但當系統重新開機後,還是啟動
# chkconfig iptables off -> 設定系統啟動時,不啟動firewall

Monday, December 04, 2006

Shell Script: 確定user目前是否登入系統

Filename: finduser

#!/bin/bash

if [ $# -ne 1 ]; then
echo "usage: finduser username"
else
who | grep "$1"
fi

有趣的語法

somecmd && {
cmd1
cmd2
cmd3
}

這樣可能看不太懂吧!如果改成這樣呢?

test -f /etc/issue && {
cat /etc/issue
}

如果還不能了解的話,請往下看:

if [ -f /etc/issue ]; then
cat /etc/issue
fi

有趣吧 =)

Tuesday, November 21, 2006

Backup files to remote side

語法:
tar -cvf - /tmp/testdir/ | gzip -c | ssh root@192.168.1.34 "cat > /tmp/testdir.tgz"

這樣做可省硬碟空間與時間。

Monday, November 13, 2006

最近真忙

最近工作的雜事真是超多的,有時真想大聲說 "一件一件慢慢來! 我只有一個人呀!" 備份燒片,安裝OS,安裝電腦,電腦硬體除錯,網路設定...客戶(使用者)電腦的問題.....這樣的問題就好比無窮迴圈一般,唉~~好久沒好好玩我的Mac and Linux啦......

Wednesday, November 01, 2006

gcin

這些日子又開始在玩Linux的桌面了,以前就對RHEL/Fedora預設的中輸很感冒,今天就試著安裝gcin看看,沒想到一用上癮,真是太好用啦! 內建非常多的輸入法!甚至有無蝦米!
值得推薦.

網址: gcin同好會

RHEL切換輸入法的方法:

# system-switch-im -> 選進階設定 -> 繁中 -> 輸入法: gcin -> restart X

Tuesday, October 31, 2006

Build source rpm

以Redhat為範例:
- Download *src.rpm (http://rpmfind.net -> 大部份的rpm在這都可以找到)
- # rpmbuild --rebuild *src.rpm
- # Build完後的rpm會放在此目錄下 /usr/src/redhat/RPMS/

Friday, October 27, 2006

在RHEL上架設SLES10的網路安裝伺服器

就大家所知,RHEL要建構起一台網路安裝伺服器只要將每片CD片裡的Redhat目錄copy出來,並透過NFS,HTTP or FTP就可架設起來了。
如果要在RHEL的機器上架設SLES10呢? 似乎不能這樣做.....,今天靈機一動想到了一個方法,或許不是最佳解法,但事後證明它是可以達成我的目地。

Setup Procedure:
- 找台灌有SLES10的機器
- 啟動yast
- 在Misc中執行Installation Server,將光碟片中的檔案copy到某一目錄
- 將此目錄透過scp或其它的方式,copy到RHEL的機器上
- 透過NFS將此目錄分享出來
- 放入SLES10第一片光碟
- 選擇安裝SLES10
- 按下F4,把安裝來源改成NFS