欢迎各位兄弟 发布技术文章
这里的技术是共享的
自己编译的内核版本当中netfilter的内核模块(名称都重命名为 xt)与以前的红帽自带的iptables所使用的内核模块的名称是不一样的(好像叫lpt)
172.16.100.7
192.168.10.6
保证能够上互联网
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j SNAT 172.16.100.7
iptables -A FORWARD -s 192.168.10.0/24 -m layer7 --l7proto qq -j REJECT
QQ: UDP,如果QQ在这个规则前已经上了QQ(哪怕QQ下线了,也还是能照样上线的),则这个规则不生效的
只有在这个规则生效后,上QQ,这个规则才生效(上不了QQ)
-m time 时间扩展
--datestart --datestop
--timestart --timestop (可以结合 --monthdays 和 --weekdays 使用 )
iptables -A FORWARD -s 192.168.10.0/24 -m time --timestart 08:10:00 --timestop 12:00:00 -j DROP
iptables -A FORWARD -s 192.168.10.0/24 -m time --timestart 14:30:00 --timestop 18:20:00 -j DROP
service iptables save
iptables-save > /etc/sysconfig/iptables.tus 保存iptables规则到一个文件里
iptables-restore < /etc/sysconfig/iptables.tus 想让保存的iptables规则让生效
其实我们可以完全自定义脚本的,不需要非得使用iptables服务
iptables 脚本:
#!/bin/bash
#
ipt=/usr/sbin/iptables
einterface=eth1
iinterface=eth0
eip=172.16.100.7
iip=192.168.10.6
$ipt -t nat -F
$ipt -t nat -F
$ipt -t mangle -F
$ipt -N clean_up
$ipt -A clean_up -d 255.255.255.255 -p icmp -j DROP
$ipt -A clean_up -j RETURN
$ipt -A
想让它开机自动执行,怎么办
POST-->MBR(bootloader)-->Kernel(initrd)-->init (/etc/inittab)
1,设定默认级别
2,系统初始化脚本
3,运行指定级别的服务
/etc/rc.d/rc 0
/etc/rc.d/rcN.d
S* (启动)
K* (停止)
S99local
/etc/rc.d/rc.local ( /etc/rc.local 链接指向 /etc/rc.d/rc.local )
/etc/rc.local # 开机后自动执行的脚本写在这里面
自己定制iptables脚本比服务器本身的脚本更灵活,更易用
IDS (Intrusion Detection Systems 入侵检测系统)
nids 网络入侵检测系统 snort 入侵防御系统 snort + iptables = NIPS ( Network Intrusion Prevention System 网络入侵防御系统)
xen, kum : iptables 虚拟
hids 主机入侵检测系统
# make modules_install
# make install
别忘了 重启电脑,使用新版本的内核
# cd
# vim /etc/grub.conf
# shutdown -r now
查看此时的新内核版本
# uname -r
为了使以前的iptables 的服务脚本能继续使用,把原来的iptables的服务脚本备份一下
(这里备份到家目录下) 波浪号~表示家目录
iptables服务保存一下
# cp /etc/init.d/iptables ~/
配置文件保存一下
# cp /etc/sysconfig/iptables-config ~/
原来的iptables规则保存一下
# cp /etc/sysconfig/iptables ~/iptables.rules
停止iptables 服务
# service iptables stop
# chkconfig iptables off
# rmp -e iptables-ipv6 iptables ipstate --nodeps
(这里警告一下,因为我们改变过,没关系的,等下我们还可以把它复制过来)
# ls
# tar xf iptables-1.4.6.tar.bz2 -C /usr/src
# cd /usr/src/iptables-1.4.6
# ls
里面有个 extensions 目录 ,就是扩展
# ls extensions/
libipt(内核认识的iptables 扩展) libxt(对于内核来讲内核模块)
# cd /usr/src
# ls
# cd netfilter-layer7-v2.22
# ls
# ls iptables-1.4.3forward-for-kernel-2.6.20forward
# cp iptables-1.4.3forward-for-kernel-2.6.20forward/libxt_layer7.* ../iptables-1.4.6/extensions/
# cd ../iptables-1.4.6/extensions/
# ls
# cd ..
# pwd
# ./configure --prefix=/usr --with-ksource=/usr/src/linux
--prefix=/usr 就是指定安装路径
--with-ksource=/usr/src/linux 就是kernel 内核源码的路径
# make
# make install
# which iptables (看iptables这个二进制程序的路径)
# cd
# ls
# vim iptables
# cp iptables /etc/init.d
# chkconfig --add iptables (把它加到服务控制列表中来)
# chkconfig --list iptables (查看iptables服务状态)(2 3 4 5 是 on,但此时服务尚未启动)
# ls
# cp iptables-config /etc/sysconfig/ (启动之前复制iptables的配置文件)
# vim iptables.rules (iptables.rules 里面其实什么规则也没有,不用复制它吧,可以直接启动iptables了)
# service iptables start
# lsmod
我们希望 iptables 的 layer7 能够过滤对应的协议包,还需要提供协议包,
l7-protocols-2009-05-28.tar.gz 这里协议特征包(layer7支持的qq,msn等协议,是靠协议本身的特征码来识别协议本身的,而这里就是特征码的定义) (l7是英文字母l,不是数字1)
# ls
make install 无非就是将l7-protocols-2009-05-28.tar.gz解压后的东西复制到/etc目录下而已
# tar xf l7-protocols-2009-05-28.tar.gz
# cd l7-protocols-2009-05-28.tar.gz
# make install
# service iptables restart (照道理,其实是不用重启的)
我们验证一下 layer7 是不是已经生效了
# ls /etc/l7-protocols/protocols/ (可以看到l7支持的layer协议名称)(对协议进行的控制)
# iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j SNAT --to-source 172.16.100.7
# iptables -t filter -A FORWARD -s 192.168.10.0/24 -m layer7 --l7proto qq -k REJECT
# iptables -L -n
(这里 172.16.200.7 是内网地址,记住仅仅这里)
# iptables -t nat -I POSTROUTING -s 172.16.100.7 -j MASQUERADE
# iptables - I FORWARD -s 172.16.100.7 -j ACCEPT
网关电脑(中间电脑),保证DNS正常
网关电脑(中间电脑) 可以上网
windows 电脑配置
windows 配置网络
windows 安装QQ
windows 可以上网
QQ 登不上
网关电脑(中间电脑)
# iptables -D FORWARD 1 (网关电脑(中间电脑) 删掉这个规则)
windows 电脑可以上QQ
# man iptables
# cd /etc/rc.d/init.d
# ls
# cd ..
# ls
# cd rc3.d/
# ls
# cat S99local
# ll S99local
# cd ../
# ls
# pwd
# vim rc.local