场景
做实验时有个安全需求,就是该服务器端口默认全部拒绝请求,仅允许指定的某个IP请求。
Centos7中本人一般都是开机直接关掉防火墙,firewalld真心有点用不惯,不过实在有需求需要防火墙的时候怎么办呢。。。关掉firewalld安装iptables(就是这么暴力)
安装
systemctl stop firewalld # 关闭firewalld systemctl disable firewalld # 禁止firewalld开机自启 yum install iptables-services # 安装iptables服务 systemctl enable iptables # 打开iptables开机自启
使用
两种方法(命令行操作 && 改配置文件)任选其一。xxx.xxx.xxx.xxx 表示允许请求的IP
命令行操作
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A INPUT -p tcp -s xxx.xxx.xxx.xxx -j ACCEPT iptables -P INPUT DROP
改配置文件
[root@aikx ~]# cat /etc/sysconfig/iptables # sample configuration for iptables service # you can edit this manually or use system-config-firewall # please do not ask us to add additional ports/services to this default configuration *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] #定义白名单变量名 -N whitelist #设置白名单ip段 -A whitelist -s xxx.xxx.xxx.xxx -j ACCEPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT #开放http/https端口外界访问 -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT #端口1-65535 规定白名单ip才可访问(注意 -j 后跟的是白名单变量名) -A INPUT -p tcp -m state --state NEW -m tcp --dport 1:65535 -j whitelist -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT
[root@aikx ~]# systemctl restart iptables # 修改配置文件需重启iptables生效
很棒