0
我想写一个创建WAF条目(这将阻止一个IP地址或一组IP地址进入),并稍后删除它们的基本逻辑。AWS Lambda函数创建/删除条目到WAF
我目前做这
const aws = require('aws-sdk');
const s3 = new aws.S3({ apiVersion: '2006-03-01' });
const waf = new aws.WAF({ apiVersion: '2015-08-24' });
class Police {
constructor(maxHit=100, timeGap=(6*60*60*1000)) {
this.maxHit = maxHit;
this.timeGap = timeGap;
this.lastBailCheck = Date.now();
this.hitMap = {};
}
static bail(ip){
// TODO bail this ip by removing entry into waf
}
static jail(ip){
// TODO jail this ip by adding entry from waf
}
checkBail(){
var nowDate = Date.now();
if((nowDate - this.lastBailCheck) > this.timeGap){
this.lastBailCheck = nowDate;
this.prevMap = this.hitMap;
this.hitMap = {};
this.scanAndBail();
}
}
scanAndBail(){
Object.keys(this.prevMap).forEach(Police.bail);
delete this.prevMap;
}
watch(ip){
this.hitMap[ip] = (this.hitMap[ip] || 0) + 1;
if(this.maxHit < this.hitMap[ip]){
Police.jail(ip);
}
this.checkBail();
}
}
const police = new Police();
function forOneLogLine(line){
if(typeof line === 'string') {
police.watch(line.split(' ')[3]);
}
}
所以我在这里要填写代码为jail
和bail
(块/免费一IP地址或一组地址)
我通过这个AWS nodejs docs去。但是如何实施它却令人困惑。更具体地说,如何最优化地实施它。 我正在寻找只有两个API,一个我会通过IP地址,这将阻止,另一个释放。
我从上面的文档
- 我如何通过IP地址的几个基本问题?并在哪些API?
aws.WAF
aws.WAF
会自动将一组IP地址分组为IPSets吗?aws.WAF
也保持命中计数,类似的我在做类Police
?- 我需要取
ChangeToken
为每IPaddress
我要添加/删除到块列表中吗?或者我可以拥有一次并永久使用它?
我会很高兴有一个示例代码(最好在JavaScript中)的确切要求。 我会很高兴,如果我得到我的jail
和bail
代码填充。
好的..这很好..但我不想创建一个云形成堆栈..不是没有堆栈可能吗?我的意思是,我只是更新了WAF条目..堆栈在哪里?我已经阅读了教程..并试图在我自己的情况下完成所有工作,而不使用堆栈(模板)。即使是教程,lamda函数也会进入WAF ..我只是用同样简单的逻辑来做同样的事.. – codeofnode
对,这里不需要CloudFormation。我希望你能通过JavaScript SDK来做到这一点。示例Python Lambda代码没有帮助吗? – jarmod
这当然有帮助..得到一些想法发生了什么..但只是努力与哪里ip集来自和一点蟒蛇..非常新的蟒蛇 – codeofnode