环境:

uname -a(命令) :

Linux localhost.localdomain 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

more /etc/redhat-release(命令):
CentOS Linux release 7.5.1804 (Core) 
 

配置iptables防火墙的进站ip白名单和端口

1.确定是否启动了firewall 和iptables

如下是firewall的部分命令

1、重启、关闭、开启firewalld.service服务

service firewalld restart 重启
service firewalld start 开启
service firewalld stop 关闭

2、查看firewall服务状态

systemctl status firewall

3、查看firewall的状态

firewall-cmd --state

如果firewall是启动的 需要关闭掉

2.修改iptables的规则(首先需要确定是不是有iptables服务)

如果没有规则 需要安装:

1.安装iptables防火墙

yum install iptables-services #安装

2.编辑iptables防火墙配置

vi /etc/sysconfig/iptables #编辑防火墙配置文件

这个时候需要修改进站和出站规则

我的修改后iptables配置文件:

[root@localhost log]# cat /etc/sysconfig/iptables
 # Generated by iptables-save v1.4.21 on Mon Sep  3 13:04:46 2018
 *filter
 :INPUT ACCEPT [0:0]    允许所有ip端口访问
 :FORWARD ACCEPT [0:0] 
 :OUTPUT ACCEPT [0:0]  
 :whitelist - [0:0]  <-- 白名单的设置开始
 -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      <-- 这是22端口都可以访问
 -A INPUT -p tcp -m state --state NEW -m tcp --dport 11820 -j whitelist  <--白名单的11820端口可以访问(加了whitelist)
 -A INPUT -p tcp -m state --state NEW -m tcp --dport 6122 -j whitelist    <--白名单的6122端口可以访问
 -A INPUT -p tcp -m state --state NEW -m tcp --dport 20880 -j whitelist  <-- 白名单的20880端口可以访问
 -A INPUT -p tcp -m state --state NEW -m tcp --dport 20881 -j whitelist  <-- 白名单的20881端口可以访问
 -A INPUT -j REJECT --reject-with icmp-host-prohibited
 -A FORWARD -j REJECT --reject-with icmp-host-prohibited
 -A whitelist -s 10.185.151.20 -j ACCEPT   <--进来的白名单的设置的ip
 -A whitelist -s 10.185.151.11 -j ACCEPT   <--进来的白名单的设置的ip
 -A whitelist -s 11.8.35.182 -j ACCEPT       <--进来的白名单的设置的ip
 -A OUTPUT -o lo -j ACCEPT                     <--所有的端口可以外出
 COMMIT
 # Completed on Mon Sep  3 13:04:46 2018

配置完成了后使用命令重启

iptables 部分命令如下:

查询防火墙状态    :    service   iptables status

查询防火墙设置的规则 iptables -L -n

停止防火墙   :    service   iptables stop

启动防火墙   :    service   iptables start

重启防火墙   :    service   iptables restart

永久关闭防火墙    :  chkconfig   iptables off

永久关闭后启用    :  chkconfig   iptables on

启动后就成功了。

可以看下这个配置文件,逻辑比较看得懂:

iptables配置文件的详细配置情况
# Firewall configuration written by system-config-firewall
 # Manual customization of this file is not recommended.
 *filter
 :INPUT ACCEPT [0:0]
 :FORWARD ACCEPT [0:0]
 :OUTPUT ACCEPT [0:0]
 #这里开始增加白名单服务器ip(请删除当前服务器的ip地址)
 -N whitelist
 -A whitelist -s  xxx.xxx.xxx.xxx -j ACCEPT-A whitelist -s  xxx.xxx.xxx.xxx -j ACCEPT
-A whitelist -s  xxx.xxx.xxx.xxx -j ACCEPT
-A whitelist -s  xxx.xxx.xxx.xxx -j ACCEPT
 #这里结束白名单服务器ip
 -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
 -A INPUT -p icmp -j ACCEPT
 -A INPUT -i lo -j ACCEPT
 -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
 -A INPUT -m state --state NEW -m tcp -p tcp --dport 13020 -j ACCEPT
 -A INPUT -m state --state NEW -m tcp -p tcp --dport 1000:8000 -j ACCEPT  //开放1000到8000之间的所有端口
 //上面这些 ACCEPT 端口号,公网内网都可以访问//下面这些 whitelist 端口号,仅限服务器之间通过内网访问
 #这里添加为白名单ip开放的端口
 -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j whitelist
 -A INPUT -m state --state NEW -m tcp -p tcp --dport 13009 -j whitelist   
 -A INPUT -m state --state NEW -m tcp -p tcp --dport 10080 -j whitelist
 #这结束为白名单ip开放的端口
 -A INPUT -j REJECT --reject-with icmp-host-prohibited
 -A FORWARD -j REJECT --reject-with icmp-host-prohibited#如果是要关闭 某个端口:
-A INPUT -p tcp --dport port -j REJECT

以下是端口,先全部封再开某些的IP

iptables -I INPUT -p tcp --dport Port-j DROP
iptables -I INPUT -s 192.168.1.0/24 -p tcp --dport Port-j ACCEPT

如果用了NAT转发记得配合以下才能生效

iptables -I FORWARD -p tcp --dport Port-j DROP
 iptables -I FORWARD -s 192.168.1.0/24 -p tcp --dport Port-j ACCEPT

COMMIT