2007-11-25 | centos4.4 升级内核打netfilter补丁
1、下载
linux-2.6.15.6.tar.bz2 patch-2.6.15.6.bz2
iptables-1.3.6.tar.bz2 patch-o-matic-ng-20061024.tar.bz2
2、解压缩
cd /usr/src
tar -jxf linux-2.6.15.6.tar.bz2 | tar -jxf iptables-1.3.6.tar.bz2 | tar -jxf patch-o-matic-ng-20061024.tar.bz2
3、内核先打补丁
cd /usr/src/linux-2.6.15.6 | bunzip2 -dv /usr/src/patch-2.6.15.6.bz2 | patch -p0
vi /usr/src/linux-2.6.15.6/include/linux/posix_types.h
#define __FD_SETSIZE 65536
vi /usr/src/linux-2.6.15.6/include/linux/fs.h
#define INR_OPEN 65536
#define NR_FILE 65536
vi /usr/src/linux-2.6.15.6/include/net/tcp.h
#define TCP_TIMEWAIT_LEN (1*HZ)
#define TCP_SYNACK_RETRIES 3
4、拷贝原来的config
cp /boot/config-2.6.9-42.ELsmp ./.config
注:我的是双cpu的机器,所以是ELsmp
make menuconfig
选择 Load an Alternate Configuration File
选择 .config
保存 退出
5、打netfilter补丁
cd /usr/src/path-o-matic-ng-20061024
./runme --download
注:上述命令选择下载ipp2p time等补丁
export KERNEL_DIR=/usr/src/linux-2.6.15.6
export IPTABLES_DIR=/usr/src/iptables-1.3.6
./runme ipp2p
./runme time
./runme connlimit
6、配置内核选项
networking
networking options
network packet filtering (replaces ipchains)
IP:Netfilter Configuration
把 ipp2p、time、 Connections/IP 选上
Security options
NSA SELinux Support 选项 去除
同时保存 退出
vi /etc/sysconfig/selinux
SELINUX=disabled
7、开始编译并安装
make all
make modules
make modules_install
make install
8、设置grub.conf
设置default=0的相关项
重新启动计算机
9、安装新版本iptable
cd /usr/src/iptables-1.3.6
export KERNEL_DIR=/usr/src/linux-2.6.15.6
export IPTABLES_DIR=/usr/src/iptables-1.3.6
make BINDIR=/sbin LIBDIR=/lib MANDIR=/usr/share/man install
10、测试
uname -r 显示内核版本
iptables -V 显示iptables版本
ulimit -a 显示最大打开文件等参数
top 选择1 看多cpu支持情况
11、编辑自己的防火墙
=====================================
以下为我自己的 iptables的参考
#! /bin/bash
EXTIF="eth0"
INIF="eth1"
INNET="172.21.41.13/24"
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_nat_irc > /dev/null 2>&1
modprobe ipt_mark > /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
modprobe ipt_MASQUERADE > /dev/null 2>&1
/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 Drop
/sbin/iptables -P OUTPUT ACCEPT
/sbin/iptables -P FORWARD Drop
/sbin/iptables -t nat -P PREROUTING ACCEPT
/sbin/iptables -t nat -P POSTROUTING ACCEPT
/sbin/iptables -t nat -P OUTPUT ACCEPT
#### openvpn设置及内部转发
/sbin/iptables -A INPUT -p udp -m udp --dport 1194 -j ACCEPT
/sbin/iptables -A INPUT -i tun0 -j ACCEPT
/sbin/iptables -A OUTPUT -o tun0 -j ACCEPT
/sbin/iptables -A FORWARD -i tun0 -j ACCEPT
/sbin/iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o $INIF -j SNAT --to-source 172.21.41.13
##屏蔽p2p应用
/sbin/iptables -A FORWARD -m iprange --src-range 172.21.41.20-172.21.41.254 -m ipp2p --ipp2p -j Drop
##内部计算机每台外部连接30个 防止多进程下载软件
/sbin/iptables -A FORWARD -i $INIF -p tcp --syn -m connlimit --connlimit-above 30 -j Drop
/sbin/iptables -A INPUT -i $INIF -j ACCEPT
/sbin/iptables -A FORWARD -i $INIF -j ACCEPT
/sbin/iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -A INPUT -p icmp -m limit --limit 3/s -j LOG --log-level INFO --log-prefix "ICMP packet IN: "
/sbin/iptables -A INPUT -p icmp -m limit --limit 6/m -j ACCEPT
/sbin/iptables -N syn-flood
/sbin/iptables -A INPUT -p tcp --syn -j syn-flood
/sbin/iptables -I syn-flood -p tcp -m limit --limit 3/s --limit-burst 6 -j RETURN
/sbin/iptables -A syn-flood -j REJECT
sysctl -w net.ipv4.tcp_syncookies=1 &>/dev/null
sysctl -w net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=3800 &>/dev/null
sysctl -w net.ipv4.ip_conntrack_max=819200 &>/dev/null
/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
echo "0">/proc/sys/net/ipv4/icmp_echo_ignore_all
echo "1">/proc/sys/net/ipv4/conf/eth1/proxy_arp
echo "819200">/proc/sys/net/ipv4/ip_conntrack_max
echo "1024">/proc/sys/net/ipv4/neigh/default/gc_thresh1
echo "2048">/proc/sys/net/ipv4/neigh/default/gc_thresh2
echo "4096">/proc/sys/net/ipv4/neigh/default/gc_thresh3
##squid的透明代理 注意bind的设置要是纯缓存方式的 同时dhcp传递给客户端的nameserver只能是内部服务器的地址 外部dns的地址是通过bind服务器纯缓存到达的 这样才能提高squid的dns效率 同时通过bing解决内部dns解析和外部dns解析之间的矛盾
/sbin/iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-ports 3128
## 80端口以外转发
/sbin/iptables -t nat -A POSTROUTING -s $INNET -o $EXTIF -j MASQUERADE
fi
if [ -f /opt/iptables/iptables.allow ]; then
sh /opt/iptables/iptables.allow
fi
AICMP="0 3 3/4 4 8 11 12 14 16 18"
for tyicmp in $AICMP; do
/sbin/iptables -A INPUT -i $EXTIF -p icmp --icmp-type $tyicmp -j ACCEPT
done
/sbin/iptables -A INPUT -p tcp -i $EXTIF -m multiport --dports 22,21,25,80,110,443,3000,9003 -j ACCEPT
linux-2.6.15.6.tar.bz2 patch-2.6.15.6.bz2
iptables-1.3.6.tar.bz2 patch-o-matic-ng-20061024.tar.bz2
2、解压缩
cd /usr/src
tar -jxf linux-2.6.15.6.tar.bz2 | tar -jxf iptables-1.3.6.tar.bz2 | tar -jxf patch-o-matic-ng-20061024.tar.bz2
3、内核先打补丁
cd /usr/src/linux-2.6.15.6 | bunzip2 -dv /usr/src/patch-2.6.15.6.bz2 | patch -p0
vi /usr/src/linux-2.6.15.6/include/linux/posix_types.h
#define __FD_SETSIZE 65536
vi /usr/src/linux-2.6.15.6/include/linux/fs.h
#define INR_OPEN 65536
#define NR_FILE 65536
vi /usr/src/linux-2.6.15.6/include/net/tcp.h
#define TCP_TIMEWAIT_LEN (1*HZ)
#define TCP_SYNACK_RETRIES 3
4、拷贝原来的config
cp /boot/config-2.6.9-42.ELsmp ./.config
注:我的是双cpu的机器,所以是ELsmp
make menuconfig
选择 Load an Alternate Configuration File
选择 .config
保存 退出
5、打netfilter补丁
cd /usr/src/path-o-matic-ng-20061024
./runme --download
注:上述命令选择下载ipp2p time等补丁
export KERNEL_DIR=/usr/src/linux-2.6.15.6
export IPTABLES_DIR=/usr/src/iptables-1.3.6
./runme ipp2p
./runme time
./runme connlimit
6、配置内核选项
networking
networking options
network packet filtering (replaces ipchains)
IP:Netfilter Configuration
把 ipp2p、time、 Connections/IP 选上
Security options
NSA SELinux Support 选项 去除
同时保存 退出
vi /etc/sysconfig/selinux
SELINUX=disabled
7、开始编译并安装
make all
make modules
make modules_install
make install
8、设置grub.conf
设置default=0的相关项
重新启动计算机
9、安装新版本iptable
cd /usr/src/iptables-1.3.6
export KERNEL_DIR=/usr/src/linux-2.6.15.6
export IPTABLES_DIR=/usr/src/iptables-1.3.6
make BINDIR=/sbin LIBDIR=/lib MANDIR=/usr/share/man install
10、测试
uname -r 显示内核版本
iptables -V 显示iptables版本
ulimit -a 显示最大打开文件等参数
top 选择1 看多cpu支持情况
11、编辑自己的防火墙
=====================================
以下为我自己的 iptables的参考
#! /bin/bash
EXTIF="eth0"
INIF="eth1"
INNET="172.21.41.13/24"
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_nat_irc > /dev/null 2>&1
modprobe ipt_mark > /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
modprobe ipt_MASQUERADE > /dev/null 2>&1
/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 Drop
/sbin/iptables -P OUTPUT ACCEPT
/sbin/iptables -P FORWARD Drop
/sbin/iptables -t nat -P PREROUTING ACCEPT
/sbin/iptables -t nat -P POSTROUTING ACCEPT
/sbin/iptables -t nat -P OUTPUT ACCEPT
#### openvpn设置及内部转发
/sbin/iptables -A INPUT -p udp -m udp --dport 1194 -j ACCEPT
/sbin/iptables -A INPUT -i tun0 -j ACCEPT
/sbin/iptables -A OUTPUT -o tun0 -j ACCEPT
/sbin/iptables -A FORWARD -i tun0 -j ACCEPT
/sbin/iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o $INIF -j SNAT --to-source 172.21.41.13
##屏蔽p2p应用
/sbin/iptables -A FORWARD -m iprange --src-range 172.21.41.20-172.21.41.254 -m ipp2p --ipp2p -j Drop
##内部计算机每台外部连接30个 防止多进程下载软件
/sbin/iptables -A FORWARD -i $INIF -p tcp --syn -m connlimit --connlimit-above 30 -j Drop
/sbin/iptables -A INPUT -i $INIF -j ACCEPT
/sbin/iptables -A FORWARD -i $INIF -j ACCEPT
/sbin/iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -A INPUT -p icmp -m limit --limit 3/s -j LOG --log-level INFO --log-prefix "ICMP packet IN: "
/sbin/iptables -A INPUT -p icmp -m limit --limit 6/m -j ACCEPT
/sbin/iptables -N syn-flood
/sbin/iptables -A INPUT -p tcp --syn -j syn-flood
/sbin/iptables -I syn-flood -p tcp -m limit --limit 3/s --limit-burst 6 -j RETURN
/sbin/iptables -A syn-flood -j REJECT
sysctl -w net.ipv4.tcp_syncookies=1 &>/dev/null
sysctl -w net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=3800 &>/dev/null
sysctl -w net.ipv4.ip_conntrack_max=819200 &>/dev/null
/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
echo "0">/proc/sys/net/ipv4/icmp_echo_ignore_all
echo "1">/proc/sys/net/ipv4/conf/eth1/proxy_arp
echo "819200">/proc/sys/net/ipv4/ip_conntrack_max
echo "1024">/proc/sys/net/ipv4/neigh/default/gc_thresh1
echo "2048">/proc/sys/net/ipv4/neigh/default/gc_thresh2
echo "4096">/proc/sys/net/ipv4/neigh/default/gc_thresh3
##squid的透明代理 注意bind的设置要是纯缓存方式的 同时dhcp传递给客户端的nameserver只能是内部服务器的地址 外部dns的地址是通过bind服务器纯缓存到达的 这样才能提高squid的dns效率 同时通过bing解决内部dns解析和外部dns解析之间的矛盾
/sbin/iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-ports 3128
## 80端口以外转发
/sbin/iptables -t nat -A POSTROUTING -s $INNET -o $EXTIF -j MASQUERADE
fi
if [ -f /opt/iptables/iptables.allow ]; then
sh /opt/iptables/iptables.allow
fi
AICMP="0 3 3/4 4 8 11 12 14 16 18"
for tyicmp in $AICMP; do
/sbin/iptables -A INPUT -i $EXTIF -p icmp --icmp-type $tyicmp -j ACCEPT
done
/sbin/iptables -A INPUT -p tcp -i $EXTIF -m multiport --dports 22,21,25,80,110,443,3000,9003 -j ACCEPT



评论