之前自动添加轻量云安全组策略,后来发现安全组策略有条数限制(好像只有100条),干脆用iptables吧
顺便记录个坑,使用iptables时,nginx的upstream要添加对应的INPUT策略,否则-P INPUT DROP时,upstream对端的数据包也会被drop的
iptables -A INPUT -s 123.45.67.89/32 -p tcp -m tcp --sport 80 -j ACCEPT
自动添加iptables和更新轻量云安全组策略脚本:
#!/bin/sh#从nginx日志查询需要屏蔽的ip并写入临时文件tail -10 var/log/nginx/error.log|egrep 'svn|php|cgi|txt|robot|text|Gpon|shell'|awk -F'client: ' '{print $2}'|awk -F, '{print $1}'|uniq|sort >/tmp/blockip.txttail -10 var/log/nginx/access.log|grep -v i314|awk -F- '{print $1}'|uniq|sort >>/tmp/blockip.txt#生成查询需要新生成策略ip的语句echo delete from t_new\;>/tmp/newip.sqlwhile read newipdoecho insert into t_new values\(datetime\(\),\'$newip\'\)\;>>/tmp/newip.sqldone </tmp/blockip.txtecho .output tmp/iptest.txt>>/tmp/newip.sqlecho select ip from t_new where ip not in \(select ip from t_block\) group by ip\;>>/tmp/newip.sql#使用sqlite3执行刚生成的sqlsqlite3 -init tmp/newip.sql db/bip.db <<EOF.quitEOF#添加策略while read blockipdoiptables -I INPUT -s $blockip -i DENYdone </tmp/iptest.txt#保存策略iptables-save>/root/iptables_bak.txt#使用sqlite3保存新添加的ipecho insert into t_block select \* from t_new where ip not in \(select ip from t_block\)\;>/tmp/newip.sqlecho delete from t_new\;>>/tmp/newip.sqlsqlite3 -init /tmp/newip.sql /db/bip.db <<EOF.quitEOF#从nginx日志获取ip 添加轻量云策略#获取temp ipfor myoff in cjd-temp wn-tempdonsxip=`tail -100 /var/log/nginx/access.log|grep $myoff |awk -F- '{print $1}'|uniq|sort`if [ ! -z "$nsxip" ]; thenosxip=`tail -1 /root/$myoff.log|awk -F' ' '{print $2}'`if [ -z "$osxip" ]; thenosxip='192.168.1.123'fiif [ $nsxip != $osxip ] ; thenmytime=`date +%Y%m%d%H%M`#将新ip写入策略echo $mytime $nsxip >> /root/$myoff.logtccli lighthouse DeleteFirewallRules --cli-unfold-argument --InstanceId lhins-63xfb9mm --FirewallRules.0.Protocol ALL --FirewallRules.0.CidrBlock $osxiptccli lighthouse CreateFirewallRules --cli-unfold-argument --InstanceId lhins-63xfb9mm --FirewallRules.0.Action ACCEPT --FirewallRules.0.Protocol ALL --FirewallRules.0.Port ALL --FirewallRules.0.FirewallRuleDescription $myoff --FirewallRules.0.CidrBlock $nsxipfifidone#查询策略#tccli lighthouse DescribeFirewallRules --InstanceId lhins-63xfb9mm
文章转载自老柴杂货铺,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




