安装:
安装:yum install iptables*
- 关闭防火墙firewalld:systemctl disable —now firewalld
- 启动:systemctl start iptables (拓展:查看端口 netstat -nutlp)
- 查看状态是否成功:[root@m01 ~]# systemctl status iptables
- 查看表的命令:iptables -L -v -n
- 格式:iptables -t 表名 选项 链名称 条件 动作
- 参数常用
- 1、-t ——————— 指定的表
- 2、-L ——————— 列出当前规则
- 3、-v ——————— 显示数据包和数据包大小
- 4、-n ——————— 不反解 地址(默认反解为anywhere加上n 0.0.0.0/0)
- 5、-A ——-append——- 追加一条到链中
- 6、-I ———insert—- 插入一条规则,插入到顶部
- 7、-Z ——-zero——- 清空计数器()
- 8、-F ——-flush—— 清除
- 以下不常用
- -D ————delete———— 删除链中的规则
- -R ————replace———- 修改
- -S ————list-rules ——- 列出所有的规则
- -N ———- new-chain —- 创建一个自定义的链
- -X ———- delete-chain - 删除一个自定义链
- -P ———-policy————- 指定链的默认策略
iptables动作
- ACCEPT: 将数据包放行,进行完此动作后,将不再比对其他规则,直接跳往下一个链(放行)
- REJECT: 阻拦该数据包,并传送数据包通知对方
- DRO : 丢弃包不予处理,进行此动作后,将不比对其他规则,直接中断过滤程序
REDIRECT:将包重新导向另一个端口,进行完此处理动作后,会继续比对其他规则
iptables匹配
tcp(http) udp ICMP(ping) ALL “”” 查看端口 netstat -nutlp “””
-s -d 源地址、目标地址
源地址: 发送请求地址
源端口: 发送请求的端口
-i : 进来网卡
1、#连续匹配多个端口模块(multiport)
- —dports :指定多个端口,不用端口逗号分隔,连续端口冒号:连接
- 2、# 指定一段连续ip地址范围(iprange)
- —src-range from[-to] : 源地址范围
- —dst-range from[-to] : 目标地址范围
- 3、# 匹配指定字符串(string)
- —string pattern #指定要匹配的字符串
- —alog{bm|kmb} # 匹配查询算法
- 4、# time 模块(UTC时间)
- —timestart hh:mm[:ss] # 开始时间
- —timestop hh:mm[:ss] # 结束时间
- —monthdays day[,day…] # 指定一个月的某一天
- —weekdays day[,day…] # 指定周 还是 周天
- 5、# icmp模块
- —icmp-type {type[/code]|typename}
- echo-request (8) # 请求(我可以ping别人,别人休想ping我)
- echo-reply (0) # 回应(别人可以ping我,我休想ping别人)
- 6、# connlimit(模块控制并发数)
- —connlimit-upto n # 如果现有连接数小于或等于 n 则 匹配
- —connlimit-above n # 如果现有连接数大于n 则匹配
- 7、# limit(模块针对 报文速率 进行限制。 秒、分钟、小时、天)
- —limit rate[/second|/minute|/hour|/day] # 报文数量
- —limit-burst number # 报文数量(默认:5)
案例:
1、只允许 22 端口可以访问,其他端口无法访问。
iptables -t filter -A INPUT -p TCP —dport 22 -j ACCEPT
iptables -t filter -A INPUT -p TCP -j DROP2、只允许22、80、443端口可以访问,其他端口无法访问。
iptables -t filter -A INPUT -p TCP —dport 22 -j ACCEPT
iptables -t filter -A INPUT -p TCP —dport 80 -j ACCEPT
iptables -t filter -A INPUT -p TCP —dport 443 -j ACCEPT
iptables -t filter -A INPUT -p TCP -j DROP3、要求使用192.168.15.81能够通过22端口连接,但是其他不行
iptables -t filter -A INPUT -p TCP -d 192.168.15.81 —dport 22 -j ACCEPT
iptables -t filter -A INPUT -p TCP -j DROP4、只允许192.168.15.71能够通过22端口连接,其他的不行
iptables -t filter -A INPUT -p TCP -s 192.168.15.71 -d 192.168.15.81 —dport 22 -j ACCEPT
iptables -t filter -A INPUt -p TCP -j DROP5、要求192.168.15.71对外不可见
iptables -t filter -A INPUT -p TCP -d 192.168.15.71 -j DROP6、 要求使用eth0 网卡的所有请求全部拒绝
iptables -t filter -A INPUT -p TCP -i etho -j DROP7、使用172.16.1.71登陆进来的窗口,不允许访问百度
iptables -t filter -A INPUT -p TCP eth1 -j DROP8、要求访问服务器8080端口转发至80端口
iptables -t nat -A PREROUTING -p TCP —dport 8080 -j REDIRECT —to-port 809、要求只允许Windows通过ssh连接到192.168.15.81 其他的拒绝
iptables -t filter -A INPUT -p TCP -s 192.168.15.1 -d 192.168.15.81 —dport 22 -j ACCEPT
iptables -t filter -A INPUT -p TCP —dport 22 -j DROP模块案例
1、要去将22.80,443 以及30000-50000之间的所有端口向外暴漏,其他端口拒绝
iptables -t filter -A INPUT -p TCP -m multiport —dports 22,80,443,30000:50000 -j ACCEPT
iptables -t filter -A INPUT -p TCP -j DROP2、要求访问数据包中包含Hellworld 的数据不允许通过
iptables -t filter -A INPUt -p TCP -m string —string “Hellworld” —alog kmp -j DROP3、要求将192.168.15.1-192.168.15.10 之间的所有IP能够连接192.168.15.81,其他拒绝
iptables -t filter -A INPUT -p TCP -m iprange —src-range 192.168.15.1-192.168.15.10 -j ACCEPT
iptables -t filter -A INPUT -p TCP -j DROP4、要求每天12 到 13 时之间不允许访问
iptables -t filter -A INPUT -p TCP -m time —timestart 4:00 —timestop 5:00 -j DROP
(utc时转北京时 减去八 )
5、要求别人不能 ping本机 ,但是本机可以ping别人
iptables -t filter -A INPUT -p icmp -m icmp —icmp-type “echo-request” -j DROP
6、要求主机连接最多两个
iptables -t filter -A INPUT -p TCP —dport 22 -m connlimit —connlimit-above 2 -j DROP
7、要求限制速率在500k/s 左右
iptables -t filter -A INPUt -p TCP -m limit 333/s -j ACCEPT
iptables -t filter -A INPUT -p TCP -j DROP