Revision: 68124
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at December 1, 2014 03:18 by jsinix
Initial Code
#!/usr/bin/python import sys, os import datetime import socket import getpass import time from subprocess import STDOUT, check_call from contextlib import contextmanager Welcome = """\ _ _ _ (_) (_) (_) _ ___ _ _ __ ___ __ | / __| | '_ \| \ \/ / | \__ \ | | | | |> < | |___/_|_| |_|_/_/\_\. _/ | |__/ """ Disclaimer = """\ \nAuthor: jsinix([email protected]) This script is written to expedite the process of initial system configuration (specifically Ubuntu). These initial things include basic setup, securing the system(firewall), updating it etc. I have not tested this with any distro but this can be modified to suit your need.Its preferable you run this on new system as it overwrite some files. """ Iptable_rules = """ *filter -A INPUT -i lo -j ACCEPT -A INPUT -d 127.0.0.0/8 -j REJECT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A OUTPUT -j ACCEPT -A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7 -A INPUT -j DROP -A FORWARD -j DROP COMMIT """ def hostname_setup(): print "\n\n(+) Setting hostname" sys_hostname = raw_input("(-) Hostname: ") f001 = open('/etc/hostname','w') f001.write(sys_hostname) f001.close() os.system("hostname -F /etc/hostname") print "(+) Hostname set" def timezone_setup(): os.system("dpkg-reconfigure tzdata") print "\n(+) Timezone set" cur_time = datetime.datetime.now() print "(+) Current date: %s" % cur_time def is_connected(): REMOTE_SERVER = "www.jsinix.com" try: host = socket.gethostbyname(REMOTE_SERVER) s = socket.create_connection((host, 80), 2) return True except: pass return False def update_setup(): print "(+) Updating repository" os.system("apt-get update > /dev/null") print "(+) Update complete" print "(+) Installing updates" os.system("apt-get upgrade > /dev/null") print "(+) Complete" def fail2ban_setup(): print "\n(+) Installing Fail2ban" os.system("apt-get install fail2ban -y > /dev/null") print "(+) Restarting Fail2ban" os.system("service fail2ban restart > /dev/null") print "(+) Fail2ban running" def iptables_setup(): print "\n(+) Installing firewall" f002 = open('/etc/iptables.firewall.rules','w') f002.write(Iptable_rules) f002.close() os.system("iptables-restore < /etc/iptables.firewall.rules") print "(+) Firewall is running" print "(+) Setting up firewall on startup" firewall_startup = """ #!/bin/sh /sbin/iptables-restore < /etc/iptables.firewall.rules """ f003 = open('/etc/network/if-pre-up.d/firewall','w') f003.write(firewall_startup) f003.close() os.system("chmod +x /etc/network/if-pre-up.d/firewall") internet = is_connected() def controller(): os.system("clear") print Welcome print Disclaimer option01 = raw_input("Should we start ?(y/n) ") if option01 == 'y': hostname_setup() time.sleep(1) timezone_setup() if internet == True: print "\n(+) Looks like system is connected to internet." update_setup() fail2ban_setup() elif internet == False: print "\n(+) Looks like no internet connectivity" print " Dropping repo update" elif option01 == 'n': print "\n(+) Exiting" sys.exit() else: print "\n(+) Unknown choice" print "(+) Exiting" iptables_setup() # This script must be run as root to avoid permission # issues. #So lets make sure that no other user can run it. my_user = getpass.getuser() if(my_user != 'root'): print "(+) Please run this script as ROOT" sys.exit() else: controller() print "\nRestart the system(recommended) !"
Initial URL
www.jsinix.com
Initial Description
Author: jsinix([email protected]) This script is written to expedite the process of initial system configuration (specifically Ubuntu). These initial things include basic setup, securing the system(firewall), updating it etc. I have not tested this with any distro but this can be modified to suit your need.Its preferable you run this on new system as it overwrite some files.
Initial Title
Automate System Setup
Initial Tags
ubuntu
Initial Language
Python