【Linux网络安全】CentOS折腾firewall和iptables

一、关于服务


systemctlservicechkconfig的区别?

systemctl 是 RHEL 7 的服务管理工具中主要的工具,它融合之前 service 和 chkconfig 的功能于一体。可以使用它永久性或只在当前会话中启用/禁用服务。所以 systemctl 命令是 service 命令和 chkconfig 命令的集合和代替。

  • systemctl:是一个 systemd 工具,主要负责控制 systemd 系统和服务管理器。
  • service:可以启动 、停止、重新启动和关闭系统服务,还可以显示所有系统服务的当前状态。
  • chkconfig:是管理系统服务(service)的命令行工具。

对比

以服务 httpd举例:

任务 新命令 旧命令
显示服务 systemctl list-units --type=service chkconfig --list
查看状态 systemctl status httpd.service(服务详细信息)
systemctl is-active httpd.service(仅显示是否active
service httpd status
启动服务 systemctl start httpd.service service httpd start
停止服务 systemctl stop httpd.service service httpd stop
重启服务 systemctl restart httpd.service service httpd restart
设置自启动 systemctl enable httpd.service chkconfig --level 3 httpd on
取消自启动 systemctl disable httpd.service chkconfig --level 3 httpd off

可见之前命令的参数在语法上基本是主谓结构,而现在命令systemctl的参数基本是动宾结构,有一点儿将控制器全部交给这个“服务管理器”的味道。




二、安全组


安全组和防火墙的区别

简而言之:

  • 安全组以安全策略进行防护,属于主动防护,是在未被攻击时做好安全防护。
  • 防火墙是防护软件,属于被动防护,是在被攻击时才进行防护的。

阿里云的服务器添加安全组

以 Tomcat 的8080端口为例,在阿里云的云服务器控制台中,添加安全组规则:
在这里插入图片描述




三、firewall 防火墙


基本使用和测试

在 CentOS7 中的防火墙使用的是 firewall,而且阿里云的服务器中防火墙默认是关闭的。也就是说可以直接进行 TCP 访问。

假设现在服务器中的一个tomcat正占用着8080端口:

启动一个tomcat容器,并添加端口映射和数据卷映射:

docker run -i -d -p 8080:8080 -v/usr/local/tomcat/webapps/:/usr/local/tomcat/webapps/ --privileged=true tomcat

可以在服务器的/usr/local/tomcat/webpapps/目录下放一些东西。

在这里插入图片描述
因为添加了安全组的规则,而且 firewall 防火墙是关闭的。那么现在是可以通过TCP连接上该远程端口的:
在这里插入图片描述

也可以直接用命令来测试(在windows中需要开启该服务):

telnet <IP> 8080

开启 firewall 防火墙后,如果 8080 端口没有被放行则会连接失败:
在这里插入图片描述

在 firewall 防火墙中开放 8080端口后可以连接成功:

在这里插入图片描述


常用命令

1、查看所有
firewall-cmd --list-all
2、开放端口

单个开放:

firewall-cmd --zone-public --add-port=8080/tcp --permanent

区间开放:

firewall-cmd --zone-public --add-port=8080-8090 --permanent
3、关闭端口

单个关闭:

firewall-cmd --zone=public --remove-port=8080/tcp --permanent

区间关闭:

firewall-cmd --zone-public --remove-port=8080-8090 --permanent
4、限制IP

单个限制:

firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.200" port protocol="tcp" port="8080" reject"

区间限制:

firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="10.0.0.0/24" port protocol="tcp" port="8080" reject"
5、解除IP限制

单个解除:

firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.200" port protocol="tcp" port="8080" accept"

区间解除(需要根据子网掩码计算):

firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="10.0.0.0/24" port protocol="tcp" port="8080" accept"

总结

  1. 比较纠结的是:既然能用SSH远程连接上,说明 22 端口是开放的,但是为什么却看不到?

  2. 另外呢,每次修改配置后都需要重启防火墙,可以使用firewall-cmd --reload或者systemctl restart firewalld.service

  3. 添加、解除IP后会出现两条记录,先者并没有被覆盖。所以也可以直接修改 XML 配置文件/etc/firewalld/zones/public.xml




四、iptables 防火墙


安装

CentOS默认是没有安装 iptables 防火墙的,安装前先关闭 firewall 防火墙。

yum install iptables -y
yum install iptables-services -y

基本使用和测试

未开放端口的情况下:
在这里插入图片描述

开放端口的情况下:
在这里插入图片描述

常用命令

1、查看
iptables -L -n
2、开放、关闭端口

因命令的参数有点儿多,直接修改配置文件/etc/sysconfig/iptables会方便一些。
在这里插入图片描述

在vim的命令模式下,可以快速地通过:

  • yy进行复制
  • p进行粘贴




五、注意事项


  • 千万不要使用yum remove卸载软件,会卸载掉很多依赖包。。。。。。正在寻找安全、正确的卸载方法。。。。




五、参考资料


原创文章 41 获赞 34 访问量 3万+

猜你喜欢

转载自blog.csdn.net/XY1790026787/article/details/104256754