saltsack自动化配置day03:系统初始化实现
零.目录结构
[root@saltstack init]# tree . ├── dns.sls ├── files │ ├── epel-7.repo │ ├── limits.conf │ ├── resolv.conf │ ├── selinux-config │ └── sshd_config ├── firewall.sls ├── history.sls ├── init-all.sls ├── limit.sls ├── ntp-client.sls ├── pkg-base.sls ├── pkg-init.sls ├── selinux.sls ├── ssh.sls ├── sysctl.sls ├── thin.sls ├── tty-style.sls ├── tty-timeout.sls ├── user-www.sls └── yum-repo.sls
一、 关闭SELinux
1、selinux.sls
[root@saltstack init]# cat selinux.sls close_selinux: file.managed: - name: /etc/selinux/config - source: salt://init/files/selinux-config - user: root - group: root - mode: 0644 cmd.run: - name: setenforce 0 || echo ok
2、selinux-config
[root@saltstack files]# cat selinux-config # This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=disabled # SELINUXTYPE= can take one of three two values: # targeted - Targeted processes are protected, # minimum - Modification of targeted policy. Only selected processes are protected. # mls - Multi Level Security protection. SELINUXTYPE=targeted
二、 关闭默认iptables
[root@saltstack init]# cat firewall.sls firewalld-stop: service.dead: - name: firewalld.service - enable: False
三、时间同步(配置ntp)
[root@saltstack init]# cat ntp-client.sls install-ntpdate: pkg.installed: - name: ntpdate cron-ntpdate: cron.present: - name: ntpdate tiger.sina.com.cn - user: root - minute: '*/3'
四、文件描述符(必备 /etc/security/limits.conf)
1、limit.sls
[root@saltstack init]# cat limit.sls limits-config: file.managed: - name: /etc/security/limits.conf - source: salt://init/files/limits.conf - user: root - group: root - mode: 644
2、limits.conf
1 [root@saltstack init]# cat files/limits.conf 2 # /etc/security/limits.conf 3 # 4 #This file sets the resource limits for the users logged in via PAM. 5 #It does not affect resource limits of the system services. 6 # 7 #Also note that configuration files in /etc/security/limits.d directory, 8 #which are read in alphabetical order, override the settings in this 9 #file in case the domain is the same or more specific. 10 #That means for example that setting a limit for wildcard domain here 11 #can be overriden with a wildcard setting in a config file in the 12 #subdirectory, but a user specific setting here can be overriden only 13 #with a user specific setting in the subdirectory. 14 # 15 #Each line describes a limit for a user in the form: 16 # 17 #<domain> <type> <item> <value> 18 # 19 #Where: 20 #<domain> can be: 21 # - a user name 22 # - a group name, with @group syntax 23 # - the wildcard *, for default entry 24 # - the wildcard %, can be also used with %group syntax, 25 # for maxlogin limit 26 # 27 #<type> can have the two values: 28 # - "soft" for enforcing the soft limits 29 # - "hard" for enforcing hard limits 30 # 31 #<item> can be one of the following: 32 # - core - limits the core file size (KB) 33 # - data - max data size (KB) 34 # - fsize - maximum filesize (KB) 35 # - memlock - max locked-in-memory address space (KB) 36 # - nofile - max number of open file descriptors 37 # - rss - max resident set size (KB) 38 # - stack - max stack size (KB) 39 # - cpu - max CPU time (MIN) 40 # - nproc - max number of processes 41 # - as - address space limit (KB) 42 # - maxlogins - max number of logins for this user 43 # - maxsyslogins - max number of logins on the system 44 # - priority - the priority to run user process with 45 # - locks - max number of file locks the user can hold 46 # - sigpending - max number of pending signals 47 # - msgqueue - max memory used by POSIX message queues (bytes) 48 # - nice - max nice priority allowed to raise to values: [-20, 19] 49 # - rtprio - max realtime priority 50 # 51 #<domain> <type> <item> <value> 52 # 53 54 #* soft core 0 55 #* hard rss 10000 56 #@student hard nproc 20 57 #@faculty soft nproc 20 58 #@faculty hard nproc 50 59 #ftp hard nproc 0 60 #@student - maxlogins 4 61 62 # End of file
五、 内核优化(必备 tcp 内存)
[root@saltstack init]# cat sysctl.sls net.ipv4.tcp_fin_timeout: sysctl.present: - value: 2 net.ipv4.tcp_tw_reuse: sysctl.present: - value: 1 net.ipv4.tcp_tw_recycle: sysctl.present: - value: 1 net.ipv4.tcp_syncookies: sysctl.present: - value: 1 net.ipv4.tcp_keepalive_time: sysctl.present: - value: 600 net.ipv4.ip_local_port_range: sysctl.present: - value: 4000 65000 net.ipv4.tcp_max_syn_backlog: sysctl.present: - value: 16384 net.ipv4.tcp_max_tw_buckets: sysctl.present: - value: 36000 net.ipv4.route.gc_timeout: sysctl.present: - value: 100 net.ipv4.tcp_syn_retries: sysctl.present: - value: 1 net.ipv4.tcp_synack_retries: sysctl.present: - value: 1 net.core.somaxconn: sysctl.present: - value: 16384 net.core.netdev_max_backlog: sysctl.present: - value: 16384 net.ipv4.tcp_max_orphans: sysctl.present: - value: 16384 fs.file-max: sysctl.present: - value: 2000000 net.ipv4.ip_forward: sysctl.present: - value: 1
六、 SSH服务优化(关闭DNS解析,修改端口)
1、ssh.sls
[root@saltstack init]# cat ssh.sls sshd-config: file.managed: - name: /etc/ssh/sshd_config - source: salt://init/files/sshd_config - user: root - group: root - mode: 600 service.running: - name: sshd - enable: True - reload: True - watch: - file: sshd-config
2、ssh_config
1 # $OpenBSD: sshd_config,v 1.93 2014/01/10 05:59:19 djm Exp $ 2 3 # This is the sshd server system-wide configuration file. See 4 # sshd_config(5) for more information. 5 6 # This sshd was compiled with PATH=/usr/local/bin:/usr/bin 7 8 # The strategy used for options in the default sshd_config shipped with 9 # OpenSSH is to specify options with their default value where 10 # possible, but leave them commented. Uncommented options override the 11 # default value. 12 13 # If you want to change the port on a SELinux system, you have to tell 14 # SELinux about this change. 15 # semanage port -a -t ssh_port_t -p tcp #PORTNUMBER 16 # 17 Port 8022 18 #AddressFamily any 19 #ListenAddress 0.0.0.0 20 #ListenAddress :: 21 22 # The default requires explicit activation of protocol 1 23 #Protocol 2 24 25 # HostKey for protocol version 1 26 #HostKey /etc/ssh/ssh_host_key 27 # HostKeys for protocol version 2 28 HostKey /etc/ssh/ssh_host_rsa_key 29 #HostKey /etc/ssh/ssh_host_dsa_key 30 HostKey /etc/ssh/ssh_host_ecdsa_key 31 HostKey /etc/ssh/ssh_host_ed25519_key 32 33 # Lifetime and size of ephemeral version 1 server key 34 #KeyRegenerationInterval 1h 35 #ServerKeyBits 1024 36 37 # Ciphers and keying 38 #RekeyLimit default none 39 40 # Logging 41 # obsoletes QuietMode and FascistLogging 42 #SyslogFacility AUTH 43 SyslogFacility AUTHPRIV 44 #LogLevel INFO 45 46 # Authentication: 47 48 #LoginGraceTime 2m 49 #PermitRootLogin yes 50 #StrictModes yes 51 #MaxAuthTries 6 52 #MaxSessions 10 53 54 #RSAAuthentication yes 55 #PubkeyAuthentication yes 56 57 # The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2 58 # but this is overridden so installations will only check .ssh/authorized_keys 59 AuthorizedKeysFile .ssh/authorized_keys 60 61 #AuthorizedPrincipalsFile none 62 63 #AuthorizedKeysCommand none 64 #AuthorizedKeysCommandUser nobody 65 66 # For this to work you will also need host keys in /etc/ssh/ssh_known_hosts 67 #RhostsRSAAuthentication no 68 # similar for protocol version 2 69 #HostbasedAuthentication no 70 # Change to yes if you don't trust ~/.ssh/known_hosts for 71 # RhostsRSAAuthentication and HostbasedAuthentication 72 #IgnoreUserKnownHosts no 73 # Don't read the user's ~/.rhosts and ~/.shosts files 74 #IgnoreRhosts yes 75 76 # To disable tunneled clear text passwords, change to no here! 77 #PasswordAuthentication yes 78 #PermitEmptyPasswords no 79 PasswordAuthentication yes 80 81 # Change to no to disable s/key passwords 82 #ChallengeResponseAuthentication yes 83 ChallengeResponseAuthentication no 84 85 # Kerberos options 86 #KerberosAuthentication no 87 #KerberosOrLocalPasswd yes 88 #KerberosTicketCleanup yes 89 #KerberosGetAFSToken no 90 #KerberosUseKuserok yes 91 92 # GSSAPI options 93 GSSAPIAuthentication yes 94 GSSAPICleanupCredentials no 95 #GSSAPIStrictAcceptorCheck yes 96 #GSSAPIKeyExchange no 97 #GSSAPIEnablek5users no 98 99 # Set this to 'yes' to enable PAM authentication, account processing, 100 # and session processing. If this is enabled, PAM authentication will 101 # be allowed through the ChallengeResponseAuthentication and 102 # PasswordAuthentication. Depending on your PAM configuration, 103 # PAM authentication via ChallengeResponseAuthentication may bypass 104 # the setting of "PermitRootLogin without-password". 105 # If you just want the PAM account and session checks to run without 106 # PAM authentication, then enable this but set PasswordAuthentication 107 # and ChallengeResponseAuthentication to 'no'. 108 # WARNING: 'UsePAM no' is not supported in Red Hat Enterprise Linux and may cause several 109 # problems. 110 UsePAM yes 111 112 #AllowAgentForwarding yes 113 #AllowTcpForwarding yes 114 #GatewayPorts no 115 X11Forwarding yes 116 #X11DisplayOffset 10 117 #X11UseLocalhost yes 118 #PermitTTY yes 119 #PrintMotd yes 120 #PrintLastLog yes 121 #TCPKeepAlive yes 122 #UseLogin no 123 UsePrivilegeSeparation sandbox # Default for new installations. 124 #PermitUserEnvironment no 125 #Compression delayed 126 #ClientAliveInterval 0 127 #ClientAliveCountMax 3 128 #ShowPatchLevel no 129 UseDNS no 130 #PidFile /var/run/sshd.pid 131 #MaxStartups 10:30:100 132 #PermitTunnel no 133 #ChrootDirectory none 134 #VersionAddendum none 135 136 # no default banner path 137 #Banner none 138 139 # Accept locale-related environment variables 140 AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES 141 AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT 142 AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE 143 AcceptEnv XMODIFIERS 144 145 # override default of no subsystems 146 Subsystem sftp /usr/libexec/openssh/sftp-server 147 148 # Example of overriding settings on a per-user basis 149 #Match User anoncvs 150 # X11Forwarding no 151 # AllowTcpForwarding no 152 # PermitTTY no 153 # ForceCommand cvs server
七、 精简开机系统服务(只开启SSHD服务)
[root@saltstack init]# cat thin.sls postfix: service.dead: - enable: False
八、 DNS解析(必备)
1、dns.sls
[root@saltstack init]# cat dns.sls /etc/resolv.conf: file.managed: - source: salt://init/files/resolv.conf - user: root - gourp: root - mode: 644
2、resolv.conf
[root@saltstack init]# cat files/resolv.conf ; generated by /usr/sbin/dhclient-script search openstacklocal novalocal nameserver 218.30.19.40 nameserver 61.134.1.4
九、 历史记录优化histroy(记录时间,用户)
1、history.sls
[root@saltstack init]# cat history.sls histroy-init: file.append: - name: /etc/profile - text: - export HISTTIMEFORMAT="%F %T `whoami` "
十、 设置终端超时时间(安全考虑)
[root@saltstack init]# cat tty-timeout.sls tty-timeout: file.append: - name: /etc/profile - text: - export TMOUT=300
十一、 配置yum源(必备)
[root@saltstack init]# cat yum-repo.sls /etc/yum.repos.d/epel-7.repo: file.managed: - source: salt://init/files/epel-7.repo - user: root - group: root - mode: 644
十二、 安装各种agent(必备)
十三、 基础用户(应用用户 user group),用户登录提醒,sudo权限设置(必备)
[root@saltstack init]# cat user-www.sls www-user-group: group.present: - name: www - gid: 1000 user.present: - name: www - fullname: www - shell: /sbin/bash - uid: 1000 - gid: 1000
十四、常用基础命令,命令别名
1、pkg-base.sls
[root@saltstack init]# cat pkg-base.sls include: - init.yum-repo base-install: pkg.installed: - pkgs: - screen - lrzsz - tree - openssl - telnet - iftop - iotop - sysstat - wget - dos2unix - lsof - net-tools - mtr - unzip - zip - vim-enhanced - bind-utils - require: - file: /etc/yum.repos.d/epel-7.repo
2、pkg-init.sls
[root@saltstack init]# cat pkg-init.sls pkg-init: pkg.installed: - names: - gcc - gcc-c++ - glibc - openssl - openssl-devel - pcre-devel
十五、 用户登录提示、PS1的修改
[root@saltstack init]# cat tty-style.sls /etc/bashrc: file.append: - text: - export PS1=' [\u@\h \w]\$ '
作者:罗阿红
出处:http://www.cnblogs.com/luoahong/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。