邵邵。

导航

iptables02

iptables的使用

格式:
	iptables -t 表名 选项(参数) 链名称 条件 动作

安装:
	1.yum install iptables*

启动:
	systemctl start iptables

关闭firwalld:
	systemctl disable --now firewalld

参数

常用:
	pkts		:数据包
	-t		:操作的表
	-L		:列出当前规则
	-v		:显示数据包和数据包大小
	-n		:不反解地址(反解就是转换为英文单词)

	-A		:追加一条规则到链中
	-I		:插入一条规则到顶部

	-F		:清空(清空所有规则)
	-Z		:清空计数器

动作

常用:
	ACCET		:将数据包方形,进行完此处理动作后,将不在对比其他规则,直接跳往下一个规则链
	
	REJECT		:阻止该数据包,并传送数据包通知对方(阻隔后通知对方)
	DROP		:丢弃包不予处理,进行完此动作后,将不再对比其他规则,直接终端过滤程序(直接丢弃)
	REDIRECT	:将包重新导向另一个端口,进行此动作处理完成后,将会继续对比其他规则

iptables基本的条件匹配

TCP(http)
UDP
ICMP(ping)
ALL(所有)

-s源地址,-d目标地址

-s源地址:
	发生请求的地址
-d目标地址:
	访问(接收)的地址

--sport源端口,--dport目标端口

--sport源端口:
	发生请求出去的端口
--dport目标端口
	访问的端口

-i,-o,-m,-j动作

	-i		:进来的网卡
	-o		:出去的网卡
	-m		:指定模块
	-j		:转发的动作
	-p		:指定协议
	

案例

案例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端口链接,但是其他的不行
	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

案例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

案例6:要求192.168.15.71对外部不可见
	iptables -t filter -A INPUT -p TCP -d 192.168.15.71 -j DROP

案例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

案例8:要求访问服务器的8080端口转发至80端口
	iptables -t nat -A PREROUTING -p TCP --dport 8080 -j REDIRECT --to-port 80

案例9:要求只允许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

知识储备

查看本机端口占用的命令:
	netstat -nutlb

curl 网址

模块

扩展iptables的功能

multiport模块

连续匹配多个端口

参数:
	--dports
		指定多个端口,不同端口以逗号(,)分割,连续的多个端口以冒号(:)分割

iprange模块

指定一段连续的ip地址范围

参数:
	--src-range from[-to]	:源地址范围
	--dst-range from[-to]	:目标地址范围

string模块

匹配指定字符串
	--string pattern	:指定字符串
	--lago {bm|kmp}		:指定算法

time模块

根据时间段匹配报文
	注:时区为UTC时间
	--timestart hh:mm[:ss]		:开始时间
	--timestop hh:mm[:ss]		:结束时间
	--monthdays day[,day...]	:指定一个月的某一天
	--weekdays day[,day...]		:指定周好事周天

icmp模块

禁ping,默认本机无法ping别人,别人无法ping自己

参数:
	--icmp-type {type[/code]|typename}
		echo-request (8) 请求
		echo-reply (0) 回应

connlimit模块

限制链接数,并发连接数
参数:
	--connlimit-upto n		:现有链接数小于等于n则匹配
	--connlimit-above n		:大于或等于n则匹配

limit模块

	--limit rete[/second|/minute|/hour|/day]	:报文数量
	--limit-burst number	:报文数量(默认:5)

案例

1、要求将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

2、要求访问数据包中包含HelloWorld的数据不允许通过。
	iptables -t filter -A INPUT -p TCP -m string --string "HelloWorld" --algo kmp -j DROP

3、要求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

4、要求每天的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、要求主机连接最多有2个
	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

posted on 2021-12-27 15:34  邵邵。  阅读(58)  评论(0)    收藏  举报