搭建防火墙,配置防火墙。 - - 系统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访问都可以实现。。。
转载于:https://blog.51cto.com/yangsw/1852784