iptables -t filter -A INPUT -j DROP #拒绝所有人访问服务器(主动访问服务器,或服务器访问外界的响应数据)
iptables -L # 默认为filter表,-L查看表中所有的链上的规则,policy为默认规则 例如(policy ACCPT)
iptables -vxnL
v:显示详细信息,包括每条规则的匹配包数量和匹配字节数
x:在v的基础上,禁止自动单位换算(K M)
n:只显示ip地址和端口号码,不显示域名和服务名称
iptables -D INPUT 1 # 默认为filter表,1为INPUT链上第一条规则
iptables -D INPUT -s 192.168.0.1 -j DROP #按内容匹配删除filter表INPUT链中内容为‘-s 192.168.0.1 -j DROP’ 的规则
iptables -P INPUT DROP #设置filter表INPUT链上的默认规则是DROP
iptables -F INPUT # 默认为filter表,清除INPUT链上的规则 不影响-P设置的默认规则
iptables -F # 默认为filter表,清除所有链上的规则 不影响-P设置的默认规则
注意: -P 设置为DROP后,使用-F一定要小心。可以配置crontab 配置22端口常开;
匹配条件:
流入和流出接口(-i -o)
i eth0 匹配是否从网络接口eth0进来
来源和目的地址(-s -d)
ip -s 192.168.0.1
网段 -s 192.168.0.0/24
域名 -s www.baidu.com
空(任何地址)
协议类型 (-p)
-p tcp
-p udp
-p icmp --icmp-type 类型 ping:type=8 pong:type=0
来源和目的端口(--sport --dport) 必须配合-p参数使用
--sport 80 ==80
--sport 6000:8000 6000<= <=8000
--sport :3000 <=3000
--sport 1000: >=1000
动作
ACCEPT 接受
DROP 丢弃
REJECT 拒绝(给回应)
SNAT
DNAT
MASQUERADE
实现上网
-j SNAT --to IP[-IP][:端口-端口](net表的POSTROUTING链) #源地址转换
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 \
-j SNAT --to 1.1.1.1
实现端口数据转发
-j DNAT --to IP[-IP][:端口-端口](net表的PREROUTING链) #目的地址转换
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192.168.0.1:81
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192.168.0.1-192.168.0.10:80 #有点类似于负载均衡
动态源地址转换(动态ip的情况下使用)
iptables -t net -A POSTROUTING -s 192.168.0.0./24 -o eth0 -j MASQUERADE 将源地址是192.168.0.0/24的数据包进行地址伪装,转换成eth0上的ip地址,eth0为口尤其外网的出口ip地址
附加模块
按包的状态匹配 (state)
按来源mac匹配 (mac)
按包的速率匹配 (limit)
iptables -A FORWARD -d 192.168.0.1 -m limit --limit 50/s -j ACCEPT
iptables -A FORWARD -d 192.168.0.1 -j DROP (要想限制需要加一条DROP)
多端口匹配 (multiport) 必须配合-p 使用
iptables -A INPUT -p tcp -m mutiport --dports 21,22,25,80,110 -j ACCEPT #允许所有客户端访问本服务器的21 22 25 80 110端口上的tcp服务
iptables保存和恢复
iptables–save > /etc/iptables/iptables.rules
iptables–restore < /etc/iptables/iptables.rules
=====配置web服务器的防火墙
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp -m multiport --dports 22,80 -j ACCEPT
或者
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
#允许已经建立tcp链接的包以及该连接相关的包通过,状态防火墙能识别tcp或者udp会话,非状态防火墙只能根据端口识别,不能识别会话
iptables -P INPUT DROP
image.png
image.png
image.png
image.png
image.png
网友评论