ubuntu16.04云主机怎样使用iptables防火墙
ubuntu16.04云主机使用iptables防火墙的方法:1、打开ubuntu16.04云主机终端控制台;2、输入“sudo apt-get install iptables iptables-persistent”命令安装iptables防火墙;3、安装iptables防火墙成功后,设置防火墙规则便可。
下面是详细介绍:
iptables是整合在Linux操作系统中的防火墙软件,绝大部份Ubuntu发行版都预装了iptables。在一些非默许安装的Ubuntu系统还是容器环境中,可能没有预装iptables,我们可以通过下面的命令来安装。
sudoapt-getinstalliptablesiptables-persistent
安装iptables以后,系统会提示我们是否是保存当前防火墙规则。如果我们要设置自己的防火墙规则,这时候可以不用保存。
扩大:
1、端口测试工具
我们可使用以下工具来检测端口是否是开启或关闭,用来测试iptables是否是生效。
客户端测试工具(Windows环境):
telnet[服务器IP][端口号]
服务端测试工具(Linux系统):
sudonetstat-tulpn
2、iptables的语法规则
sudoiptables-AINPUT-ptcp-mtcp--dport22--mgeoip--src-ccPE-jACCEPT
-
-A INPUT:添加一个INPUT类型的规则。最多见的规则类型有三种,分别是INPUT、OUTPUT和PREROUTING。
-
-p tcp:设置这条规则的协议为TCP协议。其他支持的协议还有udp、icmp和all。
-
-m tcp:使用tcp模块。iptables通过模块来扩大功能特性,有些经常使用模块是iptables预装的,比如geoip模块。
-
–dport 22:双横线–表示为前面使用的模块的更多选项。在这个示例里,我们设置tcp模块只利用于22端口。
-
-m geoip:使用geoip模块。这个模块可以控制来自某个国家的网络要求。
-
–src-cc PE:这个选项是让geoip模块限制从秘鲁的网络要求。PE是秘鲁的国家编码,这里可以替换成其他国家编码。
-
-j ACCEPT:告知iptables对满足上述条件的要求怎样处理。ACCEPT(接受)、ERJECT(谢绝)和DROP(抛弃)是三种经常使用的处理方式。
3、iptables的基本命令
查看当前规则:
sudoiptables-L
删除某条规则(-D表示删除):
sudoiptables-DINPUT-ptcp-mtcp--dport22-jACCEPT
清空当前规则
sudoiptables-F
只清空OUTPUT类型的规则:
sudoiptables-FOUTPUT
创建iptables规则
在eth0接口允许SSH连接:
sudoiptables-AINPUT-ieth0-ptcp-mtcp--dport22-jACCEPT
注:如果要利用于所有网络接口,请删除-i eth0指令。
允许特定IP进行SSH连接(以10.0.3.1为例):
sudoiptables-AINPUT-s10.0.3.1/32-ptcp-mtcp--dport22-jACCEPT
设置默许规则:
sudoiptables-PINPUTDROPsudoiptables-PFORWARDDROP
sudoiptables-POUTPUTACCEPT
说明:
-
-P INPUT DROP:表示抛弃所有流入要求,即没法访问云主机上的任何服务,如Apache、SQL等。
-
-P FORWARD DROP:表示抛弃所有转发要求。
-
-P OUTPUT ACCEPT:表示接受所有流出要求。
接受所有的回环流量(推荐设置):
sudoiptables-AINPUT-ilo-jACCEPTsudoiptables-AOUTPUT-olo-jACCEPT
保存iptables规则
使用以下命令保存并加载iptables规则:
sudonetfilter-persistentsavesudonetfilter-persistentreload
在容器环境中,上面的netfilter-persistent极可能没法生效,需要重新设置一下iptables。请履行以下命令重新配置iptables安装包:
sudodpkg-reconfigureiptables-persistent
设置流出要求
允许DNS查询:
sudoiptables-AOUTPUT-ptcp--dport53-mstate--stateNEW-jACCEPTsudoiptables-AOUTPUT-pudp--dport53-mstate--stateNEW-jACCEPT
使用state模块接受相关的和已建立的要求:
sudoiptables-AOUTPUT-mstate--stateRELATED,ESTABLISHED-jACCEPTsudoiptables-AINPUT-mstate--stateRELATED,ESTABLISHED-jACCEPT
接受端口要求(如80端口):
sudoiptables-AOUTPUT-ptcp--dport80-mstate--stateNEW-jACCEPT
其他常见服务和端口:
服务 | 协议 | 端口 |
---|---|---|
FTP | TCP | 20 & 21 |
HTTPS | TCP | 443 |
DHCP | TCP | 67 |
NTP | TCP | 123 |
更多有用的规则
允许Ping:
sudoiptables-AINPUT-picmp--icmp-typeecho-request-jACCEPTsudoiptables-AOUTPUT-picmp--icmp-typeecho-reply-jACCEPT
端口转发(把来自2200端口的要求转发给10.0.3.21:22 ,多用于容器场景):
sudoiptables-tnat-APREROUTING-ieth0-ptcp--dport2200-jDNAT--to-destination10.0.3.21:22
创建SSH永久连接,禁止未经允许的SSH登录要求:
sudoiptables-IINPUT-ptcp--dport22-mstate--stateNEW-mrecent--setsudoiptables-IINPUT-ptcp--dport22-mstate--stateNEW-mrecent--update--seconds3600--hitcount4-jDROP
本文来源:https://www.yuntue.com/post/218910.html | 云服务器网,转载请注明出处!