[TOC]
----
# 网络安全与主机基本防护
## 定期更新系统软件
### 软件安装更新`rpm`
- `rpm`——已安装的软件
~~~
[root@tatahy-lamp ~]# rpm -qa | grep -i tcpdump
tcpdump-4.9.2-4.el7_7.1.x86_64
~~~
### 系统更新`yum`
~~~
[root@tatahy-lamp ~]# yum -y update
~~~
- `yum`——未安装的软件
~~~
[root@tatahy-lamp ~]# yum search all tcpdump
Loaded plugins: langpacks
=========================================================== Matched: tcpdump ============================================================
tcpdump.x86_64 : A network traffic monitoring tool
batctl.x86_64 : B.A.T.M.A.N. advanced control and management tool
dnstop.x86_64 : Displays information about DNS traffic on your network
libpcap.i686 : A system-independent interface for user-level packet capture
libpcap.x86_64 : A system-independent interface for user-level packet capture
libpcap-devel.i686 : Libraries and header files for the libpcap library
libpcap-devel.x86_64 : Libraries and header files for the libpcap library
ngrep.x86_64 : Network layer grep tool
ssldump.x86_64 : An SSLv3/TLS network protocol analyzer
tcpflow.x86_64 : Network traffic recorder
tcpreplay.x86_64 : Replay captured network traffic
tcpxtract.x86_64 : Tool for extracting files from network traffic
~~~
## 限制连接端口
### 端口查看`netstat` `nmap`
## 限制网络服务的权限(启动SELinux)
# 服务器内部的资源管理与防火墙规划
## 服务的管理
### 查询系统服务`chkconfig` `systemctl list-unit-files`
* "System V"工具—— `chkconfig`
~~~
[root@tatahy-lamp init.d]# chkconfig --list
Note: This output shows SysV services only and does not include native systemd services.
SysV configuration data might be overridden by native systemd configuration.
If you want to list systemd services use 'systemctl list-unit-files'.
To see services enabled on particular target use 'systemctl list-dependencies [target]'.
aegis 0:off 1:off 2:on 3:on 4:on 5:on 6:off
netconsole 0:off 1:off 2:off 3:off 4:off 5:off 6:off
network 0:off 1:off 2:on 3:on 4:on 5:on 6:off
~~~
* "systemd"工具——`systemctl list-unit-files`
~~~
[root@tatahy-lamp init.d]# systemctl list-unit-files
UNIT FILE STATE
proc-sys-fs-binfmt_misc.automount static
dev-hugepages.mount static
dev-mqueue.mount static
proc-sys-fs-binfmt_misc.mount static
sys-fs-fuse-connections.mount static
sys-kernel-config.mount static
sys-kernel-debug.mount static
tmp.mount disabled
brandbot.path enabled
cups.path disabled
systemd-ask-password-console.path static
...
systemd-readahead-done.timer indirect
systemd-tmpfiles-clean.timer static
unbound-anchor.timer disabled
367 unit files listed.
~~~
>[info] `enabled`是开机启动,`disabled`是开机不启动
- 设置开机自启项
~~~
[root@tatahy-lamp init.d]# systemctl enable redis
~~~
`Systemctl`是一个“systemd”工具,主要负责控制“systemd”系统和服务管理器。它整合了`chkconfig` 与` service`功能于一体。
“systemd”是一个系统管理守护进程、工具和库的集合,用于取代“System V”初始进程。“systemd”的功能是用于集中管理和配置类UNIX系统。
在Linux生态系统中,“systemd”被部署到了大多数的标准Linux发行版中,只有为数不多的几个发行版尚未部署。“systemd”通常是所有其它守护进程的父进程,但并非总是如此。
从CentOS7.x开始,CentOS开始使用“systemd”服务来代替“daemon”,原来管理系统启动和管理系统服务的相关命令全部由`systemctl`命令来代替。
### 查询当前系统打开文件`lsof`
![](https://img.kancloud.cn/72/81/728127226397f26e77c3922b56b144f4_658x375.png)
~~~
lsof -i:8080:查看8080端口占用
lsof abc.txt:显示开启文件abc.txt的进程
lsof -c abc:显示abc进程现在打开的文件
lsof -c -p 1234:列出进程号为1234的进程所打开的文件
lsof -g gid:显示归属gid的进程情况
lsof +d /usr/local/:显示目录下被进程开启的文件
lsof +D /usr/local/:同上,但是会搜索目录下的目录,时间较长
lsof -d 4:显示使用fd为4的进程
lsof -i -U:显示所有打开的端口和UNIX domain文件
~~~
### 已启动的网络监听服务`netstat`
~~~
[root@tatahy-lamp emqx]# netstat -tulpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 510/rpcbind
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 827/httpd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 826/sshd
tcp6 0 0 :::3306 :::* LISTEN 1053/mysqld
tcp6 0 0 :::111 :::* LISTEN 510/rpcbind
udp 0 0 0.0.0.0:111 0.0.0.0:* 510/rpcbind
udp 0 0 172.18.174.15:123 0.0.0.0:* 522/ntpd
udp 0 0 127.0.0.1:123 0.0.0.0:* 522/ntpd
udp 0 0 0.0.0.0:123 0.0.0.0:* 522/ntpd
udp 0 0 0.0.0.0:673 0.0.0.0:* 510/rpcbind
udp6 0 0 :::111 :::* 510/rpcbind
udp6 0 0 :::123 :::* 522/ntpd
udp6 0 0 :::673 :::* 510/rpcbind
~~~
* 与路由(route)有关的参数:
-r:列出路由表,功能与`route`命令相同
-n:不使用主机名与服务名称,使用IP与port number,与`route -n`相同
* 与网络接口有关的参数:
-a:列出所有的连接状态,包括`tcp/udp/unix/socket`等
-t : 指明显示TCP端口
-u : 指明显示UDP端口
-l : 仅显示监听套接字(所谓套接字就是使应用程序能够读写与收发通讯协议(protocol)与资料的程序)
-p : 显示进程标识符和程序名称,每一个套接字/端口都属于一个程序。
-c:设置几秒后自动更新一次。例如:`-c 5`为每5秒更新一次网络状态
>[warning] 在‘program name’项下的是实际程序的执行文件,可能与`/etc/init.d/`里的服务脚本文件名不同,
>[info] CentOS7.0, `/etc/init.d/README`
> You are looking for the traditional init scripts in /etc/rc.d/init.d, and they are gone?
> Here's an explanation on what's going on:
> You are running a systemd-based OS where traditional init scripts have been replaced by native systemd services files. Service files provide very similar functionality to init scripts. To make use of service files simply invoke "systemctl", which will output a list of all currently running services (and other units). Use `systemctl list-unit-files` to get a listing of all known unit files, including stopped, disabled and masked ones. Use `systemctl start foobar.service` and `systemctl stop foobar.service` to start or stop a service, respectively. For further details, please refer to `systemctl`.
### 设置任务计划`crontab`
设置任务计划文件,让服务器定时自动执行任务。
## 服务器的软件设置
服务器里安装的软件要知道
### 1. 软件的安装与查询`rpm` `yum`
- `rpm`——已安装的软件
~~~
[root@tatahy-lamp ~]# rpm -qa | grep -i tcpdump
tcpdump-4.9.2-4.el7_7.1.x86_64
~~~
- `yum`——未安装的软件
~~~
[root@tatahy-lamp ~]# yum search all tcpdump
Loaded plugins: langpacks
=========================================================== Matched: tcpdump ============================================================
tcpdump.x86_64 : A network traffic monitoring tool
batctl.x86_64 : B.A.T.M.A.N. advanced control and management tool
dnstop.x86_64 : Displays information about DNS traffic on your network
libpcap.i686 : A system-independent interface for user-level packet capture
libpcap.x86_64 : A system-independent interface for user-level packet capture
libpcap-devel.i686 : Libraries and header files for the libpcap library
libpcap-devel.x86_64 : Libraries and header files for the libpcap library
ngrep.x86_64 : Network layer grep tool
ssldump.x86_64 : An SSLv3/TLS network protocol analyzer
tcpflow.x86_64 : Network traffic recorder
tcpreplay.x86_64 : Replay captured network traffic
tcpxtract.x86_64 : Tool for extracting files from network traffic
~~~
### 2. 软件在Linux中以什么样的服务来实现?`systemctl` `iptables`
* 服务的是否为开机启动?
* 服务启动了几个端口?
CentOS中,各个网络服务与port number的默认对应关系是写在`/etc/services`文件中。
* 服务的端口如何设置防火墙?
`iptables`——端口/防火墙设置
linux系统(centos、redhat等)的防火墙是默认只对外开放了22端口。
linux系统的端口设置在`/etc/sysconfig/iptables`文件中配置。
以oracle的1521端口为例
1. 阻止所有服务器访问1521端口
~~~
$ iptables -I INPUT -p tcp --dport 1521 -j DROP
~~~
2. 放行172.17.79.4
~~~
$ iptables -I INPUT -s 172.17.79.4 -p tcp --dport 1521 -j ACCEPT
~~~
3. 保存配置
~~~
$ service iptables save
~~~
4. 重启防火墙
~~~
$ service iptables restart
~~~
后续如果想继续添加ip,执行2、3、4步骤即可。
:-: 常见端口与网络服务的对应表
| 端口 | 服务名称与内容 |
| --- | --- |
| 20 | FTP-data,文件传输协议所使用的主动数据传输端口 |
| 21 | FTP,文件传输协议的命令端口 |
| 22 | SSH,较为安全的远程连接服务 |
| 23 | Telnet,早期的远程连接服务器软件 |
| 25 | SMTP,简单邮件传输协议,用在作为Mail Server的端口 |
| 53 | DNS,用在作为名称解析的域名服务器 |
| 80 | WWW,全球信息网服务器 |
| 110 | POP3,邮件接收协议,办公室用的收信软件都通过这个端口 |
| 443 | HTTPS,有安全加密机制的WWW服务器 |
>[warning] Server端小于1024的端口必须由root账号启动。
> Client端则随机用一个大于1024且没有使用的端口号就可以了。
* 服务如何持续提供数据?
* 访问服务的账号及权限?
* 访问服务的账号及权限的设置?
### 3. 客户端的连接测试
### 4. 服务如果出错该如何查询错误信息?
## 深入
### [[ 如何查看 Linux 中所有正在运行的服务]](https://blog.csdn.net/Pipcie/article/details/82586151)
### 连接到Internet的必要网络参数
* IP
* Netmask
* Broadcast
* Gateway
* DNS
- 软件工程
- 1. 基础
- 计算
- 网络
- 存储
- 2. 开发/运维
- 微服务
- 容器化(Docker)
- 容器网络
- 持续集成
- 持续发布
- 3. 架构
- 操作系统
- Linux服务器
- windows
- 内存
- 应用软件
- 前端
- 后端
- 数据库
- 协议
- 服务
- 分布式
- LNMP+Vue.js
- web网站架构技术
- 架构演化
- 架构分层
- Layer1. Frontend
- Layer2. Application
- Layer3. Service
- Layer4. Storage
- Layer5. Backend
- Layer6. Operation
- Layer7. Security
- Layer8. DataCenter
- 架构模式
- 架构要素
- 1. Performance
- 2. Availability
- 3. 可伸缩性
- 4. 可扩展性
- 5. 安全
- 6. 成本
- 4. 开发项目
- vue-php