python初始化服务器脚本

说明:为了方便服务器初装完后做基本的安全加固,特意编写了此脚本

功能:1.指定dns,主机名,ssh登录时的用户名、密码,ssh端口,禁止root远程

        2.允许ssh登录的ip,如有多个请中间加逗号

        3.关selinux,iptables放开ssh端口

        4.装fail2ban防止暴力破解密码

        5.历史命令添加显示时间

        6.时间同步和日志只记录警告以上消息

注意:服务器要安装有base软件包组

使用:vim一个文件,把下面代码粘贴进去保存退出,然后python 文件名调用

        运行完毕后重启服务器即可

提示:本脚本只实现上述基础功能,未优化

 

#/usr/bin/env python  
# -*- coding: utf-8 -*-
import sys 
import os
netfile=‘/etc/sysconfig/network-scripts/ifcfg-eth0‘
#ip=raw_input("请输入ip地址:")
#mask=raw_input("子网掩码:")
#gateway=raw_input("网关:")
dns=raw_input("DNS地址:")
host=raw_input("主机名:")
sshuser=raw_input(‘ssh用户名:‘)
sshpasswd=raw_input(‘ssh用户密码:‘)
sshport=raw_input(‘ssh端口:‘)
sshallow=raw_input(‘允许ssh登录的IP:‘)

def shell(cmd):
    os.system(cmd) 
def file(lu,rw,neirong):
    f=open(lu,rw)
    f.write(neirong)
    f.close()
def fail2ban():
    os.system(‘rm -rf /etc/yum.repos.d/*‘)
    os.system(‘wget -P /etc/yum.repos.d/ http://mirrors.163.com/.help/CentOS6-Base-163.repo‘)
    os.system(‘wget ftp://rpmfind.net/linux/centos/6.6/os/x86_64/Packages/gamin-python-0.1.10-9.el6.x86_64.rpm‘)
    os.system(‘wget ftp://rpmfind.net/linux/epel/6/x86_64/python-inotify-0.9.1-1.el6.noarch.rpm && wget ftp://rpmfind.net/linux/epel/6/x86_64/fail2ban-0.8.14-1.el6.noarch.rpm‘)
    os.system(‘rpm -ivh gamin-python-0.1.10-9.el6.x86_64.rpm‘)
    os.system(‘rpm -ivh python-inotify-0.9.1-1.el6.noarch.rpm‘)
    os.system(‘rpm -ivh fail2ban-0.8.14-1.el6.noarch.rpm‘)
    os.system(‘sed -i s/"bantime  = 600"/"bantime  = 1800"/ /etc/fail2ban/jail.conf‘)
    os.system(‘sed -i s/port=ssh/port=%s/ /etc/fail2ban/jail.conf‘ %sshport)
    os.system(‘sed -i s/"maxretry = 5"/"maxretry = 3"/ /etc/fail2ban/jail.conf‘)
    os.system(‘chkconfig fail2ban on && service fail2ban start‘)
    
shell(‘sed -i s/ONBOOT=no/ONBOOT=yes/ %s‘ % netfile)
#file(netfile,‘a‘,‘\nIPADDR=%s\nNETMASK=%s\nDNS1=%s\nGATEWAY=%s‘ % (ip,mask,dns,gateway))
file(netfile,‘a‘,‘\nDNS1=%s‘ % dns)
shell(‘service network restart‘)
file(‘/etc/sysconfig/network‘,‘w‘,‘NETWORKING=yes\nHOSTNAME=%s‘ % host)
shell(‘sed -i s/SELINUX=enforcing/SELINUX=disabled/ /etc/selinux/config‘)
shell(‘useradd %s && echo %s|passwd --stdin %s‘ %(sshuser,sshpasswd,sshuser))
shell(‘setfacl -m u:%s:r /var/log/btmp && setfacl -m u:%s:r /var/log/messages‘ %(sshuser,sshuser))
file(‘/etc/ssh/sshd_config‘,‘a‘,‘\nPort %s\nPermitRootLogin no\nUseDNS no‘ %sshport)
shell(‘sed -i s/"--dport 22"/"--dport %s"/ /etc/sysconfig/iptables‘ %sshport)
file(‘/etc/hosts.allow‘,‘a‘,‘\nsshd:%s‘ %sshallow)
file(‘/etc/hosts.deny‘,‘a‘,‘\nsshd:all‘)
fail2ban()
shell(‘echo "10 5 * * * /usr/sbin/ntpdate 202.112.10.60">/var/spool/cron/root‘)
shell(‘sed -i s/*.info/*.warning/ /etc/rsyslog.conf‘)
file(‘/etc/bashrc‘,‘a‘,‘\nexport HISTFILESIZE=1000000000\nexport HISTSIZE=1000000\nexport PROMPT_COMMAND="history -a"\nexport HISTTIMEFORMAT="%Y-%m-%d  %H:%M:%S  "‘)


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。