zoukankan      html  css  js  c++  java
  • 【linux工具之iptables 脚本】

    转自:

    一个iptables脚本

    #!/bin/bash
    PATH=/sbin:/usr/sbin:/bin:/usr/bin
    RC_SQUID=/etc/rc.d/init.d/squid
    # 對外連線
    EXTIF="eth1"
    # 對內連線
    INTIF="eth0"
    INNET="192.168.100.1/24"
    # 針對 NAT & DHCP
    NATNET="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

  • 相关阅读:
    CSLA服务端如何使用多线程的解决方案
    一片马蜂窝文章
    VB.NET和C#之间的语法不同比较
    [软件推荐]jQuery,JavaScript,HTML,CSS,PHP,MySQL,正则表达式 CHM帮助手册
    使用jQuery.Validate进行客户端验证
    知道AutoHotKey
    数据库设计问题
    [书籍推荐]为了自己的钱包,为了自己的时间——分享一下自己的淘书经验
    策略模式4
    SQLiteHelperSQLite帮助类
  • 原文地址:https://www.cnblogs.com/tango-dg/p/4159573.html
Copyright © 2011-2022 走看看