红联Linux门户
Linux帮助

iptables 应用小记

发布时间:2009-04-19 18:14:03来源:红联作者:lijingen
[i=s] 本帖最后由 lijingen 于 2009-4-20 16:36 编辑 [/i]

[hide=190]测试过了,希望给点意见[code]
#=============================
#SOFT FIREWALL FOR IPTABLES SCRIPTS
#=============================
###################################
#---wan->-eht0------eth1-->--lan--1720.0.0/25
###################################
#! /bin/sh
#=============================
#打开转发
#=============================
echo '1' >/proc/sys/net/ipv4/ip_forward
echo '1' >/proc/sys/net/ipv4/ip_dynaddr
echo '1' >/proc/sys/net/ipv4/tcp_ecn
echo '1' >/proc/sys/net/ipv4/syncookies
echo '1' >/proc/sys/net/ipv4/icmp_echo_ignore_brodcasts
#========================
#清除规则
#========================
iptables -F
iptables -X
iptables -Z
iptables -t nat -F
iptables -t nat -X
iptables -t nat -Z
iptables -t mangle -F
iptables -t mangle -X
iptables -t mangle -Z
#=========================
#默认策略
#=========================
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
#=========================
#允许ssh
#=========================
#iptables -A INPUT -p tcp -s 192.168.204.1 --dport 22 -j ACCEPT
#iptables -A OUTPUT -p tcp -d 192.168.204.60 --sport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sprot 22 -j ACCEPT
#================================================================
#允许本地连接
#========================================
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
#========================================
#允许soft firewall ping
#==================================================================
#iptables -A INPUT -i eth0 -p icmp --icmp-type echo-reply -j ACCEPT
#iptables -A OUTPUT -o eth1 -p icmp --icmp-type echo-request -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT
#====================================================================
#允许外网某台机器可以ping,这里的外网机器为192的网段eth0
#====================================================================
iptables -A INPUT -s 192.168.204.1 -p icmp --icmp-type 8 -j ACCEPT
iptables -A OUTPUT -d 192.168.204.1 -p icmp --icmp-type 0 -j ACCEPT
#====================================================================
#允许内网机器ping,这是内网eth1
#====================================================================
iptables -A INPUT -s 172.0.0.2 -p icmp --icmp-type 8 -j ACCEPT
iptables -A OUTPUT -d 172.0.0.2 -p icmp --icmp-type 0 -j ACCEPT
#====================================================================
#禁止 135 137 138 139 445的端口请求
#处理IP碎片数量,防止攻击,允许每秒100个
#转发链的监控.开启转发功能
iptables -A FORWARD -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT
iptables -A FORWARD -p tcp -m multiport --dport 135,137,138,139,445 -j DROP
iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
#iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
#------------------------
#dns
#------------------------
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -A INPUT -p udp --sport 53 -m state --state ESTABLISHED -j ACCEPT
#===================================================
#端口映射,eth0外网接口,eth1内网接口
#====================================================
#web服务
#--------------------------------------------
iptables -t nat -A PREROUTING -i eth0 -p tcp -d 192.168.204.60 --dport 80 -j DNAT --to-destination 172.0.0.2:80
iptables -t nat -A POSTROUTING -o eth0 -p tcp -s 172.0.0.2 -sport 80 -j SNAT --to-source 192.168.204.60:80

iptables -t nat -A PREROUTING -i eth0 -p tcp -d 192.168.204.60 --dport 25 -j DNAT --to-destination 172.0.0.3:25
iptables -t nat -A POSTROUTING -o eth0 -p tcp -s 172.0.0.3 -sport 25 -j SNAT --to-source 192.168.204.60:25
iptables -t nat -A PREROUTING -i eth0 -p tcp -d 192.168.204.60 --dport 110 -j DNAT --to-destination 172.0.0.3:110
iptables -t nat -A POSTROUTING -o eth0 -p tcp -s 172.0.0.3 -sport 110 -j SNAT --to-source 192.168.204.60:110

iptables -A FORWARD -i eth0 -p tcp --dport 80 -d 172.0.0.2 -j ACCEPT
iptables -A FORWARD -i eth1 -s 172.0.0.2 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth1 -s 172.0.0.3 -p tcp --sport 25 -m state --state ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth1 -s 172.0.0.3 -p tcp --sport 110 -m state --state ESTABLISHED -j ACCEPT

iptables -A FORWARD -i eth1 -m state --state NEW -j ACCEPT
iptables -A FORWARD -o eth1 -d 172.0.0.0/25 -p tcp -m multiport --dport 80,25,110 -j ACCEPT
iptables -A FORWARD -i eth1 -j ACCEPT

#iptables -t nat -A PREROUTING -s 192.168.1.0/24 -p tcp --dport 80 -i eth0 -j REDIRECT --to 3128
#iptables -t nat -A PREROUTING -d a.b.c.d -p tcp --dport 80 -j DNAT --to 192.168.1.10
#iptables -t nat -A POSTROUTING -d 192.168.1.10 -p tcp --dport 80 -j SNAT --to 192.168.1.1


#=================================================================
#source nat,上网
#====================================================================
#上网为动态ip
#iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
#上网为静态ip
iptables -t nat -A POSTROUTING -s 172.0.0.0/25 -p tcp -o eth0 -j SNAT --to 192.168.204.60
#上网为adsl
#iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.62.0/24 -j MASQUERADE

#------------------------------------------------------------
#iptables -I FORWARD -p udp --dport 53 -m string --string "tencent" --algo bm -j DROP
#iptables -I FORWARD -p tcp -m multiport --dport 80,443 -m layer7 --l7proto qq -j DROP
#iptables -I FORWARD -p udp --dport 8000 -j DROP
#iptables -I FORWARD -p tcp -m layer7 --l7proto socks -j DROP
#iptables -I FORWARD -p tcp -m layer7 --l7proto httpagent -j DROP
#iptables -I FORWARD -p udp --dport 53 -m string --string "messenger" --algo bm -j DROP
#iptables -I FORWARD -p tcp -m multiport --dport 80,443 -m layer7 --l7proto msnmessenger -j DROP
#iptables -I FORWARD -p udp --dport 1863 -j DROP

#---------------------------------------------------------------------------
#iptables -t mangle -I FORWARD -m mac --mac-sources XX:XX:XX:XX:XX:XX -j CONNMARK --set-mark 1
#iptables -I FORWARD -m connmark --mark 1 -j ACCEPT
#原理:
#1、在 mangle 表里把该 MAC 地址产生的所有连接做个标记
#2、在 filter 表里把符合连接标记的所有数据包提前放走,不受后面策略限制
#
#不知道能否成功,原因:不知道 mangle 表的 FORWARD 读取 mac 地址时是否正确
#上qq
#iptables -t mangle -I PREROUTING -m mac --mac-source 00:0C:E7:B0:B9:E2 -j CONNMARK --set-mark 1
# iptables -I FORWARD -m connmark --mark 1 -j ACCEPT
#或者iptables -t mangle -I FORWARD -m mac --mac-source 00:1A:73:8E:09:C6 -j CONNMARK --set-mark 1
#iptables -t mangle -I PREROUTING -m mac --mac-source 00:0C:76:B0:29:82 -j CONNMARK --set-mark 1
#iptables -I FORWARD -m connmark --mark 1 -j ACCEPT
#=======================================================================================================


[/code][/hide]
文章评论

共有 83 条评论

  1. yishnew 于 2009-04-23 22:09:39发表:

    verygood

  2. longck 于 2009-04-22 11:47:38发表:

    看看~~~~~~~

  3. lijingen 于 2009-04-20 17:03:17发表:

    {:3_108:},
    费了几天的时间写的