说明:为了方便服务器初装完后做基本的安全加固,特意编写了此脚本
功能: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 "‘)
原文地址:http://sw5720.blog.51cto.com/8812314/1617283