一、关于服务
systemctl
、service
、chkconfig
的区别?
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"
总结
-
比较纠结的是:既然能用SSH远程连接上,说明 22 端口是开放的,但是为什么却看不到?
-
另外呢,每次修改配置后都需要重启防火墙,可以使用
firewall-cmd --reload
或者systemctl restart firewalld.service
。 -
添加、解除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
卸载软件,会卸载掉很多依赖包。。。。。。正在寻找安全、正确的卸载方法。。。。