背景:
前一段时间,由于服务器出了一点小问题,加上服务器被黑了N次之后,决定重装服务器。想着centos最新bane7 已经出来了,就用最新的吧, 人都是有一种喜新厌旧的感觉。于是,提前就在自己的虚拟机上安装了个最新版本的Centos7 , 安装完成之后,当想配置防火墙的时候,发现跟以前不一样了,经过两天的折腾,各种网上搜索资料,终于,可以简单的使用了。这次,在这进行一下小记录,方便以后查询,同时希望能给朋友带来帮助。
简介:
自从Centos 从6上升到7之后,防火墙也上升了一个阶段,从iptables升级到firewall。之前一直使用的是iptabls。简单的来说,就是通过iptables控制端口访问,其他的高级一点的功能,比如,绑定ip 、屏蔽ip之类的,也没怎么用过。这次本来也想通过防火墙来限制端口访问的时候,却发现,和之前有了很大的不同。
firewall特点:
firewall跟之前不一样的地方主要有两点,一是热更新,就是可以在不停止防火墙服务的情况下,更新防火墙的配置。 二是firewall增加了zone的概念。个人通过网上搜查和测试,感觉就像是一个配置的集合,每一个zone都是一个特殊的情况的配置。
firewall默认的zone
firewall在一开始有自己默认的zone,主要的如下:
drop:默认丢弃所有包
block:拒绝所有外部连接,允许内部发起的连接
public:指定外部连接可以进入
external:这个不太明白,功能上和上面相同,允许指定的外部连接
dmz:和硬件防火墙一样,受限制的公共连接可以进入
work:工作区,概念和workgoup一样,也是指定的外部连接允许
home:类似家庭组
internal:信任所有连接
是不是很眼熟,都是从网上抄下来的。不对的还请指教哈。
firewall常用指令
我在学习的时候,会经常用到一些指令,在这里稍微的介绍一下
[root@localhost logs]# firewall-cmd --state //查看防火墙状态
running
running
这里表示防火墙正在运行。
查看防火墙指令:
[root@localhost logs]# firewall-cmd --help //查看防火墙指令
下面会出来很多,看着很吓人,但是经常用到的不是很多。
查看当前获得zone以及接口
[root@localhost logs]# firewall-cmd --get-active-zones;
public
interfaces: eno16777736
public
interfaces: eno16777736
查看当前public的zone下支持的服务,这里展示有三个
[root@localhost logs]# firewall-cmd --zone=public --list-services;
dhcpv6-client http ssh
dhcpv6-client http ssh
查看该服务zone下支持的端口
[root@localhost logs]# firewall-cmd --zone=public --list-port;
这里需要注意的时候, 这里面什么都不展示的话,并不表示关闭了所有的端口,有一些服务是有默认端口的,从这里是不展示的。例如ssh的22号端口 , http的80端口,通过这些端口去访问对应的服务是没有问题的。不要以为什么都没有,就不能通过22号端口访问服务器, 不能通过80端口访问web了。其实都可以的。
从public的zone中,移除http服务
[root@localhost logs]# firewall-cmd --zone=public --remove-service=http;
success
success
当展示有success的时候,说明操作成功,如果要想永久有效的话,需要在后面再添加 --permanent 这个指令
重新加载firewall的配置
[root@localhost logs]# firewall-cmd --reload
success
success
表示不停止服务的情况下,重新加载firewall服务
添加指定的服务
[root@localhost logs]# firewall-cmd --zone=public --add-service=http
success
这里是表示,帮上面移除掉的http服务又重新添加了
添加制定的端口
[root@localhost logs]# firewall-cmd --zone=public --add-port=8080/tcp
success
success
表示public下,添加了8080端口 可以是 8080/tcp 8080/udp 根据需要自行配置
移除端口
[root@localhost logs]# firewall-cmd --zone=public --remove-port=8080/tcp
success
success
将上面添加的端口移除掉, 如果想要永久有效的话,同上,添加--permanent
DEMO 环境
通过配置防火墙,可以让用户在浏览器,通过80端口访问tomcat。
执行步骤:
1、Java的安装
[root@localhost logs]# cd /usr/
[root@localhost usr]# mdkir java
[root@localhost local]# cd java
[root@localhost java]# wget http://download.oracle.com/otn-pub/java/jdk/8u111-b14/jdk-8u111-linux-x64.tar.gz?AuthParam=1477407206_ea08372427f35895ac874a6d135ca2fa
下载完成之后重命名
[root@localhost java]mv jdk-8u111-linux-x64.tar.gz?AuthParam=1477407206_ea08372427f35895ac874a6d135ca2fa jdk-8u111-linux-x64.tar.gz
解压压缩包
[root@localhost java] jdk-8u111-linux-x64.tar.gz
配置环境变量
[root@localhost java]
vim /etc/profile
在最后加上如下配置
export JAVA_HOME=/usr/java/jdk1.8.0_111/
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
[root@localhost
java] source /etc/profile //刷新配置
2、tomcat下载
下载tomcat
#> wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-8/v8.5.6/bin/apache-tomcat-8.5.6.tar.gz
解压tomat
#>tar -zxvf apache-tomcat-8.5.6.tar.gz
3、修改tomcat配置
在tomcat目录里面,在/config/server.xml 中,将
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
connectionTimeout="20000"
redirectPort="8443" />
里面的port改成80端口
4、修改完成之后,启动tomcat。 注意这里要用root启动,因为tomcat访问的是80端口,需要root权限才能访问,否则,会异常。权限不足导致。
5、修改防火墙配置
要想外放能访问,需要开启使zone有http服务功能。
在当前的zone中添加http服务。
#> firewall-cmd --zone=public --add-service=http --permanent;
success
重新加载firewall
#>firewall-cmd --reload
在外面,用浏览器访问 http://ip 就可以了