关于防火墙的简单小知识 iptables
1、拒绝所有主机ping当前的主机
iptables -A INPUT -s 0.0.0.0 -p icmp -j DROP
2、本机能够访问别的机器的HTTP服务,但是别的机器无法访问本机
iptables -I INPUT -p tcp --dport 80 -m -state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -j REJECT
3、当我们发现有 ip 恶意攻击我们得时候,我们可以通过对防火墙设定规则来进行控制。所以我们可以添加connlimit模块来实现对最大并发得控制。请写出步骤
限制同一IP同时最多100个http连接
iptables -I INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 100 -j REJECT 或 iptables -I INPUT -p tcp --syn --dport 80 -m connlimit ! --connlimit-above 100 -j ACCEPT
只允许每组C类IP同时100个http连接
iptables -p tcp --syn --dport 80 -m connlimit --connlimit-above 100 --connlimit-mask 24 -j REJECT
只允许每个IP同时5个80端口转发,超过的丢弃
iptables -I FORWARD -p tcp --syn --dport 80 -m connlimit --connlimit-above 5 -j DROP
限制某IP最多同时100个http连接
iptables -A INPUT -s 222.222.222.222 -p tcp --syn --dport 80 -m connlimit --connlimit-above 100 -j REJECT
限制某IP在一定的时间(比如60秒)内允许新建立最多100个http连接数
iptables -A INPUT -p tcp --dport 80 -m recent --name BAD_HTTP_ACCESS --update --seconds 60 --hitcount 100 -j REJECT iptables -A INPUT -p tcp --dport 80 -m recent --name BAD_HTTP_ACCESS --set -j ACCEPT
4、实践题
实验前提需求
现在我在外地出差使用A8互联网主机,但是现在由于公司有业务需要我 ssh 链接到内网、这时候我就链接我们公司同事在防火墙上配置相关规则让我链接进公司内网 请写出实现过程
外网访问内网用dnat ;dnat 用PREROUTING链 所以👇
[root@A8 ~]#echo 1 > /proc/sys/net/ipv4/ip_forward #允许数据包转发
[root@A8 ~]#iptables -t nat -A PREROUTING -d 192.168.1.129 -p tcp --dport 22 -j DNAT --to-destination 10.0.0.18:22
结果
[root@A8 ~]#iptables -t nat -vnL Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 2 120 DNAT tcp -- * * 0.0.0.0/0 192.168.1.129 tcp dpt:22 to:10.0.0.18 Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination