123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388 |
- #!/bin/bash
- # ==================================================
- GitUser="irwanmohi"
- #wget https://github.com/${GitUser}/
- # initializing var
- export DEBIAN_FRONTEND=noninteractive
- MYIP=$(wget -qO- ipinfo.io/ip);
- MYIP2="s/xxxxxxxxx/$MYIP/g";
- NET=$(ip -o $ANU -4 route show to default | awk '{print $5}');
- source /etc/os-release
- ver=$VERSION_ID
- # certificate ssh & openvpn
- # edit bwh, isikan nama domain anda
- # detail nama perusahaan
- MyScriptName='ReGsUb Script'
- country=MY
- state=SELANGOR
- locality=GOMBAK
- organization=AIDAN-TECH
- organizationalunit=PLATFORM-TEAM
- commonname=vpn.aidan.my
- email=irwan@aidan.my
- # Install OpenVPN dan Easy-RSA
- apt install openvpn easy-rsa unzip -y
- apt install openssl iptables iptables-persistent -y
- mkdir -p /etc/openvpn/server/easy-rsa/
- cd /etc/openvpn/
- wget https://raw.githubusercontent.com/Apeachsan91/server/main/vpn.zip
- unzip vpn.zip
- rm -f vpn.zip
- chown -R root:root /etc/openvpn/server/easy-rsa/
- cd
- mkdir -p /usr/lib/openvpn/
- cp /usr/lib/x86_64-linux-gnu/openvpn/plugins/openvpn-plugin-auth-pam.so /usr/lib/openvpn/openvpn-plugin-auth-pam.so
- # nano /etc/default/openvpn
- sed -i 's/#AUTOSTART="all"/AUTOSTART="all"/g' /etc/default/openvpn
- # restart openvpn dan cek status openvpn
- systemctl enable --now openvpn-server@server-tcp-1194
- systemctl enable --now openvpn-server@server-udp-2200
- /etc/init.d/openvpn restart
- /etc/init.d/openvpn status
- # aktifkan ip4 forwarding
- echo 1 > /proc/sys/net/ipv4/ip_forward
- sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/g' /etc/sysctl.conf
- cd /etc/stunnel/
- openssl req -new -newkey rsa:2048 -days 3650 -nodes -x509 -sha256 -subj '/CN=127.0.0.1/O=localhost/C=US' -keyout /etc/stunnel/stunnel.pem -out /etc/stunnel/stunnel.pem
- sudo touch stunnel.conf
- echo "client = no" > /etc/stunnel/stunnel.conf
- echo "pid = /var/run/stunnel.pid" >> /etc/stunnel/stunnel.conf
- echo "[openvpn2]" >> /etc/stunnel/stunnel.conf
- echo "accept = 443" >> /etc/stunnel/stunnel.conf
- echo "connect = 127.0.0.1:1194" >> /etc/stunnel/stunnel.conf
- echo "cert = /etc/stunnel/stunnel.pem" >> /etc/stunnel/stunnel.conf
- sudo sed -i -e 's/ENABLED=0/ENABLED=1/g' /etc/default/stunnel4
- iptables -A INPUT -p tcp --dport 443 -j ACCEPT
- sudo cp /etc/stunnel/stunnel.pem ~
- echo "client = yes\ndebug = 6\n[openvpn]\naccept = 127.0.0.1:1194\nconnect = $IPADDRESS:443\nTIMEOUTclose = 0\nverify = 0\nsni = $1" > /var/www/html/stunnel.conf
- # openvpn
- mv /etc/openvpn/easy-rsa/vars.example /etc/openvpn/easy-rsa/vars
- cp -r /usr/share/easy-rsa/ /etc/openvpn
- mkdir /etc/openvpn/easy-rsa/keys
- sed -i 's|export KEY_COUNTRY="US"|export KEY_COUNTRY="MY"|' /etc/openvpn/easy-rsa/vars
- sed -i 's|export KEY_PROVINCE="CA"|export KEY_PROVINCE="Sel"|' /etc/openvpn/easy-rsa/vars
- sed -i 's|export KEY_CITY="SanFrancisco"|export KEY_CITY="Gombak"|' /etc/openvpn/easy-rsa/vars
- sed -i 's|export KEY_ORG="Fort-Funston"|export KEY_ORG=Aidab-Tech"|' /etc/openvpn/easy-rsa/vars
- sed -i 's|export KEY_EMAIL="me@myhost.mydomain"|export KEY_EMAIL="irwan@aidan.my"|' /etc/openvpn/easy-rsa/vars
- sed -i 's|export KEY_OU="MyOrganizationalUnit"|export KEY_OU="Aidan-Tech"|' /etc/openvpn/easy-rsa/vars
- sed -i 's|export KEY_NAME="EasyRSA"|export KEY_NAME="IrwanMohi"|' /etc/openvpn/easy-rsa/vars
- sed -i 's|export KEY_OU=changeme|export KEY_OU=AidanVPN|' /etc/openvpn/easy-rsa/vars
- # just double checking if anything should u want
- nano /etc/openvpn/easy-rsa/vars
- # generate Diffie hellman parameters
- openssl dhparam -out /etc/openvpn/dh2048.pem 2048
- # Create PKI
- cd /etc/openvpn/easy-rsa
- . ./vars
- ./clean-all
- export EASY_RSA="${EASY_RSA:-.}"
- "$EASY_RSA/pkitool" --initca $*
- # Create key server
- export EASY_RSA="${EASY_RSA:-.}"
- "$EASY_RSA/pkitool" --server server
- # Setting KEY CN
- export EASY_RSA="${EASY_RSA:-.}"
- "$EASY_RSA/pkitool" client
- # cp /etc/openvpn/easy-rsa/keys/{server.crt,server.key,ca.crt} /etc/openvpn
- cd
- cp /etc/openvpn/easy-rsa/keys/server.crt /etc/openvpn/server.crt
- cp /etc/openvpn/easy-rsa/keys/server.key /etc/openvpn/server.key
- cp /etc/openvpn/easy-rsa/keys/ca.crt /etc/openvpn/ca.crt
- chmod +x /etc/openvpn/ca.crt
- # simple password minimal
- wget -O /etc/pam.d/common-password "https://raw.githubusercontent.com/${GitUser}/aws/main/password"
- chmod +x /etc/pam.d/common-password
- # Get easy-rsa
- easy_rsa_url='https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.8/EasyRSA-3.0.8.tgz'
- mkdir -p /etc/openvpn/server/easy-rsa/
- { wget -qO- "$easy_rsa_url" 2>/dev/null || curl -sL "$easy_rsa_url" ; } | tar xz -C /etc/openvpn/server/easy-rsa/ --strip-components 1
- chown -R root:root /etc/openvpn/server/easy-rsa/
- cd /etc/openvpn/server/easy-rsa/
- # Create the PKI, set up the CA and the server and client certificates
- ./easyrsa init-pki
- ./easyrsa --batch build-ca nopass
- EASYRSA_CERT_EXPIRE=3650 ./easyrsa build-server-full server nopass
- EASYRSA_CERT_EXPIRE=3650 ./easyrsa build-client-full "$client" nopass
- EASYRSA_CRL_DAYS=3650 ./easyrsa gen-crl
- #install OpenVPN
- cp -r /usr/share/easy-rsa/ /etc/openvpn
- mkdir /etc/openvpn/easy-rsa/keys1
- # Creating stunnel certifcate using openssl
- openssl req -new -x509 -days 9999 -nodes -subj "/C=MY/ST=SEL/L=Gombak/O=Aidan-Tech/OU=Platform-Team/CN=vpn.aidan.my -out /etc/stunnel/stunnel.pem -keyout /etc/stunnel/stunnel.pem &> /dev/null
- ## > /dev/null 2>&1
- # Configure Stunnel
- sed -i 's/ENABLED=0/ENABLED=1/g' /etc/default/stunnel4
- openssl req -new -newkey rsa:2048 -days 3650 -nodes -x509 -sha256 -subj '/CN=127.0.0.1/O=localhost/C=MY' -keyout /etc/stunnel/stunnel.pem -out /etc/stunnel/stunnel.pem
- cat > /etc/stunnel/stunnel.conf <<-END
- # replace bits
- sed -i 's|export KEY_COUNTRY="US"|export KEY_COUNTRY="MY"|' /etc/openvpn/easy-rsa/vars
- sed -i 's|export KEY_PROVINCE="CA"|export KEY_PROVINCE="Selangor"|' /etc/openvpn/easy-rsa/vars
- sed -i 's|export KEY_CITY="SanFrancisco"|export KEY_CITY="Gombak"|' /etc/openvpn/easy-rsa/vars
- sed -i 's|export KEY_ORG="Fort-Funston"|export KEY_ORG="Aidan"|' /etc/openvpn/easy-rsa/vars
- sed -i 's|export KEY_EMAIL="irwanmohi@gmail.com"|export KEY_FB="vpn.shadow-pipe.tech:99"|' /etc/openvpn/easy-rsa/vars
- sed -i 's|export KEY_OU="Aidan"|export KEY_OU="STRICTLY_NO_TORRENT_ALLOWED_IN_THIS_SERVER"|' /etc/openvpn/easy-rsa/vars
- sed -i 's|export KEY_NAME="EasyRSA"|export KEY_NAME="Aidan"|' /etc/openvpn/easy-rsa/vars
- sed -i 's|export KEY_OU=changeme|export KEY_OU=STRICTLY_NO_TORRENT_ALLOWED_IN_THIS_SERVER|' /etc/openvpn/easy-rsa/vars
- #Create Diffie-Helman Pem
- openssl dhparam -out /etc/openvpn/dh2048.pem 2048
- # Create PKI
- cd /etc/openvpn/easy-rsa
- cp openssl-1.0.0.cnf openssl.cnf
- . ./vars
- ./clean-all
- export EASY_RSA="${EASY_RSA:-.}"
- "$EASY_RSA/pkitool" --initca $*
- # create key server
- export EASY_RSA="${EASY_RSA:-.}"
- "$EASY_RSA/pkitool" --server server
- # setting KEY CN
- export EASY_RSA="${EASY_RSA:-.}"
- "$EASY_RSA/pkitool" client
- cd
- #cp /etc/openvpn/easy-rsa/keys/{server.crt,server.key} /etc/openvpn
- cp /etc/openvpn/easy-rsa/keys/server.crt /etc/openvpn/server.crt
- cp /etc/openvpn/easy-rsa/keys/server.key /etc/openvpn/server.key
- cp /etc/openvpn/easy-rsa/keys/ca.crt /etc/openvpn/ca.crt
- #chmod +x /etc/openvpn/ca.crt #i dont know why making executable
- # Setting Server
- tar -xzvf /root/plugin.tgz -C /usr/lib/openvpn/
- chmod +x /usr/lib/openvpn/*
- cat > /etc/openvpn/server.conf <<-END
- port 1720
- proto tcp
- dev tun
- ca ca.crt
- cert server.crt
- key server.key
- dh dh2048.pem
- verify-client-cert none
- username-as-common-name
- plugin /usr/lib/openvpn/plugins/openvpn-plugin-auth-pam.so login
- server 192.168.10.0 255.255.255.0
- ifconfig-pool-persist ipp.txt
- push "redirect-gateway def1 bypass-dhcp"
- push "dhcp-option DNS 1.1.1.1"
- push "dhcp-option DNS 1.0.0.1"
- push "route-method exe"
- push "route-delay 2"
- socket-flags TCP_NODELAY
- push "socket-flags TCP_NODELAY"
- duplicate-cn
- keepalive 10 120
- comp-lzo
- user nobody
- group nogroup
- persist-key
- persist-tun
- status openvpn-status.log
- log openvpn.log
- verb 3
- ncp-disable
- cipher none
- auth none
- management $MYIP 7505
- END
- systemctl start openvpn@server
- #Create OpenVPN Config
- mkdir -p /home/panel/html
- cat > /home/panel/html/client.ovpn <<-END
- # RULES [ NO TORRENT | NO DDOS ]
- client
- dev tun
- proto tcp
- remote $MYIP 1194
- persist-key
- persist-tun
- pull
- resolv-retry infinite
- nobind
- user nobody
- comp-lzo
- remote-cert-tls server
- verb 3
- mute 2
- connect-retry 3
- connect-retry-max 8080
- keepalive 15 45
- mute-replay-warnings
- redirect-gateway def1
- script-security 2
- route-method exe
- route-delay 2
- auth-user-pass
- cipher none
- auth none
- http-proxy-retry
- # If squid is not working try to install Privoxy in your vps
- http-proxy $MYIP 8080
- http-proxy-option CUSTOM-HEADER ""
- http-proxy-option CUSTOM-HEADER "POST https://google.com.my HTTP/1.0"
- http-proxy-option CUSTOM-HEADER "Connection: Keep-Alive"
- http-proxy-option CUSTOM-HEADER "Proxy-Connection: Keep-Alive"
- ## Uncomment below if you like to do auto-login in mobile
- #<auth-user-pass>
- #your_username
- #your_password
- #</auth-user-pass>
- END
- echo '<ca>' >> /home/panel/html/client.ovpn
- cat /etc/openvpn/ca.crt >> /home/panel/html/client.ovpn
- echo '</ca>' >> /home/panel/html/client.ovpn
- cat > /home/panel/html/clientssl.ovpn <<-END
- # RULES [ NO TORRENT | NO DDOS ]
- client
- dev tun
- proto tcp
- remote 127.0.0.1 1194
- route $MYIP 255.255.255.255 net_gateway
- persist-key
- persist-tun
- pull
- resolv-retry infinite
- nobind
- user nobody
- comp-lzo
- remote-cert-tls server
- verb 3
- mute 2
- connect-retry 5
- connect-retry-max 8080
- mute-replay-warnings
- redirect-gateway def1
- script-security 2
- auth-user-pass
- cipher none
- auth none
- ## Uncomment below if you like to do auto-login in mobile
- #<auth-user-pass>
- #your_username
- #your_password
- #</auth-user-pass>
- END
- echo '<ca>' >> /home/panel/html/clientssl.ovpn
- cat /etc/openvpn/ca.crt >> /home/panel/html/clientssl.ovpn
- echo '</ca>' >> /home/panel/html/clientssl.ovpn
- cat > /home/panel/html/stunnel.conf <<-END
- client = yes
- debug = 6
- [openvpn]
- accept = 127.0.0.1:1194
- connect = $MYIP:443
- TIMEOUTclose = 0
- verify = 0
- sni = m.facebook.com
- END
- # Ubah izin akses
- chmod +x /etc/rc.local
- # enable rc local
- systemctl enable rc-local
- systemctl start rc-local.service
- # disable ipv6
- echo 1 > /proc/sys/net/ipv6/conf/all/disable_ipv6
- sed -i '$ i\echo 1 > /proc/sys/net/ipv6/conf/all/disable_ipv6' /etc/rc.local
- # set repo
- sh -c 'echo "deb http://download.webmin.com/download/repository sarge contrib" > /etc/apt/sources.list.d/webmin.list'
- apt install gnupg gnupg1 gnupg2 -y
- wget http://www.webmin.com/jcameron-key.asc
- apt-key add jcameron-key.asc
- #update
- apt update -y
- apt upgrade -y
- apt dist-upgrade -y
- # install wget and curl
- apt -y install wget curl
- # set time GMT +8 # change your location #
- ln -fs /usr/share/zoneinfo/Asia/Kuala_Lumpur /etc/localtime
- # set locale
- sed -i 's/AcceptEnv/#AcceptEnv/g' /etc/ssh/sshd_config
- # install
- apt-get --reinstall --fix-missing install -y bzip2 gzip coreutils wget screen rsyslog iftop htop net-tools zip unzip wget net-tools curl nano sed screen gnupg gnupg1 bc apt-transport-https build-essential dirmngr libxml-parser-perl neofetch git
- echo "clear" >> .profile
- echo "neofetch" >> .profile
- echo "echo by Irwan" >> .profile
- GitUser="irwanmohi"
- #wget https://github.com/${GitUser}/
- # install webserver
- apt -y install nginx
- sslVersion = all
- pid = /stunnel.pid
- socket = l:TCP_NODELAY=1
- socket = r:TCP_NODELAY=1
- client = no
- [openvpn]
- accept = 443
- connect = 127.0.0.1:1153
- cert = /etc/stunnel/stunnel.pem
- [dropbear]
- accept = 444
- connect = 127.0.0.1:442
- cert = /etc/stunnel/stunnel.pem
- END
- #Setting UFW
- ufw allow ssh
- ufw allow 1153/tcp
- sed -i 's|DEFAULT_INPUT_POLICY="DROP"|DEFAULT_INPUT_POLICY="ACCEPT"|' /etc/default/ufw
- sed -i 's|DEFAULT_FORWARD_POLICY="DROP"|DEFAULT_FORWARD_POLICY="ACCEPT"|' /etc/default/ufw
- # set ipv4 forward
- echo 1 > /proc/sys/net/ipv4/ip_forward
- sed -i 's|#net.ipv4.ip_forward=1|net.ipv4.ip_forward=1|' /etc/sysctl.conf
- sysctl -w net.ipv4.ip_forward=1
|