首页 > 代码库 > 【整理笔记-防火墙】实现iptables防火墙搭建

【整理笔记-防火墙】实现iptables防火墙搭建



搭建防火墙,配置防火墙。 - - 系统centos7 .

centos7自带firewalld,由于看firewalld命令行没有接触过,所以安装iptables防火墙。

1:禁用firewalld

  firewall-cmd --state 查看系统自带防火墙状态。

  用systemctl stop firewalld.service   禁止立即生效,

   systemctl disable firewalld.service  永久关闭firewalld。执行完再看一下防火墙状态, 显示为not runing即可。

2:安装iptables

  我用yum安装的,首先 yum info iptables 查看是否已安装。

  用命令yum install iptables-services,安装完成后,rpm -q iptables , lsmod |grep iptables都可以查看安装结果。


3:安装完成后,配置防火墙规则

  配置命令顺序: iptables -P INPUT ACCEPT ,然后清空规则 iptables -F ,iptables -X ,iptables -Z 

 开放端口,之前先开接收lo数据包,设置状态(当时没设置状态导致开放80端口,服务仍然不能访问)具体来说就是一个ESTABLISHED 状态,别人的解释是,本机对外请求,接收返回的数据包。依次输入如下:

        iptables -A INPUT -i lo -j ACCEPT

  iptables -A INPUT -m state --stateESTABLISHED -j ACCEPT

  iptables -A INPUT -p icmp -m icmp--icmp-type 8 -j ACCEPT

 设置开放的端口,根据自己的需要来。

  iptables -A INPUT -p tcp --dport 22 -jACCEPT

  iptables -A INPUT -p tcp --dport 80 -jACCEPT 

确定22端口命令配置生效,查看cat /etc/sysconfig/iptables,22端口配置存在

  将除去以上开放的端口,其他进的数据包统一设置为DROP,丢弃。


说明:iptables防火墙有三种模式,INPUT,OUTPUT,FORWARD。防火墙的原理其实就是对数据包进行操作。INPUT表示进服务器的数据包,OUTPUT表示向外发送的数据包,FORWARD表示转发的数据包


 上面博主只设置了INPUT的限制,对于OUTPUT和FORWARD都没有设置,按网上别人说的,OUTPUT是本服务器对外发送数据包,除非被抓肉鸡,一般服务器不会限制OUTPUT(我就碰到过一次,服务器向外DDOS攻击)。

 

 最后说一点,有些服务传输采用的模式比较特殊,防火墙需要做一些其他的调整。

 比如说FTP服务器搭建过程中,

 我碰到的问题是,防火墙开放了20,21端口但是FTP服务仍然无法连接。

 由于FTP有两种模式传输,而FTP默认采用被动模式,

 生动一点解释,被动模式就是当客户端向FTP的21端口发送连接请求时,服务器接受连接,建立一条命令链路,当需要传输数据时,服务器在命令链路上用PASV命令告诉客户端:我打开了XX端口,你过来链接我。 于是客户端向服务器XXX端口发送连接请求(XXX端口是任意1024以上端口),当防火墙只开放20,21端口时,果断是不能连接的。

 添加一条命令:

  iptables -A INPUT -p tcp --dport 1024: -m state --state ESTABLISHED,RELATED -j ACCEPT

  以上命令如果还是不行,再加载FTP额外模块:

  

   modprobe ip_nat_ftp

   modprobe ip_conntrack

   modprobe ip_conntrack_ftp

  其他的配置大家多研究研究。比如添加内网信任IP,以及限制IP访问都可以实现。。。

 

本文出自 “swin运维路” 博客,请务必保留此出处http://yangsw.blog.51cto.com/10639328/1852784

【整理笔记-防火墙】实现iptables防火墙搭建