安装Linux系统后调优及安全设置

1.关闭SElinux 清空iptables

# sed –i ‘s/SELINUX=enforcing/SELINUX=disabled/g’ /etc/selinux/config

# setenforce 0

# getenforce


# iptables –F 警告:这只适合在没有配置防火墙的环境中,如果已经配置过默认规则为deny的环境,此步骤将使系统的所有网络访问中断

# iptables -P INPUT ACCEPT

# iptables –F

# iptables –L

# service iptables save


2.设定运行级别为3

# runlevel

# grep 3:initdefault /etc/inittab


3.精简开机系统自启动服务

刚装完操作系统可以只保留crond,network,rsyslog,sshd,sysstat这五个服务

第一种处理方法:

# for i in `chkconfig --list | grep 3:on |awk '{print $1}'`;do chkconfig --level 3 $i off;done 

# for i in crond network rsyslog sshd sysstat ;do chkconfig --level 3 $i on;done

第二种处理方法:

# for i in `chkconfig --list | grep 3:on |grep -vE "(crond|network|rsyslog|sshd|sysstat)"|awk '{print $1}' `;do chkconfig --level 3 $i off;done

第三种处理方法:

# chkconfig --list |grep 3:on |grep -vE "(crond|network|rsyslog|sshd|sysstat)" | awk '{print "chkconfig --level 3 " $1 " off"}'|bash

第四种处理方法:

# chkconfig --list |grep 3:on |grep -vE "(crond|network|rsyslog|sshd|sysstat)" | awk '{print $1}'|sed -r "s/(.*)/chkconfig --level 3 \1 off/g" |bash

4.关闭iptables防火墙

# /etc/init.d/iptables stop

# chkconfig iptables off


5.Linux系统安全最小原则说明

安装linux系统最小化

开启自启动服务最少

操作命令最小化

登录linux用户最少

普通用户权限最小

linux系统目录及文件权限最小


6.更改ssh服务端远程登录的配置

# cp /etc/ssh/sshd_config /etc/ssh/sshd_config_`date +%F`.bak

vim /etc/ssh/sshd_config

Protocol 2

Port 2222

ListenAddress 192.168.1.1

PermitRootLogin no

PermitEmptyPasswords no

UseDNS no

GSSAPIAuthentication no   #加速ssh远程连接

# /etc/init.d/sshd reload

# /etc/init.d/sshd restart

# iptables -I INPUT -p tcp --dport 2222 -s 192.168.1.0/24 -j ACCEPT

7.普通用户并进行sudo授权管理

# useradd sunsky

# echo "123456"|passwd --stdin sunsky && history –c

# visudo

在root    ALL=(ALL)    ALL此行下,添加如下内容

sunsky    ALL=(ALL)   NOPASSWD: ALL

8.调整字符集,使其支持中文

# cp /etc/sysconfig/i18n /etc/sysconfig/i18n_`date +%F`.bak

# vim /etc/sysconfig/i18n

LANG=zh_CN.UTF-8  

# source /etc/sysconfig/i18n

9.设置时间同步

# yum -y install ntpdate

# /usr/sbin/ntpdate 114.112.91.219

# crontab -l

*/5 * * * * /usr/sbin/ntpdate 114.112.91.219 >/dev/null 2>&1


10.历史命令记录数和及登录超时设置

# vim /etc/profile

export HISTSIZE=1000

export TMOUT = 300

export HISTFILESIZE=1000


11.调整linux系统文件描述符数量

方法一:

# ulimit -n

# echo '*  -  nofile  65535' >> /etc/security/limits.conf

方法二:

#cat >>/etc/rc.local<<EOF

#open files

ulimit -HSn 65535

#stack size

ulimit -s 65535

EOF


12.内核参数优化

说明:本优化适合apache,nginx,squid多种等web应用,特殊的业务也可能需要略作调整。

#vim  /etc/sysctl.conf

net.ipv4.tcp_fin_timeout = 2

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    #使配置文件生效


在此优化过程中可能会有报错,解决办法有二,一是开启防火墙,二是自动处理载入的模块

modprobe nf_conntrack

echo "modprobe nf_conntrack">> /etc/rc.local

modprobe bridge

echo "modprobe bridge">> /etc/rc.local



13.定时清理邮件服务临时目录垃圾文件

# find /var/spool/postfix/maildrop/ -type f -mtime +15|xargs rm -f

#可写入crontab


14.隐藏linux版本信息

# > /etc/issue 

# > /etc/issue.net

15.锁定关键系统文件,防止被提权篡改

# chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab 

# lsattr  /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab 

# chattr -i /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab  


16.清除多余的系统虚拟帐号

根据系统提供的服务确定那些账号不需要,这些用户本身无法登录系统,因此此项优化不是必须的。

# usermod -s /sbin/nologin mysql

17.为grub菜单加密码

先要用命令 grub-md5-crypt计算出密码的MD5的值

# grub-md5-crypt

复制这个值到grub.conf文件中 password --md5 密码的MD5的值

# vim /boot/grub/grub.conf 

splashp_w_picpath=(hd0,0)/grub/splash.xpm.gz

hiddenmenu

password --md5 $1$Cz6vj$66uIYB1Sw9WI9pYkI2EQS/

title CentOS (2.6.32-431.el6.x86_64)


18.禁止主机被ping

# iptables -I INPUT -p icmp --icmp-type 8 -i eth0 -j DROP

# iptables -D INPUT 1

# iptables -R  INPUT 2  -p icmp --icmp-type 8 -i eth0 -s 192.168.1.213 -j ACCEPT


19.升级具有典型漏洞的软件

# rpm -qa openssh openssl bash

# yum -y install epel-release.noarch

# yum install  openssh openssl bash


20.修改ip地址、网关、主机名、DNS等(可选)

# vim  /etc/sysconfig/network-scripts/ifcfg-eth0

ONBOOT=yes

NM_CONTROLLED=no

BOOTPROTO=none

IPADDR=192.168.1.1

NETMASK=255.255.255.0

GATEWAY=192.168.1.254

# vim /etc/sysconfig/network

HOSTNAME=XXXX

# hostname XXXX


# vim /etc/resolv.conf

nameserver 114.114.114.114

nameserver 8.8.8.8


# service network restart