1*a71a9546SAutomerger Merge WorkerAllows you to dynamically create a list of IP addresses and then match against 2*a71a9546SAutomerger Merge Workerthat list in a few different ways. 3*a71a9546SAutomerger Merge Worker.PP 4*a71a9546SAutomerger Merge WorkerFor example, you can create a "badguy" list out of people attempting to connect 5*a71a9546SAutomerger Merge Workerto port 139 on your firewall and then DROP all future packets from them without 6*a71a9546SAutomerger Merge Workerconsidering them. 7*a71a9546SAutomerger Merge Worker.PP 8*a71a9546SAutomerger Merge Worker\fB\-\-set\fP, \fB\-\-rcheck\fP, \fB\-\-update\fP and \fB\-\-remove\fP are 9*a71a9546SAutomerger Merge Workermutually exclusive. 10*a71a9546SAutomerger Merge Worker.TP 11*a71a9546SAutomerger Merge Worker\fB\-\-name\fP \fIname\fP 12*a71a9546SAutomerger Merge WorkerSpecify the list to use for the commands. If no name is given then 13*a71a9546SAutomerger Merge Worker\fBDEFAULT\fP will be used. 14*a71a9546SAutomerger Merge Worker.TP 15*a71a9546SAutomerger Merge Worker[\fB!\fP] \fB\-\-set\fP 16*a71a9546SAutomerger Merge WorkerThis will add the source address of the packet to the list. If the source 17*a71a9546SAutomerger Merge Workeraddress is already in the list, this will update the existing entry. This will 18*a71a9546SAutomerger Merge Workeralways return success (or failure if \fB!\fP is passed in). 19*a71a9546SAutomerger Merge Worker.TP 20*a71a9546SAutomerger Merge Worker\fB\-\-rsource\fP 21*a71a9546SAutomerger Merge WorkerMatch/save the source address of each packet in the recent list table. This 22*a71a9546SAutomerger Merge Workeris the default. 23*a71a9546SAutomerger Merge Worker.TP 24*a71a9546SAutomerger Merge Worker\fB\-\-rdest\fP 25*a71a9546SAutomerger Merge WorkerMatch/save the destination address of each packet in the recent list table. 26*a71a9546SAutomerger Merge Worker.TP 27*a71a9546SAutomerger Merge Worker\fB\-\-mask\fP \fInetmask\fP 28*a71a9546SAutomerger Merge WorkerNetmask that will be applied to this recent list. 29*a71a9546SAutomerger Merge Worker.TP 30*a71a9546SAutomerger Merge Worker[\fB!\fP] \fB\-\-rcheck\fP 31*a71a9546SAutomerger Merge WorkerCheck if the source address of the packet is currently in the list. 32*a71a9546SAutomerger Merge Worker.TP 33*a71a9546SAutomerger Merge Worker[\fB!\fP] \fB\-\-update\fP 34*a71a9546SAutomerger Merge WorkerLike \fB\-\-rcheck\fP, except it will update the "last seen" timestamp if it 35*a71a9546SAutomerger Merge Workermatches. 36*a71a9546SAutomerger Merge Worker.TP 37*a71a9546SAutomerger Merge Worker[\fB!\fP] \fB\-\-remove\fP 38*a71a9546SAutomerger Merge WorkerCheck if the source address of the packet is currently in the list and if so 39*a71a9546SAutomerger Merge Workerthat address will be removed from the list and the rule will return true. If 40*a71a9546SAutomerger Merge Workerthe address is not found, false is returned. 41*a71a9546SAutomerger Merge Worker.TP 42*a71a9546SAutomerger Merge Worker\fB\-\-seconds\fP \fIseconds\fP 43*a71a9546SAutomerger Merge WorkerThis option must be used in conjunction with one of \fB\-\-rcheck\fP or 44*a71a9546SAutomerger Merge Worker\fB\-\-update\fP. When used, this will narrow the match to only happen when the 45*a71a9546SAutomerger Merge Workeraddress is in the list and was seen within the last given number of seconds. 46*a71a9546SAutomerger Merge Worker.TP 47*a71a9546SAutomerger Merge Worker\fB\-\-reap\fP 48*a71a9546SAutomerger Merge WorkerThis option can only be used in conjunction with \fB\-\-seconds\fP. 49*a71a9546SAutomerger Merge WorkerWhen used, this will cause entries older than the last given number of seconds 50*a71a9546SAutomerger Merge Workerto be purged. 51*a71a9546SAutomerger Merge Worker.TP 52*a71a9546SAutomerger Merge Worker\fB\-\-hitcount\fP \fIhits\fP 53*a71a9546SAutomerger Merge WorkerThis option must be used in conjunction with one of \fB\-\-rcheck\fP or 54*a71a9546SAutomerger Merge Worker\fB\-\-update\fP. When used, this will narrow the match to only happen when the 55*a71a9546SAutomerger Merge Workeraddress is in the list and packets had been received greater than or equal to 56*a71a9546SAutomerger Merge Workerthe given value. This option may be used along with \fB\-\-seconds\fP to create 57*a71a9546SAutomerger Merge Workeran even narrower match requiring a certain number of hits within a specific 58*a71a9546SAutomerger Merge Workertime frame. The maximum value for the hitcount parameter is given by the 59*a71a9546SAutomerger Merge Worker"ip_pkt_list_tot" parameter of the xt_recent kernel module. Exceeding this 60*a71a9546SAutomerger Merge Workervalue on the command line will cause the rule to be rejected. 61*a71a9546SAutomerger Merge Worker.TP 62*a71a9546SAutomerger Merge Worker\fB\-\-rttl\fP 63*a71a9546SAutomerger Merge WorkerThis option may only be used in conjunction with one of \fB\-\-rcheck\fP or 64*a71a9546SAutomerger Merge Worker\fB\-\-update\fP. When used, this will narrow the match to only happen when the 65*a71a9546SAutomerger Merge Workeraddress is in the list and the TTL of the current packet matches that of the 66*a71a9546SAutomerger Merge Workerpacket which hit the \fB\-\-set\fP rule. This may be useful if you have problems 67*a71a9546SAutomerger Merge Workerwith people faking their source address in order to DoS you via this module by 68*a71a9546SAutomerger Merge Workerdisallowing others access to your site by sending bogus packets to you. 69*a71a9546SAutomerger Merge Worker.PP 70*a71a9546SAutomerger Merge WorkerExamples: 71*a71a9546SAutomerger Merge Worker.IP 72*a71a9546SAutomerger Merge Workeriptables \-A FORWARD \-m recent \-\-name badguy \-\-rcheck \-\-seconds 60 \-j DROP 73*a71a9546SAutomerger Merge Worker.IP 74*a71a9546SAutomerger Merge Workeriptables \-A FORWARD \-p tcp \-i eth0 \-\-dport 139 \-m recent \-\-name badguy \-\-set \-j DROP 75*a71a9546SAutomerger Merge Worker.PP 76*a71a9546SAutomerger Merge Worker\fB/proc/net/xt_recent/*\fP are the current lists of addresses and information 77*a71a9546SAutomerger Merge Workerabout each entry of each list. 78*a71a9546SAutomerger Merge Worker.PP 79*a71a9546SAutomerger Merge WorkerEach file in \fB/proc/net/xt_recent/\fP can be read from to see the current 80*a71a9546SAutomerger Merge Workerlist or written two using the following commands to modify the list: 81*a71a9546SAutomerger Merge Worker.TP 82*a71a9546SAutomerger Merge Worker\fBecho +\fP\fIaddr\fP\fB >/proc/net/xt_recent/DEFAULT\fP 83*a71a9546SAutomerger Merge Workerto add \fIaddr\fP to the DEFAULT list 84*a71a9546SAutomerger Merge Worker.TP 85*a71a9546SAutomerger Merge Worker\fBecho \-\fP\fIaddr\fP\fB >/proc/net/xt_recent/DEFAULT\fP 86*a71a9546SAutomerger Merge Workerto remove \fIaddr\fP from the DEFAULT list 87*a71a9546SAutomerger Merge Worker.TP 88*a71a9546SAutomerger Merge Worker\fBecho / >/proc/net/xt_recent/DEFAULT\fP 89*a71a9546SAutomerger Merge Workerto flush the DEFAULT list (remove all entries). 90*a71a9546SAutomerger Merge Worker.PP 91*a71a9546SAutomerger Merge WorkerThe module itself accepts parameters, defaults shown: 92*a71a9546SAutomerger Merge Worker.TP 93*a71a9546SAutomerger Merge Worker\fBip_list_tot\fP=\fI100\fP 94*a71a9546SAutomerger Merge WorkerNumber of addresses remembered per table. 95*a71a9546SAutomerger Merge Worker.TP 96*a71a9546SAutomerger Merge Worker\fBip_pkt_list_tot\fP=\fI20\fP 97*a71a9546SAutomerger Merge WorkerNumber of packets per address remembered. 98*a71a9546SAutomerger Merge Worker.TP 99*a71a9546SAutomerger Merge Worker\fBip_list_hash_size\fP=\fI0\fP 100*a71a9546SAutomerger Merge WorkerHash table size. 0 means to calculate it based on ip_list_tot, default: 512. 101*a71a9546SAutomerger Merge Worker.TP 102*a71a9546SAutomerger Merge Worker\fBip_list_perms\fP=\fI0644\fP 103*a71a9546SAutomerger Merge WorkerPermissions for /proc/net/xt_recent/* files. 104*a71a9546SAutomerger Merge Worker.TP 105*a71a9546SAutomerger Merge Worker\fBip_list_uid\fP=\fI0\fP 106*a71a9546SAutomerger Merge WorkerNumerical UID for ownership of /proc/net/xt_recent/* files. 107*a71a9546SAutomerger Merge Worker.TP 108*a71a9546SAutomerger Merge Worker\fBip_list_gid\fP=\fI0\fP 109*a71a9546SAutomerger Merge WorkerNumerical GID for ownership of /proc/net/xt_recent/* files. 110