前言
在大企业中防火墙角色主要交给硬件来支持,效果自然没话说只是需要增加一点点成本,但对于大多数个人或者互联网公司来说选择系统自带的iptables或者第三方云防火墙似乎是更加合适的选择,通过一些合理的优化和灵活的配置,我们也可以很轻松实现硬件防火墙的部分功能,够用就好。
CentOS7默认的防火墙不是iptables,而是firewalle. 不过之前用开iptables,so… iptables
关闭firewalle防火墙
1 2
| systemctl stop firewalld.service #停止 firewall systemctl disable firewalld.service #禁止 firewall开机启动
|
安装 iptables-service
1
| yum -y install iptables-services
|
设置防火墙策略
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| iptables -F INPUT iptables -F FORWARD iptables -F OUTPUT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A INPUT -p tcp -m multiport --dports 80,443 -j ACCEPT iptables -A INPUT -p tcp -m multiport --dports 24780:24783,24770:24773,24790 -j ACCEPT iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -p icmp -j ACCEPT iptables -A INPUT -j REJECT --reject-with icmp-host-prohibited iptables -A FORWARD -j REJECT --reject-with icmp-host-prohibited
iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT
service iptables save systemctl enable iptables
iptables -L -nv 查看规则是否生效.
|
防火墙相关命令
1 2 3 4
| systemctl enable iptables.service #设置防火墙开机启动 systemctl start iptables.service #启动防火墙 systemctl stop iptables.service #停止防火墙 systemctl restart iptables.service #重启防火墙使配置生效
|
设置crontab脚本
便于运维集中化管理扩展
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| vi /root/start_iptables.sh
/sbin/iptables -P INPUT ACCEPT /sbin/iptables -F /sbin/iptables -X
/sbin/iptables -A INPUT -i lo -j ACCEPT /sbin/iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT /sbin/iptables -A INPUT -p icmp -j ACCEPT
/sbin/iptables -A INPUT -s 192.168.10.0/16 -j ACCEPT
/sbin/iptables -A INPUT -s 183.60.192.96/27 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 24790 -j ACCEPT /sbin/iptables -A INPUT -p tcp -m multiport --dports 80,443 -j ACCEPT
/sbin/iptables -P INPUT DROP /sbin/iptables -P FORWARD DROP /sbin/iptables -P OUTPUT ACCEPT
chmod 755 /root/start_iptables.sh crontab -e 0 0 * * * /root/start_iptables.sh
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| *filter :INPUT DROP [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :syn-flood - [0:0] -A INPUT -i lo -j ACCEPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT -A INPUT -p icmp -m limit --limit 100/sec --limit-burst 100 -j ACCEPT -A INPUT -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j syn-flood -A INPUT -j REJECT --reject-with icmp-host-prohibited -A syn-flood -p tcp -m limit --limit 3/sec --limit-burst 6 -j RETURN -A syn-flood -j REJECT --reject-with icmp-port-unreachable COMMIT
|
https://www.vultr.com/docs/initial-setup-of-a-centos-7-server/