在上节的笔记中,大家还记得那条防火墙的设置命令么?为什么要使用防火墙呢?Linux 系统中,安全的第一道防线就是它。跟 Windows 中防火墙一样,都是要设置端口的开放与关闭。那除了增加的命令之外,还有没有其它的操作呢?是如何实现的?那我们本节进行简单地讲解一下与防火墙有关的笔记内容。
防火墙的配置,在 Centos 6 以前是使用命令 iptables,而到了 Centos 7 以之后的版本,改成了 firewall-cmd 命令,为了大家更方便的理解,我把整个过程分解成(查看状态、增加端口操作、其它安全设置)三个方面给大家讲解,让大家尽可能明白防火墙是如何去配置的。
一、如何去查看防火墙的状态以及防火墙开启与关闭1、iptables 版本命令:
启动: service iptables start
关闭: service iptables stop
查看状态: service iptables status
设置开机禁用 : chkconfig iptables off
设置开机启用 : chkconfig iptables on
iptables 配置文件目录/etc/sysconfig/iptables,如果不想使用命令,也可以直接使用 vim/vi 来编辑配置文件,使用 cat 命令来查看配置内容。
实例:
[root@localhost ~]# service iptables status //查看防火墙状态,开了就会有下面的内容表格:filterChain INPUT (policy ACCEPT) //接入的端口信息 num target prot opt source destination 1 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:8089 Chain FORWARD (policy ACCEPT) //num target prot opt source destination Chain OUTPUT (policy ACCEPT) //接出允许信息 num target prot opt source destination [root@localhost ~]# service iptables status //没开防火墙的提示 iptables:未运行防火墙。[root@localhost ~]# service iptables stop //关闭防火墙 iptables:将链设置为政策 ACCEPT:filter [确定]iptables:清除防火墙规则: [确定]iptables:正在卸载模块: [确定][root@localhost ~]# service iptables start //开启防火墙 iptables:应用防火墙规则: [确定][root@localhost ~]#
2firewall-cmd 版本命令
这里要对 systemctl 这个命令注释一下:
systemctl 命令结合了 service 与 chkconfig 两个命令的功能,是 Centos 7 版本后用来对“服务”进行管理的一个命令。而 service 与 chkconfig 两个命令之后版本都没再出现过。
启动服务:systemctl start firewalld
关闭服务:systemctl stop firewalld
重启服务:systemctl restart firewalld
显示服务的状态:systemctl status firewalld
开机时启用服务:systemctl enable firewalld
开机时禁用服务:systemctl disable firewalld
实例:
[root@localhost ~]# systemctl status firewalld //已开启防火墙状态● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled) Active: active (running) since 三 2021-10-13 22:43:01 CST; 3 weeks 6 days ago Docs: man:firewalld(1) Main PID: 840 (firewalld)//或者使用以下命令也可以查看[root@localhost ~]# firewall-cmd --staterunning[root@localhost ~]# systemctl state firewalld //未开启防火墙的提示 Unknown operation state.[root@localhost ~]# systemctl status firewalld● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled) Active: inactive (dead) since 三 2021-11-10 17:50:09 CST; 17s ago Docs: man:firewalld(1) Process: 840 ExecStart=/usr/sbin/firewalld --nofork --nopid $FIREWALLD_ARGS (code=exited, status=0/SUCCESS) Main PID: 840 (code=exited, status=0/SUCCESS)[root@localhost ~]# firewall-cmd --state //另外一种提示命令 not running二、端口的放行及关闭
防火墙的端口开放与关闭,是运维工作当中常用的操作,安全配置上也有相关的要求。因此我们要比较熟悉的学习到这一块的内容。当连接数据库或远程登陆等与网络相关的故障,我们都要第一时间想到防火墙的配置问题,可以让我们走少很多的弯路。
iptables 命令增加端口的实际应用
#允许本地回环接口(即运行本机访问本机)iptables -A INPUT -i lo -j ACCEPT //就是把 LO 本地连接加入防火墙# 允许已建立的或相关连的通行 iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT#允许所有本机向外的访问 iptables -P INPUT ACCEPTiptables -A OUTPUT -j ACCEPT# 允许访问 22 端口 //这个则是 SSH 远程的默认端口,建议更换高位数 iptables -A INPUT -p tcp --dport 22 -j ACCEPTiptables -A INPUT -p tcp -s 10.159.1.0/24 --dport 22 -j ACCEPT 注:-s 后可以跟 IP 段或指定 IP 地址 //不同的参数可以增加不同的内容#允许访问 80 端口 //WEB 服务器一定要设置的 iptables -A INPUT -p tcp --dport 80 -j ACCEPT#允许 FTP 服务的 21 和 20 端口 //FTP 服务器也是一样开这些 iptables -A INPUT -p tcp --dport 21 -j ACCEPTiptables -A INPUT -p tcp --dport 20 -j ACCEPT#如果有其他端口的话,规则也类似,稍微修改上述语句就行#允许 pingiptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT#禁止其他未允许的规则访问 //这个是安全的设置,一般要做 iptables -A INPUT -j REJECT #(注意:如果 22 端口未加入允许规则,SSH 链接会直接断开。)iptables -A FORWARD -j REJECT
另外 iptables 还有一些高级不常用的命令集,大家也可以拿来参考一下!有时间也练习一下。有时能救命。
#屏蔽单个 IP 的命令 iptables -I INPUT -s 123.45.6.7 -j DROP#封整个段即从 172.16.10.1 到 172.16.10.254 的命令 iptables -I INPUT -s 172.16.10.0/24 -j DROP#查看已有的规则//就是防火墙已经开放或关闭的内容 iptables -L -n //-n 只显示 IP 与端口,不显示域名#如果上面的结果要加上序号显示 iptables -L -n --line-numbers #然后可以直接删除序号的那条规则 iptables -D INPUT 8//数字就是序号
操作完成,记得一定要重启防火墙服务才会生效。
firewall-cmd 命令
//命令--permanent 参数表示永远生效,没加就是重启服务器前生效。[selly@localhost ~]$ firewall-cmd --zone=public --add-port=80/tcp --permanentsuccess //重启防火墙服务[root@localhost sysconfig]# firewall-cmd --reloadsuccess//查看已经增加的端口命令[root@localhost sysconfig]# firewall-cmd --zone=public --list-ports80/tcp//删除端口开放命令[root@localhost sysconfig]#firewall-cmd --zone=public --remove-port=80/tcp --permanent//这条命令,大家还是保存来用吧,太长了,是给同一个 IP 地址增加多个端口的命令[root@localhost sysconfig]#firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="10.159.60.29" port protocol="tcp" port="1:65535" accept"
三、其它的安全配置说明
防火墙的配置,可以说是服务器安全运维的最重要的一环。如果大家不去注意这个配置与熟悉应用,特别是应用服务器与数据库服务器不同一台机器的时候,很容易导致无法正常连接数据库或应用。希望大家多花点时间这里。