实验开始前
1、 关闭firewalld防火墙并禁止自启
2、 下载iptables
3、 清空防火墙规则
4、 开放22端口,并设置filter表INPUT默认禁掉所有不匹配的规则
[root@localhost ~]# systemctl stop firewalld && systemctl disable firewalld
[root@localhost ~]# yum -y install iptables-services
[root@localhost ~]# systemctl start iptables && systemctl enable iptables
[root@localhost ~]# iptables -F
// 清空防火墙规则
[root@localhost ~]# iptables -A INPUT -p tcp --dport=22 -j ACCEPT
// 允许22端口进入防火墙
[root@localhost ~]# iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
// 允许已经建立 tcp 连接的包以及该连接相关的包通过
[root@localhost ~]# iptables -P INPUT DROP
// 禁止filter表的INPUT链所有数据包
[root@localhost ~]# service iptables save
// 保存配置,默认位置是在/etc/sysconfig/iptables文件中
[root@localhost ~]# iptables -nL
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
实例1、运行web服务开放80端口
https://blog.csdn.net/qq_50247813/article/details/129236781 #
docker的安装
[root@localhost ~]# iptables -t filter -F FORWARD # 清空filter表 FORWARD 所有规则
1、 使用docker部署httpd服务
[root@localhost ~]# docker run -d --name web -p 80:80 httpd
2、 开放80端口并访问测试
1) 先来测试一下,不开发80端口是否可以访问
2) 开放80端口在进行测试
[root@localhost ~]# iptables -A INPUT -p tcp --dport 80 -j ACCEPT
Chain INPUT (policy DROP) target prot opt source
destination ACCEPT tcp – 0.0.0.0/0
0.0.0.0/0 tcp dpt:22 ACCEPT all – 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED ACCEPT tcp – 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
// 访问成功
3) 删除80这条规则
查看这条规则的编号
[root@localhost ~]# iptables -nL --line-num| head
Chain INPUT (policy DROP)
num target prot opt source destination
1 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
2 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
3 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
Chain FORWARD (policy DROP)
num target prot opt source destination
1 DOCKER-USER all -- 0.0.0.0/0 0.0.0.0/0
2 DOCKER-ISOLATION-STAGE-1 all -- 0.0.0.0/0 0.0.0.0/0
删除编号3这条规则
[root@localhost ~]# iptables -D INPUT 3
[root@localhost ~]# iptables -nL --line-num| head
Chain INPUT (policy DROP)
num target prot opt source destination
1 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
2 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
// 已经删除了
实例2、只允许某个ip或者某个ip端的网络访问本机的80端口
1) 只允许192.168.44.1地址访问本机的80端口
[root@localhost ~]# iptables -A INPUT -p tcp --dport 80 -s 192.168.44.1 -j ACCEPT
[root@localhost ~]# iptables -nL --line-num| head
Chain INPUT (policy DROP)
num target prot opt source destination
1 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
2 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
3 ACCEPT tcp -- 192.168.44.1 0.0.0.0/0 tcp dpt:80
[root@localhost ~]# iptables -D INPUT 3
// 删除规则3
2) 限制某个ip段的网络访问本机的80端口
只允许192.168.44.0/24网段的用户访问
[root@localhost ~]# iptables -A INPUT -p tcp --dport 22 -s 192.168.44.0/24 -j ACCEPT
[root@localhost ~]# iptables -nL --line-num | head
Chain INPUT (policy DROP)
num target prot opt source destination
1 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
2 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
3 ACCEPT tcp -- 192.168.44.0/24 0.0.0.0/0 tcp dpt:22
实例3、开放多端口和端口范围
开放80、8080端口
搭建http、tomcat服务器
[root@localhost ~]# docker run -d --name web -p 80:80 httpd
[root@localhost ~]# docker run -d --name tomcat -p 8080:8080 tomcat
[root@localhost ~]# docker exec -t tomcat rm -rf /usr/local/tomcat/webapps
[root@localhost ~]# docker exec -t tomcat mv /usr/local/tomcat/webapps.dist /usr/local/tomcat/webapps
开放80,8080端口
[root@localhost ~]# iptables -A INPUT -p tcp -m multiport --dports 80,8080 -j ACCEPT
[root@localhost ~]# iptables -nL | head
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 multiport dports 80,8080
开放端口范围
部署vsftp服务器开放21,20端口和12020-12025端口
部署具体操作参考:https://blog.csdn.net/qq_50247813/article/details/129269580
[root@localhost ~]# iptables -A INPUT -p tcp -m multiport --dport 20,21 -j ACCEPT
[root@localhost ~]# iptables -A INPUT -p tcp --dport 12020:12025 -j ACCEPT
[root@localhost ~]# iptables -nL --line-num| head
Chain INPUT (policy DROP)
num target prot opt source destination
1 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
2 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
3 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 multiport dports 20,21
4 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpts:12020:12025
[root@localhost ~]# iptables -D INPUT 3
[root@localhost ~]# iptables -D INPUT 3
#删除上述两条规则
实例4、开放多端口和端口范围
服务器禁ping 或 允许ping
#由于INPUT链是默认拒绝所有流进来的流量,所以是默认禁止ping的