防火墙简单应用
iptables -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
iptables -A INPUT -p tcp --syn -m state --state NEW --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --syn -m state --state NEW --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --syn -m state --state NEW --dport 25 -j ACCEPT
Iptables -t filter -P FORWARD DROP
iptables -t nat -P POSTROUTING DROP
iptables -A INPUT -p tcp --syn -m state --state NEW --dport
iptables -A INPUT -p tcp -s 211.147.90.100/32 -m multiport --dports 13579,28005,28009 -j ACCEPT
结尾(不加上面规则起不到过滤作用)
iptables -A INPUT -p all -j DROP //禁止除上面放行端口的所有端口请求,这条规则很重要,防止一些不用端口被恶意利用攻击
插入规则
iptables -I INPUT 4 -s 192.168.1.1 -j ACCEPT
multiport :不连续的多端口匹配
允许源192.168.1.123访问22端口的ip进来
iptables -A INPUT -s 192.168.1.123 -p tcp --dport 22 -j ACCEPT
-m :匹配
state 匹配包的状态
--state
NEW
ESTABLISHED
RELETED
INVAILD
-p
后面必须接协议
--syn = --tcp-flags syn,ack,fin syn
表示连接请求
syn 连接请求
ack 请求确认
fin 断开请求
限制apache每秒新建连接数为1,峰值为3
每秒新建连接数 一般都是由防火墙来做,apache本身好像无法设置每秒新建连接数,只能设置最大连接:
iptables -A INPUT -d 172.16.100.1 -p tcp --dport 80 -m limit --limit 1/second -j ACCEPT
172.16.100.1为apache地址(本机地址)
iptables实现端口映射和端口负载均衡
使用 DNAT 来实现,但 IP 不要写 127.0.0.1,而应该写用户可以访问到的 IP 地址
比如prerouting
iptables -t nat -A PREROUTING -d 12.1.1.1 -p tcp --dport 80 -j DNAT --to 12.1.1.1:8080 //将对IP为12.1.1.1,端口为80的请求转发到8080端口
实现外网访问内网服务
iptables -t nat -A PREROUTING -i eth0 -d 12.1.1.1 -p tcp --dport 8080 -j DNAT --to 12.1.1.2:80
iptables -t nat -A POSTROUTING -o eth1 -d 12.1.1.2 -p tcp --dport 80 -j SNAT --to 12.1.1.3 //修改output源IP
(对于PREROUTING链,只能用-i指定进来的网络接口;而对于POSTROUTING和 OUTPUT只能用-o指定出去的网络接口)
负载均衡
iptables -t nat -A PREROUTING -d 192.168.10.160 -p tcp --dport 3000 -j DNAT --to 192.168.10.160:3001-3003