script_centos_isp.sh 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307
  1. #!/bin/bash
  2. clear
  3. echo " ___ _ ___ ___ ____ __ _ ___ "
  4. echo " / __|___ _ _| |_ / _ \/ __|__ | _ __ ___ _ _ / _|___ __| |_/ __| ___ _ ___ __"
  5. echo " | (__/ -_) ' \ _| (_) \__ \ / / | '_ \/ -_) '_| _/ -_) _| _\__ \/ -_) '_\ V /"
  6. echo " \___\___|_||_\__|\___/|___//_/ | .__/\___|_| |_| \___\__|\__|___/\___|_| \_/ "
  7. echo " |_| V0.2 for auto hosting simply & easily "
  8. echo "To view details: \"tail -f log_script.log\""
  9. echo ""
  10. echo -e "\033[31mThis script will modify your server's configuration.\033[0m"
  11. echo -e "\033[31mNO guarantees are implied\033[0m"
  12. echo -e "\033[31mDo you want to continue? (type yes in UPPERCASE)\033[0m"
  13. read areyousure
  14. if [ $areyousure != "YES" ]
  15. then exit 1
  16. else echo -e "\033[31mStarting script `basename $0`\033[0m"
  17. fi
  18. LOG=/root/log_script.log
  19. echo "NOZEROCONF=yes" >> /etc/sysconfig/network
  20. # Configuration of repository for CentOS
  21. configure_repo() {
  22. yum -y install wget >> $LOG 2>&1
  23. echo -e "[\033[33m*\033[0m] Installing & configuring epel, rpmforge repos..."
  24. rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt >> $LOG 2>&1 || echo -e "[\033[31mX\033[0m] Error importing key /etc/pki/rpm-gpg/RPM-GPG-KEY.dag.txt"
  25. cd /tmp
  26. wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm >> $LOG 2>&1 || echo -e "[\033[31mX\033[0m] Error downloading rpmforge rpm"
  27. rpm -ivh rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm >> $LOG 2>&1 || echo -e "[\033[31mX\033[0m] Error installing rpmforge rpm"
  28. yum install -y epel-release >> $LOG 2>&1 || echo -e "[\033[31mX\033[0m] Error installing EPEL Repo"
  29. yum install yum-priorities -y >> $LOG 2>&1 echo -e "[\033[31mX\033[0m] Error installing yum-priorites"
  30. awk 'NR== 2 { print "priority=10" } { print }' /etc/yum.repos.d/epel.repo > /tmp/epel.repo
  31. rm /etc/yum.repos.d/epel.repo -f
  32. mv /tmp/epel.repo /etc/yum.repos.d
  33. }
  34. update_system() {
  35. echo -e "[\033[33m*\033[0m] Updating full system (it can take some minutes...)"
  36. yum update -y >> $LOG 2>&1 || echo -e "[\033[31mX\033[0m] Error in yum update"
  37. }
  38. install_required_packages() {
  39. echo -e "[\033[33m*\033[0m] Installing required packages"
  40. yum install -y vim htop iftop iotop net-tools nmap screen git expect openssl >> $LOG 2>&1 || echo -e "[\033[31mX\033[0m] Error installing base packages"
  41. echo -e "[\033[33m*\033[0m] Installing Development Tools"
  42. yum groupinstall -y 'Development Tools' >> $LOG 2>&1 || echo -e "[\033[31mX\033[0m] Error installing Dev Tools metapackage"
  43. }
  44. install_ntpd() {
  45. echo -e "[\033[33m*\033[0m] Installing and configure NTPD"
  46. yum install -y ntp >> $LOG 2>&1
  47. systemctl enable ntpd >> $LOG 2>&1
  48. systemctl start ntpd >> $LOG 2>&1
  49. }
  50. disable_fw() {
  51. echo -e "[\033[33m*\033[0m] Disabling Firewall (for installation time)"
  52. systemctl stop firewalld >> $LOG 2>&1
  53. systemctl disable firewalld >> $LOG 2>&1
  54. }
  55. disable_selinux() {
  56. echo -e "[\033[33m*\033[0m] Disabling SELinux"
  57. sed -i -e 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config >> $LOG 2>&1
  58. setenforce 0 >> $LOG 2>&1
  59. }
  60. install_mariadb() {
  61. echo -e "[\033[33m*\033[0m] Installing MariaDB SQL Server"
  62. yum install mariadb-server mariadb-client -y >> $LOG 2>&1
  63. chkconfig --levels 235 mariadb on >> $LOG 2>&1
  64. systemctl start mariadb >> $LOG 2>&1
  65. /usr/bin/mysql_secure_installation
  66. }
  67. install_dovecot() {
  68. echo -e "[\033[33m*\033[0m] Installing DOVECOT Server"
  69. yum install dovecot dovecot-mysql -y >> $LOG 2>&1
  70. systemctl enable dovecot >> $LOG 2>&1
  71. systemctl start dovecot >> $LOG 2>&1
  72. }
  73. install_postfix() {
  74. echo -e "[\033[33m*\033[0m] Installing Postfix Server"
  75. yum install postfix -y >> $LOG 2>&1
  76. systemctl start postfix >> $LOG 2>&1
  77. systemctl start postfix >> $LOG 2>&1
  78. echo -e "[\033[33m*\033[0m] Installing getmail"
  79. yum install getmail -y >> $LOG 2>&1
  80. }
  81. install_clamav() {
  82. echo -e "[\033[33m*\033[0m] Installing Antivirus/Antispam Layer (it can take some times downloading AV databases)"
  83. yum install -y amavisd-new spamassassin clamav clamd unzip bzip2 unrar perl-DBD-mysql --disablerepo=epel >> $LOG 2>&1
  84. sa-update >> $LOG 2>&1
  85. systemctl start clamd >> $LOG 2>&1
  86. /usr/bin/freshclam >> $LOG 2>&1
  87. }
  88. install_nginx() {
  89. echo -e "[\033[33m*\033[0m] Installing & Configuring NGINX Webserver"
  90. yum install nginx --enablerepo=epel -y >> $LOG 2>&1
  91. # awk 'NR== 21 { print "map $scheme $https {" ; print "default off;" ; print "https on;"; print "}"} { print }' /etc/nginx/nginx.conf > /tmp/nginx.conf
  92. # rm -f /etc/nginx/nginx.conf
  93. # mv /tmp/nginx.conf /etc/nginx
  94. systemctl disable httpd >> $LOG 2>&1
  95. systemctl enable nginx >> $LOG 2>&1
  96. systemctl start nginx >> $LOG 2>&1
  97. yum install php php-fpm php-cli php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-pecl-apc php-magickwand php-magpierss php-mbstring php-mcrypt php-mssql php-shout php-snmp php-soap php-tidy -y >> $LOG 2>&1
  98. sed -i -e 's/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/' /etc/php.ini >> $LOG 2>&1
  99. systemctl enable php-fpm >> $LOG 2>&1
  100. systemctl start php-fpm >> $LOG 2>&1
  101. yum install -y fcgi-devel >> $LOG 2>&1
  102. echo -e " [\033[33m*\033[0m] Compil fcgiwrap (cause it don't exist in rpm for CentOS)"
  103. cd /usr/local/src/
  104. git clone git://github.com/gnosek/fcgiwrap.git >> $LOG 2>&1
  105. echo -e " [\033[32m*\033[0m] Gitting sources done"
  106. cd fcgiwrap
  107. autoreconf -i >> $LOG 2>&1
  108. ./configure >> $LOG 2>&1
  109. make >> $LOG 2>&1
  110. make install >> $LOG 2>&1
  111. echo -e " [\033[32m*\033[0m] fcgiwrap done"
  112. yum install spawn-fcgi -y >> $LOG 2>&1
  113. echo -e "[\033[33m*\033[0m] Setting /etc/sysconfig/spawn-fcgi configuration file"
  114. cat <<EOF > /etc/sysconfig/spawn-fcgi
  115. # You must set some working options before the "spawn-fcgi" service will work.
  116. # If SOCKET points to a file, then this file is cleaned up by the init script.
  117. #
  118. # See spawn-fcgi(1) for all possible options.
  119. #
  120. # Example :
  121. #SOCKET=/var/run/php-fcgi.sock
  122. #OPTIONS="-u apache -g apache -s $SOCKET -S -M 0600 -C 32 -F 1 -P /var/run/spawn-fcgi.pid -- /usr/bin/php-cgi"
  123. FCGI_SOCKET=/var/run/fcgiwrap.socket
  124. FCGI_PROGRAM=/usr/local/sbin/fcgiwrap
  125. FCGI_USER=apache
  126. FCGI_GROUP=apache
  127. FCGI_EXTRA_OPTIONS="-M 0770"
  128. OPTIONS="-u $FCGI_USER -g $FCGI_GROUP -s $FCGI_SOCKET -S $FCGI_EXTRA_OPTIONS -F 1 -P /var/run/spawn-fcgi.pid -- $FCGI_PROGRAM"
  129. EOF
  130. usermod -a -G apache nginx >> $LOG 2>&1
  131. systemctl enable spawn-fcgi >> $LOG 2>&1
  132. systemctl start spawn-fcgi >> $LOG 2>&1
  133. }
  134. install_pma() {
  135. echo -e "[\033[33m*\033[0m] Setting PHPmyAdmin"
  136. yum install phpmyadmin -y >> $LOG 2>&1
  137. sed -i -e "s/'cookie'/'http'/" /etc/phpMyAdmin/config.inc.php 2>&1
  138. # sed -i -e "s/'blowfish_secret'] = '1199196662700621640'/'blowfish_secret'] = '$(echo MONNOMBRE)'/" /etc/phpMyAdmin/config.inc.php 2>&1
  139. }
  140. install_mailman() {
  141. echo -e "[\033[33m*\033[0m] Setting Mailman"
  142. yum install mailman -y >> $LOG 2>&1
  143. /usr/lib/mailman/bin/newlist mailman
  144. cat <<EOF >> /etc/aliases
  145. mailman: "|/usr/lib/mailman/mail/mailman post mailman"
  146. mailman-admin: "|/usr/lib/mailman/mail/mailman admin mailman"
  147. mailman-bounces: "|/usr/lib/mailman/mail/mailman bounces mailman"
  148. mailman-confirm: "|/usr/lib/mailman/mail/mailman confirm mailman"
  149. mailman-join: "|/usr/lib/mailman/mail/mailman join mailman"
  150. mailman-leave: "|/usr/lib/mailman/mail/mailman leave mailman"
  151. mailman-owner: "|/usr/lib/mailman/mail/mailman owner mailman"
  152. mailman-request: "|/usr/lib/mailman/mail/mailman request mailman"
  153. mailman-subscribe: "|/usr/lib/mailman/mail/mailman subscribe mailman"
  154. mailman-unsubscribe: "|/usr/lib/mailman/mail/mailman unsubscribe mailman"
  155. EOF
  156. newaliases >> $LOG
  157. systemctl restart postfix >> $LOG 2>&1
  158. systemctl enable mailman >> $LOG 2>&1
  159. systemctl start mailman >> $LOG 2>&1
  160. cd /usr/lib/mailman/cgi-bin/
  161. ln -s ./ mailman
  162. }
  163. install_ftpd() {
  164. echo -e "[\033[33m*\033[0m] Setting PureFTPD"
  165. yum install pure-ftpd -y >> $LOG 2>&1
  166. systemctl start pure-ftpd >> $LOG 2>&1
  167. systemctl enable pure-ftpd >> $LOG 2>&1
  168. }
  169. install_bind() {
  170. echo -e "[\033[33m*\033[0m] Setting Bind"
  171. yum install bind bind-utils -y >> $LOG 2>&1
  172. cp /etc/named.conf /etc/named.conf_bak
  173. cat <<EOF > /etc/named.conf
  174. //
  175. // named.conf
  176. //
  177. // Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
  178. // server as a caching only nameserver (as a localhost DNS resolver only).
  179. //
  180. // See /usr/share/doc/bind*/sample/ for example named configuration files.
  181. //
  182. options {
  183. listen-on port 53 { any; };
  184. listen-on-v6 port 53 { any; };
  185. directory "/var/named";
  186. dump-file "/var/named/data/cache_dump.db";
  187. statistics-file "/var/named/data/named_stats.txt";
  188. memstatistics-file "/var/named/data/named_mem_stats.txt";
  189. allow-query { any; };
  190. recursion yes;
  191. };
  192. logging {
  193. channel default_debug {
  194. file "data/named.run";
  195. severity dynamic;
  196. };
  197. };
  198. zone "." IN {
  199. type hint;
  200. file "named.ca";
  201. };
  202. include "/etc/named.conf.local";
  203. EOF
  204. touch /etc/named.conf.local
  205. systemctl start named >> $LOG 2>&1
  206. systemctl enable named >> $LOG 2>&1
  207. }
  208. install_awstat() {
  209. echo -e "[\033[33m*\033[0m] Setting statistics stuffs"
  210. yum install webalizer awstats perl-DateTime-Format-HTTP perl-DateTime-Format-Builder -y >> $LOG 2>&1
  211. }
  212. install_jailkit() {
  213. echo -e "[\033[33m*\033[0m] Setting Jailkit"
  214. #Jailkit
  215. cd /usr/local/src
  216. wget http://olivier.sessink.nl/jailkit/jailkit-2.17.tar.gz >> $LOG 2>&1
  217. tar xvfz jailkit-2.17.tar.gz >> $LOG 2>&1
  218. cd jailkit-2.17
  219. ./configure >> $LOG 2>&1
  220. make >> $LOG 2>&1
  221. make install >> $LOG 2>&1
  222. }
  223. install_fail2ban() {
  224. echo -e "[\033[33m*\033[0m] Setting fail2ban & RootkitHunter"
  225. yum install fail2ban -y >> $LOG 2>&1
  226. systemctl start fail2ban >> $LOG 2>&1
  227. systemctl enable fail2ban >> $LOG 2>&1
  228. }
  229. install_rkhunter() {
  230. yum install rkhunter -y >> $LOG 2>&1
  231. }
  232. configure_repo
  233. update_system
  234. install_required_packages
  235. install_ntpd
  236. disable_fw
  237. disable_selinux
  238. install_mariadb
  239. install_dovecot
  240. install_postfix
  241. install_clamav
  242. install_nginx
  243. install_pma
  244. install_mailman
  245. install_ftpd
  246. install_bind
  247. install_awstat
  248. install_jailkit
  249. install_fail2ban
  250. install_rkhunter
  251. echo -e "[\033[33m*\033[0m] Installing ISPConfig Stable version"
  252. #ISPConfig
  253. cd /tmp
  254. wget http://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz >> $LOG 2>&1
  255. tar xfz ISPConfig-3-stable.tar.gz >> $LOG 2>&1
  256. cd ispconfig3_install/install/
  257. php install.php