软件防火墙iptables(2)
说明:
-
执行规则顺序:
-
从上往下,从左往右一条条执行
-
其他点
-
不通过网络则不经过iptables
-
直接看案例,理解案例就差不多
不理解:
-
端口的含义,在哪?
-
xshell 连接对应进出的iptables链
-
ssh是啥
-
启动与启动iptables区别(实际演示中未看出)
>第一部分
-
怎么启动使用
-
安装
-
]# yum install iptables*
-
启动
-
# systemctl start iptables
-
关闭firewalld
-
# systemctl disable --now firewalld
-
格式及参数
-
格式
-
iptables -t 表名 选项 链名称 条件 动作
-
参数
-
-t: 指定操作的表
-
-L, --list 列出当前的规则
-
-v 显示数据包和数据包大小
-
-n 不反解地址
-
A, --append 追加一条规则到链中
-
I, --insert 插入一条规则,插入到顶部
-
-F, --flush 清空
-
-Z, --zero 清空计数器( 包数量 、包大小)
-
以下很少用
-
-D, --delete 删除链中的规则
-
-R, --replace 修改
-
-S, --list-rules 列出所有的规则
-
-N, --new-chain 创建一个自定义 链
-
-X, --delete-chain 删除一个自定义链
-
-P, --policy 指定链的默认策略
-
iptables动作
-
ACCEPT 将数据包放行,进行完此处理动作后,将不再比对其它规则,直接跳往下一个规则链
-
REJECT 拦阻该数据包,并传送数据包通知对方
-
DROP 丢弃包不予处理,进行完此处理动作后,将不再比对其它规则,直接中断过滤程序
-
REDIRECT 将包重新导向到另一个端口,进行完此处理动作后,将会继续比对其它规则
-
其他重要动作
-
-i : 进来的网卡
-
-o : 出去的网卡
-
-m : 指定模块
-
-j : 转发动作
-
-p :指定协议
-
基本的条件匹配(看案例理解)
-
TCP(http)
-
ICMP(ping)
-
UDP
-
ALL
-
源,目标地址
-
源地址:发送请求的地址
-
-s
-
目标地址 : 访问的地址
-
-d
-
源,目标端口
-
源端口:发送请求的端口
-
--sport
-
目标端口:访问的端口
-
--dport
-
---查看本机端口占用的命令
-
netstat -nutlp
>第二部分
iptables中的模块(-m : 指定模块)
目的 ---拓展iptables功能
-
连续匹配多个端口(multiport)
-
--dports : 指定多个端口(不同端口之间以逗号分割,连续的端口使用冒号分割)
-
指定一段连续的ip地址范围(iprange)
-
--src-range 源地址范围
-
--dst-range 目标地址范围
-
匹配指定字符串(string)
-
--string 字符 # 指定要匹配的字符串
-
--algo bm或kmp # 匹配的查询算法
-
根据时间段匹配报文(time)
-
--timestart hh:mm[:ss] # 开始时间
-
--timestop hh:mm[:ss] # 结束时间
-
--monthdays day[,day...] # 指定一个月的某一天
-
--weekdays day[,day...] # 指定周 还是 周天
-
禁ping, 默认本机无法ping别人 、别人无法ping自己
-
--icmp-type ( type[/code]|typename)
-
echo-request (8) 请求
-
echo-reply (0) 回应
-
限制链接数,并发连接数(connlimit)
-
--connlimit-upto n # 如果现有连接数小于或等于 n 则 匹配
-
--connlimit-above n # 如果现有连接数大于n 则匹配
-
针对 报文速率 进行限制。 秒、分钟、小时、天
-
--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 DROP
-
案例2:只允许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 DROP
-
案例3:只允许22,80,443端口可以访问,其他端口全部无法访问,但是本机可以访问百度(???)
-
暂无答案
-
案例4:要求使192.168.15.81能够通过22端口(该端口是192.168.15.81ip的端口,所以192.168.15.81指目的地ip/电脑)链接,但是其他的不行
-
iptables -t filter -A INPUT -p TCP -d 192.168.15.81 --dport 22 -j ACCEPT
-
iptables -t filter -A INPUT -p TCP -j DROP
-
含义:eth0:192.168.15.81和eth1:172.16.1.81是B电脑IP,其他电脑想要访问B只能通过192.168.15.81访问,不同通过eth0:192.168.15.81访问
-
案例5:只允许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 DROP
-
含义:只允许IP是192.168.15.71的电脑连接到远程电脑
-
案例6:要求192.168.15.71对外部不可见
-
iptables -t filter -A INPUT -p TCP -d 192.168.15.71 -j DROP
-
#含义: 192.168.15.71是目标地址,不让别人访问(即拒绝->即过滤)
-
案例7:要求使用eth0网卡的所有请求全部拒绝
-
iptables -t filter -A INPUT -p TCP -i etho -j DROP
-
使用172.16.1.71登录进来的窗口,不允许访问百度(???)
-
iptables -t filter -I OUTPUT -p TCP -o eth1 -j DROP
-
要求访问服务器的8080端口转发至80端口
-
iptables -t nat -A PREROUTING -p TCP --dport 8080 -j REDIRECT --to-port 80
-
???网页上操作是怎么回事<04视频 09min40sec>
-
要求只允许windows通过ssh连接192.168.15.81,其他的拒绝
-
iptables -t filter -I INPUT -p TCP -s 192.168.15.1 -d 192.168.15.81 --dport 22 -j ACCEPT
-
iptables -t filter -I INPUT -p TCP --dport 22 -j DROP
-
???为什么是这个地址 -s 192.168.15.1
-
windows 怎么登?
-------------------
案例(对应第二部分)
-------------------
-
要求将22,80,443以及30000-50000之间所有的端口向外暴露,其他端口拒绝
-
iptables -t filter -A INPUT -p TCP -m multiport --dports 22,80,443,30000:50000 -j ACCEPT
-
iptables -f filter -A INPUT -p TCP -j DROP
-
要求访问数据包中包含HelloWorld的数据不允许通过
-
iptables -t filter -A INPUT -p TCP -m string --string "HelloWorld" --algo kmp -j DROP
-
要求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 -f filter -A INPUT -p TCP -j DROP
-
要求每天的12到13之间,不允许访问(注意里边是UTC时间,差8h与北京时间)
-
iptables -t filter -A INPUT -p TCP -m time --timestart 4:00 --timestop 5:00 -j DROP
-
要求别人不能ping本机,但是本机可以ping别人(???)
-
iptables -t filter -A INPUT -p TCP -m icmp --icmp-type "echo-request" -j DROP
-
要求主机连接最多有2个(???)
-
iptables -t filter -A INPUT -p TCP --dport 22 -m connlimit --connlimit-above 2 -j DROP
-
??? 用up-to 小于等于两个不行???
-
要求限制速率在500k/s左右
-
iptables -t filter -A OUTPUT -p TCP -m limit --limit 333/s -j ACCEPT
-
iptables -t filter -A OUTPUT -p TCP -j DROP
---------
实际演练
---------
关闭防火墙及查看iptables状态



服务器登陆切换

172.16.1.xxx 内网外部不能访问含义

eth1

---

案例8

模块-案例3

模块 -案例7
传输速率/速度限制语句

生成固定大小文件

限制之前传输速率

之后限制之前


浙公网安备 33010602011771号