从CentOS7(RHEL7)开始,官方的标准防火墙设置软件从iptables变更为firewalld。需禁用自带的firewalld服务,同时安装iptables服务。
在使用Docker时,启用centos7默认的firewall,启动端口映射时,防火墙规则不生效。docker默认使用了iptables防火墙机制。所以需要关闭firewall使用iptables解决。
1.关闭默认的firewall防火墙
systemctl stop firewalld.service 关闭防火墙
systemctl disable firewalld.service 关闭开机启动
2.开启iptables
yum install iptables (根据centOS7的版本和内核,有些版本已经装过,可以跳过此命令)
yum install iptables-services
3.基本操作
查看防火墙状态
service iptables status
停止防火墙
service iptables stop
启动防火墙
service iptables start
重启防火墙
service iptables restart
永久关闭防火墙
chkconfig iptables off
永久关闭后重启
chkconfig iptables on
开机自启
systemctl enable iptables.service
3.编辑防火墙文件(开启了21,22,80,3306端口)
vim /etc/sysconfig/iptables
# sampleconfiguration for iptables service
# # you can edit thismanually or use system-config-firewall
# # please do not askus to add additional ports/services to this default configuration
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
添加防火墙命令
/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
查看本机关于IPTABLES的设置情况
iptables -L -n
脚本说明
表示先允许所有的输入通过防火墙,以防远程连接断开。
iptables -P INPUT ACCEPT
表示清空所有默认规则。
iptables -F
表示清空所有自定义规则。
iptables -X
表示将所有计数器归0。
iptables -Z
表示允许来自于lo接口(本地访问)的数据包
iptables -A INPUT -i lo -j ACCEPT
表示开放22端口(SSH)。
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
表示开放80端口(HTTP)
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
表示开放443端口(HTTPS)
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
表示允许接受本机请求之后的返回数据。
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
表示所有被丢弃的包都会被记录到/var/log/iptables.log文件中,且每条记录会以”iptables denied”作为前缀。
iptables -A INPUT -p tcp -j LOG --log-prefix "iptables denied"
表示其他入站一律丢弃
iptables -P INPUT DROP
表示所有出站一律通过
iptables -P OUTPUT ACCEPT
表示所有转发一律通过
iptables -P FORWARD DROP
设定其他规则
如果要添加可信任网段:192.168.0.1/24,接受其所有请求。
iptables -A INPUT -s 192.168.0.1/24 -j ACCEPT
如果要添加可信任ip:192.168.0.1,接受其所有TCP请求。
iptables -A INPUT -p tcp -s 192.168.0.1 -j ACCEPT
如果要添加可信任ip:192.168.0.1,接受其对某个端口:3306的所有TCP请求。
iptables -I INPUT -p tcp -s 192.168.0.1 --dport 3306 -j ACCEPT
如果要封停一个IP:192.168.0.1。
iptables -I INPUT -s 192.168.0.1 -j DROP
网友评论