[关闭]
@Mr-13 2020-03-10T10:22:47.000000Z 字数 2172 阅读 182

CentOS7.4 使用iptables

Linux


开篇废话

  没有什么必然的理由一定要用iptables,纯粹是因为firewall不会;新学习并同时维护两台防火墙规则,个人确实做不到非常熟练。
  另外iptables、firewall实现的底层原理是一致的,并没有绝对的孰优孰劣。干脆统一用iptables。
  下面是步骤流程图

Created with Raphaël 2.1.2开始检查firewall运行状态是否运行关闭firewall安装iptables编辑配置iptables关闭SELinuxEndyesno

1. 检查firewall运行状态

  很多情况下,刚装完的CentOs7.4下,firewall是没有运行的,先检查一下:

  1. # 检查firewall运行状态
  2. firewall-cmd --state

  
  image_1cuh0eh1t13lpcv54da8aj246m.png-5.7kB


2. 关闭firewall

  1. # 停止firewall服务
  2. systemctl stop firewalld.service
  3. # 禁止firewall开机启动
  4. systemctl disable firewalld.service

  image_1cuhduontja91dpj1fpc19dr1kr09.png-18kB

  看一下是否关闭了firewall的开机启动

  1. # 检查开机启动项服务
  2. systemctl list-unit-files | grep firewalld

  image_1cuhe28n216g61ts9gta6ck121lm.png-8.5kB


3. 安装iptables

  1. # 安装iptables
  2. yum install iptables-services

  这儿就不上截图了。


4. 编辑配置iptables

  1. # 编辑iptables文件
  2. vim /etc/sysconfig/iptables
  3. # 编辑规则如下(不多赘述,参考iptables端口管理手册):
  4. *filter
  5. :INPUT DROP [0:0]
  6. :FORWARD ACCEPT [0:0]
  7. :OUTPUT ACCEPT [0:0]
  8. :MANAGEMENT - [0:0]
  9. -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
  10. -A INPUT -i lo -j ACCEPT
  11. -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
  12. -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
  13. -A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP
  14. -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP
  15. -A INPUT -p tcp -m tcp --dport 22 -j MANAGEMENT
  16. -A INPUT -j REJECT --reject-with icmp-host-prohibited
  17. -A FORWARD -j REJECT --reject-with icmp-host-prohibited
  18. -A OUTPUT -p icmp -m icmp ! --icmp-type 0 -j DROP
  19. -A OUTPUT -p udp -j DROP
  20. -A MANAGEMENT -s 119.176.82.20/32 -j ACCEPT
  21. COMMIT

   编辑好规则,因为默认安装之后,iptables并没有启动,我们看一下当前服务状态,使用命令:

  1. # 查看iptables状态
  2. systemctl status iptables.service
  3. # 或者用centos6的命令也可以
  4. service iptables status
  5. # 这里需要注意的是:
  6. # 在 CentOS6 时,我们使用service iptables status可以查看到iptables当前生效的规则
  7. # 而 CentOS7 时,这个命令只能用来查看iptables的运行状态,如果要查看iptables的当前规则,需要使用:
  8. iptables -L -n

  image_1cuhff1p1jabid1stvi9r8mn1g.png-28.7kB
  
  上图可以看到,iptables并没有启动,并且当前的规则都是空的。重启服务让刚刚配置的规则生效:

  1. # 重启iptables使配置生效
  2. systemctl restart iptables.service
  3. # 重启后查看状态
  4. iptables -L -n

image_1cuhfttet1h1o8vqjem1vup188l1t.png-94kB

  最后,我们需要 iptables设置开机启动

  1. # 设置iptables开机启动
  2. systemctl enable iptables.service

image_1cuhg73irrps1an9h5o1glrfd2a.png-21.7kB

  到这儿,iptables设置完了。


5. 关闭SELinux

  为啥要关掉SELinux?
  这东西据说安全系数极高,牛逼的要死,当然这么牛逼的东西配置起来也很麻烦。如果配置不好经常会出各种各样莫名其妙的问题。
  比如文件读写没权限啦、数据端口无法访问啦。
  
  这么麻烦,肯定是要关掉了。对,没错,就是因为太麻烦,用不好。
  
  注意:
  下面设置后需要 重启才能生效

  1. # 编辑selinux的配置文件
  2. vim /etc/selinux/config
  3. #SELINUX=enforcing #注释掉
  4. #SELINUXTYPE=targeted #注释掉
  5. SELINUX=disabled #增加
  6. :wq! #保存退出

  看一下截图,下面这个样子:

  image_1cuhgph411gg41ghf1hfvibcin12n.png-28.3kB
  
  好了,最后检查一下SELinux是否确认关掉了。

  1. # 下面这两个命令都可以
  2. sestatus
  3. getenforce

  image_1cuhh2kbm15q5h3c6062b7emt34.png-6.7kB
  
  完活儿。
  

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注