CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙步骤:
1.先检查是否安装了:
iptables service iptables status
2.安装iptables: yum install -y iptables
3.升级iptables(安装的最新版本则不需要): yum update iptables
4.安装iptables-services: yum install iptables-services
5.禁用/停止自带的firewalld服务
(1).查看firewalld运行状态: systemctl start firewalld
(2).停止firewalld服务: systemctl stop firewalld
(3).禁用firewalld服务 systemctl mask firewalld
6.设置现有规则
(1).查看iptables现有规则: iptables -L -n
(2).先允许所有,不然有可能会杯具: iptables -P INPUT ACCEPT
(3).清空所有默认规则 iptables -F
(4).清空所有自定义规则 iptables -X
(5).所有计数器归0 iptables -Z
(6).允许来自于lo接口的数据包
(本地访问)
iptables -A INPUT -i lo -j ACCEPT :
开放22端口
iptables -A INPUT -p tcp --dport 22 -j ACCEPT :
开放21端口(FTP)
:
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
开放80端口(HTTP)
iptables -A INPUT -p tcp --dport 80 -j ACCEPT :
开放443端口(HTTPS)
iptables -A INPUT -p tcp --dport 443 -j ACCEPT :
允许ping
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT :
允许接受本机请求之后的返回数据 RELATED,是为FTP设置的
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT #:
其他入站一律丢弃
:
iptables -P INPUT DROP
所有出站一律绿灯: iptables -P OUTPUT ACCEPT
:
所有转发一律丢弃: iptables -P FORWARD DROP
其他参考规则如下:
如果要添加内网ip信任(接受其所有TCP请求) iptables -A INPUT -p tcp -s 45.96.174.68 -j ACCEPT
过滤所有非以上规则的请求 iptables -P INPUT DROP
要封停一个IP,使用下面这条命令: iptables -I INPUT -s ***.***.***.*** -j DROP
要解封一个IP,使用下面这条命令: iptables -D INPUT -s ***.***.***.*** -j DROP
7.保存规则设定,将会在/etc/sysconfig/路径下生产iptables文件。
保存上述规则: service iptables save
8.开启iptables服务
(1).注册iptables服务,相当于以前的chkconfig: iptables on systemctl enable iptables.service
(2).开启服务 systemctl start iptables.service
(3).查看状态 systemctl status iptables.service
参考iptables完整配置如下:
/**********下面是systemctl的一些命令*******************************/
观察iptables和firewalld使用的两组命令,发现三个常用的命令:service、chkconfig、systemctl。
systemctl命令是系统服务管理器指令,它实际上将 service 和 chkconfig 这两个命令组合到一起。
任务:
旧指令:
新指令:
1.使某服务自动启动
chkconfig --level 3 httpd on
systemctl enable httpd.service
2.使某服务不自动启动
chkconfig --level 3 httpd off
systemctl disable httpd.service
3.检查服务状态
service httpd status
systemctl status httpd.service(服务详细信息)
systemctl is-active httpd.service(仅显示是否 Active)
4.显示所有已启动的服务
chkconfig --list
systemctl list-units --type=service
5.启动某服务
service httpd start
systemctl start httpd.service
6.停止某服务
service httpd stop
systemctl stop httpd.service
7.重启某服务
service httpd restart
systemctl restart httpd.service