一、线上Linux服务器基础优化
1、如何最小化安装系统
仅安装需要的,按需安装、不用不装,必须安装的有开发包、基本网络包、基本应用包。
2、ssh登录系统策略
vi /etc/ssh/sshd_config
#SSH链接默认端口,修改默认22端口为1万以上端口号,避免被扫描和攻击。
Port 22221
#不使用DNS反查,可提高ssh连接速度
UseDNS no
#关闭GSSAPI验证,可提高ssh连接速度
GSSAPIAuthentication no
#禁止root账号登陆
PermitRootLogin no
3、selinux, iptables策略设置
[root@ACA8D5EF ~]# cat /etc/selinux/config
Selinux的状态:
enforcing 开启状态、permissive 提醒的状态 、disabled 关闭状态
命令行关闭:setenforce 0(临时生效)
[root@ACA8D5EF ~]# iptables -L -n
4、更新yum源及必要软件安装
常用的几个yum源
epel源:https://fedoraproject.org/wiki/EPEL
repoforge源:http://repoforge.org/use/
[root@ACA8D5EF ~]#yum update #更新系统所以软件和内核
5、定时自动更新服务器时间
阿里云时间服务器:ntp1.aliyun.com、ntp2.aliyun.com
/usr/sbin/ntpdate ntp1.aliyun.com >> /var/log/ntp.log 2>&1; /sbin/hwclock -w
6、重要文件加锁
chattr +i /etc/sudoers
chattr +i /etc/shadow
chattr +i /etc/passwd
chattr +i /etc/grub.conf
7、系统资源参数优化
/etc/security/limits.conf
/etc/security/limits.d/90-nproc.conf(centos6.x)
/etc/security/limits.d/20-nproc.conf(centos7.x)
-
soft nproc 20480
-
hard nproc 20480
-
soft nofile 655360
-
hard nofile 655360
-
soft memlock unlimited
-
hard memlock unlimited
二、系统安全与网络安全
1、常见攻击类型
口令暴力破解攻击
拒绝服务攻击(DDoS)
应用程序漏洞攻击(挂马、SQL注入)
2、防范攻击策略
3、操作系统常用安全策略
(1)密码登录安全
复杂密码+普通用户ssh登录
密钥认证方式远程登录
openssh配置文件/etc/ssh/sshd_config,注意关注下面几个配置项:
Port 22
AuthorizedKeysFile .ssh/authorized_keys
PermitRootLogin no
GSSAPIAuthentication no
UseDNS no
(2)端口与服务安全
在linux操作系统下,系统共定义了65536个可用端口,这些端口又分为两个部分,以1024作为分割点, 分别是“只有root用户才能启用的port”和“客户端的port”:
0-1023端口,都需要以root身份才能启用,可以通过查阅linux下/etc/services文件得到端口与服务的对应列表。比如20、21端口是预留给ftp服务的,23端口是预留给telnet服务的,25是预留给mail服务的,而80是预留给www服务的。
1024以上(包含1024)的端口主要是给客户端软件使用的,这些端口都是有软件随机分配的,大于或者等于1024的端口的启用不受root用户的控制,例如,经常使用的mysql数据库,服务的默认端口是3306,而这个端口就是由mysql用户启用的。Oracle数据库默认的监听端口是1521,也是由oracle用户启动的。
(3)软件安全
yum update glibc
yum update openssl
(4)禁止ping操作
[root@localhost ~]#echo “1”> /proc/sys/net/ipv4/icmp_echo_ignore_all
(5)设定tcp_wrappers防火墙
tcp_Wrappers的使用很简单,仅仅两个配置文件:/etc/hosts.allow和/etc/hosts.deny
三、 Linux软件防火墙iptables
1、 iptables的概念
iptables是linux系统内嵌的一个防火墙软件(封包过滤式防火墙),它集成在系统内核中,因此执行效率非常的高,iptables通过设置一些封包过滤规则,来定义什么数据可以接收,什么数据需要剔除,因此,用户通过iptables可以对进出计算机的数据包进行IP过滤,以达到保护主机的目的。
iptables是有最基本的多个表格(tables)组成的,而且每个表格的用途都不一样,在每个表格中,又定义了多个链(chain),通过这些链可以设置相应的规则和策略.
2、 iptables的功能组成
3、 filter表
iptables有3种常用的表选项,包括管理本机数据进出的filter、管理防火墙内部主机nat 和改变不同包及包头内容的mangle。
filter表一般用于的信息包过滤,内置了INPUT、OUTPUT和FORWARD链。
INPUT链 主要是对外部数据包进入linux系统进行信息过滤
OUTPUT链 主要是对内部linux系统所要发送的数据包进行信息过滤
FORWARD链 将外面过来的数据包传递到内部计算机中
4、 NAT表
NAT表主要用处是网络地址转换,即Network Address Translation,缩写为NAT,它包含PREROUTING、POSTROUTING和OUTPUT链。
PREROUTING链:是在数据包刚刚到达防火墙时,根据需要改变它的目的地址。例如DNAT操作,就是通过一个合法的公网IP地址,通过对防火墙的访问,重定向到防火墙内的其它计算机(DMZ区域),也就是说通过防火墙改变了访问的目的地址,以使数据包能重定向到指定的主机
POSTROUTING链:在包就要离开防火墙之前改变其源地址,例如SNAT操作,屏蔽了本地局域网主机的信息,本地主机通过防火墙连接到internet,这样在internet上看到的本地主机的来源地址都是同一个IP,屏蔽了来源主机地址信息
OUTPUT链:改变了本地产生包的目的地址
5、防火墙规则的查看与清除
列出当前系统filter table的几条链规则:
[root@localhost ~]# iptables -L -n
列出nat表的链信息:
[root@localhost ~]# iptables -t nat -L -n
清除规则
清除本机防火墙的所有规则设定:
[root@localhost ~]# iptables -F
[root@localhost ~]# iptables -X
[root@localhost ~]# iptables –Z
上面三条指令可以清除防火墙的所有规则,但是不能清除预设的默认规则(policy)
iptables的执行流程
6、制定防火墙规则(filter表为主)
(1)设置预设规则(policy)
-P --policy,定义策略,针对filter table有INPUT,OUTPUT,FORWARD3条链可选。
注意,这里的”P”为大写
-t 后面接table,常见的有filter、NAT等,如果没有用“-t”指定table,则默认使用filter表
[root@localhost ~]# iptables -P INPUT DROP
[root@localhost ~]# iptables -P OUTPUT ACCEPT
[root@localhost ~]# iptables -P FORWARD ACCEPT
2)针对ip/网络、网络接口、tcp,udp协议的过滤规则
iptables设置语法如下:
[root@localhost ~]# iptables [-t tables] [-AI 链] [-io 网络接口] [-p 协议] [-s 来源IP/网络] [-d 目标IP/网络] -j [ACCEPT|DROP|REJECT|REDIRECT]
-A 新增加一条规则,放到已有规则的最后面
-I 插入一条规则,如果没有制定插入规则的顺序,则新插入的变成第一条规则
-i 指定数据包进入的那个网络接口。linux下常见的有eth0、eth1、lo等等。此参数一般与INPUT链配合使用
-o 指定数据包传出的那个网络接口。经常与OUTPUT链配合使用
-p 指定此规则适用的协议,常用的协议有tcp、udp、icmp以及all
-s 指定来源IP或者网络,也就是限定数据包来源的IP或者网络,可以单独指定某个IP,也可以指定某段网络
-d 指定目标IP或者网络,跟参数“-s”类似
-j 此参数后面指定要执行的动作,主要的动作有接受(ACCEPT)、抛弃(DROP)及记录(LOG)
ACCEPT 接受该数据包
DROP 直接丢弃该数据包,不给客户端任何回应。
-m 指定iptables使用的扩展模块,常用的有tcp模块等
–sport 端口范围 限制来源的端口号码,端口号码可以是连续的,例如 1024:65535
–dport 端口范围 限制目标的端口号码
举例:
允许局域网内192.168.60.0/24的所有主机访问我们这个服务器,除了192.168.60.3这台主机:
[root@localhost ~]#iptables -A INPUT -i eth1 -s 192.168.60.3 -j DROP
[root@localhost ~]#iptables -A INPUT -i eth1 -s 192.168.60.0/24 -j ACCEPT
将来自网络接口lo的数据包,全部接受:
[root@localhost ~]#iptables -A INPUT -i lo -j ACCEPT
允许所有客户端访问服务器的443端口
[root@localhost ~]#iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
允许来自222.91.99.0/28的1024:65535端口范围的主机可以通过22端口连接linux服务器
[root@localhost ~]#iptables -A INPUT -i eth0 -p tcp -s 222.91.99.0/28 --sport 1024:65534 --dport 22 -j ACCEPT
3)针对数据状态模块的过滤规则
数据状态模块机制是iptables中特殊的一部分,严格来说不应该叫状态机制,因为它只是一种连接跟踪机制。连接跟踪可以让filter table知道某个特定连接的状态。
[root@localhost ~]# iptables -A INPUT -m state/mac --state NEW/ESTABLISHED/RELATED/INVALID
-m iptables的几个模块选项,常见的有:
state:状态模块
mac:网卡硬件地址(hardware address)
–state 一些数据封包的状态,主要有:
NEW:某个连接的第一个包。
ESTABLISHED:表示该封包属于某个已经建立的链接。
RELATED:当一个连接和某个已处于ESTABLISHED状态的连接有关系时,就被认为是RELATED的了。
INVALID:表示数据包不能被识别属于哪个连接或没有任何状态。
只要是已建立的连接或者相关数据包就予以通过,不能识别或者没有任何状态的数据包全部丢弃,设置如下规则:
[root@localhost ~]#iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
[root@localhost ~]#iptables -A INPUT -m state --state INVALID -j DROP
(4)NAT表SNAT操作
[root@localhost ~]#iptables -t nat -A POSTROUTING -s 172.16.213.230/32 -j SNAT --to-source 223.221.189.166
四、 rsync数据镜像工具与应用案例
1、 rsync功能介绍
rsync是Linux系统下的数据镜像备份工具,通过rsync可以将本地系统数据通过网络备份到任何远程主机上。
rsync有如下特性:
可以镜像保存整个目录树和文件系统
可以增量同步数据,文件传输效率高,因而同步时间很短。
可以保持原有文件的权限、时间等属性。
加密传输数据,保证了数据的安全性。
rsync有两种应用模式:client/server模式、client/client模式。
2、 rsync的client/server模式
client/server模式下,是在server端启动一个服务端口,然后客户端来连接这个端口,进行数据的同步和传输。
服务端设置:
rsync服务端的配置文件为/etc/rsyncd.conf
uid = nobody
gid = nobody
use chroot = no
max connections = 10
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
[ixdba]
path = /webdata
comment = ixdba file
ignore errors
read only = true
list = false
uid = root
gid = root
auth users = backup
secrets file = /etc/server.pass
uid 此选项指定当该模块传输文件时守护进程应该具有的用户ID,默认值是“nobody”。
gid 此选项指定当该模块传输文件时守护进程应该具有的用户组ID。默认值为“nobody”。
max connections 此选项指定模块的最大并发连接数量,以保护服务器,超过限制的连接请求,将被暂时限制。默认值是0,也就是没有限制。
pid file 此选项用来指定rsync守护进程对应的PID文件路径。
lock file 此选择指定支持max connections的锁文件,默认值是/var/run/rsyncd.lock。
log file 此选项指定了rsync的日志输出文件路径。
[ixdba] 表示定义一个模块的开始,ixdba就是对应的模块名称。
path 此选项用来指定需要备份的文件或目录,必填项,这里指定的目录为/webdata。
list 此选项设定当客户请求可以使用的模块列表时,该模块是否被列出。默认值是true,如果需要建立隐藏的模块。可以设置为false。
auth users 此选项用来定义可以连接该模块的用户名,多个用户用空格或逗号分隔开。需要注意的是这里的用户和Linux系统用户没有任何关系。这里指定的用户是backup。
secrets file 此选项指定一个包含“用户名:密码”格式的文件,用户名就是“auth users”选项定义的用户,密码可以随便指定,只要和客户端的secrets file对应起来就行。只有在auth users被定义时,该文件才起作用。系统默认没有这个文件,自己手动创建一个即可。
执行如下指令启动rsync守护进程:
[root@web ~]# /usr/local/bin/rsync --daemon
[root@localhost /]# ps -ef|grep rsync
root 20278 1 0 16:29 ? 00:00:00 /usr/local/bin/rsync --daemon
客户端拉取:
[root@web~]# /usr/local/bin/rsync -vzrtopg --delete --progress backup@192.168.60.253::ixdba /data --password-file=/etc/server.pass
“–vzrtopg”选项中v是“-verbose”,即详细模式输出,z表示“–compress” 即对备份的文件在传输时进行压缩处理,r表示“–recursive”,也就是对子目录以递归模式处理。t即“–times”,用来保持文件时间信息,o即“–owner”用来保持文件属主信息。p即“–perms”用来保持文件权限,g即“–group”用来保持文件的属组信息。
“–delete”选项指定以rsync服务端为基准进行数据镜像同步,也就是要保持rsync服务端目录与客户端目录的完全一致性。
“–progress”选项用于显示数据镜像同步的过程。
“backup@192.168.60.253::ixdba” 表示对服务器192.168.60.253中的ixdba模块进行备份,也就是指定备份的模块,backup表示使用“backup”这个用户对该模块进行备份。
“/data”用于指定备份文件在客户端机器上的存放路径,也就是将备份的文件存放在备份机的/data目录下。
“–password-file=/etc/server.pass”用来指定客户机上存放的密码文件位置,这样在客户端执行同步命令时就无需输入交互密码了,注意,这个密码文件的名称和位置可以随意指定,但是在客户机上必须存在此文件,文件的内容仅仅为备份用户的密码,这里指的是backup的密码。
3、 rsync的client/client模式
rsync -vzrtopg --delete --progress Python-3.6.5.tgz root@172.16.213.233:/mnt (推送模式)
rsync -vzrtopg --delete --progress root@172.16.213.233:/mnt/Python-3.6.5.tgz /app/(拉取模式)
默认情况下rsync走的是ssh协议,22端口,如果ssh是非默认的22端口,那么可以添加“-e“选项:
rsync -vzrtopg --delete --progress -e ‘ssh -p 9090’ Python-3.6.5.tgz root@172.16.213.233:/mnt (推送模式)
rsync -vzrtopg --delete --progress -e ‘ssh -p 9090’ root@172.16.213.233:/mnt/Python-3.6.5.tgz /app/(拉取模式)
其中,9090是sshd服务的端口。
来源:CSDN
作者:IT丶李淳风
链接:https://blog.csdn.net/qq_41744381/article/details/104800993