iptables configurációs probléma

Sziasztok!

Most rakok össze egy cloud szervert, a probléma az, hogy az iptablest addig configurltam amíg ugyan kívülről sem lehet ping -ni, de már a belső ping-ek sem működnek ... és a yum install sem működik, mert nem tudja feloldalni a megadott linkeket. Az szerintem nem lehet gond hogy az ssh -ra a 2222 porton csatlakozom nem a 22 porton.

Bemásolom a configokat

iptables configot:

# Generated by iptables-save v1.4.21 on Thu Oct 10 12:16:05 2019
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP
-A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
-A INPUT -i lo -j ACCEPT
-A INPUT -s 127.0.0.0/24 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -s "ide saját gép van beírva"/32 -p tcp -m tcp --dport 2222 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -s 151.0.83.192/32 -p tcp -m tcp --dport 2222 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -s 127.0.0.0/24 -p tcp -m tcp --dport 2222 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 25 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 3306 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 9000 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 25 -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 3306 -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 9000 -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
COMMIT
# Completed on Thu Oct 10 12:16:05 2019
# Generated by iptables-save v1.4.21 on Thu Oct 10 12:16:05 2019
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
COMMIT
# Completed on Thu Oct 10 12:16:05 2019
# Generated by iptables-save v1.4.21 on Thu Oct 10 12:16:05 2019
*mangle
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [1:152]
:POSTROUTING ACCEPT [1:152]
COMMIT
# Completed on Thu Oct 10 12:16:05 2019

ip6tables:

# Generated by ip6tables-save v1.4.21 on Thu Oct 10 12:16:06 2019
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
:ICMPFLOOD - [0:0]
:SSHBRUTE - [0:0]
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP
-A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
-A INPUT -i lo -j ACCEPT
-A INPUT -p ipv6-icmp -m icmp6 --icmpv6-type 1 -j ACCEPT
-A INPUT -p ipv6-icmp -m icmp6 --icmpv6-type 2 -j ACCEPT
-A INPUT -p ipv6-icmp -m icmp6 --icmpv6-type 3 -j ACCEPT
-A INPUT -p ipv6-icmp -m icmp6 --icmpv6-type 4 -j ACCEPT
-A INPUT -p ipv6-icmp -m icmp6 --icmpv6-type 133 -j ACCEPT
-A INPUT -p ipv6-icmp -m icmp6 --icmpv6-type 134 -j ACCEPT
-A INPUT -p ipv6-icmp -m icmp6 --icmpv6-type 135 -j ACCEPT
-A INPUT -p ipv6-icmp -m icmp6 --icmpv6-type 136 -j ACCEPT
-A INPUT -p ipv6-icmp -m icmp6 --icmpv6-type 137 -j ACCEPT
-A INPUT -p ipv6-icmp -m icmp6 --icmpv6-type 141 -j ACCEPT
-A INPUT -p ipv6-icmp -m icmp6 --icmpv6-type 142 -j ACCEPT
-A INPUT -s fe80::/10 -p ipv6-icmp -m icmp6 --icmpv6-type 130 -j ACCEPT
-A INPUT -s fe80::/10 -p ipv6-icmp -m icmp6 --icmpv6-type 131 -j ACCEPT
-A INPUT -s fe80::/10 -p ipv6-icmp -m icmp6 --icmpv6-type 132 -j ACCEPT
-A INPUT -s fe80::/10 -p ipv6-icmp -m icmp6 --icmpv6-type 143 -j ACCEPT
-A INPUT -p ipv6-icmp -m icmp6 --icmpv6-type 148 -j ACCEPT
-A INPUT -p ipv6-icmp -m icmp6 --icmpv6-type 149 -j ACCEPT
-A INPUT -s fe80::/10 -p ipv6-icmp -m icmp6 --icmpv6-type 151 -j ACCEPT
-A INPUT -s fe80::/10 -p ipv6-icmp -m icmp6 --icmpv6-type 152 -j ACCEPT
-A INPUT -s fe80::/10 -p ipv6-icmp -m icmp6 --icmpv6-type 153 -j ACCEPT
-A INPUT -p ipv6-icmp -m icmp6 --icmpv6-type 128 -j ICMPFLOOD
-A INPUT -s fe80::/10 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 2222 --tcp-flags FIN,SYN,RST,ACK SYN -m conntrack --ctstate NEW -j SSHBRUTE
-A INPUT -p tcp -m tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 9000 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -m conntrack --ctstate INVALID -j DROP
-A INPUT -s ::1/128 ! -i lo -j DROP
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 25 -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 3306 -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A ICMPFLOOD -m recent --set --name ICMP --mask ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff --rsource
-A ICMPFLOOD -m recent --update --seconds 1 --hitcount 6 --rttl --name ICMP --mask ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff --rsource -m limit --limit 1/sec --limit-burst 1 -j LOG --log-prefix "ip6tables[ICMP-flood]: "
-A ICMPFLOOD -m recent --update --seconds 1 --hitcount 6 --rttl --name ICMP --mask ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff --rsource -j DROP
-A ICMPFLOOD -j ACCEPT
-A SSHBRUTE -m recent --set --name SSH --mask ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff --rsource
-A SSHBRUTE -m recent --update --seconds 300 --hitcount 10 --name SSH --mask ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff --rsource -m limit --limit 1/sec --limit-burst 100 -j LOG --log-prefix "ip6tables[SSH-brute]: "
-A SSHBRUTE -m recent --update --seconds 300 --hitcount 10 --name SSH --mask ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff --rsource -j DROP
-A SSHBRUTE -j ACCEPT
COMMIT
# Completed on Thu Oct 10 12:16:06 2019
# Generated by ip6tables-save v1.4.21 on Thu Oct 10 12:16:06 2019
*mangle
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
COMMIT
# Completed on Thu Oct 10 12:16:06 2019
# Generated by ip6tables-save v1.4.21 on Thu Oct 10 12:16:06 2019
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
COMMIT
# Completed on Thu Oct 10 12:16:06 2019

iptables-config:

# Load additional iptables modules (nat helpers)
# Default: -none-
# Space separated list of nat helpers (e.g. 'ip_nat_ftp ip_nat_irc'), which
# are loaded after the firewall rules are applied. Options for the helpers are
# stored in /etc/modprobe.conf.
IPTABLES_MODULES=""

# Save current firewall rules on stop.
# Value: yes|no, default: no
# Saves all firewall rules to /etc/sysconfig/iptables if firewall gets stopped
# (e.g. on system shutdown).
IPTABLES_SAVE_ON_STOP="no"

# Save current firewall rules on restart.
# Value: yes|no, default: no
# Saves all firewall rules to /etc/sysconfig/iptables if firewall gets
# restarted.
IPTABLES_SAVE_ON_RESTART="no"

# Save (and restore) rule and chain counter.
# Value: yes|no, default: no
# Save counters for rules and chains to /etc/sysconfig/iptables if
# 'service iptables save' is called or on stop or restart if SAVE_ON_STOP or
# SAVE_ON_RESTART is enabled.
IPTABLES_SAVE_COUNTER="no"

# Numeric status output
# Value: yes|no, default: yes
# Print IP addresses and port numbers in numeric format in the status output.
IPTABLES_STATUS_NUMERIC="yes"

# Verbose status output
# Value: yes|no, default: yes
# Print info about the number of packets and bytes plus the "input-" and
# "outputdevice" in the status output.
IPTABLES_STATUS_VERBOSE="no"

# Status output with numbered lines
# Value: yes|no, default: yes
# Print a counter/number for every rule in the status output.
IPTABLES_STATUS_LINENUMBERS="yes"

# Reload sysctl settings on start and restart
# Default: -none-
# Space separated list of sysctl items which are to be reloaded on start.
# List items will be matched by fgrep.
#IPTABLES_SYSCTL_LOAD_LIST=".nf_conntrack .bridge-nf"

# Set wait option for iptables-restore calls in seconds
# Default: 600
# Set to 0 to deactivate the wait.
#IPTABLES_RESTORE_WAIT=600

# Set wait interval option for iptables-restore calls in microseconds
# Default: 1000000
# Set to 100000 to try to get the lock every 100000 microseconds, 10 times a
# second.
# Only usable with IPTABLES_RESTORE_WAIT > 0
#IPTABLES_RESTORE_WAIT_INTERVAL=1000000

netsat:

netstat -tulpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1254/master
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 1308/nginx: master
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 825/php-fpm: master
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 1143/mysqld
tcp 0 0 0.0.0.0:2222 0.0.0.0:* LISTEN 813/sshd
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1308/nginx: master
tcp6 0 0 ::1:25 :::* LISTEN 1254/master
tcp6 0 0 :::443 :::* LISTEN 1308/nginx: master
tcp6 0 0 :::2222 :::* LISTEN 813/sshd
tcp6 0 0 :::80 :::* LISTEN 1308/nginx: master
udp 0 0 127.0.0.1:323 0.0.0.0:* 555/chronyd
udp6 0 0 ::1:323 :::* 555/

Köszönöm előre is a segítséget.

Hozzászólások

Az output láncon engedélyezd első körben a DNS kifelé (udp/tcp 53), IPv4-en az icmp-t ha jól látom azonnal dobod.

BlackY
--
"en is amikor bejovok dolgozni, nem egy pc-t [..] kapcsolok be, hanem a mainframe-et..." (sj)

Köszönöm szépen, megpróbálom. Tudom hogy eléggé bug-s amit "sikerült" összraknom.

__________________________________________________________________________________________________________________________
Az optimizmus nem azt jelenti, hogy valaki nem látja a problémákat, hanem hogy hisz abban, hogy mindig létezik egy megoldás.

Szia!

Próbáld inkább leírni mit szeretnél iptablessel csinálni (mik az elképzeléseid), és megpróbáljuk összedobni, mert sajnos amit fel raktál több sebből vérzik.

Szia!

Köszönöm a válaszokat.

Igen tudom hogy nem ideális ahogy össze lett rakva. Azt szeretném ami kritikus, hogy ne lehessen floodolni sehogyan sem, és kívülről pingelni sem lehessen. A kulcsos belépést megvalósítottam már és az ssh portot is átraktam a 2222 portra. Valamint kívülről csak azokat tcp udp portokat lehessen elérni ami feltétlenül szükséges.

Ha kell több infó kérlek jelezd, és köszönöm.

__________________________________________________________________________________________________________________________________________
Az optimizmus nem azt jelenti, hogy valaki nem látja a problémákat, hanem hogy hisz abban, hogy mindig létezik egy megoldás.

Ezek nem bonyolult igenyek, nem akarsz erre egy kenyelmesebb frontend-et hasznalni? En mindenhol Linuxos vasamon Shorewall-t hasznalok (100+ production szerver) es pillanatok alatt, kenyelmesen konfigolhato, nem utolso sorban attekintheto konfig-fileokkal, csak ajanlani tudom. Amit szeretnel, nagyjabol 2-3 perc osszedobni benne.

Köszönöm, rendben, de most még a yum csomagkezelőm sem müködik. Akkor kezdetnek töröljem az iptables szabályokat és "disable" tiltsam az iptablest? És utána töltsem le a shorewall csomagot, konfigolásban segítenél? Illetve ha van még pár javaslatod, ómit lehetne még javítani a fent felsorolt opciókon kívül azt megköszönném.

_________________________________________________________________________________________________________________________________________

Az optimizmus nem azt jelenti, hogy valaki nem látja a problémákat, hanem hogy hisz abban, hogy mindig létezik egy megoldás.

Igen, toltsd le a Shorewall-t, majd konfigolas utan erdemes tiltani a most hasznalt iptables implementaciot (ha yum, akkor gondolom CentOS-t hasznalsz). Torolni szuksegtelen a szabalyokat, a Shorewall betoltese ugyis kiuti azokat. Tobb javaslatom is lenne, ha gondolod, keress meg email-ben, ha szeretned, be is konfigolom neked a Shorewall-t.

Csak mivel nem tudja feloldani a linkeket faild re fut illetve most már más a hiba.

Másolom:

root@devall /etc/sysconfig# ping google.com
ping: google.com: Name or service not known
root@devall /etc/sysconfig# yum update
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stock error was
14: curl#6 - "Could not resolve host: mirrorlist.centos.org; Unknown error"
Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=centosplus&inf… error was
14: curl#6 - "Could not resolve host: mirrorlist.centos.org; Unknown error"

One of the configured repositories failed (Unknown),
and yum doesn't have enough cached data to continue. At this point the only
safe thing yum can do is fail. There are a few ways to work "fix" this:

1. Contact the upstream for the repository and get them to fix the problem.

2. Reconfigure the baseurl/etc. for the repository, to point to a working
upstream. This is most often useful if you are using a newer
distribution release than is supported by the repository (and the
packages for the previous distribution release still work).

3. Run the command with the repository temporarily disabled
yum --disablerepo= ...

4. Disable the repository permanently, so yum won't use it by default. Yum
will then just ignore the repository until you permanently enable it
again or use --enablerepo for temporary usage:

yum-config-manager --disable
or
subscription-manager repos --disable=

5. Configure the failing repository to be skipped, if it is unavailable.
Note that yum will try to contact the repo. when it runs most commands,
so will have to try and fail each time (and thus. yum will be be much
slower). If it is a very temporary problem though, this is often a nice
compromise:

yum-config-manager --save --setopt=.skip_if_unavailable=true

Cannot retrieve metalink for repository: epel/x86_64. Please verify its path and try again
root@devall /etc/sysconfig#

így egyetlen egy csomagot sem tudok letölteni.:-(

Köszönöm írtam.
________________________________________________________________________________________________________________________________
Az optimizmus nem azt jelenti, hogy valaki nem látja a problémákat, hanem hogy hisz abban, hogy mindig létezik egy megoldás.

Egyik gépen én is kipróbáltam a shorewallt, aztán két dist-upgrade során kétszer állt fejre :) Pedig halál egyszerű konfiggal estem neki. Az első esetben kijavítottam, a másodiknál már nem vártam meg, kihajítottam, és áttértem nftablesre :) Ott legalább nem kell külön ipv6-tal foglalkozni, egyben vannak a szabályok.

-A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP
Ennel mire gondoltal? A feltetel elso fele az az hogy "ez nem egy uj befele iranyulo tcp-kapcsolat", csak statless modon megfogalmazva a tcp bit flag-ekkel. A masodik fele meg az hogy "ez egy uj befele iranyulo tcp kapcsolat". A ketto meg sosem lehet egyszerre igaz.

Köszönöm a válaszokat és a javaslatokat, valoban az iptables kicsit már nehezkes, de "kaptam" segitseget és a javaslatok szerint nem iptablest fogok hasznalni.

___________________________________________________________________________________________________________________________________
Az optimizmus nem azt jelenti, hogy valaki nem látja a problémákat, hanem hogy hisz abban, hogy mindig létezik egy megoldás.