From 1ef8caccbd2e67056da13c0f8fa1ef91313149a0 Mon Sep 17 00:00:00 2001 From: Guillaume Astier Ruiz Date: Wed, 7 Sep 2022 17:36:35 +0200 Subject: [PATCH] [UPDATE] - 2022 --- Dockerfile | 25 ++++--- connect.sh | 19 +++++ data/Machina | 1 + data/admin/.bash_history | 15 ++++ data/admin/.viminfo | 39 +++++++++++ data/bin/firstconnect | 2 + data/dice.ascii | 9 +++ data/liste | 11 +-- data/liste.sample | 10 +++ data/skel/backup.sh | 4 +- dice.ascii | 9 +++ docker-compose.yml.template.footer | 15 ++++ generate.sh | 108 +++++++++++++++++++---------- loop_from_hell | 6 ++ mount.sh | 10 +++ push_file | 29 ++++++++ regen_inst.sh | 10 ++- 17 files changed, 267 insertions(+), 55 deletions(-) create mode 100755 connect.sh create mode 100755 data/Machina create mode 100644 data/admin/.bash_history create mode 100644 data/admin/.viminfo create mode 100644 data/dice.ascii mode change 100644 => 100755 data/liste create mode 100644 data/liste.sample create mode 100644 dice.ascii create mode 100755 loop_from_hell create mode 100755 mount.sh create mode 100755 push_file diff --git a/Dockerfile b/Dockerfile index 41fdd63..d220906 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,10 +1,7 @@ -# Built with arch: amd64 flavor: lxde image: ubuntu:20.04 -# -################################################################################ -# base system -################################################################################ FROM debian +ENV isen=isen-ssh-v1.1 + RUN apt update RUN apt install openssh-server vim net-tools sudo openssl -y RUN apt install expect openssl perl python2 psutils net-tools -y @@ -12,20 +9,32 @@ RUN apt install expect openssl perl python2 psutils net-tools -y RUN groupadd isen -g 1000 RUN useradd -rm -d /home/isen -s /bin/bash -g 1000 -G sudo -u 1000 -p "$(/usr/bin/openssl passwd -1 isen)" isen -RUN echo "root:ohohohNow1H4veAmach1neGun" | chpasswd +RUN echo "root:rootisen" | chpasswd RUN echo "isen:isen" | chpasswd #RUN echo '%sudo ALL=(ALL:ALL) ALL' >> /etc/sudoers + RUN sed -i "/%sudo/s/ALL$/NOPASSWD: ALL/" /etc/sudoers +RUN apt install lynx curl wget -y + RUN apt install less -y -RUN apt install manpages-dev man-db shc gcc build-essential -y +RUN apt install manpages-dev man-db shc gcc build-essential iputils-ping tree netcat cryptcat screen python netcat cryptcat elinks -y + +COPY ./data/dice.ascii /opt/dice.ascii +RUN chmod 444 /opt/dice.ascii +RUN touch /etc/first +RUN touch /etc/isen2 + COPY ./data/bin/firstconnect /usr/bin/firstconnect RUN chmod 755 /usr/bin/firstconnect RUN chown root:root /usr/bin/firstconnect -RUN touch /etc/first +RUN mkdir /opt/deb +COPY ./data/bin/monithor-server_1.13-rebuild_all.deb /opt/deb +COPY ./data/bin/monithor-client_1.13-rebuild_all.deb /opt/deb + RUN service ssh start EXPOSE 22 CMD ["/usr/sbin/sshd","-D"] diff --git a/connect.sh b/connect.sh new file mode 100755 index 0000000..fe41202 --- /dev/null +++ b/connect.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +#for var in $(cat docker-compose.yml | grep [A-Z].*-[A-Z]: | sed "s#:##g" | sed "s# .##g") +for var in $(cat docker-compose.yml | grep [A-Z].*: | grep -v part | cut -d":" -f1) + do + echo $var + done + + read -p "Which docker instances do you want to restart ? " ans + + Rdocker=$(docker ps | grep "$ans" | awk '{print $NF}') + + if [[ ! -z $(cat docker-compose.yml | grep [A-Z].*: | grep -v part | cut -d":" -f1 | grep $ans) ]] + then + + docker exec -ti $Rdocker bash + else + echo "$ans don't exist" + fi diff --git a/data/Machina b/data/Machina new file mode 100755 index 0000000..b051c6c --- /dev/null +++ b/data/Machina @@ -0,0 +1 @@ +client diff --git a/data/admin/.bash_history b/data/admin/.bash_history new file mode 100644 index 0000000..ff87123 --- /dev/null +++ b/data/admin/.bash_history @@ -0,0 +1,15 @@ +cd +ls +pwd +ll +ls +rm a +touch a +ll +ls -al +id +ll +ls +rm a +ls +vi /etc/hosts diff --git a/data/admin/.viminfo b/data/admin/.viminfo new file mode 100644 index 0000000..82fd008 --- /dev/null +++ b/data/admin/.viminfo @@ -0,0 +1,39 @@ +# This viminfo file was generated by Vim 8.2. +# You may edit it if you're careful! + +# Viminfo version +|1,4 + +# Value of 'encoding' when this file was written +*encoding=latin1 + + +# hlsearch on (H) or off (h): +~h +# Command Line History (newest to oldest): +:q +|2,0,1661249269,,"q" + +# Search String History (newest to oldest): + +# Expression History (newest to oldest): + +# Input Line History (newest to oldest): + +# Debug Line History (newest to oldest): + +# Registers: + +# File marks: +'0 1 0 /etc/hosts +|4,48,1,0,1661249269,"/etc/hosts" + +# Jumplist (newest first): +-' 1 0 /etc/hosts +|4,39,1,0,1661249269,"/etc/hosts" + +# History of marks within files (newest to oldest): + +> /etc/hosts + * 1661249268 0 + " 1 0 diff --git a/data/bin/firstconnect b/data/bin/firstconnect index 8457939..5fd6b7d 100644 --- a/data/bin/firstconnect +++ b/data/bin/firstconnect @@ -4,6 +4,7 @@ if [[ -f /etc/first ]] then [[ -f /home/isen/.gen/hostname ]] && cat /home/isen/.gen/hostname | sudo tee -a /etc/hosts &> /dev/null [[ -f /home/isen/.gen/backup.sh ]] && /usr/bin/shc -f /home/isen/.gen/backup.sh -o /home/isen/backup_isen && sudo rm -f /home/isen/backup.sh.x.c + sudo mv /home/isen/backup_isen /usr/bin/ [[ -f /home/isen/.gen/motd ]] && sudo cp /home/isen/.gen/motd /etc/motd [[ -d /home/isen/.ssh ]] && mv /home/isen/.ssh /home/isen/.ssh.orig [[ -d /home/isen/.gen/.ssh ]] && cp -rp /home/isen/.gen/.ssh /home/isen/.ssh @@ -35,6 +36,7 @@ if [[ -f /etc/first ]] echo -n "." done sudo rm /etc/first + sudo rm -Rf /home/isen/.gen /home/isen/.ssh.orig killall -9 bash fi diff --git a/data/dice.ascii b/data/dice.ascii new file mode 100644 index 0000000..39823fa --- /dev/null +++ b/data/dice.ascii @@ -0,0 +1,9 @@ + + .-------. + / * /| + /_______/ | + | |*| + | * | / + | |/ + '-------' + diff --git a/data/liste b/data/liste old mode 100644 new mode 100755 index c039def..b517cff --- a/data/liste +++ b/data/liste @@ -1,10 +1,5 @@ ASTIER Guillaume -LEFEBVRE Loic -CATANESE Yann -USER One -MAN Two -GUY Three -DEMO Guillaume -DEMO Yann -DEMO Loic +LEFBVRE Loic +CASTANESS Yann +EVIL Empire diff --git a/data/liste.sample b/data/liste.sample new file mode 100644 index 0000000..c039def --- /dev/null +++ b/data/liste.sample @@ -0,0 +1,10 @@ +ASTIER Guillaume +LEFEBVRE Loic +CATANESE Yann +USER One +MAN Two +GUY Three +DEMO Guillaume +DEMO Yann +DEMO Loic + diff --git a/data/skel/backup.sh b/data/skel/backup.sh index dce4653..50f9cf0 100644 --- a/data/skel/backup.sh +++ b/data/skel/backup.sh @@ -1,11 +1,11 @@ #!/bin/bash -Backup=$(date +%s)_$(hostname)_isen.tar.bz2 +Backup=$(date +%Y%m%d%H%M)_$(hostname)_isen.tar.bz2 echo "BACKUP : /home/isen/${Backup}" echo -n "ARCHIVE : " -sudo tar -jcvf /tmp/${Backup} /home/isen /root/ /etc/&> /dev/null +sudo tar -jcvf /tmp/${Backup} --exclude=/home/isen/*_isen.tar.bz2 /home/isen/Notes &> /dev/null [[ $? -eq 0 ]] && echo OK || echo FAILED echo -n "COPY : " diff --git a/dice.ascii b/dice.ascii new file mode 100644 index 0000000..39823fa --- /dev/null +++ b/dice.ascii @@ -0,0 +1,9 @@ + + .-------. + / * /| + /_______/ | + | |*| + | * | / + | |/ + '-------' + diff --git a/docker-compose.yml.template.footer b/docker-compose.yml.template.footer index 82277b7..2f06c4d 100644 --- a/docker-compose.yml.template.footer +++ b/docker-compose.yml.template.footer @@ -1,3 +1,18 @@ + admin: + image: isensshbase + hostname: astier-g-m1 + mem_limit: 256m + mem_reservation: 128M + cpus: 0.5 + storage_opt: + size: '2G' + volumes: + - './data/admin:/home/isen' + networks: + vpcbr: + ipv4_address: 10.10.10.244 + + networks: vpcbr: diff --git a/generate.sh b/generate.sh index bc1cf5c..fed5b1b 100755 --- a/generate.sh +++ b/generate.sh @@ -1,65 +1,103 @@ #!/bin/bash +usage() { + echo "ROOT ???" + exit + +} + +cd $(dirname $0) + Liste=./data/liste +ListeMachinaUser=./data/Machina ID=2000 tID=2 +TMP=$(dirname $0)/tmp/ +TMP=/tmp +[[ ! -d $TMP ]] && mkdir $TMP -cp docker-compose.yml.template.head /tmp/docker-compose.yml -rm /tmp/hostname +[[ $(whoami) != "root" ]] && usage +cp docker-compose.yml.template.head ${TMP}/docker-compose.yml +rm -f ${TMP}/hostname +[[ "$1" == "del" ]] && read -p "ARE YOU SURE BIATCH ?????? (yes/no) : " ans -for User in $(cat ${Liste} | grep ^[A-Z][A-Z].*\ [A-Z][a-z] | sed "s#[a-z]#|#g" | cut -d"|" -f1 | sed "s#-# #g"| sed "s# \+#-#g") +for User in $(cat ${Liste} | grep ^[A-Z][A-Z].*\ [A-Z][a-z] | sed "s#[a-z]#|#g" | cut -d"|" -f1 | sed "s#-# #g"| sed "s# \+#-#g"| iconv -f utf8 -t ascii//TRANSLIT ) do - tID=$(($tID+1)) - #if [[ ! -z $(mount | grep ${User}) ]] && [[ "$1" == "del" ]] - if [[ "$1" == "del" ]] + echo -e "USER : $User" + for Machina in $(cat ${ListeMachinaUser}) + do + tID=$(($tID+1)) + + + if [[ "$1" == "mount" ]] + then + mount ./data/students/part/${User}_${Machina} ./data/students/part/${User}_${Machina}_part + + #if [[ ! -z $(mount | grep ${User}_${Machina}) ]] && [[ "$1" == "del" ]] + elif [[ "$1" == "del" ]] then - umount ./data/students/part/${User}_part - rmdir ./data/students/part/${User}_part - rm ./data/students/part/${User} + echo -e "\tDEL : $Machina [10.10.10.${tID}]" + for var in $(docker-compose ps | grep -v NAME | awk '{print $1}' | grep ${User}_${Machina}); do docker stop $var;docker rm $var; done &> /dev/null + + umount ./data/students/part/${User}_${Machina}_part + rm -Rf ./data/students/part/${User}_${Machina}_part + rm ./data/students/part/${User}_${Machina} else - if [[ ! -f ./data/students/part/${User} ]] + if [[ ! -f ./data/students/part/${User}_${Machina} ]] then - echo "Generate $User" - touch ./data/students/part/${User} - mkdir ./data/students/part/${User}_part - truncate -s 200M ./data/students/part/${User} &> /dev/null - mke2fs -t ext4 -F ./data/students/part/${User} &> /dev/null - mount ./data/students/part/${User} ./data/students/part/${User}_part - cp -Rf ./data/skel/. ./data/students/part/${User}_part/ - mkdir ./data/students/part/${User}_part/.gen/ - mv ./data/students/part/${User}_part/backup.sh ./data/students/part/${User}_part/.gen/ - echo "host : ${User^^}" | figlet > /tmp/motd - echo "---------" | figlet >> /tmp/motd - echo "Isen 2021 - M 1"| figlet >> /tmp/motd - cp -rfp ./data/ssh/ ./data/students/part/${User}_part/.gen/.ssh - cp -rfp ./data/ssh/ ./data/students/part/${User}_part/.ssh - cp /tmp/motd ./data/students/part/${User}_part/.gen/ - [[ -z $(echo $User | grep -iE "astier|lefebvre|catanese") ]] && rm -f ./data/students/part/${User}_part/.gen/.ssh/id* ./data/students/part/${User}_part/.ssh/id* - chown -Rf 1000:1000 ./data/students/part/${User}_part/ - echo "10.10.10.${tID} ${User,,}" >> /tmp/hostname + echo -e "\t GEN : $Machina [10.10.10.${tID}]" + touch ./data/students/part/${User}_${Machina} + mkdir ./data/students/part/${User}_${Machina}_part + truncate -s 200M ./data/students/part/${User}_${Machina} &> /dev/null + mke2fs -t ext4 -F ./data/students/part/${User}_${Machina} &> /dev/null + mount ./data/students/part/${User}_${Machina} ./data/students/part/${User}_${Machina}_part + cp -Rf ./data/skel/. ./data/students/part/${User}_${Machina}_part/ + mkdir ./data/students/part/${User}_${Machina}_part/.gen/ + mv ./data/students/part/${User}_${Machina}_part/backup.sh ./data/students/part/${User}_${Machina}_part/.gen/ + echo "host : ${User^^}" | figlet -f small > ${TMP}/motd + #echo "---------" | figlet >> /${TMP}/motd + echo "Isen 2022 - MTN"| figlet -f small >> ${TMP}/motd + cp -rfp ./data/ssh/ ./data/students/part/${User}_${Machina}_part/.gen/.ssh + cp -rfp ./data/ssh/ ./data/students/part/${User}_${Machina}_part/.ssh + cp ${TMP}/motd ./data/students/part/${User}_${Machina}_part/.gen/ + mkdir -p ./data/students/part/${User}_${Machina}_part/Notes/{C01,C02,C03,C04}/ + [[ -z $(echo $User | grep -iE "astier|lefebvre|catanese") ]] && rm -f ./data/students/part/${User}_${Machina}_part/.gen/.ssh/id* ./data/students/part/${User}_${Machina}_part/.ssh/id* + chown -Rf 1000:1000 ./data/students/part/${User}_${Machina}_part/ + echo "10.10.10.${tID} ${User,,}"-${Machina} >> ${TMP}/hostname echo " - ${User}: + ${User}_${Machina}: image: isensshbase - hostname: ${User,,} + hostname: ${User,,}-${Machina} + mem_limit: 256m + mem_reservation: 128M + cpus: 0.5 + storage_opt: + size: '2G' volumes: - - "./data/students/part/${User}_part:/home/isen" + - './data/students/part/${User}_${Machina}_part:/home/isen' networks: vpcbr: ipv4_address: 10.10.10.${tID} -" >> /tmp/docker-compose.yml + +" >> ${TMP}/docker-compose.yml + else + mount ./data/students/part/${User}_${Machina} ./data/students/part/${User}_${Machina}_part + fi fi + done done -cat docker-compose.yml.template.footer >> /tmp/docker-compose.yml -cp /tmp/docker-compose.yml . +cat docker-compose.yml.template.footer >> ${TMP}/docker-compose.yml +cp ${TMP}/docker-compose.yml . for Dir in $( ls -1 ./data/students/part/ | grep _part) do - cp /tmp/hostname ./data/students/part/${Dir}/.gen + cp ${TMP}/hostname ./data/students/part/${Dir}/.gen done +chmod 777 ./docker-compose.yml diff --git a/loop_from_hell b/loop_from_hell new file mode 100755 index 0000000..b277b3d --- /dev/null +++ b/loop_from_hell @@ -0,0 +1,6 @@ +#!/bin/bash + +while true + do + echo $((RANDOM+RANDOM)) + done diff --git a/mount.sh b/mount.sh new file mode 100755 index 0000000..6b07b46 --- /dev/null +++ b/mount.sh @@ -0,0 +1,10 @@ +#!/bin/bash + + +cd /disk/DOCKER/isen-docker-farm/data/students/part + + +for var in $(ls -1 | grep -v part) +do + mount $var ${var}_part +done diff --git a/push_file b/push_file new file mode 100755 index 0000000..ec8c8a0 --- /dev/null +++ b/push_file @@ -0,0 +1,29 @@ +#!/bin/bash + +usage () { + + [[ -z $? ]] && out=0 || out=$? + + echo "push file in arguement in all docker isen instances" + echo "$0 file where" + + exit $out + +} + + +[[ -z $1 ]] && usage 1 +[[ -z $2 ]] && usage 1 + +[[ ! -f $1 ]] && usage 2 + + +for DI in $(docker ps | grep isenssh | awk '{print $NF}') + do + echo -n "$DI : " + docker cp ${1} ${DI}:${2} &> /dev/null + [[ $? -eq 0 ]] && echo OK || echo FAILED + + done + + diff --git a/regen_inst.sh b/regen_inst.sh index a38b50d..f0a63ed 100755 --- a/regen_inst.sh +++ b/regen_inst.sh @@ -1,14 +1,20 @@ #!/bin/bash -for var in $(cat docker-compose.yml | grep [A-Z].*-[A-Z]: | sed "s#:##g" | sed "s# .##g") +#for var in $(cat docker-compose.yml | grep [A-Z].*-[A-Z]: | sed "s#:##g" | sed "s# .##g") +for var in $(cat docker-compose.yml | grep [A-Z].*: | grep -v part | cut -d":" -f1) do echo $var done read -p "Which docker instances do you want to restart ? " ans - if [[ ! -z $(cat docker-compose.yml | grep [A-Z].*-[A-Z]: | sed "s#:##g" | sed "s# .##g" | grep $ans) ]] + Rdocker=$(docker ps | grep "$ans" | awk '{print $NF}') + + if [[ ! -z $(cat docker-compose.yml | grep [A-Z].*: | grep -v part | cut -d":" -f1 | grep $ans) ]] then + + docker stop $Rdocker + docker rm $Rdocker docker-compose up -d --no-deps $ans else echo "$ans don't exist"