nginx防火墙在哪设置,临时关闭防火墙linux
之前配置的服务器相当于对整个内网开放。除此之外,你还可以通过80个端口的nginx间接访问各种服务,也可以绕过nginx,通过ip地址和端口直接访问相应的服务。这是不对的,所以要做一些限制。因为它只给特定的人提供服务,而且局域网IP和MAC都是固定的,可以直接用白名单,其他的一概拒绝。
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *使用nginx进行访问控制* * * * * * * * * *
先在nginx中进行设置。
在/etc /etc/nginx/conf.d下创建新的ip.conf
的。这个目录中的conf将包含在nginx.conf中
假设我们只允许192.168.1.2 192.168.1.3访问。
那内容是
允许192 . 168 . 1 . 2;
允许192 . 168 . 1 . 3;否定一切;
就是这样。
当然nginx可以做的更好,按目录控制。
Ip.conf相当于一级白名单,即全局白名单,也可以添加到对应的反向代理的conf文件中。
比如在4567端口开通的论坛,只允许192.168.1.2访问。
然后是原始配置文件(参考另一篇短文,在Ubuntu 14.04下安装nginx,mediawiki,nodebb,everything,git lab http://www.linuxidc.com/Linux/2016-05/131137.htm)
服务器{
听80;
server _ name www . forum . zqb . local forum . zqb . local;
位置/{
proxy _ set _ header X-Real-IP $ remote _ addr;
proxy _ set _ header X-Forwarded-For $ proxy _ add _ X _ Forwarded _ For;proxy _ set _ header Host $ http _ Host;Proxy _ set _ header X-NginX-Proxy true;proxy _ pass http://127 . 0 . 0 . 1:4567/;proxy _ redirect off#插座。IO支持proxy _ http _ version 1.1proxy _ set _ header Upgrade $ http _ Upgrade;proxy_set_header连接“升级”;} }
换成
服务器{
听80;
server _ name www . forum . zqb . local forum . zqb . local;
位置/{
允许192 . 168 . 1 . 2;#允许访问拒绝所有访问;proxy _ set _ header X-Real-IP $ remote _ addr;proxy _ set _ header X-Forwarded-For $ proxy _ add _ X _ Forwarded _ For;proxy _ set _ header Host $ http _ Host;Proxy _ set _ header X-NginX-Proxy true;proxy _ pass http://127 . 0 . 0 . 1:4567/;proxy _ redirect off#插座。IO支持proxy _ http _ version 1.1proxy _ set _ header Upgrade $ http _ Upgrade;proxy_set_header连接“升级”;} }
通过这种方式,可以针对每个服务单独控制访问权限,而不是一刀切。
注意修改配置文件后,请重新启动该服务。
服务nginx重启
当然你也可以配置整个网段,也可以配置黑名单,具体通过google或者百度语法。
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
但是,仅仅限制IP是不够的。我们想做得更好,例如,限制MAC地址。
Nginx这个时候就不行了。iptables是必需的。
您可以配置一个接一个的写命令,或者编辑文件并批量写入。
首先将当前配置写入文件/etc/iptables.test.rules。
iptables-save/etc/iptables . test . rules
然后修改文件/etc/iptables.test.rules。
修改后再写回来。
iptables-restore/etc/iptables . test . rules
它生效了。
假设服务器自己的IP是192.168.1.2,它的mac地址是aa:bb:cc:dd:ee:ff。
想要达到以下效果
服务器可以随意访问其所有端口。
不允许其他机器访问4567端口(即不能直接访问4567端口上开放的论坛,必须通过80端口nginx间接访问)。
它可以这样配置
#由iptables生成-保存v 1 . 4 . 21 2016年5月2日15:53:51 *过滤器:输入接受[96:9703]:转发接受[0:0]:输出接受[1531:1424833] -A输入-s 192 . 168 . 1 . 2/32-m MAC-MAC-source aa:bb:cc:DD:ee:ff-p TCP-j接受-A输入-i lo -j接受-A输入-p TCP-A
前四行自动生成。
第五行表示对于IP地址为192.168.1.2,mac地址为aa:bb:cc:dd:ee:ff,直接接受。
第六行表示允许环回通信。
第七行表示禁止访问端口4567。
第八行表示端口80允许IP地址192.168.1.3和mac地址ab:cd:ef:ab:cd:ef。
第九行表示禁止访问端口80。
此规则按顺序匹配。如果匹配到任何规则,则结束,否则继续匹配。
所以对于服务器本身来说,第五行匹配,后面的规则没有限制。
对于其他机器,第五行不匹配,第七行禁止直接访问4567端口。
对于192.168.1.3,它匹配第八行,因此您可以访问端口80。
如果其他机器无法匹配,在执行第九行时,将禁止对80端口的访问。
在上面的配置中,只禁止了几个端口,其他ssh之类的都没有限制。
感觉像是港口黑名单。如果更严格,还可以做成端口白名单。只有23、80等少数端口开放,其他全部禁止。
哦,顺便说一下,它必须自动启动。
iptables-save/etc/iptables . up . rules
修改/etc/网络/接口
结尾加一行。
预启动iptables-restore/etc/iptables . up . rules
/***********************************************************************/
综上所述,第一,通过iptables,白名单中的机器(IP和MAC必须同时匹配)只能访问80端口,即必须经过nginx,而不是直接访问服务。
然后nginx对服务做进一步的限制。
当然,每个服务本身也需要一个账号密码才能使用。比如注册机构可以设置在论坛后台,但那是服务自己提供的。
另外,这样做会带来一些额外的效果,比如gitlab会给
http://192 . 168 . 1 . 2:8081/庄秋斌/Books_ceshi.git
但是不能直接访问8081,所以要改成
http://www.gitlab.zqb.local/zhuangqiubin/Books_ceshi.git
/***********************************************************************/
但是,其实IP和MAC地址都可以修改==
修改IP
sudo ifconfig eth0 192.168.2.1网络掩码255 . 255 . 255 . 0 sudo/etc/init . d/网络重启
修改MAC
ifconfig eth0关闭
ifconfig eth0硬件以太网xx:xx:xx:xx:xx:xx
ifconfig eth0以上
CentOS 7.0关闭默认防火墙,启用iptables防火墙http://www.linuxidc.com/Linux/2015-05/117473.htm
Iptables用例子来解释http://www.linuxidc.com/Linux/2014-03/99159.htm.
Linux防火墙iptables详细教程http://www.linuxidc.com/Linux/2013-07/87045.htm
iptables的备份和恢复以及防火墙脚本的基本使用http://www.linuxidc.com/Linux/2013-08/88535.htm
Linux http://www.linuxidc.com/Linux/2012-08/67952.htm下防火墙iptables使用规则详解
在Linux下的iptables防火墙上设置http://www.linuxidc.com/Linux/2015-10/123843.htm
本文的链接地址永久更新:http://www.linuxidc.com/Linux/2016-05/131139.htm