@Mr-13
2020-03-10T10:22:47.000000Z
字数 2172
阅读 182
Linux
没有什么必然的理由一定要用iptables,纯粹是因为firewall不会;新学习并同时维护两台防火墙规则,个人确实做不到非常熟练。
另外iptables、firewall实现的底层原理是一致的,并没有绝对的孰优孰劣。干脆统一用iptables。
下面是步骤流程图
很多情况下,刚装完的CentOs7.4下,firewall是没有运行的,先检查一下:
# 检查firewall运行状态
firewall-cmd --state
# 停止firewall服务
systemctl stop firewalld.service
# 禁止firewall开机启动
systemctl disable firewalld.service
看一下是否关闭了firewall的开机启动
# 检查开机启动项服务
systemctl list-unit-files | grep firewalld
# 安装iptables
yum install iptables-services
这儿就不上截图了。
# 编辑iptables文件
vim /etc/sysconfig/iptables
# 编辑规则如下(不多赘述,参考iptables端口管理手册):
*filter
:INPUT DROP [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:MANAGEMENT - [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
-A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP
-A INPUT -p tcp -m tcp --dport 22 -j MANAGEMENT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
-A OUTPUT -p icmp -m icmp ! --icmp-type 0 -j DROP
-A OUTPUT -p udp -j DROP
-A MANAGEMENT -s 119.176.82.20/32 -j ACCEPT
COMMIT
编辑好规则,因为默认安装之后,iptables并没有启动,我们看一下当前服务状态,使用命令:
# 查看iptables状态
systemctl status iptables.service
# 或者用centos6的命令也可以
service iptables status
# 这里需要注意的是:
# 在 CentOS6 时,我们使用service iptables status可以查看到iptables当前生效的规则
# 而 CentOS7 时,这个命令只能用来查看iptables的运行状态,如果要查看iptables的当前规则,需要使用:
iptables -L -n
上图可以看到,iptables并没有启动,并且当前的规则都是空的。重启服务让刚刚配置的规则生效:
# 重启iptables使配置生效
systemctl restart iptables.service
# 重启后查看状态
iptables -L -n
最后,我们需要 iptables设置开机启动
# 设置iptables开机启动
systemctl enable iptables.service
到这儿,iptables设置完了。
为啥要关掉SELinux?
这东西据说安全系数极高,牛逼的要死,当然这么牛逼的东西配置起来也很麻烦。如果配置不好经常会出各种各样莫名其妙的问题。
比如文件读写没权限啦、数据端口无法访问啦。
这么麻烦,肯定是要关掉了。对,没错,就是因为太麻烦,用不好。
注意:
下面设置后需要 重启才能生效
# 编辑selinux的配置文件
vim /etc/selinux/config
#SELINUX=enforcing #注释掉
#SELINUXTYPE=targeted #注释掉
SELINUX=disabled #增加
:wq! #保存退出
看一下截图,下面这个样子:
好了,最后检查一下SELinux是否确认关掉了。
# 下面这两个命令都可以
sestatus
getenforce
完活儿。