海运的博客

Centos6下用Xtables-Addons不编译安装Iptables模块Geoip

发布时间:June 29, 2012 // 分类:Iptables // No Comments

通常增加Iptables模块需重新编译内核及Iptables,通过Xtables-Addons安装其支持的模块可免编译安装。
Xtables-Addons支持模块:

build_ACCOUNT=m
build_CHAOS=m
build_CHECKSUM=
build_DELUDE=m
build_DHCPMAC=m
build_DNETMAP=m
build_ECHO=
build_IPMARK=m
build_LOGMARK=m
build_RAWNAT=m
build_STEAL=m
build_SYSRQ=m
build_TARPIT=m
build_TEE=
build_condition=m
build_fuzzy=m
build_geoip=m
build_gradm=m
build_iface=m
build_ipp2p=m
build_ipset4=m
build_ipset6=
build_ipv4options=m
build_length2=m
build_lscan=m
build_pknock=m
build_psd=m
build_quota2=m

Xtables-Addons安装要求:

iptables >= 1.4.3
kernel-source >= 2.6.29

CentOS安装支持组件:

rpm -ivh http://mirrors.ustc.edu.cn/fedora/epel/6/i386/epel-release-6-7.noarch.rpm
yum install gcc gcc-c++ make automake kernel-devel iptables-devel perl-Text-CSV_XS xz

安装Xtables-Addons:

wget http://sourceforge.net/projects/xtables-addons/files/Xtables-addons/1.42/xtables-addons-1.42.tar.xz
xz -d xtables-addons-1.42.tar.xz 
tar xvf xtables-addons-1.42.tar 
cd xtables-addons-1.42
./configure 
make 
make install
#可修改mconfig选择要安装的模块

下载Geoip数据库:

cd geoip
./xt_geoip_dl
./xt_geoip_build GeoIPCountryWhois.csv
mkdir /usr/share/xt_geoip
cp -r {BE,LE}  /usr/share/xt_geoip/

应用举例:

iptables -I INPUT -m geoip --src-cc US-j DROP
#拒绝美国IP连接 

Iptables模块recent错误iptables: Unknown error 18446744073709551615解决

发布时间:June 9, 2012 // 分类:Iptables // No Comments

Iptablesrecent用做防CC效果很好,刚刚在调整单个IP跟踪数据包数量时遇到以下错误 :

iptables: Unknown error 18446744073709551615
iptables: Unknown error 18446744073709551615
iptables: Unknown error 4294967295
iptables: Unknown error 4294967295

查看recent模块已正常加载:

#https://www.haiyun.me
lsmod |grep recent
ipt_recent             42969  3 
x_tables               50505  7 ipt_recent,xt_state,ip_tables,ipt_LOG,ipt_REJECT,xt_tcpudp,ip6_tables

查看recent模块信息:

modinfo ipt_recent
filename:       /lib/modules/2.6.18-274.17.1.el5/kernel/net/ipv4/netfilter/ipt_recent.ko
license:        GPL
description:    IP tables recently seen matching module
author:         Patrick McHardy <kaber@trash.net>
srcversion:     9847889C4459A1E24A45527
depends:        x_tables
vermagic:       2.6.18-274.17.1.el5 SMP mod_unload gcc-4.1
parm:           ip_list_tot:number of IPs to remember per list (uint)
parm:           ip_pkt_list_tot:number of packets per IP to remember (max. 255) (uint)
parm:           ip_list_hash_size:size of hash table used to look up IPs (uint)
parm:           ip_list_perms:permissions on /proc/net/ipt_recent/* files (uint)
module_sig:    883f3504fcc2b231298695ef90fd4f112a58709f465f6d2b473f085774c22f4a44af8d9d414232609f77c48b61f17dd712e95188f337230fc3ef7a243

可见recent最大跟踪IP及数据包数量可以调整的,设置最大跟踪数据包为100:

cat >> /etc/modprobe.conf <<EOF
options ip_pkt_list_tot=100
EOF

重新加载recent模块:

/etc/init.d/iptables stop
modprobe -r ipt_recent
modprobe  ipt_recent
/etc/init.d/iptables start

再次调整参数,一切正常。

Iptables之connlimit模块针对每个IP限制连接数

发布时间:June 7, 2012 // 分类:Iptables // No Comments

之前有介绍Iptableslimit模块,此模块应用限制是全局的,connlimit就灵活了许多,针对每个IP做限制。
应用示例,注意不同的默认规则要使用不同的方法。
1.默认规则为DROP的情况下限制每个IP连接不超过10个

iptables -P INPUT DROP
iptables -A INPUT -p tcp --dport 80 -m connlimit ! --connlimit-above 10 -j ACCEPT

2.默认规则为ACCEPT的情况下限制每个IP连接不超过10个

iptables -P INPUT ACCEPT
iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 10 -j DROP

Iptables之conntrack连接数跟踪模块及最大连接数配置

发布时间:June 7, 2012 // 分类:Iptables // No Comments

Iptables是有状态机制的防火墙,通过conntrack模块跟踪记录每个连接的状态,通过它可制定严密的防火墙规则。
可用状态机制:

NEW #新连接数据包
ESTABLISHED #已连接数据包
RELATED #和出有送的数据包
INVALID #无效数据包

conntrack默认最大跟踪65536个连接,查看当前系统设置最大连接数:

cat /proc/sys/net/ipv4/ip_conntrack_max 
#新版方法
cat /proc/sys/net/netfilter/nf_conntrack_max

查看当前跟踪连接数:

cat /proc/net/ip_conntrack|wc -l
#新版方法
cat /proc/net/nf_conntrack | wc -l

当服务器连接多于最大连接数时会出现kernel: ip_conntrack: table full, dropping packet的错误。
解决方法,修改conntrack最大跟踪连接数:

vim /etc/sysctl.conf #添加以下内容
net.ipv4.ip_conntrack_max = 102400
#以下为新版方法
net.netfilter.nf_conntrack_max=102400
net.nf_conntrack_max=102400

立即生效:

sysctl -p

为防止重启Iptables后变为默认,还需修改模块参数:

vim /etc/modprobe.conf #添加以下内容
options ip_conntrack hashsize=12800 #值为102400/8

一劳永逸的方法,设置Iptables禁止对连接数较大的服务进行跟踪:

iptables -A INPUT -m state --state UNTRACKED,ESTABLISHED,RELATED -j ACCEPT
iptables -t raw -A PREROUTING -p tcp --dport 80 -j NOTRACK
iptables -t raw -A OUTPUT -p tcp --sport 80 -j NOTRACK

Iptables限速模块limit应用

发布时间:June 6, 2012 // 分类:Iptables // No Comments

Iptables模块limit用于限制单位时间内通过的数据包数量,限制是全局的,适用于某些不重要的服务,如果限制ICMP数量,HTTP可使用recent模块针对每个IP做限制,精确流量限制可用TC
Limit可用选项:

--limit 单位时间内匹配的数据包数量
--limit-burst 可选,允许最大数据包数量,默认为5
/s /h /m 单位时间

应用举例:
每分钟允许通过1个ICMP数据包,最多不超过10个。

#https://www.haiyun.me
iptables -A INPUT -p icmp -m limit --limit 1/m --limit-burst 10 -j ACCEPT
iptables -A INPUT -p icmp  -j DROP
分类
最新文章
最近回复
  • opnfense: 谢谢博主!!!解决问题了!!!我之前一直以为内置的odhcp6就是唯一管理ipv6的方式
  • liyk: 这个方法获取的IPv6大概20分钟之后就会失效,默认路由先消失,然后Global IPV6再消失
  • 海运: 不好意思,没有。
  • zongboa: 您好,請問一下有immortalwrt設定guest Wi-Fi的GUI教學嗎?感謝您。
  • 海运: 恩山有很多。
  • swsend: 大佬可以分享一下固件吗,谢谢。
  • Jimmy: 方法一 nghtp3步骤需要改成如下才能编译成功: git clone https://git...
  • 海运: 地址格式和udpxy一样,udpxy和msd_lite能用这个就能用。
  • 1: 怎么用 编译后的程序在家里路由器内任意一台设备上运行就可以吗?比如笔记本电脑 m参数是笔记本的...
  • 孤狼: ups_status_set: seems that UPS [BK650M2-CH] is ...