系统优化
鎖定系統中多余的自建帳號
檢查方法:
執行命令
#cat /etc/passwd
#cat /etc/shadow
查看賬戶、口令文件,與系統管理員確認不必要的賬號。對于一些保留的系統偽帳戶如:bin, sys,adm,uucp,lp, nuucp,hpdb, www, daemon等可根據需要鎖定登陸。
備份方法:
#cp -p /etc/passwd /etc/passwd_bak
#cp -p /etc/shadow /etc/shadow_bak
加固方法:
使用命令passwd -l <用戶名>鎖定不必要的賬號。
使用命令passwd -u <用戶名>解鎖需要恢復的賬號。
風險:
需要與管理員確認此項操作不會影響到業務系統的登錄
設置系統口令策略
檢查方法:
使用命令
#cat /etc/login.defs|grep PASS查看密碼策略設置
備份方法:
cp -p /etc/login.defs /etc/login.defs_bak
加固方法:
#vi /etc/login.defs修改配置文件
PASS_MAX_DAYS 90 #新建用戶的密碼最長使用天數
PASS_MIN_DAYS 0 #新建用戶的密碼最短使用天數
PASS_WARN_AGE 7 #新建用戶的密碼到期提前提醒天數
PASS_MIN_LEN 8 #最小密碼長度9
注:如果需要單獨對某個用戶密碼不限制最長時間,使用命令
passwd –x 99999 用戶名;或者passwd –x -1 用戶名
風險:無可見風險
禁用root之外的超級用戶
檢查方法:
#cat /etc/passwd 查看口令文件,口令文件格式如下:
login_name:password:user_ID:group_ID:comment:home_dir:command
login_name:用戶名
password:加密后的用戶密碼
user_ID:用戶ID,(1 ~ 6000) 若用戶ID=0,則該用戶擁有超級用戶的權限。查看此處是否有多個ID=0。
group_ID:用戶組ID
comment:用戶全名或其它注釋信息
home_dir:用戶根目錄
command:用戶登錄后的執行命令
備份方法:
#cp -p /etc/passwd /etc/passwd_bak
加固方法:
使用命令passwd -l <用戶名>鎖定不必要的超級賬戶。
使用命令passwd -u <用戶名>解鎖需要恢復的超級賬戶。
風險:需要與管理員確認此超級用戶的用途。
檢查shadow中空口令帳號
檢查方法:
# awk -F: '($2 == "") { print $1 }' /etc/shadow
備份方法:cp -p /etc/shadow /etc/shadow_bak
加固方法:對空口令賬號進行鎖定(passwd –l 用戶名),或要求增加密碼.
clip_image001
注:當新增加賬號還沒有設置密碼的時候,該賬號默認為鎖定狀態。
clip_image001
風險:要確認空口令賬戶是否和應用關聯,增加密碼是否會引起應用無法連接。
設置合理的初始文件權限
檢查方法:
#cat /etc/profile 查看umask的值
備份方法:
#cp -p /etc/profile /etc/profile_bak
加固方法:
#vi /etc/profile
umask 022
風險:會修改新建文件的默認權限為(644),如果該服務器是WEB應用,則此項謹慎修改。
設置訪問控制策略限制能夠管理本機的IP地址
檢查方法:
#cat /etc/ssh/sshd_config 查看有無AllowUsers的語句
備份方法:
#cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config_bak
加固方法:
#vi /etc/ssh/sshd_config,添加以下語句
AllowUsers *@10.138.*.* 此句意為:僅允許10.138.0.0/16網段所有用戶通過ssh訪問
保存后重啟ssh服務
#service sshd restart
風險:需要和管理員確認能夠管理的IP段
禁止root用戶遠程登陸
檢查方法:
#cat /etc/ssh/sshd_config 查看PermitRootLogin是否為no
備份方法:
#cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config_bak
加固方法:
#vi /etc/ssh/sshd_config
PermitRootLogin no
保存后重啟ssh服務
service sshd restart
clip_image002
clip_image002
風險:root用戶無法直接遠程登錄,需要用普通賬號登陸后su
限定信任主機
檢查方法:
#cat /etc/hosts.equiv 查看其中的主機
#cat /$HOME/.rhosts 查看其中的主機
備份方法:
#cp -p /etc/hosts.equiv /etc/hosts.equiv_bak
#cp -p /$HOME/.rhosts /$HOME/.rhosts_bak
加固方法:
#vi /etc/hosts.equiv? 刪除其中不必要的主機
#vi /$HOME/.rhosts? 刪除其中不必要的主機
風險:在多機互備的環境中,需要保留其他主機的IP可信任。
屏蔽登錄banner信息
檢查方法:
#cat /etc/ssh/sshd_config 查看文件中是否存在Banner字段,或banner字段為NONE
#cat /etc/motd 查看文件內容,該處內容將作為banner信息顯示給登錄用戶。
備份方法:
#cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config_bak
#cp -p /etc/motd /etc/motd_bak
加固方法:
#vi /etc/ssh/sshd_config
banner NONE
#vi /etc/motd
刪除全部內容或更新成自己想要添加的內容
風險:無可見風險
防止誤使用Ctrl+Alt+Del重啟系統
檢查方法:
#cat /etc/inittab|grep ctrlaltdel 查看輸入行是否被注釋
備份方法:
#cp -p /etc/inittab /etc/inittab_bak
加固方法:
#vi /etc/inittab
在行開頭添加注釋符號“#”
#ca::ctrlaltdel:/sbin/shutdown -t3 -r now
clip_image003
clip_image003
風險:無可見風險
禁止ping命令
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all ##注:如果是0的話是允許ping的。
還有另外一種方法:
修改/etc/sysconfig/iptables文件:
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j DROP
修改帳戶TMOUT值,設置自動注銷時間
檢查方法:
#cat /etc/profile 查看有無TMOUT的設置
備份方法:
#cp -p /etc/profile /etc/profile_bak
加固方法:
#vi /etc/profile
增加
TMOUT=600 無操作600秒后自動退出
風險:無可見風險
設置Bash保留歷史命令的條數
檢查方法:
#cat /etc/profile|grep HISTSIZE=
#cat /etc/profile|grep HISTFILESIZE= 查看保留歷史命令的條數
備份方法:
#cp -p /etc/profile /etc/profile_bak
加固方法:
#vi /etc/profile
修改HISTSIZE=20即保留最新執行的20條命令
風險:無可見風險
自用優化腳本
#!/bin/bash ################################################ # Author: xf # Date: 2018-01-19 # Version: 1.0 # Use: 配置本地yum源 ################################################ yum_path=/etc/yum.repos.d cd $yum_path n=$(find -maxdepth 1 -name 'CentOS*' | wc -l) if [ $n -gt 0 ]; thenif [ -d bak ];thenecho -e "\033[1;31mDirectory "bak" already exist.\033[0m"/bin/mv -i CentOS* bak/if [ -f media.repo ];thenecho -e "\033[1;31mFile "media.repo" already exist.\033[0m"> media.repocat >> media.repo << EOF [cdrom] name=local_cdrom baseurl=file:///media/cdrom enabled=1 gpgcheck=0 EOFelse/bin/touch media.repoecho -e "\033[1;31mFile "media.repo" creating!\033[0m"cat >> media.repo << EOF [cdrom] name=local_cdrom baseurl=file:///media/cdrom enabled=1 gpgcheck=0 EOFfielse/bin/mkdir bak/bin/mv -i CentOS* bak/echo -e "\033[1;31mDirectory "bak" creating!\033[0m"if [ -f media.repo ];thenecho -e "\033[1;31mFile "media.repo" already exist.\033[0m"> media.repocat >> media.repo << EOF [cdrom] name=local_cdrom baseurl=file:///media/cdrom enabled=1 gpgcheck=0 EOFelse/bin/touch media.repoecho -e "\033[1;31mFile "media.repo" creating!\033[0m"cat >> media.repo << EOF [cdrom] name=local_cdrom baseurl=file:///media/cdrom enabled=1 gpgcheck=0 EOFfifi elseif [ -f media.repo ];thenecho -e "\033[1;31mFile "media.repo" already exist.\033[0m"> media.repocat >> media.repo << EOF [cdrom] name=local_cdrom baseurl=file:///media/cdrom enabled=1 gpgcheck=0 EOFelse/bin/touch media.repoecho -e "\033[1;31mFile "media.repo" creating!\033[0m"cat >> media.repo << EOF [cdrom] name=local_cdrom baseurl=file:///media/cdrom enabled=1 gpgcheck=0 EOFfi fi if [ -d /media/cdrom ]; thenecho -e "\033[1;31mDirectory "/media/cdrom" already exist.!\033[0m"/bin/mount /dev/cdrom /media/cdrom else/bin/mkdir -p /media/cdromecho -e "\033[1;31mDirectory "/meida/cdrom" creating!\033[0m"/bin/mount /dev/cdrom /media/cdrom fi echo -e "\033[1;31mDone!\033[0m" 配置本地yum源 #!/bin/bash ################################################ # Author: xf # Date: 2018-01-19 # Version: 1.0 # Use: 配置國內yum源和epel源 ################################################ cd /etc/yum.repos.d/ echo -e "\033[1;32mTest network connectivity..\033[0m" /bin/ping -c 3 mirrors.aliyun.com if [ $? -eq 0 ];thenecho -e "\033[1;32mWget mirrors!\033[0m"/usr/bin/wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo elseecho -e "\033[1;31mError!Please check the network.\033[0m" exit $? fisleep 2echo -e "\033[1;32mDownload EPEL!\033[0m" /usr/bin/wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm > /dev/null 2>&1 rpm -ivh epel-release-6-8.noarch.rpmecho -e "\033[1;32mYum cache!\033[0m" yum clean all yum makecache 國內yum源和epel源 #!/bin/bash ################################################ # Author: xf # Date: 2018-01-19 # Version: 1.0 # Use: 優化開機啟動項,安裝常用軟件 ################################################ echo -e "\033[1;32mInstall Tools...\033[0m" yum install -y vim tree nmap sysstat ntpdate lrzsz dos2unix wget > /dev/null 2>&1 rpm -qa vim tree nmap sysstat ntpdate lrzsz dos2unix wget sleep 2 echo -e "\033[1;32mClose the all self-initiated program..\033[0m" for i in `chkconfig --list | grep 3:on |awk '{print$1}'`; dochkconfig --level 3 $i off done sleep 2 echo -e "\033[1;32mBoot up program...\033[0m" for i in crond sysstat rsyslog network sshd; dochkconfig --level 3 $i onecho -e "The \033[1;32m$i\033[0m boot up!" done 安裝常用軟件,優化開機啟動項 #!/bin/bash ################################################ # Author: xf # Date: 2018-01-19 # Version: 1.0 # Use: stty erase ^H ################################################ \cp /root/.bash_profile /root/.bash_profile_$(date +%F) erase=`grep -wx "stty erase ^H" /root/.bash_profile |wc -l` if [ $erase -lt 1 ];thenecho "stty erase ^H" >>/root/.bash_profileecho "stty erase ^?" >>/root/.bash_profilesource /root/.bash_profile fi 禁用'Backspace'鍵顯示'^#,^? #!/bin/bash ################################################ # Author: xf # Date: 2018-01-19 # Version: 1.0 # Use: forbidden selinux and iptables ################################################\cp /etc/selinux/config /etc/selinux/config.$(date +%F) sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config setenforce 0 a=$(/usr/sbin/getenforce) echo -e "SElinux status: \033[1;32m$a!\033[0m"sleep 2 /etc/init.d/iptables stop /sbin/chkconfig iptables off /sbin/iptables -F /etc/init.d/iptables status 禁用selinux和iptables #!/bin/bash ################################################ # Author: xf # Date: 2018-01-19 # Version: 1.0 # Use: ssh seo! ################################################\cp /etc/ssh/sshd_config /etc/ssh/sshd_config".bak" echo -e "\033[1;32mSSH port 2201\033[0m" sed -i 's/#Port 22/Port 2201/g' /etc/ssh/sshd_configecho -e "\033[1;32mNo root login.\033[0m" # sed -i 's/#PermitRootLogin yes/PermitRootLogin no/g' /etc/ssh/sshd_configecho -e "\033[1;32mNo empty passwords.\033[0m" sed -i 's/#PermitEmptyPasswords no/PermitEmptyPasswords no/g' /etc/ssh/sshd_configecho -e "\033[1;32mNo UseDNS.\033[0m" sed -i 's/#UseDNS yes/UseDNS no/g' /etc/ssh/sshd_configecho -e "\033[1;32mNo GSSAPI authentication.\033[0m" sed -i 's/^GSSAPIAuthentication yes$/GSSAPIAuthentication no/' /etc/ssh/sshd_configsleep 2 service sshd restart 優化ssh #!/bin/bash ################################################ # Author: xf # Date: 2018-01-19 # Version: 1.0 # Use: Time async ################################################ timeServer=ntp1.aliyun.com\cp /var/spool/cron/root /var/spool/cron/root.$(date +%F) 2>/dev/null NTPDATE=$(grep ntpdate /var/spool/cron/root 2> /dev/null | wc -l) if [ $NTPDATE -eq 0 ];then/usr/sbin/ntpdate $timeServerecho "*/10 * * * * /usr/sbin/ntpdate $timeServer > /dev/null 2>&1" >> /var/spool/cron/root fi echo -e "The crontab job:\n\033[1;32m$(crontab -l)\033[0m" echo -e "The latest time: \033[1;32m$(date +"%Y-%m-%d %H:%M.%S")\033[0m" 設置時間同步 #!/bin/bash ################################################ # Author: xf # Date: 2018-01-19 # Version: 1.0 # Use: later ################################################echo -e "\033[1;32m加大文件描述符\033[0m" LIMIT=`grep nofile /etc/security/limits.conf | grep -v "^#"| wc -l` if [ $LIMIT -eq 0 ];then\cp /etc/security/limits.conf /etc/security/limits.conf.$(date +%F)echo '* - nofile 65535' >> /etc/security/limits.conf fi ulimit -HSn 65535 echo -e "\033[1;32m當前文件描述符大小:$(ulimit -n)\033[0m"sleep 2echo -e "\033[1;32m去除登錄屏幕顯示系統信息\033[0m" user_id=$(id | cut -d '(' -f1 | cut -d '=' -f2) if [ $user_id -ne 0 ];thenecho -e "This script must use the \033[1;32mroot\033[0m user." sleep 2exit 0 fi \cp /etc/redhat-release /etc/redhat-release.$(date +%F) \cp /etc/issue /etc/issue.$(date +%F) >/etc/redhat-release >/etc/issuesleep 2echo -e "\033[1;32m禁用ctrl+alt+delete功能鍵\033[0m" sed -i 's#exec /sbin/shutdown -r now#\#exec /sbin/shutdown -r now#' /etc/init/control-alt-delete.confsleep 2echo -e "\033[1;32m優化內核參數\033[0m" SYSCTL=`grep "net.ipv4.tcp" /etc/sysctl.conf |wc -l` if [ $SYSCTL -lt 10 ];then\cp /etc/sysctl.conf /etc/sysctl.conf.$(date +%F)cat >> /etc/sysctl.conf << EOF 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 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 EOF fi\cp /etc/rc.local /etc/rc.local.$(date +%F) /sbin/modprobe nf_conntrack echo "modprobe nf_conntrack" >> /etc/rc.local modprobe bridge echo "modprobe bridge" >> /etc/rc.local echo -e "\033[1;32m$(sysctl -p)\033[0m"sleep 2echo -e "\033[1;32m設置默認歷史記錄數和連接超時時間\033[0m" echo "TMOUT=3600" >> /etc/profile echo "HISTSIZE=100" >> /etc/profile echo "HISTFILESIZE=50" >> /etc/profile echo "HISTCONTROL=ignorespace" >> /etc/profile source /etc/profile echo -e "\033[1;32m$(tail -5 /etc/profile)\033[0m"echo -e "\033[1;32m設置系統默認語言\033[0m" # \cp /etc/sysconfig/i18n /etc/sysconfig/i18n.bak # sed -i 's#LANG="en_US.UTF-8"#LANG="zh_CN.UTF-8#' /etc/sysconfig/i18n # source /etc/sysconfig/i18n # echo $LANGsleep 2 系統基本優化?
轉載于:https://www.cnblogs.com/xiaofeiweb/p/9009412.html
總結
- 上一篇: RabbitMQ —— 延迟队列
- 下一篇: 【HDOJ图论题集】【转】