iptables详解--转
[root@test3~]# iptables -P FORWARD DROP[root@test3 ~]# iptables -A FORWARD -m state --state ESTABLISHED -j ACCEPT[root@test3 ~]# iptables -A FORWARD -d 192.168.0.110 -p tcp --dport 8080 -mstate --state NEW -j ACCEPT 假设在此服务器上还有mysql服务,假设mysql在内网工作在正常服务端口,但告知外面工作在6789端口上,那么 进入mysql并授权 mysql>grant all on *.* to 'root'@'%' identified by '123456'; mysql>flush privileges; 在iptables服务器上添加规则如下 [root@test3 ~]# iptables -t nat -A PREROUTING-d 10.0.10.62 -p tcp --dport 6789 -j DNAT --to-destination 192.168.0.110:3306 [root@test3~]# iptables -A FORWARD -d 192.168.0.110 -p tcp --dport 3306 -m state --stateNEW -j ACCEPT [root@test~]# mysql -uroot -h10.0.10.62 -P6789 -p 切换至client端进行测试 [root@test~]# mysql -uroot -h10.0.10.62 -P6789 -p 4.ip_conntrack?功能 其扩展模块路径为 /proc/net/nf_conntrack /proc/sys/net/nf_conntrack_max 不同版本的值和相关信息未必一致 [root@test3~]# cat /proc/sys/net/nf_conntrack_max31860 比起红帽5的值已经大的太多了 #这些超时时间非常长,如下所示: [root@test3 ~]# cat/proc/net/nf_conntrackipv4 ? ? 2 tcp ? ? ?6 431999ESTABLISHED src=10.0.10.62 dst=10.0.10.1sport=22 dport=59448 src=10.0.10.1 dst=10.0.10.62 sport=59448 dport=22[ASSURED] mark=0 secmark=0 use=2 #可以在某些时候将值尽量调低,如果不尽量追踪过长时间 [root@test3~]# cat /proc/sys/net/netfilter/nf_conntrack_tcp_timeout_established432000 ? ? ? #5天时间 如果没有特殊需求的话,将其值调低,这样可以保证被追踪的连接尽早被记录的文件中清除出去,已腾出空间供其他被追踪使用 既然追踪连接功能有限制而且对性能有很大的影响为何还要开启呢? 启动其功能的原因在于 在某些场景中必须追踪状态,才能达到目的,如果在并发连接非常大的场景下启用连接追踪是不明智的 因此需自己判断好应用场景,不得不启用,连接数也非常大,方法如下: (1).调小nf_conntrack_tcp_timeout_established (2).调大 /proc/sys/net/nf_conntrack_max ? ? ? ?#需要一定的内存容量,只要空间充足即可 扩展模块connlimit: connlimit?连接数限制,一般可以实现控制某源ip地址发起来某连接个数的 --connlimit-above[number] ?#连接数的上限,如果某个连接数的个数超过为某个值之后(高于),通常用取反的方法来放行: #iptables-A INPUT -s 10.0.10.0/24 -p tcp --dport 80 -m connlimit ! --connlimit-above 5-j ACCEPT ? hashlimit,limit ? #能够分析每个ip地址的速率 5.recent模块 利用iptables的recent模块来抵御DOS攻击: 22,建立一个列表,保存有所有访问过指定的服务的客户端IP 对本机ssh: 远程连接 (1).利用connlimit模块将单IP的并发设置为3;会误杀使用NAT上网的用户,可以根据实际情况增大该值; iptables-I INPUT -p tcp --dport 22 -m connlimit --connlimit-above 3 -j DROP 第二句是记录访问tcp 22端口的新连接,记录名称为SSH --set 记录数据包的来源IP,如果IP已经存在将更新已经存在的条目 (2).利用recent和state模块限制单IP在300s内只能与本机建立2个新连接。被限制五分钟后即可恢复访问 (编辑:PHP编程网 - 黄冈站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |