Soru CentOS Iptables'in kilitlenmeden nasıl yapılandırılacağı


Bu güvenlik duvarı kurallarını uygulamaya çalışıyorum:

/sbin/iptables -F
/sbin/iptables -X
/sbin/iptables -Z
/sbin/iptables -P INPUT DROP
/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -A INPUT -p tcp ! --syn -j REJECT --reject-with tcp-reset
/sbin/iptables -A INPUT -m state --state INVALID -j DROP
/sbin/iptables -P OUTPUT DROP
/sbin/iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp ! --syn -j REJECT --reject-with tcp-reset
/sbin/iptables -A OUTPUT -m state --state INVALID -j DROP
/sbin/iptables -P FORWARD DROP
/sbin/iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -A FORWARD -p tcp ! --syn -j REJECT --reject-with tcp-reset
/sbin/iptables -A FORWARD -m state --state INVALID -j DROP
/sbin/iptables -A INPUT -i lo -j ACCEPT
/sbin/iptables -A OUTPUT -o lo -j ACCEPT
/sbin/iptables -A FORWARD -i lo -o lo -j ACCEPT
/sbin/iptables -t mangle -F
/sbin/iptables -t mangle -X
/sbin/iptables -t mangle -Z
/sbin/iptables -t mangle -P PREROUTING ACCEPT
/sbin/iptables -t mangle -P OUTPUT ACCEPT
/sbin/iptables -t mangle -P INPUT ACCEPT
/sbin/iptables -t mangle -P FORWARD ACCEPT
/sbin/iptables -t mangle -P POSTROUTING ACCEPT
/sbin/iptables -t nat -F
/sbin/iptables -t nat -X
/sbin/iptables -t nat -Z
/sbin/iptables -t nat -P PREROUTING ACCEPT
/sbin/iptables -t nat -P OUTPUT ACCEPT
/sbin/iptables -t nat -P POSTROUTING ACCEPT

/sbin/iptables -A INPUT -p tcp --dport 12443 -j DROP

/sbin/iptables -A INPUT -p tcp --dport 11443 -j DROP
/sbin/iptables -A INPUT -p tcp --dport 11444 -j DROP

/sbin/iptables -A INPUT -p tcp --dport 8447 -j DROP

/sbin/iptables -A INPUT -p tcp --dport 8443 -j DROP
/sbin/iptables -A INPUT -p tcp --dport 8880 -j DROP

/sbin/iptables -A INPUT -p tcp --dport 80 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 443 -j ACCEPT

/sbin/iptables -A INPUT -p tcp --dport 21 -j DROP

/sbin/iptables -A INPUT -p tcp --dport 22 -j DROP

/sbin/iptables -A INPUT -p tcp --dport 587 -j ACCEPT

/sbin/iptables -A INPUT -p tcp --dport 25 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 465 -j ACCEPT

/sbin/iptables -A INPUT -p tcp --dport 110 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 995 -j ACCEPT

/sbin/iptables -A INPUT -p tcp --dport 143 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 993 -j ACCEPT

/sbin/iptables -A INPUT -p tcp --dport 106 -j DROP

/sbin/iptables -A INPUT -p tcp --dport 3306 -j DROP

/sbin/iptables -A INPUT -p tcp --dport 5432 -j DROP

/sbin/iptables -A INPUT -p tcp --dport 9008 -j DROP
/sbin/iptables -A INPUT -p tcp --dport 9080 -j DROP

/sbin/iptables -A INPUT -p udp --dport 137 -j DROP
/sbin/iptables -A INPUT -p udp --dport 138 -j DROP
/sbin/iptables -A INPUT -p tcp --dport 139 -j DROP
/sbin/iptables -A INPUT -p tcp --dport 445 -j DROP

/sbin/iptables -A INPUT -p udp --dport 1194 -j DROP




/sbin/iptables -A INPUT -p tcp --dport 26 -j ACCEPT

/sbin/iptables -A INPUT -p tcp --dport 53 -j ACCEPT
/sbin/iptables -A INPUT -p udp --dport 53 -j ACCEPT

/sbin/iptables -A INPUT -p tcp --dport 2095 -j ACCEPT

/sbin/iptables -A INPUT -p tcp --dport 2096 -j ACCEPT

/sbin/iptables -A INPUT -p udp --dport 465 -j ACCEPT

/sbin/iptables -A OUTPUT -p tcp --dport 25 -j ACCEPT

/sbin/iptables -A OUTPUT -p tcp --dport 26 -j ACCEPT

/sbin/iptables -A OUTPUT -p tcp --dport 37 -j ACCEPT

/sbin/iptables -A OUTPUT -p tcp --dport 43 -j ACCEPT

/sbin/iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT

/sbin/iptables -A OUTPUT -p tcp --dport 113 -j ACCEPT

/sbin/iptables -A OUTPUT -p tcp --dport 465 -j ACCEPT

/sbin/iptables -A OUTPUT -p tcp --dport 873 -j ACCEPT

/sbin/iptables -A OUTPUT -p tcp --dport 2089 -j ACCEPT

/sbin/iptables -A OUTPUT -p udp --dport 53 -j ACCEPT

/sbin/iptables -A OUTPUT -p udp --dport 465 -j ACCEPT

/sbin/iptables -A OUTPUT -p udp --dport 873 -j ACCEPT




/sbin/iptables -A INPUT -p icmp --icmp-type 8/0 -j DROP

/sbin/iptables -A INPUT -j DROP

/sbin/iptables -A OUTPUT -j ACCEPT

/sbin/iptables -A FORWARD -j DROP

Ancak, onları kopyalayıp komut satırına yapıştırdığımda, sunucudan kilitlenirim (tabiki kurallar çizgiye göre uygulandığından). Bu kuralları hep aynı anda nasıl uygularım / sbin / iptables -P INPUT DROP önce yürütülür, ancak kabuk erişimine izin veren satır gelir (IP'imi korumak için bunu kaldırdım).


5
2017-08-13 16:10


Menşei


Iptables ile ilgili deneyimlerim sınırlı olduğu için, kuralların kendisiyle ve / veya çalışacaklarına dair yorum yapmayacağım. Ancak, son zamanlarda kendimi sunucudan kilitlediğim benzer bir sorun yaşadım. Şu anda aldığım önerilerinden biri: iptabels'i durdurmak için her 5 dakikada bir cronjob yapmak (/etc/init.d/iptables stop). Kendini kilitlersen, 5 dakika sonra geri döneceksin. Bunun ipuçlarını durduracağından, sunucunuzu onu korumaya çalıştığınız her şey için açacağınız için ideal olduğunu söylemiyorum. - Jan Henckens


Cevaplar:


Onları terminale yapıştırarak çalıştırmaya çalışmam. Onları kazıp tek bir komut dosyasından çalıştırırdım (sadece onlarla yapıştırılmış bir bash betiği olabilirdi).

Orada sahip olduğunuz veri miktarının hemen yanında, bir ssh terminaline yapıştırmanın bazı veri kaybına yol açtığı durumlar oldu (birkaç satırda olduğu gibi). Böyle bir şeyde, bu gerçekten iyi bir fikir değil. Açıkçası, bunun gerçekleşmesi ihtimali bağlantı kalitesi ve bant genişliğine bağlıdır.

Ayrıca iptables ile oynamaktan korkuyorsanız ve korkuyorsanız, kendinizi kilitleyebilirsiniz, iptables'leri temizlemek için bir betik kurun (ya da mutlu çalıştığınız bir şeye ayarladığınızda) ve daha sonra çalıştırmak için bir cron işi ayarlayın ya da kuralları uygularken başka bir pencere açılır ve sadece "100 && ./cleariptables" veya bunun etkileyeceği bir şey yaparsınız. Yeni kurallar başarılı olduğunda ve hala giriş yapabileceğinizden emin olduktan sonra Ctrl + c. Her zaman yeni bir ssh bağlantısı kurmayı denemiş olabilirsiniz, yeni ssh bağlantılarını engellemiş olabilirsiniz ve mevcut olan sadece zaten kurulu olduğu gibi çalışıyor olabilir.


4
2017-08-13 17:23





Taşınmayı dene /sbin/iptables -P INPUT DROP dosyanın sonuna. Bu işe yaramazsa, kuralları bir dosyaya kaydedin ve iptables-restore komutunu kullanın.

sudo iptables-restore </file/you/created

Bunu yaptıktan sonra, kurallarınızı / etc / sysconfig / iptables konumuna kaydedin

sudo /sbin/service iptables save

böylece sisteminiz başladığında yüklenir.

İptables-restore çalışmıyorsa, kuralları el ile /etc/sysconfig/iptables ve servisi yeniden başlatmak işe yarayacak

sudo /sbin/service iptables restart

İptables-restore dosyasına giriş dosyası

*filter
-F
-X
-Z
-P INPUT DROP
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p tcp ! --syn -j REJECT --reject-with tcp-reset
-A INPUT -m state --state INVALID -j DROP
# Add the rest of your INPUT/OUTPUT/FORWARD rules before the commit
COMMIT
*mangle 
-X
-F
-Z
-P PREROUTING ACCEPT
#Add the rest of the mangle rules
COMMIT
*nat
-X
#add the rest of your nat rules
COMMIT

3
2017-08-13 20:36



Yukarıdaki kuralları bir dosyaya kopyaladım ancak şu mesajı alıyorum: iptables-restore: satır 1 başarısız oldu - cappuccino
Cevapın sonunda dosya formatını verdim. Bütün partiyi bir dosyaya kopyaladıysanız, dosyanın başına #! / Bin / bash ekleyin, kaydedin, çalıştırın ve çalıştırın. - Iain
@Iain iptables-restore varsayılan olarak -F ve -X gerçekleştirir. Politikalar özel bir yapı kullanılarak belirlenir. İptables-kaydet çıkışını kullanmayı dene - pepoluan
@pepoluan: Yukarıdaki format da çalışır ve iptables-save tarafından kullanılan formattan daha kolay tarif edilir. - Iain


Kilitlenmemenin bir başka yolu da yeni kurallarınızı yüklemek, x saniye süreyle uykuya dalmak ve uyku sırasında test etmek, ardından yeni kurallarınızın çalışmadığı durumlarda işe yarayan eski kuralları yüklemektir.

# load_new_rules; sleep 120; load_old_rules

Uzak konsol erişimine sahip olmadığınız uzak bir güvenlik duvarında çalışırken kendinizi kilitlememenin iyi bir yolu.


2
2017-08-13 19:33





üzerinde bir diğeri linux kutusu, konsol üzerinden tüm iptables kural ve politikalarını yapılandırın. İptables-save kullanarak bir dosyaya kaydedin. Dosyayı uzak makinenize kopyalayın ve kullanarak uygulayın:

iptables-apply -t 300 name-of-file

300 zaman aşımıdır. iptables-apply, dosyadaki tüm kuralları uygular, onayınızı bekler ve 300 saniyede bir onay yoksa, önceki kural ve ilkeleri geri yükler.


1
2018-01-12 17:26



iptables-apply bir CentOS sistemine yerel değildir. - Iain
neyse ki iptables-apply bağımsız bir Python betiğidir. /usr/sbin/iptables-apply bir Debian sisteminde. Alternatif olarak, iptables kaynağından alın: git.netfilter.org/iptables/tree/iptables/iptables-apply - Alastair Irvine
Seçici olabilmek için Jut - aslında bir bash betiği ve / bin / tempfile binary'sinin eksikliğinden dolayı CentOS'ta çalışmıyor gibi görünüyor. Bunu iptables-apply komut dosyasında "mktemp" ile değiştirmeyi denedim, fakat onların çalışması işe yaramayacak kadar farklı görünüyordu ... - ticktockhouse


İşte yaptığım şey:

1.) iptables kurallarını "hizmet iptables kaydet" kaydedilmez, böylece kendinizi engellerseniz, yeniden başlatma ve sorunu çözme şansınız olmadan yeniden başlatma aynı kötü kuralları yüklemez. Bu, elbette, her yeniden başlatma sonrasında kurallarınızı manuel olarak yüklemenizi gerektirir. Alternatif bir yaklaşım devam etmek ve kuralları kaydetmek, ancak sistem başlangıcında başlamak için iptables hizmetini ayarlamamak ve her yeniden başlatmadan sonra hizmeti manuel olarak başlatmak olacaktır.

2.) Kuralların en üst kısmına yakın kurallar ekleyin ve her zaman yarı güvenlikli (eviniz / ofisiniz) birkaç ana bilgisayar aralığından bağlantı kabul edin, böylece eklenen aşağıdaki kurallar sizi asla engellemeyecektir:

iptables -A INPUT -s 83.225.0.0/16 -j ACCEPT
iptables -A INPUT -s 75.102.0.0/16 -j ACCEPT
iptables -A INPUT -s 37.122.0.0/16 -j ACCEPT

1