iptables脚本

 

#!/bin/bash

PATH=/sbin:/usr/sbin:/bin:/usr/binRC_SQUID=/etc/rc.d/init.d/squid

# 對外連線EXTIF="eth1"

# 對內連線INTIF="eth0"INNET="192.168.100.1/24"

# 針對 NAT & DHCPNATNET="eth2"NTNET="192.168.21.1/24"

#掛入相關 module /sbin/modprobe ip_tables /sbin/modprobe ip_nat_ftp /sbin/modprobe ip_conntrack /sbin/modprobe ip_conntrack_ftp

# 先清除所有的防火牆規則/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 ACCEPT/sbin/iptables -t nat -P PREROUTING ACCEPT/sbin/iptables -t nat -P POSTROUTING ACCEPT/sbin/iptables -t nat -P OUTPUT ACCEPT

# 開放特定Port/sbin/iptables -A INPUT -p TCP -i $EXTIF --dport 22 -j DROP # SSH/sbin/iptables -A INPUT -p TCP -i $EXTIF --dport 25 -j ACCEPT # SMTP/sbin/iptables -A INPUT -p UDP -i $EXTIF --dport 53 -j ACCEPT # DNS/sbin/iptables -A INPUT -p TCP -i $EXTIF --dport 53 -j ACCEPT # DNS/sbin/iptables -A INPUT -p TCP -i $EXTIF --dport 80 -j ACCEPT # WWW/sbin/iptables -A INPUT -p TCP -i $EXTIF --dport 110 -j ACCEPT # POP3/sbin/iptables -A INPUT -p TCP -i $EXTIF --dport 113 -j ACCEPT # AUTH/sbin/iptables -A INPUT -p TCP -i $INTIF --dport 137 -j ACCEPT # SMB/sbin/iptables -A INPUT -p TCP -i $INTIF --dport 138 -j ACCEPT # SMB/sbin/iptables -A INPUT -p TCP -i $INTIF --dport 139 -j ACCEPT # SMB/sbin/iptables -A INPUT -p TCP -i $EXTIF --dport 7021 -j ACCEPT # VFTP/sbin/iptables -A INPUT -p TCP -i $EXTIF --dport 6080 -j ACCEPT # WWW

/sbin/iptables -P OUTPUT ACCEPT /sbin/iptables -P FORWARD DROP /sbin/iptables -t filter -A FORWARD -i eth1 -o eth2 -m state --state ESTABLISHED,RELATE -j ACCEPT /sbin/iptables -t filter -A FORWARD -i eth2 -o eth1 -p tcp -s 192.168.100.0/24 --dport 6080 -j ACCEPT

# 啟動所有介面的來源 IP 查核 if [ -e /proc/sys/net/ipv4/conf/all/rp_filter ] then for f in /proc/sys/net/ipv4/conf/*/rp_filter do echo 1 〉 $f done fi

# 防止 sync flood 攻擊 /sbin/iptables -N synfoold /sbin/iptables -A synfoold -p tcp --syn -m limit --limit 1/s -j RETURN /sbin/iptables -A synfoold -p tcp -j REJECT --reject-with tcp-reset /sbin/iptables -A INPUT -p tcp -m state --state NEW -j synfoold

# 防止 Ping of Death /sbin/iptables -N ping /sbin/iptables -A ping -p icmp --icmp-type echo-request -m limit --limit 1/second -j RETURN /sbin/iptables -A ping -p icmp -j REJECT /sbin/iptables -I INPUT -p icmp --icmp-type echo-request -m state --state NEW -j ping

# 防止惡意掃描 /sbin/iptables -A INPUT -i $EXTIF -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP /sbin/iptables -A INPUT -i $EXTIF -p tcp --tcp-flags ALL ALL -j DROP /sbin/iptables -A INPUT -i $EXTIF -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP /sbin/iptables -A INPUT -i $EXTIF -p tcp --tcp-flags ALL NONE -j DROP /sbin/iptables -A INPUT -i $EXTIF -p tcp --tcp-flags SYN,RST SYN,RST -j DROP /sbin/iptables -A INPUT -i $EXTIF -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP

# 來自內部的連線一律放行 /sbin/iptables -A INPUT -i $INTIF -j ACCEPT/sbin/iptables -A INPUT -i $NATNET -j ACCEPT

# 重導 www 請求至 Squid (透通代理) # 如果您有架設 Proxy Server 可以將註解拿掉 # 這樣可以強迫使用者使用 Proxy 而不必修改 Client 端設定 /sbin/iptables -t nat -A PREROUTING -i $NATNET -p tcp --dport 80 -j REDIRECT --to -port 6080

# 啟動 IP 偽裝 /sbin/iptables -t nat -A POSTROUTING -s $NATNET -o $EXTIF -j MASQUERADE

# 阻擋指定的網卡號碼 # 這是 Kernel 2.4 系列新功能,主要防止 Client 非法搶 IP # /sbin/iptables -A INPUT -m mac --mac-source xx:xx:xx:xx:xx:xx -j DROP

# 最後擋掉其他外部連線要求 /sbin/iptables -A INPUT -i $NATNET -m state --state NEW,INVALID -j DROP /sbin/iptables -A FORWARD -i $NATNET -m state --state NEW,INVALID -j DROP

# 防止超量攻擊 echo 1 〉 /proc/sys/net/ipv4/tcp_syncookies

# 啟動 IP 轉送 echo 1 〉 /proc/sys/net/ipv4/ip_forward #以上脚本请根据自己的实际情况进行修改

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值