서버에 대한 iptables 규칙 검토

서버에 대한 iptables 규칙 검토

이 상자는 Ubuntu 14.04b를 실행 중이며 거의 구성되지 않았습니다.
방화벽은 최소한 챙겨가는 게 좋겠다고 생각했고, iptables를 선택했습니다.

IMHO, 인터페이스 사전 시작 시 iptables 생성 파일에서 다음 /etc/network/interfaces과 같은 것을 사용하여 규칙을 로드하는 것이 더 나을 것입니다
pre-up iptables-restore < /etc/iptables.rules
( iptables-save뭔가 변경해야 하는 경우 포스트다운에서 사용).

그러나 내 장비를 연마하는 두 가지 사항이 있습니다.

  • 첫째, 내 파일이 작업을 올바르게 완료할 수 있을지 확신할 수 없습니다(아래 참조).
  • 둘째, 지난번에 iptables를 사용했을 때 IPv6는 전혀 문제가 되지 않았습니다! 이에 대한 ip6tables가 있다는 것을 발견했지만 두 가지 모두에 대해 동일한 규칙 파일을 사용할 수 있는지 판단할 수 없습니다... 그러면 좋겠지만 슬프게도 사실이라고 믿기에는 너무 쉬운 것 같습니다.

다음은 내 규칙 파일입니다. 이상하거나 비논리적이거나 불필요한 것을 지적해 줄 수 있는 친절한 사람이 있습니까?

보시다시피 상자에는 Apache가 있습니다.웹 서버(도메인 이름이 있으므로DNS통과해야 함),MySQL 서버(원격 액세스 가능)SFTP 서버(FTP는 이제 꽤 오래된 것 같습니다)메일서버(접미사, 아마도 majordomo가 있는 메일링 리스트가 아직 존재한다면) 그리고반드시 접근 가능해야 함~을 통해SSH(이 서버에 대한 SSH 액세스를 잃을 여유가 없습니다. 콘솔 없이 400km 떨어진 곳에 있는 전용 서버입니다.)

# Generated by iptables-save v1.4.21 on Wed Sep 28 15:08:21 2016
*raw
:PREROUTING ACCEPT [30261051:8737714396]
:OUTPUT ACCEPT [28933128:15186346449]
COMMIT
# Completed on Wed Sep 28 15:08:21 2016
# Generated by iptables-save v1.4.21 on Wed Sep 28 15:08:21 2016
*nat
:PREROUTING ACCEPT [8040256:1000464908]
:INPUT ACCEPT [8040256:1000464908]
:OUTPUT ACCEPT [357964:47801350]
:POSTROUTING ACCEPT [357964:47801350]
COMMIT
# Completed on Wed Sep 28 15:08:21 2016
# Generated by iptables-save v1.4.21 on Wed Sep 28 15:08:21 2016
*mangle
:PREROUTING ACCEPT [30261051:8737714396]
:INPUT ACCEPT [30261051:8737714396]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [28933128:15186346449]
:POSTROUTING ACCEPT [28933128:15186346449]
COMMIT
# Completed on Wed Sep 28 15:08:21 2016
# Generated by iptables-save v1.4.21 on Wed Sep 28 15:08:21 2016
*filter
:INPUT ACCEPT [10752:1386943]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [18529:5801236]
# Do not kill established connections
-A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

#INPUT rules
#SSH & SFTP
-A INPUT -i eth0 -p tcp -m tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
#HTTP server
-A INPUT -i eth0 -p tcp -m tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
#HTTPS
-A INPUT -i eth0 -p tcp -m tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
#Echo
-A INPUT -p icmp -m icmp --icmp-type 0 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
#DNS
-A INPUT -i eth0 -p udp -m udp --sport 53 -j ACCEPT
#SMTP
-A INPUT -i eth0 -p tcp -m tcp --dport 25 -m state --state NEW,ESTABLISHED -j ACCEPT
#SQL in
-A INPUT -i eth0 -p tcp -m tcp --dport 3306 -m state --state NEW,ESTABLISHED -j ACCEPT
#IMAP
-A INPUT -i eth0 -p tcp -m tcp --dport 143 -m state --state NEW,ESTABLISHED -j ACCEPT
#IMAP sur SSL
-A INPUT -i eth0 -p tcp -m tcp --dport 993 -m state --state NEW,ESTABLISHED -j ACCEPT
#POP3
-A INPUT -i eth0 -p tcp -m tcp --dport 110 -m state --state NEW,ESTABLISHED -j ACCEPT
#POP3 sur SSL
-A INPUT -i eth0 -p tcp -m tcp --dport 995 -m state --state NEW,ESTABLISHED -j ACCEPT
#Limit HTTP flood
-A INPUT -p tcp -m tcp --dport 80 -m limit --limit 25/min --limit-burst 100 -j ACCEPT
#Loopback
-A INPUT -i lo -j ACCEPT

#OUTPUTS
#SSH & SFTP
-A OUTPUT -o eth0 -p tcp -m tcp --sport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
#HTTP
-A OUTPUT -o eth0 -p tcp -m tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
#HTTPS
-A OUTPUT -o eth0 -p tcp -m tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT
#echo
-A OUTPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A OUTPUT -p icmp -m icmp --icmp-type 0 -j ACCEPT
#DNS
-A OUTPUT -o eth0 -p udp -m udp --dport 53 -j ACCEPT
#SMTP
-A OUTPUT -o eth0 -p tcp -m tcp --sport 25 -m state --state ESTABLISHED -j ACCEPT
#SQL out
-A OUTPUT -o eth0 -p tcp -m tcp --sport 3306 -m state --state ESTABLISHED -j ACCEPT
#IMAP
-A OUTPUT -o eth0 -p tcp -m tcp --sport 143 -m state --state ESTABLISHED -j ACCEPT
#IMAP sur SSL
-A OUTPUT -o eth0 -p tcp -m tcp --sport 993 -m state --state ESTABLISHED -j ACCEPT
#POP3
-A OUTPUT -o eth0 -p tcp -m tcp --sport 110 -m state --state ESTABLISHED -j ACCEPT
#POP3 sur SSL
-A OUTPUT -o eth0 -p tcp -m tcp --sport 995 -m state --state ESTABLISHED -j ACCEPT
#Doublons by legacy script.
#Remove?
-A OUTPUT -p tcp -m tcp --dport 53
-A OUTPUT -p udp -m udp --dport 53
-A OUTPUT -p tcp -m tcp --dport 53 -j ACCEPT
-A OUTPUT -p udp -m udp --dport 53 -j ACCEPT
#Loopback
-A OUTPUT -o lo -j ACCEPT

#End of config. Make it happen!
COMMIT
# Completed on Wed Sep 28 15:08:21 2016

어떤 도움을 주셔서 감사합니다!

답변1

저장 파일 은 어떤 IP도 참조하지 않으므로 해당 파일을 사용해 도 iptables괜찮습니다 . ip6tables가장 좋은 방법은 at2분 안에(또는 적절하다고 생각되는 시간에) 방화벽 규칙을 재설정하는 작업을 실행하는 것입니다.

# echo "service iptables stop" | at now + 2 minutes

그런 다음 IPv4 및 IPv6용 파일에서 iptables 규칙을 적용합니다.

# iptables-restore < iptables-save-file
# ip6tables-restore < iptables-save-file

해당 시점에서 액세스할 수 없는 경우 at작업이 방화벽을 비활성화할 때까지 2분 동안 기다린 다음 수동으로 규칙 세트 구성을 시작합니다. 작동하는 경우 새 방화벽을 실행 service iptables save하고 즐기십시오.service ip6tables save

또한 기존 파일은 실제로 트래픽을 거부하거나 거부하거나 삭제하지 않는다는 점에 유의해야 합니다. 모든 체인의 기본 정책은 이고 또는 대상을 ACCEPT포함하는 후행 규칙이 없으므로 다소 효과가 없는 방화벽 구성으로 보이는 것을 갖게 됩니다. .DROPREJECT

관련 정보