2009年3月20日 星期五

tarball懶人包安裝法

tarball的方式確時另人望之卻步
因為得千里尋套件,無法解決相依問題
但可以為此些scripts來做安裝
當然相依性問題得由編譯的過程中自行解決

首先做一針對套件的解壓到安裝的script
按套件名為名稱
如libdv-1.0.0.tar.gz
而script就命名為 libdv.Build

#!/bin/sh
CWD=$(pwd)
TMP=${TMP:-/tmp}
if [ ! -d $TMP ]; then
mkdir -p $TMP
fi
PKG=$TMP/package-libdv
PKGNAME=libdv <-套件名這邊
VERSION=1.0.0 <-版本名這邊

if [ "$ARCH" = "i386" ]; then
SLKCFLAGS="-O2 -march=i386 -mcpu=i686"
elif [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
elif [ "$ARCH" = "s390" ]; then
SLKCFLAGS="-O2"
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2"
fi

rm -rf $PKG
mkdir -p $PKG/usr
cd $TMP
rm -rf $PKGNAME-$VERSION
tar xzvf $CWD/$PKGNAME-$VERSION.tar.gz || exit 1 <-- 解壓縮這邊
cd $PKGNAME-$VERSION

chown -R root:root .
find . -perm 664 -exec chmod 644 {} \;
find . -perm 600 -exec chmod 644 {} \;
find . -perm 444 -exec chmod 644 {} \;
find . -perm 400 -exec chmod 644 {} \;
find . -perm 440 -exec chmod 644 {} \;
find . -perm 777 -exec chmod 755 {} \;
find . -perm 775 -exec chmod 755 {} \;
find . -perm 511 -exec chmod 755 {} \;
find . -perm 711 -exec chmod 755 {} \;
find . -perm 555 -exec chmod 755 {} \;

#以下是使用./configure的設定參數,請依照./configure --help的說明設定
CFLAGS="$SLKCFLAGS" \
./configure \
--prefix=/usr \
--sysconfdir=/etc \
--localstatedir=/var

make || exit 1
make install || exit 1

以後只要遇到新版本就可以直接改版本號就可以無痛的安裝
最後就是再寫個script來負責處理相依性
例如mplayer需要ffmpg但ffmpg還要一堆如多媒體相關的程式庫,就用個script來做全編譯
#!/bin/sh
./a52.Build
./ffmpeg.Build
./mplayer.Build

當有找到新的套件只需執行本script就搞定啦

最近把server的iptables整理

#!/bin/sh

IPTABLES="/usr/sbin/iptable"

echo "Start firware configure..."
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
echo 2048 > /proc/sys/net/ipv4/tcp_max_syn_backlog
echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route
echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects
echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects
echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
echo 255 > /proc/sys/net/ipv4/ip_default_ttl
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 65535 > /proc/sys/net/ipv4/netfilter/ip_conntrack_max
echo 10000 > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established
echo 120 > /proc/sys/net/ipv4/netfilter/ip_conntrack_udp_timeout
#/sbin/modprobe nf_nat
#/sbin/modprobe nf_nat_pptp
#/sbin/modprobe nf_conntrack
#/sbin/modprobe nf_conntrack_ftp
#/sbin/modprobe nf_conntrack_irc
#/sbin/modprobe iptable_filter
#/sbin/modprobe iptable_mangle
#/sbin/modprobe iptable_nat
/usr/sbin/pppoe-stop
echo "Start PPPoe..."
/usr/sbin/pppoe-start
PPPOEIP=`ifconfig | grep P-t-P | awk -F : '{print $2}' | awk '{print $1}'`
echo $PPPOEIP
echo "Start Firware ..."
echo "Initiatig iptables.."
/usr/sbin/iptables -P INPUT ACCEPT
/usr/sbin/iptables -P OUTPUT ACCEPT
/usr/sbin/iptables -P FORWARD ACCEPT
/usr/sbin/iptables -t filter -F
/usr/sbin/iptables -t nat -F
/usr/sbin/iptables -t filter -X
/usr/sbin/iptables -t nat -X
echo "ok"

echo "Getting the DShield Block List...."
BADIPS="$BADIPS `lynx --dump http://feeds.dshield.org/block.txt | awk '/^[1-9]/ {print $1 "/" $3}'`"
echo "ok"

echo "Setting rules..."
/usr/sbin/iptables -P INPUT DROP
/usr/sbin/iptables -P OUTPUT DROP
/usr/sbin/iptables -P FORWARD DROP

/usr/sbin/iptables -A INPUT -i lo -j ACCEPT
/usr/sbin/iptables -A OUTPUT -o lo -j ACCEPT
/usr/sbin/iptables -A INPUT -i ! lo -s 10.0.0.0/8 -j DROP
/usr/sbin/iptables -A OUTPUT -o ! lo -s 10.0.0.0/8 -j DROP
/usr/sbin/iptables -A INPUT -s 127.16.0.0/12 -j DROP
/usr/sbin/iptables -A OUTPUT -d 127.16.0.0/12 -j DROP
/usr/sbin/iptables -A INPUT -s 192.168.0.0/24 -j ACCEPT
/usr/sbin/iptables -A OUTPUT -d 192.168.0.0/24 -j ACCEPT

/usr/sbin/iptables -N BADPKT
/usr/sbin/iptables -A BADPKT -j LOG --log-prefix " ** Firewall DROP ** "
/usr/sbin/iptables -A BADPKT -j DROP

/usr/sbin/iptables -N BADFOR
/usr/sbin/iptables -A BADFOR -j LOG --log-prefix "**Firewall DROP is Forward**"
/usr/sbin/iptables -A BADFOR -j DROP

/usr/sbin/iptables -N BADIP
/usr/sbin/iptables -A BADIP -j LOG --log-prefix "**Firewall DROP is IP**"
/usr/sbin/iptables -A BADIP -j DROP

/usr/sbin/iptables -A INPUT -p icmp -m icmp --icmp-type 3 -j BADPKT
/usr/sbin/iptables -A INPUT -p tcp ! --syn -m state --state NEW -j BADPKT
/usr/sbin/iptables -A INPUT -p tcp --tcp-flags ALL NONE -j BADPKT
/usr/sbin/iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j BADPKT
/usr/sbin/iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j BADPKT
/usr/sbin/iptables -A INPUT -p tcp --tcp-flags FIN,RST FIN,RST -j BADPKT
/usr/sbin/iptables -A INPUT -p tcp --tcp-flags ACK,FIN FIN -j BADPKT
/usr/sbin/iptables -A INPUT -p tcp --tcp-flags ACK,URG URG -j BADPKT
/usr/sbin/iptables -A INPUT -p tcp --tcp-flags ACK,PSH PSH -j BADPKT
/usr/sbin/iptables -A INPUT -p tcp --tcp-flags ALL FIN,URG,PSH -j BADPKT
/usr/sbin/iptables -A INPUT -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j BADPKT
/usr/sbin/iptables -A INPUT -p tcp --tcp-flags ALL ALL -j BADPKT
/usr/sbin/iptables -A INPUT -p tcp --tcp-flags ALL FIN -j BADPKT

/usr/sbin/iptables -A FORWARD -p tcp ! --syn -m state --state NEW -j BADPKT
/usr/sbin/iptables -A FORWARD -p tcp --tcp-flags ALL NONE -j BADPKT
/usr/sbin/iptables -A FORWARD -p tcp --tcp-flags SYN,FIN SYN,FIN -j BADPKT
/usr/sbin/iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN,RST -j BADPKT
/usr/sbin/iptables -A FORWARD -p tcp --tcp-flags FIN,RST FIN,RST -j BADPKT
/usr/sbin/iptables -A FORWARD -p tcp --tcp-flags ACK,FIN FIN -j BADPKT
/usr/sbin/iptables -A FORWARD -p tcp --tcp-flags ACK,URG URG -j BADPKT
/usr/sbin/iptables -A FORWARD -p tcp --tcp-flags ACK,PSH PSH -j BADPKT
/usr/sbin/iptables -A FORWARD -p tcp --tcp-flags ALL FIN,URG,PSH -j BADPKT
/usr/sbin/iptables -A FORWARD -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j BADPKT
/usr/sbin/iptables -A FORWARD -p tcp --tcp-flags ALL ALL -j BADPKT
/usr/sbin/iptables -A FORWARD -p tcp --tcp-flags ALL FIN -j BADPKT

/usr/sbin/iptables -A OUTPUT -p tcp -m state --state NEW --dport 53 -j ACCEPT
/usr/sbin/iptables -A OUTPUT -p tcp -m state --syn --state NEW --dport 80 -j ACCEPT
/usr/sbin/iptables -A INPUT -p tcp --dport 7654
/usr/sbin/iptables -A INPUT -p udp --dport 7765
/usr/sbin/iptables -A INPUT -p udp --dport 7657
/usr/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
/usr/sbin/iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

echo "BADIPS Loading ..."
for ip in $BADIPS ; do
/usr/sbin/iptables -A INPUT -s $ip -j BADIP
/usr/sbin/iptables -A FORWARD -s $ip -j BADIP
done
echo "ok"

/usr/sbin/iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o ppp0 -j MASQUERADE
#/usr/sbin/iptables -t nat -A POSTROUTING -o ppp0 -j SNAT --to-source $PPPOEIP

if [ -x /etc/natinit.sh ]; then
. /etc/natinit.sh
fi

/usr/sbin/iptables -A FORWARD -o ppp0 -p tcp -m state --syn --state NEW --dport 80 -j ACCEPT
/usr/sbin/iptables -A FORWARD -i ppp0 -p tcp -m state --syn --state NEW --sport 80 -j ACCEPT
/usr/sbin/iptables -A FORWARD -i ppp0 -p tcp --dport 7654 -j ACCEPT
/usr/sbin/iptables -A FORWARD -i ppp0 -p udp --dport 7765 -j ACCEPT
/usr/sbin/iptables -A FORWARD -i ppp0 -p udp --dport 7657 -j ACCEPT
/usr/sbin/iptables -A FORWARD -i eth0 -o ppp0 -p tcp -m state --syn --state NEW --dport 80 -j ACCEPT
/usr/sbin/iptables -A FORWARD -i eth0 -o ppp0 -p tcp -d 218.240.35.18 -m state --syn --state NEW --dport 80 -j ACCEPT
/usr/sbin/iptables -A FORWARD -i eth0 -o ppp0 -p tcp -d 218.240.35.10 -m state --syn --state NEW --dport 80 -j ACCEPT
/usr/sbin/iptables -A FORWARD -i eth0 -o ppp0 -p tcp -d 218.240.35.18 -m state --syn --state NEW --dport 5308 -j ACCEPT
/usr/sbin/iptables -A FORWARD -i eth0 -o ppp0 -p tcp -d 218.240.35.10 -m state --syn --state NEW --dport 5308 -j ACCEPT
/usr/sbin/iptables -A FORWARD -i eth0 -o ppp0 -p tcp -d 203.70.19.74 -m state --syn --state NEW --dport 5308 -j ACCEPT
/usr/sbin/iptables -A FORWARD -i eth0 -o ppp0 -p tcp -m state --syn --state NEW --dport 5308 -j ACCEPT
/usr/sbin/iptables -A FORWARD -o ppp0 -p udp -m state --state NEW --dport 53 -j ACCEPT
/usr/sbin/iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

if [ -x /etc/forward.sh ]; then
. /etc/forward.sh
fi

if [ -x /etc/portdrop.sh ]; then
. /etc/portdrop.sh
fi

# Server can input ports
if [ -x /etc/acceptport.sh ]; then
. /etc/acceptport.sh
fi

# BADPKT ip
if [ -x /etc/drop.sh ]; then
. /etc/drop.sh
fi