2018-01-18CentOS中防火墙iptables配置详解

您现在的位置是: 首页 > Linux技术 > CentOS中防火墙iptables配置详解

438次阅读

iptables命令是Linux上常用的防火墙软件,iptables是与Linux内核集成的IP信息包过滤系统,其自带防火墙功能,我们在配置完服务器的角色功能(如Redis、ftp或svn等)后,需要修改iptables的配置。配置CentOS等Linux服务器时经常需要对服务器的iptables进行配置


一、防火墙和iptables命令说明


防火墙,其实说白了讲,就是用于实现Linux下访问控制的功能的,它分为硬件的或者软件的防火墙两种。无论是在哪个网络中,防火墙工作的地方一定是在网络的边缘。而我们的任务就是需要去定义到底防火墙如何工作,这就是防火墙的策略,规则,以达到让它对出入网络的IP、数据进行检测


iptables [-t 表名] 选项 [链名] [条件] [-j 控制类型] 参数

 
-P 设置默认策略:iptables -P INPUT (DROP|ACCEPT)
-F 清空规则链
-L 查看规则链
-A 在规则链的末尾加入新规则
-I num 在规则链的头部加入新规则
-D num 删除某一条规则
-s 匹配来源地址IP/MASK,加叹号"!"表示除这个IP外。
-d 匹配目标地址
-i 网卡名称 匹配从这块网卡流入的数据
-o 网卡名称 匹配从这块网卡流出的数据
-p 匹配协议,如tcp,udp,icmp
--dport num 匹配目标端口号
--sport num 匹配来源端口号


二、查看当前CentOS服务器中所有的iptables配置


$ iptables -L -n


CentOS中防火墙iptables配置详解


二、安装iptables


一般CentOS都安装了iptables,cd到/etc/sysconfig目录下看一下有没有防火墙"iptables",如果没有安装或已经被你卸载,请执行下面命令(yum命令需要联网)进行安装


$ yum install iptables


三、添加允许INPUT访问规则


$  vi /etc/sysconfig/iptables

以下时常见服务的端口设置,如果需要拒绝访问,则将ACCEPT改为DROP即可


# SSH
-A INPUT -p tcp --dport 22 -j ACCEPT
# HTTP
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 8080 -j ACCEPT
# HTTPS
-A INPUT -p tcp --dport 443 -j ACCEPT
# mysql
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
# POP3
-A INPUT -p tcp --dport 110 -j ACCEPT
# SMTP
-A INPUT -p tcp --dport 25 -j ACCEPT
# FTP
-A INPUT -p tcp --dport 21 -j ACCEPT
-A INPUT -p tcp --dport 20 -j ACCEPT
# DNS
-A INPUT -p tcp --dport 53 -j ACCEPT
# svn
-A INPUT -p tcp --dport 3690 -j ACCEPT
# redis 
-A INPUT -p tcp -m tcp --dport 6379 -j DROP


四、添加使用IP限制INPUT访问规则


这里拿SSH为例,192.168.31.99 为允许的IP

# DELETE
-D INPUT -p tcp --dport 3690 -j ACCEPT 
# ADD
-A INPUT -s 192.168.31.99 -p tcp --dport 3690 -j ACCEPT


五、关闭/开启/重启防火墙


# restart 重启
$ /etc/init.d/iptables restart 
# start 开启
$ /etc/init.d/iptables start
#  stop 关闭
$ /etc/init.d/iptables stop


六、永久性关闭防火墙(一般不建议)


$ chkconfig --level 35 iptables off 

$ /etc/init.d/iptables stop  
    
$ iptables -P INPUT DROP


七、注意点


1、一定要给自己留好后路,留VNC一个管理端口和ssh的管理端口

2、最需要注意的是,你必须根据自己服务器的情况来修改这个文件,不要随意修改


八、示例(这是我虚拟机的CentOS防火墙配置)


# Generated by iptables-save v1.4.7 on Fri Dec 22 20:34:28 2017
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [1:156]
-A INPUT -i lo -j ACCEPT 
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
-A INPUT -p tcp --dport 3690 -j ACCEPT 
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT 
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
-A INPUT -p icmp -j ACCEPT 
-A INPUT -i lo -j ACCEPT 
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT 
-A INPUT -j REJECT --reject-with icmp-host-prohibited 
-A INPUT -p tcp -m tcp --dport 6379 -j DROP 
-A FORWARD -j REJECT --reject-with icmp-host-prohibited 
COMMIT
# Completed on Fri Dec 22 20:34:28 2017


九、清除已有iptables规则


iptables -F

iptables -X

iptables -Z