多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[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