To jest moje /etc/sysconfig/iptables
:
Ma dwa porty otwarte 80 apache i 22 dla ssh.
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
W przypadku portu 22 (SSH) chcę się upewnić, że nikt nie może połączyć się z tym portem, z wyjątkiem określonego adresu IP.
przykładowy ip:
1.2.3.4
Proszę zignorować wszelkie niedopatrzenia / obawy dotyczące tego, co się stanie, jeśli zmieni się mój adres IP i nie będę mógł SSH na moim serwerze.
iptables
obsługuje inwersję z operatorem Bang w przypadku, gdy chcesz zrobić celDROP
. Przykład:iptables -I INPUT -p tcp ! -s <permittedIP> -j DROP
DROP
nie są tak naprawdę potrzebne, możesz po prostu ustawić domyślne zasady zapory za pomocąiptables -P INPUT DROP
i pozwolić temu na to. Prawdopodobnie zechcesz również zrobić je jako dodatek, jeśli zrobisz to w ten sposób, w przeciwnym razie cały ruch zostanie złapanyDROP
i nigdy nie osiągnie twojejACCEPT
reguły.iptables -I INPUT 3 -p tcp -s 0.0.0.0/0 --dport 22 -j DROP
aiptables -I INPUT 3 -p udp -s 0.0.0.0/0 --dport 53 -j DROP
„3” po INPUT oznacza wstaw jako regułę INPUT nr 3 (zakładając, że wstawiasz dwa ACCEPTS, w przeciwnym razie, jeśli tylko jeden ACCEPT, to użyj „2” dla INPUT.-I
wstawi nowe reguły iptables na górze. W związku z tym możesz skończyć z upuszczaniem przed pozwoleniem. Sugeruję użycie-A
zamiast tegoChociaż zalecam używanie kluczy SSH, dam ci wyjaśnienie.
Nie musisz używać tabel IP do tego, co próbujesz osiągnąć, istnieje wiele sposobów. Oto sposób IPtables:
[YOUR_HOME_IP]
= Twój domowy adres IP (całkiem proste)[SSH_PORT]
= Port, na którym uruchomiono SSH (domyślnie 22)Dzięki temu nikt poza twoim adresem IP nie będzie mógł zalogować się do SSH.
Istnieje inny sposób, polegający na dodaniu czegoś do
sshd_config
.Dodaj następujące:
Pozwala to zalogować się do SSH jako
root
użytkownik z twojego adresu IP bez pytania o hasło.Należy pamiętać, że cronjob z
może być mądry, abyś nie został zablokowany na serwerze za pomocą SSH (cronjob zresetuje IPtables, aby uzyskać dostęp ponownie). Jeśli nadal masz dostęp, możesz usunąć cronjob i ponownie skonfigurować tabele IP.
źródło
iptables
? Jakaś forma dostępu poza pasmem jest zwykle stosowaną metodą.knockd
jest inny.at
robi to.Without-Password
oznacza, że uwierzytelnianie za pomocą hasła jest niedozwolone, więc zamiast tego musisz użyć uwierzytelniania za pomocą klucza SSH. To rzeczywiście trochę niejasne nazewnictwo dla tej metody uwierzytelniania. Ale to nie znaczy, że nie potrzebujesz hasła, aby zalogować się jako root. Niemniej jednak bezpieczniejszą metodą jest ustawieniePermitRootLogin no
i użycie innego konta sudo do logowania, ponieważ root jest częstym celemInne odpowiedzi wykorzystują
iptables -I
w swoich przykładach, co często nie jest tym, czego powinieneś użyć.iptables wykona pierwszą pasującą regułę, więc kolejność reguł jest bardzo ważna.
-I
to polecenie „wstaw” i powinno być używane z parametrem indeksu, aby określić, gdzie na liście należy dana reguła.-A
to polecenie „append”, które doda regułę na końcu listy.W niektórych rozproszeniach (być może wszystkich) użycie
-I
bez parametru indeksu doda regułę do indeksu 1, sprawiając, że zostanie sprawdzona pierwsza reguła. W tym scenariuszu, jeśli ostatnim uruchomionym poleceniem jestiptables -I INPUT -s tcp 0.0.0.0/0 -j DROP
iptables, porzuci cały ruch, niezależnie od tego, czy masz jakieśACCEPT
reguły w dalszej części łańcucha.Oto przykład konfiguracji reguły, która zezwala na SSH tylko z jednego adresu IP:
Zaczynając bez reguł:
Dodaj nową zasadę „zezwalaj na SSH od 1.2.3.4”:
#>iptables -A INPUT -p tcp -s 1.2.3.4 --dport 22 -j ACCEPT
Blokuj SSH od wszystkich innych adresów IP:
#>iptables -A INPUT -p tcp -s 0.0.0.0/0 --dport 22 -j DROP
Teraz Twój łańcuch INPUT będzie wyglądał następująco:
Później, jeśli chcesz dodać do białej listy drugi adres IP, możesz użyć
-I
parametru, aby umieścić go przed regułą czarnej listy.#>iptables -I INPUT 2 -p tcp -s 4.3.2.1 --dport 22 -j ACCEPT
Zauważ, że użycie
-I INPUT 2
dodało nową regułę jako regułę numer 2 i podbiło regułę DROP do liczby 3.źródło