netfilter/iptables IP 信息包过滤系统是一种功能强大的工具,可用于添加、编辑和除去规则,这些规则是在做信息包过滤决定时,防火墙所遵循和组成的规则。这些规则存储在专用的信 息包过滤表中,而这些表集成在 Linux 内核中。在信息包过滤表中,规则被分组放在我们所谓的链(chain)中。
虽然 netfilter/iptables IP 信息包过滤系统被称为单个实体,但它实际上由两个组件netfilter 和 iptables 组成。
netfilter 组件也称为内核空间(kernelspace),是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。
iptables 组件是一种工具,也称为用户空间(userspace),它使插入、修改和除去信息包过滤表中的规则变得容易。除非您正在使用 Red Hat Linux 7.1 或更高版本,否则需要下载该工具并安装使用它。[1]
案例配置
公司有三个部门
工程部门 2.10--2.20
软件部门 2.21-2.30
经理办 2.31-2.40
上班时间 (周一---周五 08:20:00)
工程部门 上班时间登录ftp 不允许http qq 迅雷 下班后无限制
软件部门 http 不允许非法站点sina ,不允许使用迅雷 ,连接数 最多3个
不 允许聊天
不允许使用pplive ,下班后无限制
经理办公室 http qq 都可以,下班后无限制
dmz区域www服务器进行发布
打开数据转发功能
iptables �Ct nat �CA POSTROUTING �Cs 192.168.2.0/24 �Co eth2 �Cj MASQUERADE ------snat 是内网可与外网通讯
加载 ftp模块 modeprobe ip_nat_ftp
iptables -A INPUT -s 192.168.2.1 -p tcp --dport 22 -j ACCEPT
iptables -P INPUT DROP
iptables -A OUTPUT -d 192.168.2.1 -p tcp --sport 22 -j ACCEPT
[root@localhost ~]# iptables -P OUTPUT DROP
[root@localhost ~]# iptables -P FORWARD DROP
[root@localhost ~]# iptables -t filter -A FORWARD -m iprange --src-range 192.168.2.10-192.168.2.20 -m time --timestart 08:00 --timestop 20:00 --weekdays Mon,Tue,Wed,Thu,Fri -p tcp --dport 21 -j ACCEPT
[root@localhost ~]# iptables -t filter -A FORWARD -p tcp --sport 21 -j ACCEPT
[root@localhost ~]# iptables -t filter -A FORWARD -p tcp --dport 21 -j ACCEPT
[root@localhost ~]# iptables -t filter -A FORWARD -p tcp --dport 20 -j ACCEPT
[root@localhost ~]# iptables -t filter -A FORWARD -p tcp --sport 20 -j ACCEPT
下面这个语句可代替上面三句
iptables �Ct filter �CA FORWARD �Cm state �Cstate ESTABLISHED,RELATED �Cj ACCEPT
[root@localhost ~]# iptables -t filter -A FORWARD -s 192.168.2.0/24 -o eth2 -m time --timestart 20:01 --timestop 07:59 -j ACCEPT
测试结果
[root@localhost ~]# iptables -t filter -I FORWARD -m iprange --src-range 192.168.2.21-192.168.2.30 -m time --timestart 08:00 --timestop 20:00 --weekdays Mon,Tue,Wed,Thu,Fri -m string --string "sina" --algo kmp -j DROP
[root@localhost ~]# iptables -t filter -I FORWARD -m iprange --src-range 192.168.2.21-192.168.2.30 -m time --timestart 08:00 --timestop 20:00 --weekdays Mon,Tue,Wed,Thu,Fri -p tcp --dport 80 -j ACCEPT
[root@localhost ~]# iptables -t filter -A FORWARD -m iprange --src-range 192.168.2.21-192.168.2.30 -m time --timestart 08:00 --timestop 20:00 --weekdays Mon,Tue,Wed,Thu,Fri -p udp --dport 53 -j ACCEPT
[root@localhost ~]# iptables -t filter -I FORWARD 2 -m iprange --src-range 192.168.2.21-192.168.2.30 -m time --timestart 08:00 --timestop 20:00 --weekdays Mon,Tue,Wed,Thu,Fri -m layer7 --l7proto xunlei -j DROP
[root@localhost ~]# iptables -t filter -I FORWARD 2 -m iprange --src-range 192.168.2.21-192.168.2.30 -m time --timestart 08:00 --timestop 20:00 --weekdays Mon,Tue,Wed,Thu,Fri -m layer7 --l7proto qq -j DROP
[root@localhost ~]# iptables -t filter -I FORWARD 2 -m iprange --src-range 192.168.2.21-192.168.2.30 -m time --timestart 08:00 --timestop 20:00 --weekdays Mon,Tue,Wed,Thu,Fri -p tcp --syn --dport 80 -m connlimit --connlimit-above 5 -j DROP
由于没有连接外网其他功能暂没有测试
服务器的发布
[root@localhost ~]# iptables -t nat -A PREROUTING -d 192.168.101.1 -p tcp --dport 80 -i eth2 -j DNAT --to 192.168.1.100
[root@localhost ~]# iptables -t filter -A FORWARD -d 192.168.1.100 -p tcp --dport 80 -j ACCEPT