iptables并不是真正的防火墙,使用iptables在netfilter上面编写的规则才是防火墙。
iptables架构
iptables运行流程
其中prerouting(路由前),forward(转发),postrouting(路由后),input,output是出于netfilter上的链。
我们在链上编写了各种规则,那么这些规则可能有相同的作用,这些相同作用的规则合并起来的这个集合就叫做表。
表名 | 作用 |
---|---|
filter | 过滤 |
nat | 网络地址转换 |
row | 拆解报文,修改,重新分装 |
mangle | 关闭nat表启动的连接追踪机制 |
filter表上存在的链:INOPUT,FORWARD,OUTPUT
nat表上存在的链:PREROUTING,INPUT,OUTPUT,POSTROUTING
表执行的优先级:row>mangle>nat>filter
iptables基本用法
匹配条件
处理动作
常用操作参数
规则匹配
常见命令
不允许192.168.129.71使用tcp协议访问本机 iptables -I INPUT -p tcp -s 192.168.129.71 --dport 80 -j REJECT
[root@gzz~199 ~]# iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to 192.168.129.200:8080 [root@gzz~199 ~]# iptables -t nat -A POSTROUTING -p tcp -d 192.168.129.200 --dport 8080 -j SNAT --to 192.168.129.199
1、ens33网卡入站时的icmp包不允许通过(如果你的网卡不是ens33,换成对应的网卡名称)
iptables -A INPUT -p icmp -j REJECT
2、禁止其他主机ping防火墙主机,但是允许从防火墙主机上ping其他主机
iptables -t filter -A INPUT -p icmp --icmp-type Echo-Request -j DROP
3、限制其他主机ssh登录你的主机
iptables -A INPUT -p tcp -s 192.168.129.1 --dport 22 -j ACCEPT iptables -A INPUT -p tcp --dport 22 -j REJECT
4、允许部分主机ssh登录你的主机
iptables -A INPUT -p tcp --dport 22 -m iprange --src-range 192.168.129.150-192.168.129.200 -j ACCEPT
5、对ssh登录主机的连接数做个数限制,如超过3个连接(不包括3),则拒绝连接登录
iptables -I INPUT -p tcp --dport 22 -m connlimit --connlimit-above 4 -j REJECT
6、只允许指定(网段)的主机访问本机的22端口,拒绝来自其他所有主机的流量
iptables -A INPUT -p tcp --dport 22 -m iprange --src-range 192.168.129.190-192.168.129.200 -j ACCEPT iptables -I INPUT -p tcp -j REJECT
7、允许外界能访问我的80端口httpd服务,其他拒绝
iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -j REJECT
8、实现访问一个主机的80端口转发到另一个主机的8080端口
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to 192.168.129.200:8080 iptables -t nat -I POSTROUTING -p tcp -d 192.168.129.200 --dport 8080 -j SNAT --to 192.168.129.199
9、要求每周的周三和周五做80端口的时间限制访问,不允许0:00-4:00的访问,这个时间我们可能在做系统运维更新,包括禁止非法IP登录(非法IP指的是除过你的主机白名单外的主机,比如你的网段是192.168.42.0/24,除过这个之外不能访问,或者使用ip范围的限制)
iptables -A INPUT -p tcp --dport 80 ! -s 192.168.129.0/24 -m time --weekdays 3,5 --timestart 00:00:00 --timestop 04:00:00 -j REJECT
10、限制web请求如果为非法路径则禁止访问,同时网页内容包含密码信息的禁止访问(可给自己的index.html添加password:xxxx字段进行过滤这个字符串)
iptables -A OUTPUT -m string --algo kmp --string "passwd" -j REJECT iptables -A INPUT -m string --algo kmp --string "/text.html" -j REJECT