CentOS 7 웹 서버에서 특정 IP 주소 목록을 제외한 모든 IP 주소의 성공적인 http 또는 https 요청을 차단하도록 방화벽을 어떻게 구성합니까?
IP 제한을 사용할 수 있다는 것을 알고 있지만 httpd.conf
IP를 제한하려면 어떻게 방화벽을 설정해야 합니까? 무슨 문서? 나는 그것을 사용합니까 firewall-cmd
? 어떤 구문?
나는 여기에 배치된 하나 이상의 풍부한 규칙을 만드는 것이 포함된다고 생각합니다.문서. 하지만 나는 이 일을 제대로 하고 있는지 확인하고 싶다. 예를 들어, 모든 사람의 모든 http/s 요청을 거부하는 규칙이 있습니까? 그러면 각 특정 IP에 대한 http/s 요청을 승인하는 데 또 다른 규칙이 필요합니까? 이 규칙은 http/s 제공을 위한 것입니까, 아니면 포트 443을 위한 것입니까? 아니면 어떤 조합인가요? 거절과 수락을 기록해 보는 것은 어떨까요?
답변1
FirewallD가 마음에 안들어서 예전 iptables 서비스로 교체했는데,
난 이걸 할거야,
새로운 체인을 만들어서 부르자
ALLOW_TO_HTTP
iptables -N ALLOW_TO_HTTP
그런 다음 체인에 허용하려는 모든 IP 주소를 추가하세요.
iptable -I ALLOW_TO_HTTP -j ACCEPT -s 1.2.3.4
그런 다음 위 체인을 가리키는 INPUT 테이블에 행을 추가하여 포트 80 및 443에 새 연결을 설정합니다.
iptables -I INPUT -p tcp -m multiport --dports 80,443 -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m conntrack --ctstate NEW -j ALLOW_TO_HTTP
위 규칙은 포트 443 및 80의 모든 새 연결을 ALLOW_TO_HTTP 체인으로 리디렉션하고 IP가 일치하면 연결이 허용됩니다.
모범 사례를 위해서는 세 번째 규칙을 넣을 올바른 행을 찾아야 합니다. 왜냐하면 이 규칙이 iptables의 첫 번째 규칙이 되는 것을 원하지 않기 때문입니다. 규칙을 삽입하려는 행을 지정하여 이를 수행할 수 있습니다.
iptables -I INPUT 4 ...
그러면 4행에 규칙이 삽입됩니다.
다음 명령을 사용하여 규칙 줄 번호를 나열할 수 있습니다.
iptables -nvL --line-numbers