拓展 centos 7
查看端口的占用情况
Centos6/contos7(ECS) 使用
netstat
查询系统上有多少TCP 多少UDP会话
netstat -tun
- -t: tcp
- -u: udp
- -a: all 表示列出所有的连接,服务监听,Socket资料
- -n: port number 用数字的形式展示
- -p: program显示哪个进程监听这个端口
- -l :listening,列出当前处于监听状态的服务
contos7(Minimal) /contos7(ECS) 使用
命令 : ss
ss 尤其是在有海量并发时, 效率更高
- -t: tcp
- -u: udp
显示当前机器上有哪些端口提供服务
[root@139 bin]# ss -nlutp
centos7特性
操作 | centos6 | centos7 |
---|---|---|
文件系统 | ext4 | xfs |
修改主机名 | /etc/sysconfig/network | /etc/hosthome |
修改时区 | /etc/sysconfig/clock | timedatectl set-timezone Asia/Tokyo |
查看ip信息 | ifconfig | ifconfig/ip(阿里ECS) |
查看DNS信息 | /etc/resolv.conf | - |
查看端口状态 | netsat | netsat/ss |
核心服务
操作 | centos6 | centos7 |
---|---|---|
防火墙 | iptables | firewald |
服务管理 | System V init | systemd |
时间同步服务 | ntp | chrony |
查看防火墙的状态
[root@大爱ECS bin]# sudo systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: inactive (dead) # 关闭
Docs: man:firewalld(1)
其他变化
- centos7 默认支持docker
- 内核支持: Overlay FS
- Repo 源支持
- centos7 的yum源支持一键安装docker
- 不再支持32位操作系统
- GNOME 3.X (桌面应用)
- 支持40G以太网卡
文件目录
-rw-r--r-- 1 root root 0 Sep 14 19:11 a2498
lrwxrwxrwx 1 root root 7 Feb 22 2019 bin -> usr/bin # 操作系统的命令
dr-xr-xr-x. 5 root root 4096 Jun 24 10:17 boot # boot loader files 基础引导文件,引导开机
drwxr-xr-x 7 root root 4096 Jun 3 14:41 CloudResetPwdUpdateAgent
drwxr-xr-x 7 root root 4096 Sep 1 22:47 CloudrResetPwdAgent
drwxr-xr-x 19 root root 3020 Sep 15 15:10 dev # 磁盘,设备文件
drwxr-xr-x. 84 root root 4096 Sep 15 15:10 etc # 存放大量的配置文件
drwxr-xr-x. 3 root root 4096 Sep 8 20:32 home # 普通用户的家目录
drwxr-xr-x 4 root root 4096 Aug 25 19:25 kong
lrwxrwxrwx 1 root root 7 Feb 22 2019 lib -> usr/lib # 系统的依赖库
lrwxrwxrwx 1 root root 9 Feb 22 2019 lib64 -> usr/lib64
drwx------. 2 root root 16384 Feb 22 2019 lost+found
drwxr-xr-x. 2 root root 4096 Apr 11 2018 media # 媒体数据
drwxr-xr-x. 2 root root 4096 Apr 11 2018 mnt # mount directory 挂载目录
drwxr-xr-x 3 root root 4096 Aug 25 17:32 node
drwxr-xr-x. 2 root root 4096 Sep 13 03:14 opt # optional add-on apps 原生添加的app
dr-xr-xr-x 85 root root 0 Sep 15 15:10 proc # process infornation 进程的信息 如top提取的数据就来自这个目录
dr-xr-x---. 8 root root 4096 Sep 15 15:06 root # 管理员的家目录
drwxr-xr-x 25 root root 740 Sep 15 15:10 run
lrwxrwxrwx 1 root root 8 Feb 22 2019 sbin -> usr/sbin
drwxr-xr-x. 2 root root 4096 Apr 11 2018 srv # Service Data 服务数据
dr-xr-xr-x 13 root root 0 Sep 15 15:10 sys
drwxrwxrwt. 13 root root 4096 Sep 15 15:13 tmp # 临时文件
drwxr-xr-x. 13 root root 4096 Feb 22 2019 usr # 用户安装的软件
drwxr-xr-x. 19 root root 4096 Sep 15 15:10 var # 可变的文件,如日志文件/帮助文档
centos6 | centos7 |
---|---|
bin | bin->usr/bin |
sbin | sbin->user/sbin |
lib | lib->usr/lib |
lib64 | lib64->usr/lib |
- | run
centos7 多出来了一个run目录.这个目录类似tmp目录,都用来存放临时文件, 但是不同的是它存放的正在运行的服务需要的临时文件
修改时区
centos6
就是拷贝一份文件到 /etc/localtime中
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
centos7
命令: timedatectl
[root@大爱ECS /]# timedatectl
Local time: Sun 2019-09-15 15:40:34 CST # 本地时间
Universal time: Sun 2019-09-15 07:40:34 UTC # 世界时间
RTC time: Sun 2019-09-15 07:40:33 # 主板时间
Time zone: Asia/Shanghai (CST, +0800) # +0800 东八区
NTP enabled: yes
NTP synchronized: no
RTC in local TZ: no # 本地主板时间是否和当前时间保持一致
DST active: n/a
设置本地时间
timedatectl set-timezone Asia/Tokyo
设置主板时间
timedatectl set-local-rtc 1
1 : 表示将硬件的时间调整为和本地时间一致
网卡接口命名
centos6
一般命名为:
eth0 eth1 eth2
em0 em1 em2
em* 类型的网卡是针对戴尔而设计
centos7
默认是基于固件,拓扑,位置信息来分配,但是更加灵活可预知,但是更加难读
强大的参数自动补全
[root@大爱ECS /]# yum install bash-completion
重新登录生效
systemd 服务管理
格式:
systemctl [options] conmand [name]
支持服务的并行启动,缩短开机时间
Systemd系统的服务管理
--- | centos6 | centos7 |
---|---|---|
服务管理 | service | systemctl |
启动项管理(开机启动) | chkconfig | systemctl |
系统启动级别 | init | systemctl |
定时任务 | cron | timer |
日志管理 | syslog | Systemd-journal |
还可以 设置环境变量,系统挂载,远程主机管理
systemd 可以管理各种各样的服务,为了区分,他给每个不同的服务取了不同的后缀名
[root@139 ~]# systemctl -t help
Available unit types:
service
socket
busname
target
snapshot
device
mount
automount
swap
timer
path
slice
scope
文件扩展名 | 作用 | 文件扩展名 | 作用 |
---|---|---|---|
.service | 用于定义系统服务 | .snapshot | 管理系统快照 |
.target | 模拟实现运行级别 | .swap | Swap设备 |
.device | 定义内核识别设备 | .automount | 自动挂载点 |
.mount | 文件系统挂载点 | .path | 监控文件/目录 |
.socket | 进程间通信使用socket文件 | .scope | 外部线程 |
.timer | 定时器 | .slice | 分层次管理系统进程 |
- 如果没有扩展名,默认扩展名 .service
Systemd 基本命令
基础命令 | 作用 |
---|---|
systemctl, systemctl list-units | 查看已经激活的单元 |
systemctl --failed | 查看运行失败的单元 |
systemctl list-unit-files | 查看所有可用的单元,以及是否开机启动 |
systemctl help | 查看单元的帮助手册页 |
systemctl daemon-reload | 重新载入 systemd |
systemctl start <单元> | 激活单元 |
systemctl stop <单元> | 停止单元 |
systemctl restart <单元> | 重启单元 |
systemctl status <单元> | 输出单元运行状态 |
systemctl is-enable | <单元>检测单元是否自动启动 |
systemctl enable <单元> | 开机启动单元 |
systemctl enable --now <单元> | 设置单元开机启动并且立即启动 |
systemctl disable <单元> | 取消开机自动启动 |
systemctl mask <单元> | 禁用一个单元 |
systemctl unmask <单元> | 取消禁用某个单元 |
Systemd系统启动级别设置
centos6
查看系统的启动级别
[root@139 ~]# ll /etc/rc.d
total 36
drwxr-xr-x. 2 root root 4096 Sep 14 18:34 init.d
drwxr-xr-x. 2 root root 4096 Aug 24 10:58 rc0.d
drwxr-xr-x. 2 root root 4096 Aug 24 10:58 rc1.d
drwxr-xr-x. 2 root root 4096 Aug 24 10:58 rc2.d
drwxr-xr-x. 2 root root 4096 Aug 24 10:58 rc3.d
drwxr-xr-x. 2 root root 4096 Aug 24 10:58 rc4.d
drwxr-xr-x. 2 root root 4096 Aug 24 10:58 rc5.d
drwxr-xr-x. 2 root root 4096 Aug 24 10:58 rc6.d
-rw-r--r-- 1 root root 473 Apr 26 01:19 rc.local
进入每一个rcX, 都能看到在这个启动级别下,启动的服务列表
[root@139 ~]# cd /etc/rc.d/rc3.d
[root@139 rc3.d]# ll
total 0
lrwxrwxrwx. 1 root root 20 Feb 22 2019 K50netconsole -> ../init.d/netconsole
lrwxrwxrwx. 1 root root 17 Feb 22 2019 K90network -> ../init.d/network
lrwxrwxrwx 1 root root 28 Jun 3 14:41 S20cloudResetPwdAgent -> ../init.d/cloudResetPwdAgent
lrwxrwxrwx 1 root root 34 Jun 3 14:41 S20cloudResetPwdUpdateAgent -> ../init.d/cloudResetPwdUpdateAgent
lrwxrwxrwx 1 root root 24 Feb 22 2019 S50multi-queue-hw -> ../init.d/multi-queue-hw
lrwxrwxrwx 1 root root 19 Feb 22 2019 S98denyhosts -> ../init.d/denyhosts
在centos6中查询所在的启动模式
runlevel
进入指定的模式
init 模式表示号数
--- | SysVint | Systemd |
---|---|---|
关闭系统 | 0 | runlevel0.target , poweroff.terget |
单用户模式 | 1,s,single | runlevel1.target , rescue.terget (rescue急救模式) |
多用户模式 | 2 | runlevel2.target , multi-user.target |
多用户带网络模式 | 3 | runlevel3.target , multi-user.target |
多用户, 网络模式,图像化 | 5 | runlevel5.target , graphical.terget |
重启 | 6 | runlevel6.target , reboot.terget |
centos7
查看当前系统所在的启动级别
[root@139 rc3.d]# systemctl get-default
multi-user.target
改变启动级别慎用 , 需要reboot才能生效
[root@139 rc3.d]# systemctl set-default multi-user.target
Removed symlink /etc/systemd/system/default.target.
Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/multi-user.target.
它是创建了一个连接
- 永久性的修改默认的启动级别
修改这个配置文件 /etc/inittab
防火墙 firewalld
- 在centos7中 firewadlld和iptables共存
- firewalld 底层调用的iotables
firewalld使用区域管理
centos7上的9个区域
[root@139 rc3.d]# ls /usr/lib/firewalld/zones/
block.xml # (阻塞区域)任何传入网络的数据包都将被阻止
dmz.xml # (隔离区域) 直选择接受传入的网络链接
drop.xml # (丢弃区域) 任何传入网络的连接都被拒绝
external.xml # (外部区域) 不相信网络上的其他计算机不会损伤你的计算机,只选择接受传入网络连接
home.xml # (家庭区域) 相信网络上的其他计算机不会损伤你的计算机
internal.xml # (内部区域) 相信网络上的其他计算机,不会损伤你的计算机,只选择接受传入的网络连接
public.xml # (公共区域)不相信网络上的任何计算机,只根据配置选择接受网络连接
trusted.xml (信任区域) 所有的网络连接都可以接受
work.xml # (工作区域) 相信网络上的其他计算机不会损伤你的计算机
家庭网络模式,相信网络上的计算机,安全系数低
[root@139 zones]# cat home.xml
<?xml version="1.0" encoding="utf-8"?>
<zone>
<short>Home</short>
<description>For use in home areas. You mostly trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
<service name="ssh"/>
<service name="mdns"/>
<service name="samba-client"/>
<service name="dhcpv6-client"/>
</zone>
默认使用的 public.xml 在公共网络上使用,不相信网络上的任意一个计算机器
- 启动防火墙
[root@139 zones]# systemctl start firewalld.service
- 查看
[root@139 zones]# [root@139 zones]# systemctl start firewalld.service
-bash: [root@139: command not found
[root@139 zones]# systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: active (running) since Sun 2019-09-15 17:07:43 CST; 22s ago
Docs: man:firewalld(1)
Main PID: 4461 (firewalld)
CGroup: /system.slice/firewalld.service
└─4461 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
Sep 15 17:07:42 139.9.92.235 systemd[1]: Starting firewalld - dynamic firewall daemon...
Sep 15 17:07:43 139.9.92.235 systemd[1]: Started firewalld - dynamic firewall daemon.
- 查看防火墙使用的默认区域 -- public (active)
[root@139 zones]# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources: # 控制访问我的源ip的限制
services: dhcpv6-client ssh # 本机哪些服务对外开放, 仅这两个服务提供外部访问
ports: # 对外提供的端口
protocols: # 对外开放的协议
masquerade: no
forward-ports: # 目的端口的转发
source-ports: # 源 端口的转发
icmp-blocks: #
rich rules:# 更高级配置,如只允许某一个ip访问
- 更改默认区域
[root@139 zones]# firewall-cmd --set-default-zone=home
success
再次查看
[root@139 zones]# firewall-cmd --list-all
home (active)
target: default
firewalld中的区域与接口
-
一个网卡的接口,只能属于一个zone, 不能同属于多个zone
-
1个zone 可以有多个网卡接口
-
任何配置了一个网卡接口的区域,都是活跃区域
-
查看本机的网卡接口
[root@139 zones]# ip a
# 本地回环网卡
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether fa:16:3e:d6:74:91 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.32/24 brd 192.168.0.255 scope global noprefixroute dynamic eth0
valid_lft 81533sec preferred_lft 81533sec
inet6 fe80::f816:3eff:fed6:7491/64 scope link
valid_lft forever preferred_lft forever
- 查看网卡接口现在属于哪个区域
[root@139 zones]# firewall-cmd --get-active-zones
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: dhcpv6-client ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
可以看到,eth0 ,现在属于 默认的public区域
- 将网卡接口转移到其他区域
[root@139 zones]# firewall-cmd --zone=home --change-interface=eth0
The interface is under control of NetworkManager, setting zone to 'home'.
success
再次查看现在活跃的区域,发现home替换了pulic,因为,配置了网卡接口的区域肯定是活跃的区域
[root@139 zones]# firewall-cmd --get-active-zones
home
interfaces: eth0
firewalld防火墙的端口配置规则及添加白名单
默认情况下,打开防火墙后从服务器往外随意发送数据, 但是任何进入服务器方向的数据都会被墙掉
其实开放了这个端口,就等于让占用这个端口的服务对外提供服务
接下来设置白名单:
- 配置指定服务对外提供服务
- 配置指定端口对外开放
- 配置指定ip访问机器
[root@139 bin]# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: dhcpv6-client ssh # 配置了 dhcpv6-client, 及ssh(允许远程登录)
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
- 添加对外提供服务的端口号
# 查看机器上对外提供服务的端口, 最下面9998端口是服务器上对外提供服务应用程序
# 默认情况下,通过浏览器是访问不到它的,会被墙掉,需要把这个端口添加到白名单才能访问
[root@139 bin]# ss -nlutp
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
udp UNCONN 0 0 *:68 *:* users:(("dhclient",pid=3790,fd=6))
udp UNCONN 0 0 192.168.0.32:123 *:* users:(("ntpd",pid=3718,fd=21))
udp UNCONN 0 0 127.0.0.1:123 *:* users:(("ntpd",pid=3718,fd=18))
udp UNCONN 0 0 *:123 *:* users:(("ntpd",pid=3718,fd=16))
udp UNCONN 0 0 fe80::f816:3eff:fed6:7491%eth0:123 :::* users:(("ntpd",pid=3718,fd=22))
udp UNCONN 0 0 ::1:123 :::* users:(("ntpd",pid=3718,fd=19))
udp UNCONN 0 0 :::123 :::* users:(("ntpd",pid=3718,fd=17))
tcp LISTEN 0 128 *:22 *:* users:(("sshd",pid=4185,fd=3))
tcp LISTEN 0 50 :::9998 :::* users:(("java",pid=4939,fd=203))
tcp LISTEN 0 1024 :::9999 :::* users:(("java",pid=4939,fd=202))
tcp LISTEN 0 50 :::7473 :::* users:(("java",pid=4939,fd=208))
tcp LISTEN 0 128 :::22 :::* users:(("sshd",pid=4185,fd=4))
# 为public域添加允许对外提供的端口
[root@139 bin]# firewall-cmd --zone=public --add-port=9998/tcp
success
# 再次查看
[root@139 bin]# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: dhcpv6-client ssh
ports: 9998/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
# 不需要重启服务,
- 移除白名单中的端口
[root@139 bin]# firewall-cmd --zone=public --remove-port=端口号
通过这种方式添加的配置,是临时的,重启服务后,配置会消失
- 永久生效
[root@139 bin]# firewall-cmd --zone=public --add-port=9998/tcp --permanent (permanent永久的)
[root@139 bin]# firewall-cmd --zone=public --remove-port=端口号 --permanent
firewalld防火墙的配置规则及添加服务白名单
如果服务器上的应用程序是以服务的形式存在的, 想让他对它提供服务,仅仅需要将它添加到服务的白名单就行
其实服务的白名单规则,和上面的直接开放端口是一样的, 只不过把端口包装成服务更容易让人理解
查看系统上服务的xml配置文件
[root@139 zones]# ls /usr/lib/firewalld/services/
amanda-client.xml elasticsearch.xml jenkins.xml mysql.xml puppetmaster.xml syncthing-gui.xml
amanda-k5-client.xml freeipa-ldaps.xml kadmin.xml nfs3.xml quassel.xml syncthing.xml
bacula-client.xml freeipa-ldap.xml kerberos.xml nfs.xml radius.xml synergy.xml
bacula.xml freeipa-replication.xml kibana.xml nmea-0183.xml redis.xml syslog-tls.xml
bgp.xml freeipa-trust.xml klogin.xml nrpe.xml RH-Satellite-6.xml syslog.xml
bitcoin-rpc.xml ftp.xml kpasswd.xml ntp.xml rpc-bind.xml telnet.xml
bitcoin-testnet-rpc.xml ganglia-client.xml kprop.xml openvpn.xml rsh.xml tftp-client.xml
bitcoin-testnet.xml ganglia-master.xml kshell.xml ovirt-imageio.xml rsyncd.xml tftp.xml
bitcoin.xml git.xml ldaps.xml ovirt-storageconsole.xml samba-client.xml tinc.xml
ceph-mon.xml gre.xml ldap.xml ovirt-vmconsole.xml samba.xml tor-socks.xml
ceph.xml high-availability.xml libvirt-tls.xml pmcd.xml sane.xml transmission-client.xml
cfengine.xml https.xml libvirt.xml pmproxy.xml sips.xml upnp-client.xml
condor-collector.xml http.xml managesieve.xml pmwebapis.xml sip.xml vdsm.xml
ctdb.xml imaps.xml mdns.xml pmwebapi.xml smtp-submission.xml vnc-server.xml
dhcpv6-client.xml imap.xml minidlna.xml pop3s.xml smtps.xml wbem-https.xml
dhcpv6.xml ipp-client.xml mongodb.xml pop3.xml smtp.xml xmpp-bosh.xml
dhcp.xml ipp.xml mosh.xml postgresql.xml snmptrap.xml xmpp-client.xml
dns.xml ipsec.xml mountd.xml privoxy.xml snmp.xml xmpp-local.xml
docker-registry.xml ircs.xml mssql.xml proxy-dhcp.xml spideroak-lansync.xml xmpp-server.xml
docker-swarm.xml irc.xml ms-wbt.xml ptp.xml squid.xml zabbix-agent.xml
dropbox-lansync.xml iscsi-target.xml murmur.xml pulseaudio.xml ssh.xml zabbix-server.xml
随便找一个打开
[root@139 services]# cat ssh.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>SSH</short>
<description>Secure Shell (SSH) is a protocol for logging into and executing commands on remote machines. It provides secure encrypted communications. If you plan on accessing your machine remotely via SSH over a firewalled interface, enable this option. You need the openssh-server package installed for this option to be useful.</description>
<port protocol="tcp" port="22"/>
</service>
其实可以看到,服务中有一个配置添加的就是端口的信息, 把服务添加到白名单 == 把服务占用的端口添加到白名单
- 添加服务到白名单
把http服务添加到白名单中, 开放80端口!!!
[root@139 services]# firewall-cmd --zone=public --add-service=http
- 移除服务
[root@139 services]# firewall-cmd --zone=public --remove-service=http
同样想持久话,添加 -permanent
ip白名单
[root@ecs-t6-large-2-linux-20190918000015 ~]# firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="211.123.123151" port protocol="tcp" port="9200" accept"
success
[root@ecs-t6-large-2-linux-20190918000015 ~]# firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="211.123.123151" port protocol="tcp" port="9200" accept"
success
[root@ecs-t6-large-2-linux-20190918000015 ~]# firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="211.123.123151" port protocol="tcp" port="9300" accept"
success
[root@ecs-t6-large-2-linux-20190918000015 ~]# firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="211.123.123151" port protocol="tcp" port="9998" accept"
success
[root@ecs-t6-large-2-linux-20190918000015 ~]# firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="localhost" port protocol="tcp" port="9998" accept"
Error: INVALID_ADDR: localhost
[root@ecs-t6-large-2-linux-20190918000015 ~]# firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="127.0.0.1" port protocol="tcp" port="9998" accept"
success
[root@ecs-t6-large-2-linux-20190918000015 ~]# firewall-cmd --reload
success
[root@ecs-t6-large-2-linux-20190918000015 ~]# firewall-cmd --list-all