FirewallD i niestandardowy port SSH by docbox

View this thread on steempeak.com
· @docbox · (edited)
$4.36
FirewallD i niestandardowy port SSH
Zabawa z firewallem potrafi być fajna jednak jeden nieostrożny ruch i możemy utracić dostęp do naszej zdalnej maszyny. W tym wpisie przedstawię jak można trochę się wycwanić jeśli usługodawca oferuje nam maszynę ze zmienionym portem SSH i chcemy na niej uruchomić usługę firewalld.

<center>![1.jpg](https://cdn.steemitimages.com/DQmZF9Q4CviXT3PkGeUeHt5Z7CBGmwMgz7m4K4oXf2b45wN/1.jpg)</center>

<center>[Źródło](https://unsplash.com/photos/pgdaAwf6IJg)</center>

Dla niewtajemniczonych SSH to usługa umożliwiająca zdalne podłączenie się do komputera z Linuksem, a firewalld to usługa ściany przeciwogniowej. Jedziemy!

**Wszystkie czynności należy wykonywać jako root.**

Załóżmy że dostaliśmy serwer, który domyślnie posiada zainstalowane SSH jednak działa ono na porcie np 5721. Niby nic strasznego, wystarczy podać ten port podczas połączenia i komunikacja z naszym serwerem zostanie zestawiona. Problem pojawia się jeśli chcemy zainstalować na tym serwerze usługę firewalld. Dlaczego? Zakładamy, że nasz system to CentOS zatem wykonujemy następujące operacje:

```text
yum install firewalld
systemctl start firewalld
```

...i w tym momencie tracimy dostęp do maszyny. Dlaczego? Ponieważ firewalld nie wie że mamy usługę ssh, w dodatku na zmienionym porcie. W momencie utraty połączenia z naszą maszyną musimy ją albo zrestartować albo w drastycznych sytuacjach przeinstalować. Jak zatem zmienić port na wyłączonej usłudze i w jaki sposób zabezpieczyć się przed utratą dostępu do maszyny kiedy popełnimy błąd?

Na samym początku wykonujemy polecenie:

```text
cd /etc/firewalld/zones/
ls
```

Naszym oczom powinien pojawić się taki wynik:

```text
public.xml  public.xml.old
```

Jeśli w tym katalogu znajdują się jeszcze jakieś inne pliki to usuwamy je. Teraz musimy się dowiedzieć jak nazywa się karta sieciowa dzięki której mamy internet. Wpisujemy:

```text
ip a
```

U mnie karta sieciowa nazywa się **ens32**. Wyposażeni w tę wiedzę bierzemy się za edycję pliku **public.xml**. Uruchamiamy zatem edytor tekstu np. nano, usuwamy wszystko co jest w tym pliku w taki sposób, aby zawartość **public.xml** wyglądała następująco:

```text
<?xml version="1.0" encoding="utf-8"?>
<zone>
  <short>Public</short>
  <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted</description>
</zone>
```

Gdy nasz plik wygląda dokładnie tak jak wyżej to możemy się zabrać za dodanie naszej karty sieciowej do strefy public oraz naszego portu, który chcemy otworzyć. Po edycji plik powinien wyglądać tak:

```text
<?xml version="1.0" encoding="utf-8"?>
<zone>
  <short>Public</short>
  <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are a$
  <interface name="ens32"/>
  <port protocol="tcp" port="5721"/>
</zone>

```

```<interface name="ens32"/>``` - dodaje naszą kartę sieciową do strefy public
```<port protocol="tcp" port="5721"/>``` - otwiera port w strefie public

Zapisujemy zmiany. Teraz musimy napisać bardzo prosty skrypt, który w przypadku błędnej konfiguracji firewalla może uratować nam skrórę. Przechodzimy do domowego katalogu użytkownika root...

```text
cd ~
```

...tworzymy plik i nadajemy mu uprawnienia do wykonywania:

```text
touch ratunek.sh
chmod +x ./ratunek.sh
```

Otwieramy edytor i wklejamy do tego pliku następującą zawartość:

```text
#!/bin/bash

systemctl start firewalld

sleep 50

systemctl stop firewalld

```

Co ten skrypt robi? Uruchamia usługę firewalld, następnie czeka 50 sekund i ją wyłącza. Po co? Jeśli coś zepsuliśmy podczas konfiguracji firewalla to albo usługa nam nie "wstanie" albo wstanie i utracimy dostęp do naszej maszyny... ale odzyskamy ją w momencie kiedy powyższy skrypt wyłączy firewalla. Dzięki temu z powrotem będziemy mogli zalogować się do maszyny. Oczywiście wartość 50 możemy zmienić na dowolnie inną. 

Do uruchomienia tego skryptu potrzebujemy jeszcze aplikacji screen. Screen to program który potrafi coś uruchomić i sprawić, że będzie to działać nie jako "w tle". Instalujemy zatem:

```text
yum install screen
```

I teraz odpalamy nasz skrypt:

```text
screen -S ratunek -md <ścieżka do pliku>
```

Po wciśnięciu przycisku Enter jeśli dalej mamy dostęp do maszyny to wpisujemy polecenie:


```text
systemctl status firewalld
```

Gdy otrzymamy taki komunikat:

```text
firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2019-03-15 13:25:19 CET; 48s ago
```

To znaczy, że usługa wstała i działa. Jeśli usługa się nie uruchomi to znaczy, że coś zepsuliśmy podczas konfiguracji. Gdy jednak po uruchomieniu firewalla utracimy dostęp do naszej maszyny to musimy poczekać aż firewall zostanie wyłączony przez skrypt i ponownie otrzymamy władzę nad serwerem. 

# Źródła

Doświadczenia własne.

# Wsparcie

Podobało się? Obserwuj i [wspieraj!](https://docbox12.github.io/)
👍  , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , and 5 others
properties (23)
post_id71,470,285
authordocbox
permlinkfirewalld-i-niestandardowy-port-ssh
categorypolish
json_metadata{"tags":["polish","pl-artykuly","pl-technologia","pl-linux","pl-blog"],"image":["https:\/\/cdn.steemitimages.com\/DQmZF9Q4CviXT3PkGeUeHt5Z7CBGmwMgz7m4K4oXf2b45wN\/1.jpg"],"links":["https:\/\/unsplash.com\/photos\/pgdaAwf6IJg","https:\/\/docbox12.github.io\/"],"app":"steemit\/0.1","format":"markdown"}
created2019-03-14 19:00:57
last_update2019-03-15 12:26:48
depth0
children5
net_rshares6,416,357,202,656
last_payout2019-03-21 19:00:57
cashout_time1969-12-31 23:59:59
total_payout_value3.323 SBD
curator_payout_value1.033 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length5,072
author_reputation6,261,331,052,795
root_title"FirewallD i niestandardowy port SSH"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
author_curate_reward""
vote details (69)
@sarmaticus ·
Nic nie rozumiem, ale i tak lubię to 👍

Posted using [Partiko Android](https://partiko.app/referral/sarmaticus)
👍  
properties (23)
post_id71,470,819
authorsarmaticus
permlinksarmaticus-re-docbox-firewalld-i-niestandardowy-port-ssh-20190314t191737562z
categorypolish
json_metadata{"app":"partiko","client":"android"}
created2019-03-14 19:17:39
last_update2019-03-14 19:17:39
depth1
children0
net_rshares4,506,176,735
last_payout2019-03-21 19:17:39
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length111
author_reputation1,929,992,207,692
root_title"FirewallD i niestandardowy port SSH"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
author_curate_reward""
vote details (1)
@nieidealna.mama ·
!tipuvote hide

Posted using [Partiko Android](https://partiko.app/referral/nieidealna.mama)
👍  
properties (23)
post_id71,472,904
authornieidealna.mama
permlinknieidealna-mama-re-docbox-firewalld-i-niestandardowy-port-ssh-20190314t201908238z
categorypolish
json_metadata{"app":"partiko","client":"android"}
created2019-03-14 20:19:09
last_update2019-03-14 20:19:09
depth1
children0
net_rshares4,458,020,478
last_payout2019-03-21 20:19:09
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length92
author_reputation13,081,774,742,601
root_title"FirewallD i niestandardowy port SSH"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
author_curate_reward""
vote details (1)
@steemitboard ·
Congratulations @docbox! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :

<table><tr><td>https://steemitimages.com/60x70/http://steemitboard.com/@docbox/posts.png?201903142010</td><td>You published more than 60 posts. Your next target is to reach 70 posts.</td></tr>
</table>

<sub>_You can view [your badges on your Steem Board](https://steemitboard.com/@docbox) and compare to others on the [Steem Ranking](http://steemitboard.com/ranking/index.php?name=docbox)_</sub>
<sub>_If you no longer want to receive notifications, reply to this comment with the word_ `STOP`</sub>


To support your work, I also upvoted your post!


**Do not miss the last post from @steemitboard:**
<table><tr><td><a href="https://steemit.com/drugwars/@steemitboard/drugwars-early-adopter"><img src="https://steemitimages.com/64x128/https://cdn.steemitimages.com/DQmYGN7R653u4hDFyq1hM7iuhr2bdAP1v2ApACDNtecJAZ5/image.png"></a></td><td><a href="https://steemit.com/drugwars/@steemitboard/drugwars-early-adopter">Are you a DrugWars early adopter? Benvenuto in famiglia!</a></td></tr></table>

###### [Vote for @Steemitboard as a witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1) to get one more award and increased upvotes!
properties (22)
post_id71,474,634
authorsteemitboard
permlinksteemitboard-notify-docbox-20190314t211356000z
categorypolish
json_metadata{"image":["https:\/\/steemitboard.com\/img\/notify.png"]}
created2019-03-14 21:13:54
last_update2019-03-14 21:13:54
depth1
children0
net_rshares0
last_payout2019-03-21 21:13:54
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length1,308
author_reputation38,705,954,145,809
root_title"FirewallD i niestandardowy port SSH"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
@ciekawski · (edited)
Sprytne rozwiązanie z tym skryptem. Co do odcięcia się tak ogólnie, to wtedy docenia się IPMI w serwerze, jeśli istnieje. :) 
properties (22)
post_id71,495,062
authorciekawski
permlinkre-docbox-firewalld-i-niestandardowy-port-ssh-20190315t063238190z
categorypolish
json_metadata{"community":"busy","app":"busy\/2.5.6","format":"markdown","tags":["polish"],"users":[],"links":[]}
created2019-03-15 06:32:42
last_update2019-03-15 06:34:30
depth1
children0
net_rshares0
last_payout2019-03-22 06:32:42
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length125
author_reputation1,980,006,731,117
root_title"FirewallD i niestandardowy port SSH"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
@alcik ·
Spoko.

Ja na niektórych swoich maszynach, w szczególności takich na których często się bawię firewallem, mam w cronie zadanie, które sprawdza czy na pewno mój niestandardowy port SSH jest otwarty. Jeśli nie, to odpala się konkretne polecenie `iptable`, które ten port otwiera.

Czyli jakby na odwrót, niż u Ciebie, ale lepsze dla mojej paranoi, bo nie wyłączam firewalla ani na chwilę.
👍  
properties (23)
post_id71,510,371
authoralcik
permlinkre-docbox-firewalld-i-niestandardowy-port-ssh-20190315t142058645z
categorypolish
json_metadata{"tags":["polish"],"app":"steemit\/0.1"}
created2019-03-15 14:21:03
last_update2019-03-15 14:21:03
depth1
children0
net_rshares1,394,573,154
last_payout2019-03-22 14:21:03
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length386
author_reputation1,230,268,770,812
root_title"FirewallD i niestandardowy port SSH"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
author_curate_reward""
vote details (1)