加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

iptables详解--转

发布时间:2021-01-24 14:56:45 所属栏目:Linux 来源:网络整理
导读:副标题#e# 出处:http://yijiu.blog.51cto.com/433846/1356254 iptables详解 基本概念: 1.防火墙工作在主机边缘:对于进出本网络或者本主机的数据报文,根据事先设定好的检查规则对其检查,对形迹可疑的报文一律按照事先定义好的处理机制做出相应处理 对lin

[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编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读