linux基础优化
1.2.1 关闭SELinux
SELinux是美国国家安全局(NSA)对于强制访问控制的实现。
1.2.2 精简开机系统启动
Linux在服务器运行过程中,会有很多无用的软件服务默认就在运行,这些服务占用了系 统资源,带来安全隐患,因此要关闭这些服务。
重要的开机服务如下所示:
sshd 远程连接Linux服务器需要这个服务程序。否则,无法连接Linux;
rsyslog 是操作系统提供的一种机制,系统的守护程序通常会使用rsyslog将各种信息写到 格格系统日志文件中。CentOS中此服务名为syslog;
network 系统启动时,若想激活/关闭各个网络接口,则必须启动该服务;
crond 该服务用于周期性的执行系统及用户配置的计划任务;
sysstat 该服务包含监测系统性能及效率的一组工具。这些工具对于收集系统性能数据很 有帮助,核心工具包:
1.2.3 关闭iptables防火墙
setenforce 0 #临时关闭 sed -i 's#SELINUX=.*#SELINUX=disabled#g' /etc/selinux/config #永久 关闭
for A in `chkconfig --list |grep 3:on |awk '{print $1}' `;do chkconfig $A off;done for B in rsyslog network sshd crond sysstat;do chkconfig $B on;done chkconfig --list |grep 3:on
iostat CPU使用率及硬盘吞吐效率的工具 mpstat 提供单个或多个处理器的数据 sar 负责收集、报告并存储系统活跃的信息
1.2.4 最小化原则
1.安装Linux系统小化,即选包小化,yum安装软件包也要小化,无用的包不装。 开机启动服务小化,即无用的服务不开启;
2.操作系统命令小化,用rm -f test.txt而不用rm -fr test.txt;
3.登陆Linux用户小化。平时没有需求不用root登陆,用普通用户登陆即可;
4.普通用户授权小化,即只给必须的管理系统的命令;
5.Linux系统文件及目录权限设置小化,禁止随意创建、更改、删除。
1.2.5 更改ssh服务端远程登录的配置
不同的端口代表不同的服务,IP地址标示唯一的主机。端口的范围0~65535,一般建议改 为比1024大点的端口。不允许空密码登录,不允许root直接登录,不使用DNS,解决ssh 反应慢的问题。
1.2.6 sudo控制用户对系统命令的最小化
执行# visudo相当于编辑vi /etc/sudoers文件。
/etc/init.d/iptables stop #临时关闭 chkconfig iptables off #永久关闭
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.ori
vi /etc/ssh/sshd_config Port 52083 # SSH 预设使用22这个port,也可以使用其他 port PermitRootLogin no # 是否允许root登入!预设是允许的,建议设定 成no! PasswordAuthentication yes # 密码验证当然是需要的!所以这里写yes! PermitEmptyPasswords no # 若上面那一项如果设定为 yes 的话,这一项 就最好,设定为no ,这个项目在是否允许以空的密码登入! UseDNS no # 是否使用DNS GSSAPIAuthentication no # 解决SSH连接慢的问题 ListenAddress 10.10.10.7 # 设置服务器上的sshd服务绑定哪个IP地址对外 服务
1.2.7 设置Linux服务器时间同步
1.2.8 加大服务器文件描述符
文件描述符是由无符号整数表示的句柄,进程使用它来标识打开的文件。 查看文件描述 符:
执行vim /etc/security/limits.conf命令,再文件结尾加上如下一行。
配置完成以后,退出当前会话,再次登录才可以生效。检查如下:
1.2.9 调整内核参数
# 编辑sudo的配置文件 # visudo # 找到第98行,修改 root ALL=(ALL) ALL www ALL=(ALL) /etc/init.d/sshd restart # 上面www这一行的解释: # www是系统的哪个账号可以使用sudo命令; # 登录者的来源主机,哪台主机的www账号登录使用sudo命令; # (ALL)表示可以切换成身份或用户(比如root)来执行sudo后续的命令; # sudo可以执行的命令,多个命令用“,”隔开。 # 现在可以使用普通用户执行root用户才能做的重启ssh服务的命令
echo "*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1">>/var/spool/cron/root
ulimit -n
echo '* - nofile 65535 ' >>/etc/security/limits.conf
# ulimit -n 65535
编辑/etc/sysctl.conf,到文件结尾将下面的内容拷贝进去即可: # vi /etc/sysctl.conf net.ipv4.tcp_fin_timeout = 2
1.2.10 锁定关键系统文件
1.2.11 清除Linux系统多余的用户
net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_keepalive_time = 600 net.ipv4.ip_local_port_range = 4000 65000 net.ipv4.tcp_max_syn_backlog = 16384 net.ipv4.tcp_max_tw_buckets = 36000 net.ipv4.route.gc_timeout = 100 net.ipv4.tcp_syn_retries = 1 net.ipv4.tcp_synack_retries = 1 net.core.somaxconn = 16384 net.core.netdev_max_backlog = 16384 net.ipv4.tcp_max_orphans = 16384 #以下参数是对iptables防火墙的优化,防火墙未启动会有报错提示,可以忽略不理: net.nf_conntrack_max = 25000000 net.netfilter.nf_conntrack_max = 25000000 net.netfilter.nf_conntrack_tcp_timeout_established = 180 net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120 net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60 net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120
# 使编辑生效 # sysctl -p
关键文件 有:/etc/passwd、/etc/group、/etc/inittab、/etc/shadow、/etc/gshadow # chattr +i /etc/passwd # 查看文件属性,有i的是加过锁的文件 # lsattr /etc/passwd ----i--------e- /etc/passwd
# 锁定系统文件: # chattr 修改文件属性,给文件加锁 # +i:锁定 # -i:解除锁定 # =:覆盖之前的,加上这个新的。 # /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab # lsattr # 查询文件是否加锁
可以将系统中/etc/passwd文件中的mail、game、at、bin等这些用户后一列修改 为/bin/false或者/sbin/nologin,禁止这些用户登录系统。
1.2.12 禁止Linux系统被外界ping
浙公网安备 33010602011771号