Centos的网络环境配置:防火墙firewalld,ifconfig+route/ip手动配置网络,用iptables增加网络访问规则

一、 防火墙firewalld的操作
1、firewalld的基本使用 
启动: systemctl start firewalld 
 
查看状态: systemctl status firewalld 
 
停止: systemctl disable firewalld 
 
禁用: systemctl stop firewalld 
 
2.systemctl是CentOS7的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体。 
启动一个服务:systemctl start firewalld.service 
关闭一个服务:systemctl stop firewalld.service 
重启一个服务:systemctl restart firewalld.service 
显示一个服务的状态:systemctl status firewalld.service 
在开机时启用一个服务:systemctl enable firewalld.service 
在开机时禁用一个服务:systemctl disable firewalld.service 
查看服务是否开机启动:systemctl is-enabled firewalld.service 
查看已启动的服务列表:systemctl list-unit-files|grep enabled 
查看启动失败的服务列表:systemctl –failed

3.配置firewalld-cmd 
查看版本: firewall-cmd –version 
查看帮助: firewall-cmd –help 
显示状态: firewall-cmd –state 
查看所有打开的端口: firewall-cmd –zone=public –list-ports 
更新防火墙规则: firewall-cmd –reload 
查看区域信息: firewall-cmd –get-active-zones 
查看指定接口所属区域: firewall-cmd –get-zone-of-interface=eth0 
拒绝所有包:firewall-cmd –panic-on 
取消拒绝状态: firewall-cmd –panic-off 
查看是否拒绝: firewall-cmd –query-panic 
那怎么开启一个端口呢 
添加 
firewall-cmd –zone=public –add-port=80/tcp –permanent (–permanent永久生效,没有此参数重启后失效) 
重新载入 
firewall-cmd –reload 
查看 
firewall-cmd –zone= public –query-port=80/tcp 
删除 
firewall-cmd –zone= public –remove-port=80/tcp –permanent 
这个一般都用不到,可以试一下: 
 
删除之后忘了重新载入,就还显示80/tcp端口开启着。

二、ifconfig+route/ip手动配置网络
1.Linux临时修改IP地址、网关、主机名、DNS,马上生效,无需重启(重启后失效)。 
1.修改主机名 
hostnameSlyar2.修改IP地址(eth0为网卡名称)hostnameSlyar2.修改IP地址(eth0为网卡名称) ifconfig eth0 192.168.1.5 netmask 255.255.255.0 
3.修改默认网关(eth0为网卡名称) 
routeadddefaultgw192.168.1.1deveth04.修改DNSrouteadddefaultgw192.168.1.1deveth04.修改DNS vim /etc/resolv.conf 
2.永久修改 
参考VMWare安装的CentOS7修改网卡名称 
参考CentOS(RedHat)命令行临时修改IP地址、网关、DNS 
1.检查一下你的主机网卡数量及名称,相关信息在 /etc/sysconfig/network-scripts/ 下 
从图中可以看到我有2块网卡,第一块为是虚拟网卡,ens33;第二块网卡为回环网卡,一般不需要设置。 
2.使用vim编辑你需要设置IP的网卡 
 
内容如下: 
 
修改需要修改的,这里我没有改动。 
3.修改网关 
vi /etc/sysconfig/network 
增加一条网关信息 
GATEWAY=192.168.1.1 
 
4.修改DNS 
vim /etc/resolv.conf 
增加DNS信息即可 
nameserver 192.168.1.1 
 
5.重新加载网络配置 
/etc/init.d/network restart 


三、用iptables增加网络访问规则
1》.封停IP或者IP段 
  在CentOS下封停IP,有封杀网段和封杀单个IP两种形式。一般来说,现在的攻击者不会使用一个网段的IP来攻击(太招摇了),IP一般都是散列的。于是下面就详细说明一下封杀单个IP的命令,和解封单个IP的命令。 
  在CentOS下,使用ipteables来维护IP规则表。要封停或者是解封IP,其实就是在IP规则表中对入站部分的规则进行添加操作。 
  要封停一个IP,使用下面这条命令:

iptables -I INPUT -s ***.***.***.*** -j DROP


  要解封一个IP,使用下面这条命令:

iptables -D INPUT -s ***.***.***.*** -j DROP


  参数-I是表示Insert(添加),-D表示Delete(删除)。后面跟的是规则,INPUT表示入站,...表示要封停的IP,DROP表示放弃连接。 
  此外,还可以使用下面的命令来查看当前的IP规则表:

iptables --list

比如我来封停我的电脑的ip地址,(centos是在VM虚拟机上装的,可以和我的电脑互ping) 
 
解封一下 


附:其他常用的命令 
编辑 iptables 文件

>vi /etc/sysconfig/iptables

关闭/开启/重启防火墙

/etc/init.d/iptables stop
1
其中stop关闭;start 开启;restart 重启。 
验证一下是否规则都已经

 iptables -L
1
重启iptables

/etc/rc.d/init.d/iptables save
service iptables restart
1
2
2》.封停或者开启端口 
1.比如我们先关闭所有的端口: 
关闭所有的 INPUT FORWARD OUTPUT 端口。 
下面是命令实现:

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
1
2
3
再用命令 iptables -L -n 查看 是否设置好, 好看到全部 DROP 了(想恢复就DROP换成ACCEPT再来一遍) 
这样的设置好了,我们只是临时的, 重启服务器还是会恢复原来没有设置的状态 
还要使用 service iptables save 进行保存 
看到信息 firewall rules 防火墙的规则 其实就是保存在 /etc/sysconfig/iptables 
可以打开文件查看 vi /etc/sysconfig/iptables 
 
ping一下百度试一下(web服务,用的80号端口) 
 
ssh(用的22号端口,同样连接不上) 
2.下面我只打开22端口,看我是如何操作的,就是下面2个语句

iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
1
2
发现可以用ssh登录了 
 
针对这2条命令进行一些讲解吧 
-A 参数就看成是添加一条 INPUT 的规则 
-p 指定是什么协议 我们常用的tcp 协议,当然也有udp 例如53端口的DNS 
到时我们要配置DNS用到53端口 大家就会发现使用udp协议的 
而 –dport 就是目标端口 当数据从外部进入服务器为目标端口 
反之 数据从服务器出去 则为数据源端口 使用 –sport 
-j 就是指定是 ACCEPT 接收 或者 DROP 不接收 
其他的同理,太麻烦就试一下就不一个一个截图了, 
参考博客Linux下iptables 禁止端口和开放端口

3、如何删除规则 
首先我们要知道 这条规则的编号,每条规则都有一个编号

通过 iptables -L -n –line-number 可以显示规则和相对应的编号 
num target prot opt source destination 
1 DROP tcp – 0.0.0.0/0 0.0.0.0/0 tcp dpt:3306 
2 DROP tcp – 0.0.0.0/0 0.0.0.0/0 tcp dpt:21 
3 DROP tcp – 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 
多了 num 这一列, 这样我们就可以 看到刚才的规则对应的是 编号2

那么我们就可以进行删除了 
iptables -D INPUT 2 
删除INPUT链编号为2的规则。

再 iptables -L -n 查看一下 已经被清除了。 
4、过滤无效的数据包 
假设有人进入了服务器,或者有病毒木马程序,它可以通过22,80端口像服务器外传送数据。 
它的这种方式就和我们正常访问22,80端口区别。它发向外发的数据不是我们通过访问网页请求 
而回应的数据包。

下面我们要禁止这些没有通过请求回应的数据包,统统把它们堵住掉。

iptables 提供了一个参数 是检查状态的,下面我们来配置下 22 和 80 端口,防止无效的数据包。

iptables -A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
1
可以看到和我们以前使用的:

iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
1
多了一个状态判断。

同样80端口也一样, 现在删掉原来的2条规则, 
iptables -L -n –line-number 这个是查看规则而且带上编号。我们看到编号就可以 
删除对应的规则了。

iptables -D OUTPUT 1     这里的1表示第一条规则。
1
当你删除了前面的规则, 编号也会随之改变。看到了吧。

好,我们删除了前面2个规则,22端口还可以正常使用,说明没问题了

下面进行保存,别忘记了,不然的话重启就会还原到原来的样子。

service iptables save    #进行保存。
1
Saving firewall rules to /etc/sysconfig/iptables: [ OK ] 
其实就是把刚才设置的规则写入到 /etc/sysconfig/iptables 文件中。 
5、DNS端口53设置 
下面我们来看看如何设置iptables来打开DNS端口,DNS端口对应的是53

大家看到我现在的情况了吧,只开放22和80端口, 我现在看看能不能解析域名。

hostwww.google.com 输入这个命令后,一直等待,说明DNS不通

出现下面提示 : 
;; connection timed out; no servers could be reached

ping 一下域名也是不通

[root@localhost ~pingwww.google.com
ping: unknown hostwww.google.com
1
2
我这里的原因就是 iptables 限制了53端口。

有些服务器,特别是Web服务器减慢,DNS其实也有关系的,无法发送包到DNS服务器导致的。

下面演示下如何使用 iptables 来设置DNS 53这个端口,如果你不知道 域名服务端口号,你

可以用命令 : grep domain /etc/services

[root@localhost ~grep domain /etc/services
domain          53/tcp                          # name-domain server
domain          53/udp
domaintime      9909/tcp                        # domaintime
domaintime      9909/udp                        # domaintime

看到了吧, 我们一般使用 udp 协议。

好了, 开始设置。。。

iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
1
这是我们 ping 一个域名,数据就是从本机出去,所以我们先设置 OUTPUT, 
我们按照ping这个流程来设置。

然后 DNS 服务器收到我们发出去的包,就回应一个回来

iptables -A INPUT -p udp --sport 53 -j ACCEPT
1
同时还要设置

iptables -A INPUT -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -p udp --sport 53 -j ACCEPT

好了, 下面开始测试下, 可以用 iptables -L -n 查看设置情况,确定没有问题就可以测试了

[root@localhost ~iptables -L -n
Chain INPUT (policy DROP)
target     prot opt source               destination
ACCEPT     tcp -- 0.0.0.0/0            0.0.0.0/0           tcp dpt:22
ACCEPT     tcp -- 0.0.0.0/0            0.0.0.0/0           tcp dpt:80
ACCEPT     udp -- 0.0.0.0/0            0.0.0.0/0           udp spt:53
ACCEPT     udp -- 0.0.0.0/0            0.0.0.0/0           udp dpt:53

Chain FORWARD (policy DROP)
target     prot opt source               destination

Chain OUTPUT (policy DROP)
target     prot opt source               destination
ACCEPT     tcp -- 0.0.0.0/0            0.0.0.0/0           tcp spt:22 state ESTABLISHED
ACCEPT     tcp -- 0.0.0.0/0            0.0.0.0/0           tcp spt:80 state ESTABLISHED
ACCEPT     udp -- 0.0.0.0/0            0.0.0.0/0           udp dpt:53
ACCEPT     udp -- 0.0.0.0/0            0.0.0.0/0           udp spt:53

可以测试一下 是否 DNS 可以通过iptables 了。

[root@localhost ~hostwww.google.com
www.google.comis an alias forwww.l.google.com.
www.l.google.comis an alias for www-china.l.google.com.
www-china.l.google.com has address 64.233.189.104
www-china.l.google.com has address 64.233.189.147
www-china.l.google.com has address 64.233.189.99

正常可以解析 google 域名。

ping 方面可能还要设置些东西。

用 nslookup 看看吧

[root@localhost ~nslookup
www.google.com
Server:         192.168.1.1
Address:        192.168.1.1#53
Non-authoritative answer:
www.google.comcanonical name =www.l.google.com.
www.l.google.com        canonical name = www-china.l.google.com.
Name:   www-china.l.google.com
Address: 64.233.189.147
Name:   www-china.l.google.com
Address: 64.233.189.99
Name:   www-china.l.google.com
Address: 64.233.189.104

说明本机DNS正常, iptables 允许53这个端口的访问。 
6、iptables对ftp的设置 
现在我开始对ftp端口的设置,按照我们以前的视频,添加需要开放的端口 
ftp连接端口有2个 21 和 20 端口,我现在添加对应的规则。

[root@localhost rootiptables -A INPUT -p tcp --dport 21 -j ACCEPT
[root@localhost rootiptables -A INPUT -p tcp --dport 20 -j ACCEPT
[root@localhost rootiptables -A OUTPUT -p tcp --sport 21 -j ACCEPT
[root@localhost rootiptables -A OUTPUT -p tcp --sport 20 -j ACCEPT

好,这样就添加完了,我们用浏览器访问一下ftp,出现超时。

所以我刚才说 ftp 是比较特殊的端口,它还有一些端口是 数据传输端口, 
例如目录列表, 上传 ,下载 文件都要用到这些端口。

而这些端口是 任意 端口。。。 这个 任意 真的比较特殊。

如果不指定什么一个端口范围, iptables 很难对任意端口开放的, 
如果iptables允许任意端口访问, 那和不设置防火墙没什么区别,所以不现实的。

那么我们的解决办法就是 指定这个数据传输端口的一个范围。

下面我们修改一下ftp配置文件。

我这里使用vsftpd来修改演示,其他ftp我不知道哪里修改,大家可以找找资料。

[root@localhost rootvi /etc/vsftpd.conf

在配置文件的最下面 加入

pasv_min_port=30001
pasv_max_port=31000

然后保存退出。

这两句话的意思告诉vsftpd, 要传输数据的端口范围就在30001到31000 这个范围内传送。

这样我们使用 iptables 就好办多了,我们就打开 30001到31000 这些端口。

[root@localhost rootiptables -A INPUT -p tcp --dport 30001:31000 -j ACCEPT
[root@localhost rootiptables -A OUTPUT -p tcp --sport 30001:31000 -j ACCEPT

[root@localhost rootservice iptables save

最后进行保存, 然后我们再用浏览器范围下 ftp。可以正常访问

用个账号登陆上去,也没有问题,上传一些文件上去看看。

看到了吧,上传和下载都正常。。 再查看下 iptables 的设置

[root@localhost rootiptables -L -n
Chain INPUT (policy DROP)
target     prot opt source               destination
ACCEPT     tcp -- 0.0.0.0/0            0.0.0.0/0          tcp dpt:22
ACCEPT     tcp -- 0.0.0.0/0            0.0.0.0/0          tcp dpt:21
ACCEPT     tcp -- 0.0.0.0/0            0.0.0.0/0          tcp dpt:20
ACCEPT     tcp -- 0.0.0.0/0            0.0.0.0/0          tcp dpts:30001:31000

Chain FORWARD (policy DROP)
target     prot opt source               destination

Chain OUTPUT (policy DROP)
target     prot opt source               destination
ACCEPT     tcp -- 0.0.0.0/0            0.0.0.0/0          tcp spt:22
ACCEPT     tcp -- 0.0.0.0/0            0.0.0.0/0          tcp spt:21
ACCEPT     tcp -- 0.0.0.0/0            0.0.0.0/0          tcp spt:20
ACCEPT     tcp -- 0.0.0.0/0            0.0.0.0/0          tcp spts:30001:31000

这是我为了演示ftp特殊端口做的简单规则,大家可以添加一些对数据包的验证 
例如 -m state –state ESTABLISHED,RELATED 等等要求更加高的验证

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值