iptables开放指定端口

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iptables开放指定端口相关的知识,希望对你有一定的参考价值。

参考技术A

由于业务的需要, MySQL,Redis,mongodb等应用的端口需要我们手动操作开启

下面以 MySQL 为例,开启 3306 端口的远程访问,其他端口类似。

添加如下一行配置:

注意:如果已经存在该端口的配置,修改 DROP 为 ACCEPT:

如果操作比较频繁或者命令的方式比较繁琐,我这里提供一个简单的设置脚本,可以上传到服务器的对应目录,直接运行输入端口号即可

假设我们使用xshell通过test账号进行ssh登录

注意:如果需要通过公网访问,请与对应的云服务器提供商的控制台设置安全组放行(阿里云、腾讯云等)

Linux笔记-iptables开放指定端口,开放ICMP协议,其他端口禁止访问

下面实现3个规则:

①对所有的地址开放本机的tcp(80、22、10~21)端口的访问。

②运行对所有地址开放本机的基于ICMP协议的数据包访问。

③其他未允许的端口则禁止访问。

#查看本机开放的端口
netstat -luntp
[root@bogon ~]# netstat -luntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1/systemd           
tcp        0      0 0.0.0.0:6000            0.0.0.0:*               LISTEN      9215/X              
tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN      9106/dnsmasq        
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      8591/sshd           
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      8587/cupsd          
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      9024/master         
tcp        0      0 127.0.0.1:6010          0.0.0.0:*               LISTEN      20030/sshd: root@pt 
tcp        0      0 127.0.0.1:6011          0.0.0.0:*               LISTEN      20313/sshd: root@pt 
tcp6       0      0 :::111                  :::*                    LISTEN      1/systemd           
tcp6       0      0 :::6000                 :::*                    LISTEN      9215/X              
tcp6       0      0 :::22                   :::*                    LISTEN      8591/sshd           
tcp6       0      0 ::1:631                 :::*                    LISTEN      8587/cupsd          
tcp6       0      0 ::1:25                  :::*                    LISTEN      9024/master         
tcp6       0      0 ::1:6010                :::*                    LISTEN      20030/sshd: root@pt 
tcp6       0      0 ::1:6011                :::*                    LISTEN      20313/sshd: root@pt 
udp        0      0 0.0.0.0:50213           0.0.0.0:*                           8206/avahi-daemon:  
udp        0      0 0.0.0.0:5353            0.0.0.0:*                           8206/avahi-daemon:  
udp        0      0 192.168.122.1:53        0.0.0.0:*                           9106/dnsmasq        
udp        0      0 0.0.0.0:67              0.0.0.0:*                           9106/dnsmasq        
udp        0      0 0.0.0.0:68              0.0.0.0:*                           20242/dhclient      
udp        0      0 0.0.0.0:111             0.0.0.0:*                           1/systemd           
udp        0      0 127.0.0.1:323           0.0.0.0:*                           8237/chronyd        
udp        0      0 0.0.0.0:693             0.0.0.0:*                           8158/rpcbind        
udp6       0      0 :::111                  :::*                                1/systemd           
udp6       0      0 ::1:323                 :::*                                8237/chronyd        
udp6       0      0 :::693                  :::*                                8158/rpcbind        
[root@bogon ~]# 

查看iptables版本

iptables -v
[root@bogon ~]# iptables -v
iptables v1.4.21: no command specified
Try `iptables -h' or 'iptables --help' for more information.
[root@bogon ~]# 

查看iptables配置的链,-n是让主机名等不显示

iptable -nL
[root@bogon ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
[root@bogon ~]# 

设置80端口可以访问,设置22端口可以访问,不然ssh就不能登录了,设置10~21都允许访问。

iptables -I INPUT -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -p tcp --dport 22 -j ACCEPT
iptables -I INPUT -p tcp --dport 10:21 -j ACCEPT

此时配置的策略有:

[root@bogon ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpts:10:21
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

再支持ICMP协议,然后-A,在最后添加一条拒绝所有的规则。

iptables -I INPUT -p icmp -j ACCEPT
iptables -A INPUT -j REJECT

这里就实现了上面的3个规则,对应的策略是这样的。

[root@bogon ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpts:10:21
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

以上是关于iptables开放指定端口的主要内容,如果未能解决你的问题,请参考以下文章

linux端口开放指定端口的一种方法

Linux开放指定端口设置

Ubuntu系统开放指定端口

linux端口开放指定端口的两种方法

linux端口开放指定端口的两种方法

Linux下开放指定端口