CentOS에서 제품을 사용하고 있는데 가끔 iptables 구성에서 규칙을 자동으로 추가하고 제거해야 하는 경우가 있습니다. 예를 들어 업데이트 중에 업데이트가 완료될 때까지 인바운드 서비스 트래픽을 명시적으로 거부하려고 합니다. 현재 코드 업데이트에 사용되는 방법은 sed
다른 텍스트 처리 유틸리티를 사용하여 구성 파일의 관련 줄을 주석 처리하고 iptables
새 구성 파일로 서비스를 다시 시작한 다음 업데이트가 끝나면 프로세스를 되돌리고 다시 시작하는 것입니다. 다시 서비스.
iptables -D table rule-specification
제 생각에는 프로세스 시작 부분과 iptables -A table rule-specification
업데이트가 끝날 때 명령을 사용하는 것이 더 나은 접근 방식입니다 .
구성 파일을 자동화할 때 제가 보는 가장 큰 문제는 취약성입니다. 구성 파일을 덮어쓰고 매개변수 순서를 변경할 수 있는 시스템 도구가 있어 잠재적으로 텍스트 구문 분석이 중단될 수 있습니다( service iptables save
예).
코드에서 시스템 구성을 변경하는 데 권장되는 방법은 무엇입니까? 왜?
답변1
이런 상황에 직면한 대부분의 사람들은 추상적인 방식으로 문제를 처리합니다.
예를 들어. 규칙 집합이 포함된 단일 파일을 사용하는 대신 규칙이 포함된 파일 집합을 만들고 함께 연결하는 것이 좋습니다.
예를 들어, 이와 같은 이름의 파일에 개별 규칙을 추가할 수 있습니다.
/etc/iptables-rules/00_flush_drop
/etc/iptables-rules/20_permitotherstuff
/etc/iptables-rules/10_permitssh
/etc/iptables-rules/99_drop
그런 다음 규칙 세트를 실행하십시오 run-parts /etc/iptables-rules
. 다른 규칙 세트를 추가해야 하는 경우 임시로 파일을 추가하면 됩니다. 그런 다음 필요에 따라 삭제하십시오.
또한 구성에서 체인을 설정하고 사용하는 데 중점을 두어야 합니다. 체인은 서브루틴과 약간 비슷합니다. 예를 들어, 방화벽 맨 위에 규칙을 추가하여 체인으로 이동할 수 있습니다. 체인에는 기본 RETURN 정책이 있습니다. 따라서 임시 규칙을 추가해야 할 경우 이 체인에 삽입하기만 하면 됩니다. 더 이상 필요하지 않으면 특정 체인을 새로 고치십시오.