首页 > 技术文章 > iptables开通某些端口

linyouyi 2019-09-01 21:33 原文

 

#!/bin/bash
#define all variance or parameter

WAH_INT="eth0"
WAH_INT_IP="222.222.101.1"

LAN_INT="eth1"
LAN_INT_IP="192.168.222.101"

ALLOW_ACCEPT_CLIENT="192.168.222.1 192.168.222.5 192.168.222.7 192.168.222.20 192.168.222.80"

WAH_WIN2003_SRW="222.222.101.2"

PORT="20,21,25,53,80,110,143,554,1755,7070"

IPT="/sbin/iptables"
##############################################################################################

start(){
echo ""
echo -e " \033[1;032n Flush all chains.......                                   [ok] \033[n "

# load modules if necessary
 modprobe ip_tables
 modprobe ip_conntrack
 modprobe ip_conntrack_ftp
 modprobe ip_conntrack_irc

#flush all rules at first
 $IPT -t filter -F
 $IPT -t nat -F
 $IPT -t mangle -F

#default policy is drop
 $IPT -t filter -P INPUT   DROP
 $IPT -t filter -P OUTPUT  DROP
 $IPT -t filter -P FORWARD DROP

#open ssh service
 $IPT -t filter -A INPUT -p tcp --dport 22 -j ACCEPT
 $IPT -t filetr -A OUTPUT -p tcp --dport 22 -j ACCEPT

#SNAT 
 echo 1 > /proc/sys/net/ipv4/ip_forward
 $IPT -t nat -A POSTROUTING -s 192.168.222.0/24 -o $WAH_INT -j SNAT --to-source $WAH_INT_IP

################################# accept erp accept #########################################
if [ "$ALLOW_ACCEPT_CLIENT" != "" ]; then
  for LAN in ${ALLOW_ACCEPT_CLIENT}
  do
  $IPT -t filter -A FORWARD -p tcp -m multiport -s ${LAN} -o$WAN_INT --dport $PORT -j ACCEPT
  $IPT -t filter -A FORWARD -p ucp -m multiport -s ${LAN} -o$WAN_INT --dport $PORT -j ACCEPT
  $IPT -t filter -A FORWARD -p tcp -m multiport -s $WAN_INT --sport $PORT -j ACCEPT
  $IPT -t filter -A FORWARD -p ucp -m multiport -s $WAN_INT --sport $PORT -j ACCEPT
  
  echo ""
  echo ${LAN} Access to Extermel............ACCEPT access win2003 server               [ok]
  done
fi

}

#############################################################################################
stop(){
#######################  Flush everything
  $IPT -F
  $IPT -X
  $IPT -Z
  $IPT -F -t nat
  $IPT -X -t nat
  $IPT -Z -t nat
  $IPT -P OUTPUT ACCEPT
  $IPT -P FORWARD ACCEPT

echo "######################################################################################"
echo "#                                               #"
echo "#            Stop firewall server Access rule Successfull !               #"
echo "#                                               #"
echo "######################################################################################"

}

############################################################################################
case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  restart)
    stop
    start
    ;;
  *)
    echo $"Usage:$0 {start|stop|restart|}"
    exit 1
esac
exit $?

 

推荐阅读