
저는 iptables를 처음 접했고 웹 서버를 보호하기 위한 목적으로 방화벽을 구성하려고 노력해 왔습니다. 아래 규칙은 제가 지금까지 구성한 규칙입니다. 규칙이 타당한지 듣고 싶습니다. 필수 사항을 빠뜨린 것은 없나요?
포트 80 외에도 외부 연결을 위해 포트 3306(mysql) 및 22(ssh)도 열어두어야 합니다.
어떤 피드백이라도 높이 평가됩니다!
#!/bin/sh
# Clear all existing rules.
iptables -F
# ACCEPT connections for loopback network connection, 127.0.0.1.
iptables -A INPUT -i lo -j ACCEPT
# ALLOW established traffic
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# DROP packets that are NEW but does not have the SYN but set.
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
# DROP fragmented packets, as there is no way to tell the source and destination ports of such a packet.
iptables -A INPUT -f -j DROP
# DROP packets with all tcp flags set (XMAS packets).
iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
# DROP packets with no tcp flags set (NULL packets).
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
# ALLOW ssh traffic (and prevent against DoS attacks)
iptables -A INPUT -p tcp --dport ssh -m limit --limit 1/s -j ACCEPT
# ALLOW http traffic (and prevent against DoS attacks)
iptables -A INPUT -p tcp --dport http -m limit --limit 5/s -j ACCEPT
# ALLOW mysql traffic (and prevent against DoS attacks)
iptables -A INPUT -p tcp --dport mysql -m limit --limit 25/s -j ACCEPT
# DROP any other traffic.
iptables -A INPUT -j DROP
답변1
즉시 사용 가능한 합리적인 방화벽을 제공하는 해안벽(shorewall)을 사용해 보십시오. 원하는 서비스에 대해 네트워크에서 액세스를 활성화합니다. 1개, 2개, 3개 인터페이스에 대한 예제 규칙 세트가 있습니다. 문서는 양호하며 적극적으로 유지 관리됩니다.
쉽게 수행할 수 있는 MySQL에 액세스할 수 있는 주소를 제한하고 싶을 것으로 예상됩니다. 최근에 다른 포트를 검색하지 않은 한 포트가 닫힌 곳에서 포트 노크를 사용하여 SSH를 보호할 수도 있습니다.
답변2
- 정말로 ICMP를 허용하고 싶습니다.
- 5/초는 아마도 HTTP에 충분하지 않을 것입니다
- XMAS/NULL 패킷에 대한 규칙에 요점이 표시되지 않습니다.
- 또한 특별한 NEW 패킷 규칙에 대한 이유가 표시되지 않습니다.
ETA: 5. 이러한 종류의 속도 제한을 사용하면 DoS 공격이 매우 간단해집니다. 귀하의 SSH 액세스를 거부하려면 초당 1개의 SYN 패킷을 귀하의 서버에 보내면 됩니다.
답변3
iptables 규칙 구성을 수행하기 위해 NARC와 같은 것을 사용하는 것을 고려해 보겠습니다.
이 패키지에는 신뢰할 수 있는 몇 가지 합리적인 기본값이 이미 마련되어 있습니다.
답변4
서버에서 인터넷으로 나가는 통신을 위한 필터도 중요합니다. 특히 SMTP는 하나의 서버에만 허용하는 것이 좋습니다.
저는 Mikrotik 방화벽을 관리하고 있으며 예를 들어 다음과 같은 작업을 수행하는 데 익숙합니다.
- 개인 범위의 대상 주소를 사용하여 인터넷에서 들어오는 패킷을 삭제합니다.
- 포트 스캔 삭제(초당 5개 이상의 포트 검사)
- 다른 포트에 대한 SSH(모호함, 알고 있지만 작동합니다!:-)) 및 소스 IP 제한
- 라우터용 브로드캐스트 삭제
- TCP RST 삭제
그리고 몇 가지 더. 나는 이것을 읽는 것이 좋습니다 :http://wiki.mikrotik.com/wiki/Dmitry_on_firewallingMikrotik의 구문은 간단하며 초보자에게 좋은 포인팅 기능을 포함하고 있습니다.