【笔记】WEB服务器配置iptables防火墙

  • 2017-09-07
  • 282
  • 0
  • 0

我的环境centos7+lnmp+ftp+amh

配置参考了:阿里云Centos配置iptables防火墙

一、检查iptables服务状态

首先检查iptables服务的状态(红色错误)
[root@iZ28ev2inqvZ ~]# service iptables status
Redirecting to /bin/systemctl status iptables.service
● iptables.service - IPv4 firewall with iptables
 Loaded: loaded (/usr/lib/systemd/system/iptables.service; disabled; vendor preset: disabled)
 Active: active (exited) since Thu 2017-09-07 13:42:51 CST; 8min ago
 Process: 14517 ExecStart=/usr/libexec/iptables/iptables.init start (code=exited, status=0/SUCCESS)
 Main PID: 14517 (code=exited, status=0/SUCCESS)

Sep 07 13:42:51 iZ28ev2inqvZ systemd[1]: Starting IPv4 firewall with iptables...
Sep 07 13:42:51 iZ28ev2inqvZ iptables.init[14517]: /etc/sysconfig/iptables-config: line 9: -A: command not found
Sep 07 13:42:51 iZ28ev2inqvZ iptables.init[14517]: /etc/sysconfig/iptables-config: line 10: -A: command not found
Sep 07 13:42:51 iZ28ev2inqvZ iptables.init[14517]: /etc/sysconfig/iptables-config: line 11: -A: command not found
Sep 07 13:42:51 iZ28ev2inqvZ iptables.init[14517]: /etc/sysconfig/iptables-config: line 12: -A: command not found
Sep 07 13:42:51 iZ28ev2inqvZ iptables.init[14517]: iptables: Applying firewall rules: [ OK ]
Sep 07 13:42:51 iZ28ev2inqvZ iptables.init[14517]: iptables: Loading additional modules: ip_conntrack_ftp [ OK ]
Sep 07 13:42:51 iZ28ev2inqvZ systemd[1]: Started IPv4 firewall with iptables.
Sep 07 13:43:07 iZ28ev2inqvZ systemd[1]: Started IPv4 firewall with iptables.

检查报错文件

[root@iZ28ev2inqvZ ~]# vim /etc/sysconfig/iptables-config
#发现里面-A开头的代码,是小白的我私自添加的iptables规则。删除之~~~
#保存一下
[root@iZ28ev2inqvZ ~]# service iptables save 
#重启iptables服务
[root@iZ28ev2inqvZ ~]# service iptables restart 
现在提示信息如下 再执行service iptables status,已经不会报错了。
● iptables.service - IPv4 firewall with iptables
 Loaded: loaded (/usr/lib/systemd/system/iptables.service; disabled; vendor preset: disabled)
 Active: active (exited) since Thu 2017-09-07 13:51:33 CST; 6s ago
 Process: 15339 ExecStop=/usr/libexec/iptables/iptables.init stop (code=exited, status=0/SUCCESS)
 Process: 15390 ExecStart=/usr/libexec/iptables/iptables.init start (code=exited, status=0/SUCCESS)
 Main PID: 15390 (code=exited, status=0/SUCCESS)

Sep 07 13:51:33 iZ28ev2inqvZ systemd[1]: Starting IPv4 firewall with iptables...
Sep 07 13:51:33 iZ28ev2inqvZ iptables.init[15390]: iptables: Applying firewall rules: [ OK ]
Sep 07 13:51:33 iZ28ev2inqvZ iptables.init[15390]: iptables: Loading additional modules: ip_conntrack_ftp [ OK ]
Sep 07 13:51:33 iZ28ev2inqvZ systemd[1]: Started IPv4 firewall with iptables.

看一下当前iptables的配置情况
[root@woxplife ~]# iptables -L -n
当时的情况如下:原始iptables(很乱,看不懂)

二、清除默认的防火墙规则

#首先在清除前要将policy INPUT改成ACCEPT,表示接受一切请求。
#这个一定要先做,不然清空后可能会悲剧
iptables -P INPUT ACCEPT

#清空默认所有规则
iptables -F
 
#清空自定义的所有规则
iptables -X
 
#计数器置0
iptables -Z

三、配置规则

#允许来自于lo接口的数据包
#如果没有此规则,你将不能通过127.0.0.1访问本地服务,例如ping 127.0.0.1
iptables -A INPUT -i lo -j ACCEPT 
 
#ssh端口22
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
 
#FTP端口21
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
 
#web服务端口80
iptables -A INPUT -p tcp --dport 80 -j ACCEP
#AMH服务端口8888
iptables -A INPUT -p tcp --dport 8888 -j ACCEP
#允许icmp包通过,也就是允许ping
iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
 
#允许所有对外请求的返回包
#本机对外请求相当于OUTPUT,对于返回数据包必须接收啊,这相当于INPUT了
iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
 
#如果要添加内网ip信任(接受其所有TCP请求)
iptables -A INPUT -p tcp -s 45.96.174.68 -j ACCEPT
 
#过滤所有非以上规则的请求
iptables -P INPUT DROP

四、保存

首先iptables -L -n看一下配置是否正确。
没问题后,先不要急着保存,因为没保存只是当前有效,重启后就不生效,这样万一有什么问题,可以后台强制重启服务器恢复设置。
另外开一个ssh连接,确保可以登陆。

确保没问题之后保存
#保存
[root@iZ28ev2inqvZ ~]# service iptables save
#重启服务
[root@iZ28ev2inqvZ ~]# service iptables restart 
#添加到自启动chkconfig
[root@woxplife ~]# chkconfig iptables on

划线的我没有做,虽然作者教程提到了。
 

评论

偷偷告诉你,这还毛都没有 T T

发表评论