centos 系统初始配置优化

  1. 初始化常用环境变量

    1 # vi .bashrc
    2 alias  worksrc='cd /usr/local/src;ls'
    3 配置生效
    4 # source .bashrc
  2. yum预装常用的服务器软件

    01 #vim  linux编辑器
    02 #wget 网络自动下载文件的工具,支持通过HTTP、HTTPS、FTP三个最常见的TCP/IP协议下载
    03 #crontab  cron是一个常驻服务,它提供计时器的功能,让用户在特定的时间得以执行预设的指令或程序。只要用户会编辑计时器的配置文件,就可以使 用计时器的功能
    04 #mlocate 基于数据库快速查找文件,经常用updatedb命令更新数据库
    05 #ntp 时间同步服务组件
    06 #SecureCRT的sz/rz工具包
    07 yum -y install vim wget gcc make crontabs mlocate ntp lrzsz gcc-c++ autoconf;
    08 #
    09 #sysstat:是一个软件包,包含监测系统性能及效率的一组工具,这些工具对于我们收集系统性能数据,比如CPU使用率、硬盘和网络吞吐数据,这些数据的收集和分析,有利于我们判断系统是否正常运行,是提高系统运行效率、安全运行服务器的得力助手
    10 #dstat:用来替换 vmstat,iostat,netstat,nfsstat和ifstat这些命令的工具是一个全能彩色系统信息统计工具
    11 #screen:类似nohup,能同时连接多个本地或远程的命令行会话,并在其间自由切换,适合远程管理终端长时间远程跑的程序
    12 yum -y install sysstat dstat screen ;
    13 #
    14 #top是linux下常用的监控程序,htop相当于其加强版,颜色显示不同参数,且支持鼠标操作
    15 #安装支持组件
    16 wget http://ftp.gnu.org/pub/gnu/ncurses/ncurses-5.9.tar.gz
    17 tar xvfz ncurses-5.9.tar.gz
    18 cd ncurses-5.9
    19 ./configure
    20 make
    21 make install
    22 #安装htop: 主页http://sourceforge.net/projects/htop/files/htop/
    23 wget http://sourceforge.net/projects/htop/files/htop/1.0.2/htop-1.0.2.tar.gz/download
    24 tar zxvf htop-1.0.2.tar.gz
    25 cd htop-1.0.2
    26 ./configure
    27 make
    28 make install
  3. 时间和时区设置

    查看当前时区时间

    1 date -R

    每隔10分钟同步一下时钟

    1 echo " */10 * * * * /usr/sbin/ntpdate 61.129.42.44 >> /home/ntp.log" >> /var/spool/cron/root
    2 service crond restart
    3 /usr/sbin/ntpdate 61.129.42.44

    替换默认时区为上海

    1 rm -rf /etc/localtime       #删除当前默认时区
    2 ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime #复制替换默认时区为上海
  4. 防火墙配置脚本

    iptables.rule:设定最基本的规则,包括清除防火墙规则、载入模組、设定服务可接受等;
    iptables.deny:设定抵挡某些惡意主机的进入;
    iptables.allow:设定允许某些自訂的后門來源主机!

    001 [root@www ~]# mkdir -p /usr/local/iptables
    002 [root@www ~]# cd /usr/local/iptables
    003 [root@www iptables]# vim iptables.rule
    004 #!/bin/bash
    005 # 请先輸入您的相关参數,不要輸入错误了!
    006   EXTIF="eth0"             # 这个是可以连上 Public IP 的网络界面
    007   INIF="eth1"              # 內部 LAN 的连接介面;若无則写成 INIF=""
    008   INNET="192.168.100.0/24" # 若无內部网络介面,请填写成 INNET=""
    009   export EXTIF INIF INNET
    010 # 第一部份,针对本机的防火墙设定!##########################################
    011 # 1. 先设定好核心的网路功能:
    012   echo "1" > /proc/sys/net/ipv4/tcp_syncookies #开启 TCP Flooding的DoS攻击抵挡机制,但这个设定不适合loading已经很高的主机
    013   echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts #取消 ping 广播的回应
    014   #开启逆向路径过滤,以符合 IP 封包与网路介面的设定,开启记录有问题的封包
    015   for i in /proc/sys/net/ipv4/conf/*/{rp_filter,log_martians}; do
    016         echo "1" > $i
    017   done
    018   #取消来源路由,这个设定值是可以取消的;取消重新宣告路径的功能;取消传送重新宣告路径的功能
    019   for i in /proc/sys/net/ipv4/conf/*/{accept_source_route,accept_redirects,\
    020 send_redirects}; do
    021         echo "0" > $i
    022   done
    023 # 2. 清除规则、设定預设政策及开放 lo 与相关的设定值
    024   PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/sbin:/usr/local/bin; export PATH
    025   #清除已有规则
    026   iptables -F
    027   iptables -X
    028   iptables -Z
    029   #设置默认策略
    030   iptables -P INPUT   DROP
    031   iptables -P OUTPUT  ACCEPT
    032   iptables -P FORWARD ACCEPT
    033   #开放lo
    034   iptables -A INPUT -i lo -j ACCEPT
    035   #只要是联机成功的数据包或与已发出去请求相关的数据包就予以通过
    036   iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
    037 # 3. 启动额外的防火墙 script 模組
    038   if [ -f /usr/local/iptables/iptables.deny ]; then
    039         sh /usr/local/iptables/iptables.deny
    040   fi
    041   if [ -f /usr/local/iptables/iptables.allow ]; then
    042         sh /usr/local/iptables/iptables.allow
    043   fi
    044   if [ -f /usr/local/httpd-err/iptables.http ]; then
    045         sh /usr/local/httpd-err/iptables.http
    046   fi
    047 # 4. 允许某些类型的 ICMP 封包进入,通常我们会把ICMP type 8拿掉,让远程主机不知道主机是否存在,也不会对ping回应
    048   AICMP="0 3 3/4 4 11 12 14 16 18"
    049   for tyicmp in $AICMP
    050   do
    051     iptables -A INPUT -i $EXTIF -p icmp --icmp-type $tyicmp -j ACCEPT
    052   done
    053 # 5. 允许某些服务的进入,请依照你自己的环境开启
    054 iptables -A INPUT -p TCP -i $EXTIF --dport  22 --sport 1024:65534 -j ACCEPT # SSH
    055 iptables -A INPUT -p TCP -i $EXTIF --dport  80 --sport 1024:65534 -j ACCEPT # WWW
    056 # iptables -A INPUT -p TCP -i $EXTIF --dport  21 --sport 1024:65534 -j ACCEPT # FTP
    057 # iptables -A INPUT -p TCP -i $EXTIF --dport  25 --sport 1024:65534 -j ACCEPT # SMTP
    058 # iptables -A INPUT -p UDP -i $EXTIF --dport  53 --sport 1024:65534 -j ACCEPT # DNS
    059 # iptables -A INPUT -p TCP -i $EXTIF --dport  53 --sport 1024:65534 -j ACCEPT # DNS
    060 # iptables -A INPUT -p TCP -i $EXTIF --dport 110 --sport 1024:65534 -j ACCEPT # POP3
    061 # iptables -A INPUT -p TCP -i $EXTIF --dport 443 --sport 1024:65534 -j ACCEPT # HTTPS
    062 # 第二部份,针对后端主机的防火墙设定!###############################
    063 # 1. 先载入一些有用的模組
    064   modules="ip_tables iptable_nat ip_nat_ftp ip_nat_irc ip_conntrack
    065 ip_conntrack_ftp ip_conntrack_irc"
    066   for mod in $modules
    067   do
    068       testmod=`lsmod | grep "^${mod} " | awk '{print $1}'`
    069       if [ "$testmod" == "" ]; then
    070             modprobe $mod
    071       fi
    072   done
    073 # 2. 清除 NAT table 的规则吧!
    074   iptables -F -t nat
    075   iptables -X -t nat
    076   iptables -Z -t nat
    077   iptables -t nat -P PREROUTING  ACCEPT
    078   iptables -t nat -P POSTROUTING ACCEPT
    079   iptables -t nat -P OUTPUT      ACCEPT
    080 # 3. 若有內部介面的存在 (雙网卡) 开放成為路由器,且為 IP 分享器!
    081   if [ "$INIF" != "" ]; then
    082     iptables -A INPUT -i $INIF -j ACCEPT
    083     echo "1" > /proc/sys/net/ipv4/ip_forward
    084     if [ "$INNET" != "" ]; then
    085         for innet in $INNET
    086         do
    087             iptables -t nat -A POSTROUTING -s $innet -o $EXTIF -j MASQUERADE
    088         done
    089     fi
    090   fi
    091   # 如果你的 MSN 一直无法连线,或者是某些网站 OK 某些网站不 OK,
    092   # 可能是 MTU 的问题,那你可以将底下這一行給他取消註解來启动 MTU 限制范围
    093   # iptables -A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss \
    094   #          --mss 1400:1536 -j TCPMSS --clamp-mss-to-pmtu
    095 # 4. NAT 伺服器后端的 LAN 內对外之伺服器设定
    096 # iptables -t nat -A PREROUTING -p tcp -i $EXTIF --dport 80 \
    097 #          -j DNAT --to-destination 192.168.1.210:80 # WWW
    098 # 5. 特殊的功能,包括 Windows 遠端桌面所产生的规则,假设桌面主机為 1.2.3.4
    099 # iptables -t nat -A PREROUTING -p tcp -s 1.2.3.4  --dport 6000 \
    100 #          -j DNAT --to-destination 192.168.100.10
    101 # iptables -t nat -A PREROUTING -p tcp -s 1.2.3.4  --sport 3389 \
    102 #          -j DNAT --to-destination 192.168.100.20
    103 # 6. 最终将這些功能儲存下來吧!
    104   /etc/init.d/iptables save

    iptables.allow脚本设置

    1 [root@www iptables]# vim iptables.allow
    2 #!/bin/bash
    3 # 允许进入本机的其他网络或主机啊!
    4   iptables -A INPUT -i $EXTIF -s 140.116.44.0/24 -j ACCEPT

    iptables.deny脚本设置

    1 [root@www iptables]# vim iptables.deny
    2 #!/bin/bash
    3 # 阻挡的主机ip或者主机所在的整个网段
    4   iptables -A INPUT -i $EXTIF -s 140.116.44.254 -j DROP

    脚本权限设置

    1 [root@www iptables]# chmod 700 iptables.*

    开机启动

    1 [root@www ~]# vim /etc/rc.d/rc.local
    2 # 1. Firewall
    3 /usr/local/iptables/iptables.rule
  5. 优化内核参数

    优化内核具体要看此服务器安装的软件,实现的功能,参数不是一成不变的,要随着改变

    view source
    01 mv /etc/sysctl.conf /etc/sysctl.conf.`date +"%Y-%m-%d_%H-%M-%S"`
    02 echo "net.ipv4.ip_forward = 0
    03 net.ipv4.conf.default.rp_filter = 1
    04 net.ipv4.conf.default.accept_source_route = 0
    05 net.ipv6.conf.all.disable_ipv6 = 1
    06 net.ipv6.conf.default.disable_ipv6 = 1
    07 kernel.sysrq = 0
    08 kernel.core_uses_pid = 1
    09 net.ipv4.tcp_syncookies = 1
    10 kernel.msgmnb = 65536
    11 kernel.msgmax = 65536
    12 kernel.shmmax = 68719476736
    13 kernel.shmall = 4294967296
    14 net.ipv4.tcp_max_tw_buckets = 6000
    15 net.ipv4.tcp_sack = 1
    16 net.ipv4.tcp_window_scaling = 0
    17 net.ipv4.tcp_rmem = 4096 87380 16777216
    18 net.ipv4.tcp_wmem = 4096 16384 16777216
    19 net.core.wmem_default = 8388608
    20 net.core.rmem_default = 8388608
    21 net.core.rmem_max = 16777216
    22 net.core.wmem_max = 16777216
    23 net.core.netdev_max_backlog = 262144
    24 net.core.somaxconn = 262144
    25 net.ipv4.tcp_max_orphans = 3276800
    26 net.ipv4.tcp_max_syn_backlog = 262144
    27 net.ipv4.tcp_timestamps = 0
    28 net.ipv4.tcp_synack_retries = 1
    29 net.ipv4.tcp_syn_retries = 1
    30 net.ipv4.tcp_tw_recycle = 1
    31 net.ipv4.tcp_tw_reuse = 1
    32 net.ipv4.tcp_mem = 94500000 915000000 927000000
    33 net.ipv4.tcp_fin_timeout = 15
    34 net.ipv4.tcp_keepalive_time = 30
    35 vm.swappiness = 10" >> /etc/sysctl.conf
    36 sysctl -p

总结:经过上面一系列的配置,服务器初始化大部分完成,尤其注意防火墙设置,一旦处理不好,就有可能把自己关在门外!

你可能感兴趣的:(centos 系统初始配置优化)