linux-iptables安全加固脚本(可重复执行)
- #!/bin/bash
-
- chain_name="zgp" #自定义的规则链
- ip_list="192.168.5.1" #ip地址,也可以填写网段:192.168.5.0/24
- tcp_or_udp="tcp udp" #协议类型
- tcp_port="22 1111" #tcp端口
- udp_port="53 55" #udp端口
- logfile="/tmp/iptable.log" #日志
- ######################################################################
-
- #日志函数
- log(){ echo -e 【INFO `date '+%Y-%m-%d %H:%M:%S'` `hostname`】 "\033[34m$1 \033[0m" |tee -a $logfile; }
-
- #iptables保存函数
- restart_iptables(){ log "save iptables." && service iptables save; }
-
- #提示函数
- Usage(){
- log "\nUSAGE:\n 【 sh ./iptables.sh install ###配置自定义的iptables规则 】
- 【 sh ./iptables.sh remove ###移除自定义的iptables规则 】"
- exit 0
- }
-
- #自定义链及规则
- install(){
- log "Ready to add iptables. "
- chain_m=`iptables -L -n|grep "Chain $chain_name"|grep -v grep |wc -l`
- if [ $chain_m -eq 0 ];then
- log "iptables -N $chain_name. " && iptables -N $chain_name
- fi
- for x in $tcp_or_udp;do
- case $x in
- "tcp")
- for y in $tcp_port;do
- log "iptables -A $chain_name -s $ip_list -p $x --dport $y -j ACCEPT. "
- iptables -A $chain_name -s $ip_list -p $x --dport $y -j ACCEPT
- done ;;
- "udp")
- for z in $udp_port;do
- log "iptables -A $chain_name -s $ip_list -p $x --dport $z -j ACCEPT. "
- iptables -A $chain_name -s $ip_list -p $x --dport $z -j ACCEPT
- done ;;
- esac
- done
- log "add $chain_name to chain INPUT. " && iptables -A INPUT -j $chain_name
- log "set chain INPUT DROP" && iptables -P INPUT DROP
- }
-
- #移除链及规则
- remove(){
- log "set chain INPUT ACCEPT." && iptables -P INPUT ACCEPT
- n=`iptables -nL INPUT --line-numbers |grep -w -o $chain_name|wc -l`
- if [ ${n} -ne 0 ];then
- log "remove chain $chain_name from INPUT" && iptables -D INPUT `iptables -nL INPUT --line-numbers |grep $chain_name|awk '{print $1}'`
- fi
- log "clean chain $chain_name. " && iptables -F $chain_name && iptables -X $chain_name
- }
-
-
- case $1 in
- 'install')
- remove; install; restart_iptables ;;
- 'remove')
- remove && restart_iptables ;;
- *)
- Usage ;;
- esac