[+] Edycja plików konfiguracyjnych

Konfiguracja serwerów, usług, itp.
ano
Posty: 38
Rejestracja: 03 sierpnia 2015, 14:18

[+] Edycja plików konfiguracyjnych

Post autor: ano »

Witam
ostatnio borykam się z problemem edycji wielu plików konfiguracyjnych, postanowiłem coś z tym zrobić.

Kod: Zaznacz cały

/etc/ssh/sshd_config
PermitRootLogin no
Mam na przykład bezpośrednie pozwolenie na logowanie roota
i teraz się zastanawiam jak to jest robione profesjonalnie, bo ja zazwyczaj podmieniam całe pliki bo tak łatwiej, ale ostatnio już tak nie mogę robić tylko muszę ręcznie zmieniać wartości. zastanawiałem się nad grepowaniem tnięciem ale nie wydaje mi się żeby tak było profesjonalnie. może jest już jakaś funkcja która się tym zajmuję albo ktoś wie jakie funkcje są używane przy automatycznej zmianie konfiguracji jakiegoś programu?

Thx z góry za odpowiedzi
Ostatnio zmieniony 02 listopada 2016, 14:32 przez ano, łącznie zmieniany 1 raz.
Awatar użytkownika
dedito
Moderator
Posty: 3518
Rejestracja: 18 listopada 2013, 21:07
Lokalizacja: Gliwice

Re: Edycja plików konfiguracyjnych

Post autor: dedito »

Zainteresuj się programem np. sed, który potrafi zamieniać określone frazy w pliku.
Awatar użytkownika
lizard
Beginner
Posty: 287
Rejestracja: 08 lutego 2016, 18:47

Re: Edycja plików konfiguracyjnych

Post autor: lizard »

Studium przypadku.

PHPMyAdmin (na serwerze o publicznym adresie IP) dopuszcza połączenia tylko z sieci lokalnej. Czasem potrzeba dostać się do niego na chwilę z zewnątrz.

W pliku /etc/phpmyadmin/apache.conf umieściłem ograniczenie dostępu tylko z sieci lokalnej:

Kod: Zaznacz cały

    Order deny,allow
        Deny from all
        Allow from 10.
Na serwerze umieściłem skrypt, który na koniec linii "Allow from" dopisuje adres IP bieżącego połączenia SSH:

Kod: Zaznacz cały

#!/bin/sh

case ${1} in
  up)
    sed -i "s/\(^[[:space:]]*Allow from 10\.\).*/\1 ${SSH_CLIENT%% *}/" /etc/phpmyadmin/apache.conf ;;
  down)
    sed -i 's/\(^[[:space:]]*Allow from 10\.\).*/\1/' /etc/phpmyadmin/apache.conf ;;
  *)
    echo "Usage: ${0} <up|down>"
    exit
esac

systemctl restart apache2
Polecenia sed odpowiednio dodają (parametr "up" skryptu) i usuwają (parametr "down") adres IP klienta SSH bezpośrednio w pliku konfiguracyjnym. Na koniec serwer jest restartowany dla zastosowania zmian.
ano
Posty: 38
Rejestracja: 03 sierpnia 2015, 14:18

Re: Edycja plików konfiguracyjnych

Post autor: ano »

Thx za podpowiedz, jak przetestuję to polecenie to się odezwę
nie rozumiem
lizard pisze:Studium przypadku.
Przy okazji to nie lepiej już dać dostęp wszystkim?
można zabezpieczyć stronę .htaccess
zmienić domyślną lokalizację katalogu
zmodyfikować tak byś miał dostęp tylko po zalogowaniu się użytkownika na stronie www
bo jeżeli dobrze zrozumiałem to i tak jakoś musisz przesyłać IP jeżeli chcesz mu dać dostęp, więc i tak musisz to robić ręcznie, najlepszym rozwiązaniem jest .htaccess w takiej sytuacji
lizard pisze:PHPMyAdmin (na serwerze o publicznym adresie IP) dopuszcza połączenia tylko z sieci lokalnej. Czasem potrzeba dostać się do niego na chwilę z zewnątrz.
Nie zauważyłem, domyślnie dopuszcza, a przynajmniej jak teraz instalowałem to zawsze mam od razu dostęp, bez zadnego konfigurowania, a mam vpsa
Awatar użytkownika
lizard
Beginner
Posty: 287
Rejestracja: 08 lutego 2016, 18:47

Re: Edycja plików konfiguracyjnych

Post autor: lizard »

To był tylko przykład modyfikacji plików konfiguracyjnych w locie.

Offtopic:

Nie jestem zwolennikiem grzebania w /usr, którego zawartość może być zmieniana podczas aktualizacji systemu. Ograniczenie dostępu do sieci lokalnej ogranicza pokusę brute force'a. Adres IP "przesyłany" jest podczas połączenia SSH: ssh www.domena.pl ./skrypt.sh up.
ano
Posty: 38
Rejestracja: 03 sierpnia 2015, 14:18

Re: Edycja plików konfiguracyjnych

Post autor: ano »

Witam z powrotem, zapomniałem się odezwać, oczywiście ze mi działa sed, thx
Problem miałem kiedy musiałem użyć \ w ciągu ale wystarczy podać \/ i działa (wymyśliłem bo nigdzie o tym nie pisało, albo nie znalazłem)
teraz mam pytanko odnośnie jak programy czytają pliki konfiguracyjne?
bo chyba nie grepują, bo jak za komentujesz linie to program nie odczyta tego configu
chodzi mi dokładnie jakiej funkcji używają aby odczytać daną konfigurację

Offtopic:
lizard, po naszej rozmowie przyznaję, że użycie klucza też jest bezpieczne
ano
Posty: 38
Rejestracja: 03 sierpnia 2015, 14:18

Re: Edycja plików konfiguracyjnych

Post autor: ano »

witam ponownie
mam problem z zmianą pliku poprzez komendę sed

Kod: Zaznacz cały

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride none
        Require all granted
</Directory>
Chodzi mi o zmianę słowa none na AuthConfig, problem polega na tym ze jest kilka takich wierszy a ja chcę tylko zmienić jeden, i nie jest to pierwszy

Kod: Zaznacz cały

sudo sed -i 's/<Directory /var/www/>        Options Indexes FollowSymLinks        AllowOverride none        Require all granted</Directory>/<Directory /var/www/>        Options Indexes FollowSymLinks        AllowOverride AuthConfig Require all granted</Directory>/' /etc/ssh/sshd_config
chodzi mi o coś w ten deseń, nie wiem jak mam ustawić entery i inne białe znaki, ktoś by mógł mi pomóc? (czyli napisać bo sam nie umiem)
Awatar użytkownika
marcin1982
Moderator
Posty: 1730
Rejestracja: 05 maja 2011, 12:59
Lokalizacja: Zagłębie Dąbrowskie

Re: Edycja plików konfiguracyjnych

Post autor: marcin1982 »

AllowOverride none
No to nie trzeba całości wymieniać. Można N-te wystąpienie danego ciągu podmienić. Zajrzyj:
http://www.nfire.eu/?m=articles&article_id=43

http://www.elpro.pl/dokumentacje/79-sed ... scpierwsza
http://www.elpro.pl/dokumentacje/81-sed ... esctrzecia
https://www.linux.org.pl/PLUG/susebook/ ... sed_7c.pdf

O edycji białych znaków masz na przykład tutaj:
https://grafaz.pl/linux/edytor-sed/
ano
Posty: 38
Rejestracja: 03 sierpnia 2015, 14:18

Re: Edycja plików konfiguracyjnych

Post autor: ano »

chodzi mi o zmianę none na AuthConfig tylko po wystąpieniu <Directory /var/www/>, nie wiem jak to zrobić, przykłady odnoszą się do linii/wierszy nie do bloków tekstowych

thx za linki ale nie potrafię ich wykorzystać

Kod: Zaznacz cały

sudo sed -e 's/AllowOverride None/AllowOverride AuthConfig/3' /etc/apache2/apache2.conf
nie zmienia mi nic

Kod: Zaznacz cały

sudo sed -e 's/AllowOverride None/AllowOverride AuthConfig/1' /etc/apache2/apache2.conf
zmienia mi wszystko
Awatar użytkownika
dedito
Moderator
Posty: 3518
Rejestracja: 18 listopada 2013, 21:07
Lokalizacja: Gliwice

Re: Edycja plików konfiguracyjnych

Post autor: dedito »

sed jest edytorem wierszowym i to co chcesz osiągnąć przełącznikami /1 i /3 dotyczy wystąpienia ciągu w wierszu.
Musiałbyś sobie ograniczyć zakres do konkretnych wierszy lub zdefiniować w których blokach tekstu (np. zdefiniowanych na znacznikach directory) ma nastąpić zastąpienie.
Literatura (pkt 1.3 i 1.4) http://www.elpro.pl/dokumentacje/80-sed ... czescdruga
Załącz źródło /etc/apache2/apache2.conf, bo ciężko coś sprawdzać nie mając pliku na którym operujesz.
Zablokowany